@trii/types 2.10.765 → 2.10.767

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.
Files changed (175) hide show
  1. package/dist/AI/MapPolygon.d.ts +22 -0
  2. package/dist/Automations/Events/Event.d.ts +3 -3
  3. package/dist/Common/Messages/Message.d.ts +1 -0
  4. package/dist/Contacts/CommunicationEndpoint.d.ts +8 -8
  5. package/dist/Conversations/Assignment.d.ts +11 -3
  6. package/dist/Conversations/Classifications/ConversationClassificationEvents.d.ts +2 -2
  7. package/dist/Conversations/Conversation.d.ts +67 -17
  8. package/dist/Conversations/ConversationAutomationState.d.ts +28 -6
  9. package/dist/Conversations/Flows/Nodes/NodeAIChatBot.d.ts +0 -0
  10. package/dist/Conversations/Flows/Nodes/NodeAIChatBot.js +0 -0
  11. package/dist/Conversations/Flows/Nodes/NodeApi.d.ts +2 -0
  12. package/dist/Conversations/Flows/Nodes/NodeApi.js +183 -0
  13. package/dist/Conversations/Flows/Nodes/NodeBotIA.d.ts +15 -0
  14. package/dist/Conversations/Flows/Nodes/NodeBotIA.js +6 -0
  15. package/dist/Conversations/Flows/Nodes/NodeChatBotIA.d.ts +15 -0
  16. package/dist/Conversations/Flows/Nodes/NodeChatBotIA.js +6 -0
  17. package/dist/Conversations/Flows/Nodes/NodeConditional.d.ts +0 -0
  18. package/dist/Conversations/Flows/Nodes/NodeConditional.js +0 -0
  19. package/dist/Conversations/Flows/Nodes/NodeContactSearch.d.ts +0 -0
  20. package/dist/Conversations/Flows/Nodes/NodeContactSearch.js +0 -0
  21. package/dist/Conversations/Flows/Nodes/NodeContactUpdate.d.ts +0 -0
  22. package/dist/Conversations/Flows/Nodes/NodeContactUpdate.js +0 -0
  23. package/dist/Conversations/Flows/Nodes/NodeConversationAssignTo.d.ts +0 -0
  24. package/dist/Conversations/Flows/Nodes/NodeConversationAssignTo.js +0 -0
  25. package/dist/Conversations/Flows/Nodes/NodeConversationFinalize.d.ts +0 -0
  26. package/dist/Conversations/Flows/Nodes/NodeConversationFinalize.js +0 -0
  27. package/dist/Conversations/Flows/Nodes/NodeConversationUpdate.d.ts +0 -0
  28. package/dist/Conversations/Flows/Nodes/NodeConversationUpdate.js +0 -0
  29. package/dist/Conversations/Flows/Nodes/NodeFillForm.d.ts +0 -0
  30. package/dist/Conversations/Flows/Nodes/NodeFillForm.js +0 -0
  31. package/dist/Conversations/Flows/Nodes/NodeFillTicket.d.ts +1 -0
  32. package/dist/Conversations/Flows/Nodes/NodeFillTicket.js +9 -0
  33. package/dist/Conversations/Flows/Nodes/NodeGoogleCalendar.d.ts +20 -0
  34. package/dist/Conversations/Flows/Nodes/NodeGoogleCalendar.js +2 -0
  35. package/dist/Conversations/Flows/Nodes/NodeGoogleMaps copy.d.ts +12 -0
  36. package/dist/Conversations/Flows/Nodes/NodeGoogleMaps copy.js +6 -0
  37. package/dist/Conversations/Flows/Nodes/NodeGoogleMaps.d.ts +15 -0
  38. package/dist/Conversations/Flows/Nodes/NodeGoogleMaps.js +2 -0
  39. package/dist/Conversations/Flows/Nodes/NodeMsgReply.d.ts +0 -0
  40. package/dist/Conversations/Flows/Nodes/NodeMsgReply.js +0 -0
  41. package/dist/Conversations/Flows/Nodes/NodeMsgSend.d.ts +0 -0
  42. package/dist/Conversations/Flows/Nodes/NodeMsgSend.js +0 -0
  43. package/dist/Conversations/Flows/Nodes/NodeMsgText.d.ts +1 -0
  44. package/dist/Conversations/Flows/Nodes/NodeMsgText.js +27 -0
  45. package/dist/Conversations/Flows/Nodes/NodeMsgWaitResponse.d.ts +0 -0
  46. package/dist/Conversations/Flows/Nodes/NodeMsgWaitResponse.js +0 -0
  47. package/dist/Conversations/Flows/Nodes/NodeRedirect.d.ts +0 -0
  48. package/dist/Conversations/Flows/Nodes/NodeRedirect.js +0 -0
  49. package/dist/Conversations/Flows/Nodes/NodeSendEmail.d.ts +0 -0
  50. package/dist/Conversations/Flows/Nodes/NodeSendEmail.js +0 -0
  51. package/dist/Conversations/Flows/Nodes/NodeSqlQuery.d.ts +0 -0
  52. package/dist/Conversations/Flows/Nodes/NodeSqlQuery.js +0 -0
  53. package/dist/Conversations/Flows/Nodes/NodeStart.d.ts +0 -0
  54. package/dist/Conversations/Flows/Nodes/NodeStart.js +0 -0
  55. package/dist/Conversations/Flows/Nodes/NodeTimeScheduleControl.d.ts +0 -0
  56. package/dist/Conversations/Flows/Nodes/NodeTimeScheduleControl.js +0 -0
  57. package/dist/Conversations/Flows/Nodes/NodeTimeTimer.d.ts +0 -0
  58. package/dist/Conversations/Flows/Nodes/NodeTimeTimer.js +0 -0
  59. package/dist/Conversations/Flows/Nodes/NodeTimeWaitUntil.d.ts +0 -0
  60. package/dist/Conversations/Flows/Nodes/NodeTimeWaitUntil.js +0 -0
  61. package/dist/Conversations/Flows/Nodes/NodeToolCalculator.d.ts +2 -0
  62. package/dist/Conversations/Flows/Nodes/NodeToolCalculator.js +37 -0
  63. package/dist/Conversations/Flows/Nodes/NodeToolContacts.d.ts +2 -0
  64. package/dist/Conversations/Flows/Nodes/NodeToolContacts.js +59 -0
  65. package/dist/Conversations/Flows/Nodes/NodeToolFunction.d.ts +2 -0
  66. package/dist/Conversations/Flows/Nodes/NodeToolFunction.js +45 -0
  67. package/dist/Conversations/Flows/Nodes/NodeToolGoogleCalendar.d.ts +2 -0
  68. package/dist/Conversations/Flows/Nodes/NodeToolGoogleCalendar.js +87 -0
  69. package/dist/Conversations/Flows/Nodes/NodeToolGoogleMaps.d.ts +1 -0
  70. package/dist/Conversations/Flows/Nodes/NodeToolGoogleMaps.js +2 -0
  71. package/dist/Conversations/Flows/Nodes/NodeToolKnowledge.d.ts +2 -0
  72. package/dist/Conversations/Flows/Nodes/NodeToolKnowledge.js +52 -0
  73. package/dist/Conversations/Flows/Nodes/NodeToolMapsCheckPolygon.d.ts +2 -0
  74. package/dist/Conversations/Flows/Nodes/NodeToolMapsCheckPolygon.js +59 -0
  75. package/dist/Conversations/Flows/Nodes/NodeToolMcpClient.d.ts +2 -0
  76. package/dist/Conversations/Flows/Nodes/NodeToolMcpClient.js +45 -0
  77. package/dist/Conversations/Flows/Nodes/NodeToolShoppingCart.d.ts +2 -0
  78. package/dist/Conversations/Flows/Nodes/NodeToolShoppingCart.js +81 -0
  79. package/dist/Conversations/Flows/Nodes/index.d.ts +24 -0
  80. package/dist/Conversations/Flows/Nodes/index.js +40 -0
  81. package/dist/Conversations/Routing.d.ts +10 -10
  82. package/dist/Events/DomainEventTypes.d.ts +23 -23
  83. package/dist/Presence/ChannelRoutingState.d.ts +17 -0
  84. package/dist/Presence/ChannelRoutingState.js +9 -0
  85. package/dist/Tickets/AccessLevel.d.ts +5 -0
  86. package/dist/Tickets/AccessLevel.js +9 -0
  87. package/dist/src/Automations/Capabilities/Capability.d.ts +48 -0
  88. package/dist/src/Automations/Capabilities/Capability.js +9 -0
  89. package/dist/src/Automations/Capabilities/index.d.ts +1 -0
  90. package/dist/src/Automations/Capabilities/index.js +17 -0
  91. package/dist/src/Automations/Common.d.ts +47 -0
  92. package/dist/src/Automations/Common.js +18 -0
  93. package/dist/src/Automations/Events/Event.d.ts +41 -0
  94. package/dist/src/Automations/Events/Event.js +2 -0
  95. package/dist/src/Automations/Events/index.d.ts +1 -0
  96. package/dist/src/Automations/Events/index.js +17 -0
  97. package/dist/src/Automations/Executions/Execution.d.ts +114 -0
  98. package/dist/src/Automations/Executions/Execution.js +23 -0
  99. package/dist/src/Automations/Executions/index.d.ts +1 -0
  100. package/dist/src/Automations/Executions/index.js +17 -0
  101. package/dist/src/Automations/Flows/Canvas.d.ts +86 -0
  102. package/dist/src/Automations/Flows/Canvas.js +34 -0
  103. package/dist/src/Automations/Flows/Flow.d.ts +102 -0
  104. package/dist/src/Automations/Flows/Flow.js +34 -0
  105. package/dist/src/Automations/Flows/Requests.d.ts +71 -0
  106. package/dist/src/Automations/Flows/Requests.js +2 -0
  107. package/dist/src/Automations/Flows/Validation.d.ts +28 -0
  108. package/dist/src/Automations/Flows/Validation.js +9 -0
  109. package/dist/src/Automations/Flows/index.d.ts +4 -0
  110. package/dist/src/Automations/Flows/index.js +20 -0
  111. package/dist/src/Automations/Nodes/Node.d.ts +75 -0
  112. package/dist/src/Automations/Nodes/Node.js +18 -0
  113. package/dist/src/Automations/Nodes/index.d.ts +1 -0
  114. package/dist/src/Automations/Nodes/index.js +17 -0
  115. package/dist/src/Automations/index.d.ts +6 -0
  116. package/dist/src/Automations/index.js +22 -0
  117. package/dist/src/Chats/Chat.d.ts +61 -0
  118. package/dist/src/Chats/Chat.js +28 -0
  119. package/dist/src/Common/Channels/Channel.d.ts +26 -1
  120. package/dist/src/Contacts/contacts.d.ts +2 -2
  121. package/dist/src/Conversations/Assignment.d.ts +81 -0
  122. package/dist/src/Conversations/Assignment.js +4 -0
  123. package/dist/src/Conversations/Conversation.d.ts +241 -48
  124. package/dist/src/Conversations/Conversation.js +14 -34
  125. package/dist/src/Conversations/DashBoard/dashboard.d.ts +2 -2
  126. package/dist/src/Conversations/Flows/Workflows/Workflow.d.ts +280 -123
  127. package/dist/src/Conversations/Flows/Workflows/Workflow.js +85 -35
  128. package/dist/src/Conversations/Groups/Group.d.ts +2 -8
  129. package/dist/src/Conversations/Groups/Group.js +0 -6
  130. package/dist/src/Conversations/InboxProjection.js +2 -0
  131. package/dist/src/Conversations/Label.d.ts +1 -1
  132. package/dist/src/Conversations/Outbox.d.ts +24 -0
  133. package/dist/src/Conversations/Outbox.js +4 -0
  134. package/dist/src/Conversations/Queue.d.ts +107 -0
  135. package/dist/src/Conversations/Queue.js +4 -0
  136. package/dist/src/Conversations/Routing.d.ts +164 -0
  137. package/dist/src/Conversations/Routing.js +2 -0
  138. package/dist/src/Conversations/Sla.d.ts +227 -0
  139. package/dist/src/Conversations/Sla.js +6 -0
  140. package/dist/src/Conversations/Transfer.d.ts +73 -0
  141. package/dist/src/Conversations/Transfer.js +2 -0
  142. package/dist/src/Conversations/WebHook.d.ts +1 -1
  143. package/dist/src/Conversations/index.d.ts +9 -1
  144. package/dist/src/Conversations/index.js +9 -1
  145. package/dist/src/Forms/API.d.ts +53 -0
  146. package/dist/src/Forms/API.js +2 -0
  147. package/dist/src/Forms/SubmittedForm.d.ts +56 -0
  148. package/dist/src/Forms/SubmittedForm.js +9 -0
  149. package/dist/src/Forms/index.d.ts +2 -0
  150. package/dist/src/Forms/index.js +18 -0
  151. package/dist/src/Presence/AgentPause.d.ts +24 -0
  152. package/dist/src/Presence/AgentPause.js +19 -0
  153. package/dist/src/Presence/QueueParticipation.d.ts +17 -0
  154. package/dist/src/Presence/QueueParticipation.js +2 -0
  155. package/dist/src/Presence/QueueRoutingState.d.ts +27 -0
  156. package/dist/src/Presence/QueueRoutingState.js +9 -0
  157. package/dist/src/Presence/index.d.ts +3 -0
  158. package/dist/src/Presence/index.js +19 -0
  159. package/dist/src/Tickets/Category.d.ts +18 -0
  160. package/dist/src/Tickets/Dashboard.d.ts +77 -0
  161. package/dist/src/Tickets/Dashboard.js +13 -1
  162. package/dist/src/Tickets/Fields.d.ts +1 -0
  163. package/dist/src/Tickets/Layouts.d.ts +3 -1
  164. package/dist/src/Tickets/Workflow.d.ts +20 -0
  165. package/dist/src/Users/UserTrii.d.ts +10 -0
  166. package/dist/src/Users/UserTrii.js +8 -1
  167. package/dist/src/index.d.ts +3 -0
  168. package/dist/src/index.js +4 -1
  169. package/package.json +1 -1
  170. package/dist/src/Conversations/DashBoard/dashboardForms.d.ts +0 -44
  171. package/dist/src/Conversations/DashBoard/dashboardForms.js +0 -24
  172. /package/dist/{Conversations/InboxProjection.js → AI/MapPolygon.js} +0 -0
  173. /package/dist/{Conversations → src/Conversations}/InboxMongo.d.ts +0 -0
  174. /package/dist/{Conversations → src/Conversations}/InboxMongo.js +0 -0
  175. /package/dist/{Conversations → src/Conversations}/InboxProjection.d.ts +0 -0
@@ -0,0 +1,22 @@
1
+ export interface Map {
2
+ id?: string | null;
3
+ spaceId: string | "";
4
+ name: string | "";
5
+ description: string | "";
6
+ layers: MapLayer[];
7
+ createdAt: Date;
8
+ createdBy: string;
9
+ updatedAt?: Date | null;
10
+ updatedBy?: string | null;
11
+ deletedAt?: Date | null;
12
+ deletedBy?: string | null;
13
+ }
14
+ export interface MapLayer {
15
+ id?: string | null;
16
+ spaceId: string | "";
17
+ name: string | "";
18
+ fileName: string | "";
19
+ fileUrl: string | "";
20
+ data?: object | null;
21
+ polygons?: object | null;
22
+ }
@@ -1,8 +1,8 @@
1
1
  import { AutomationCustomer, AutomationJsonObject, AutomationJsonSchema, AutomationResourceReference, AutomationSourceApplication } from '../Common';
2
2
  export declare const AUTOMATION_MESSAGE_SCHEMAS: {
3
- readonly DOMAIN_EVENT_V1: 'automations.domain-event/v1';
4
- readonly START_REQUEST_V1: 'automations.start-request/v1';
5
- readonly EXECUTION_WORK_ITEM_V1: 'automations.execution.work-item/v1';
3
+ readonly DOMAIN_EVENT_V1: "automations.domain-event/v1";
4
+ readonly START_REQUEST_V1: "automations.start-request/v1";
5
+ readonly EXECUTION_WORK_ITEM_V1: "automations.execution.work-item/v1";
6
6
  };
7
7
  export interface AutomationEventDefinition {
8
8
  eventType: string;
@@ -220,6 +220,7 @@ export interface EmailDocument {
220
220
  /**The url of the fie. */
221
221
  url: string;
222
222
  isInline: boolean;
223
+ contentId?: string;
223
224
  }
224
225
  export interface MessageSticker {
225
226
  /**The ID for the video. */
@@ -9,22 +9,22 @@ export declare enum CommunicationEndpointKind {
9
9
  */
10
10
  export declare const providerIdentityNamespaces: {
11
11
  readonly meta: {
12
- readonly instagramUser: 'instagram_user';
13
- readonly messengerUser: 'messenger_user';
14
- readonly whatsappUser: 'whatsapp_user';
12
+ readonly instagramUser: "instagram_user";
13
+ readonly messengerUser: "messenger_user";
14
+ readonly whatsappUser: "whatsapp_user";
15
15
  };
16
16
  readonly telegram: {
17
- readonly user: 'user';
18
- readonly chat: 'chat';
17
+ readonly user: "user";
18
+ readonly chat: "chat";
19
19
  };
20
20
  readonly trii: {
21
- readonly webchatVisitor: 'webchat_visitor';
21
+ readonly webchatVisitor: "webchat_visitor";
22
22
  };
23
23
  readonly mercadolibre: {
24
- readonly buyer: 'buyer';
24
+ readonly buyer: "buyer";
25
25
  };
26
26
  readonly google: {
27
- readonly businessMessagesUser: 'business_messages_user';
27
+ readonly businessMessagesUser: "business_messages_user";
28
28
  };
29
29
  };
30
30
  export type KnownIdentityProvider = keyof typeof providerIdentityNamespaces;
@@ -1,6 +1,8 @@
1
1
  import { ID } from './Conversation';
2
- export type ConversationAssignmentEventType = 'enqueued' | 'routing_started' | 'offered' | 'assigned' | 'accepted' | 'transferred' | 'released' | 'timed_out' | 'requeued';
3
- export type ConversationAssignmentReason = 'conversation_created' | 'routing_selected' | 'manual_assignment' | 'manual_transfer' | 'flow_routing' | 'offer_timeout' | 'assignment_timeout' | 'agent_accepted' | 'agent_released' | 'supervisor_released' | 'capacity_rebalance' | 'sla_escalation' | 'system_recovery' | 'transfer_cancelled' | 'transfer_declined';
2
+ export type ConversationAssignmentEventType = 'enqueued'
3
+ /** @deprecated Planning is technical work; new writers retain queued. */
4
+ | 'routing_started' | 'offered' | 'assigned' | 'accepted' | 'transferred' | 'released' | 'timed_out' | 'requeued' | 'declined' | 'cancelled';
5
+ export type ConversationAssignmentReason = 'conversation_created' | 'routing_selected' | 'manual_assignment' | 'manual_transfer' | 'flow_routing' | 'offer_timeout' | 'assignment_timeout' | 'agent_accepted' | 'agent_released' | 'supervisor_released' | 'capacity_rebalance' | 'sla_escalation' | 'system_recovery' | 'transfer_cancelled' | 'transfer_declined' | 'agent_declined' | 'assignment_cancelled';
4
6
  export type AssignmentOwnerReference = {
5
7
  type: 'none';
6
8
  id?: never;
@@ -10,6 +12,9 @@ export type AssignmentOwnerReference = {
10
12
  id: ID;
11
13
  displayName?: string;
12
14
  };
15
+ /** Historical reference to the same lifecycle as ConversationAssignmentSnapshot.
16
+ * routing is read compatibility only. An existing assignmentId does not imply completion.
17
+ */
13
18
  export type AssignmentStateReference = {
14
19
  status: 'unrouted';
15
20
  assignmentId?: never;
@@ -48,9 +53,12 @@ export type AssignmentActorReference = {
48
53
  displayName?: string;
49
54
  };
50
55
  /**
51
- * Immutable domain event stored in conversation_assignment_events.
56
+ * Immutable domain event stored in ConversationEvents.
52
57
  *
53
58
  * Events must only be inserted. Corrections are represented by a new event.
59
+ * Record previous/current atomically with the transition and durable publication.
60
+ * A decline/timeout/cancellation records the resulting queued state, with a new cycle ID.
61
+ * Transfer request outcomes concern pendingTransfer and may leave assignment unchanged.
54
62
  */
55
63
  export interface ConversationAssignmentEvent {
56
64
  id: ID;
@@ -1,7 +1,7 @@
1
1
  import type { ConversationClassificationEvaluationStatus } from './ConversationClassificationEvaluation';
2
2
  export declare const CONVERSATION_CLASSIFICATION_EVENT_TYPES: {
3
- readonly CONVERSATION_RESOLVED_FOR_EVALUATION: 'conversation.resolved-for-classification';
4
- readonly EVALUATION_FINISHED: 'conversation.classification-evaluation-finished';
3
+ readonly CONVERSATION_RESOLVED_FOR_EVALUATION: "conversation.resolved-for-classification";
4
+ readonly EVALUATION_FINISHED: "conversation.classification-evaluation-finished";
5
5
  };
6
6
  export declare const CONVERSATION_CLASSIFICATION_EVENT_SCHEMA_VERSION: 1;
7
7
  /**
@@ -69,10 +69,11 @@ export interface IConversation {
69
69
  externalMessagingWindowEndAt?: Date;
70
70
  /**
71
71
  * Automatización que controla la conversación; null si no hay ejecución registrada.
72
- * Actualizar con control de version y executionId para rechazar eventos antiguos.
72
+ * Actualizar con control de version y automation.workflowId para rechazar eventos antiguos.
73
+ * Cada ejecución puntual tiene su executionId, pero no reemplaza la identidad del workflow.
73
74
  */
74
75
  automation?: ConversationAutomationState | null;
75
- /** @deprecated Id de ejecución legacy. Usar automation.executionId. */
76
+ /** @deprecated Id del workflow completo legacy. Usar automation.workflowId. */
76
77
  workflowId?: string;
77
78
  /** @deprecated Usar automation.status; con automation presente no controla SLA. */
78
79
  botStatus: ConversationBotStatus;
@@ -238,15 +239,62 @@ export interface FlowConversationOwner {
238
239
  avatarUrl?: string;
239
240
  }
240
241
  export type ConversationOwner = NoConversationOwner | UserConversationOwner | BotConversationOwner | FlowConversationOwner;
241
- export type ConversationAssignmentStatus = 'unrouted' | 'queued' | 'routing' | 'offered' | 'assigned' | 'accepted';
242
- export type ConversationAssignmentSource = 'routing' | 'manual' | 'transfer' | 'requeue';
242
+ /** Assignment lifecycle, independent of Conversation.status, pendingTransfer and sla.
243
+ * Finalization preserves the last snapshot for history but disables its operational effects.
244
+ */
245
+ export type ConversationAssignmentStatus =
246
+ /** Outside human queue distribution. Bot/flow ownership is legacy; use automation. */
247
+ 'unrouted'
248
+ /** In a queue without an individual owner, including shared/manual_pull queues. */
249
+ | 'queued'
250
+ /** @deprecated Technical worker state. New writers keep queued while planning. */
251
+ | 'routing'
252
+ /** Proposed user; responsibility is not confirmed until acceptance. */
253
+ | 'offered'
254
+ /** Effective responsibility without an explicit acceptance requirement. */
255
+ | 'assigned'
256
+ /** Effective responsibility explicitly accepted (including an agent taking work). */
257
+ | 'accepted';
258
+ /** Origen del ciclo identificado por assignmentId, no de su última transición.
259
+ * Se conserva al ofrecer, aceptar o tomar una conversación dentro del mismo ciclo.
260
+ * El actor y el motivo de cada acción se registran en el evento de asignación.
261
+ */
262
+ export type ConversationAssignmentSource =
263
+ /** Ciclo iniciado por las reglas de enrutamiento, por ejemplo al ingresar a la
264
+ * cola configurada en el canal. No implica que ya exista un usuario seleccionado.
265
+ */
266
+ 'routing'
267
+ /** Ciclo iniciado por una asignación manual explícita de un usuario autorizado.
268
+ * Tomar o aceptar una asignación existente conserva su source; no la convierte en manual.
269
+ */
270
+ | 'manual'
271
+ /** Ciclo creado al hacerse efectiva una transferencia a otra cola o responsable,
272
+ * solicitada por un usuario o una automatización. Una transferencia pendiente
273
+ * no modifica el source de la asignación origen.
274
+ */
275
+ | 'transfer'
276
+ /** Nuevo ciclo de espera tras rechazo, vencimiento, cancelación de oferta,
277
+ * liberación o desborde a otra cola. Solo aplica cuando se reencola efectivamente;
278
+ * reintentar el procesamiento sin cambiar de ciclo conserva el source anterior.
279
+ */
280
+ | 'requeue';
243
281
  interface QueuedConversationAssignmentBase {
282
+ /** Assignment cycle identity, present from enqueue. Preserve through offer/acceptance;
283
+ * replace on requeue or effective change of queue/owner, never on a retry.
284
+ */
244
285
  assignmentId: ID;
245
286
  queueId: ID;
246
287
  source: ConversationAssignmentSource;
288
+ /** UTC start of this cycle in this queue. Preserve through offer/acceptance.
289
+ * Direct assignments use the transition time; SLA history is managed separately.
290
+ */
247
291
  queuedAt: Date;
248
292
  lastRoutingDecisionId?: ID;
249
293
  }
294
+ /** Current state only. Rejection, timeout, release and transfer are events, not states.
295
+ * All transitions require an open conversation, authorization, identity and version guards.
296
+ * See docs/conversation-contracts-migration.md for the transition table and migration rules.
297
+ */
250
298
  export type ConversationAssignmentSnapshot = {
251
299
  status: 'unrouted';
252
300
  assignmentId?: never;
@@ -259,35 +307,37 @@ export type ConversationAssignmentSnapshot = {
259
307
  offerExpiresAt?: never;
260
308
  assignedAt?: never;
261
309
  acceptedAt?: never;
262
- } | (QueuedConversationAssignmentBase & {
310
+ } | QueuedConversationAssignmentBase & {
263
311
  status: 'queued' | 'routing';
264
312
  owner: NoConversationOwner;
265
313
  offeredAt?: never;
266
314
  offerExpiresAt?: never;
267
315
  assignedAt?: never;
268
316
  acceptedAt?: never;
269
- }) | (QueuedConversationAssignmentBase & {
317
+ } | QueuedConversationAssignmentBase & {
270
318
  status: 'offered';
271
319
  owner: UserConversationOwner;
272
320
  offeredAt: Date;
273
- offerExpiresAt?: Date;
321
+ /** UTC, strictly after offeredAt. New offers must have a finite acceptance window. */
322
+ offerExpiresAt: Date;
274
323
  assignedAt?: never;
275
324
  acceptedAt?: never;
276
- }) | (QueuedConversationAssignmentBase & {
325
+ } | QueuedConversationAssignmentBase & {
277
326
  status: 'assigned';
278
327
  owner: UserConversationOwner;
279
- offeredAt?: Date;
280
- offerExpiresAt?: Date;
328
+ offeredAt?: null;
329
+ offerExpiresAt?: null;
281
330
  assignedAt: Date;
282
331
  acceptedAt?: never;
283
- }) | (QueuedConversationAssignmentBase & {
332
+ } | QueuedConversationAssignmentBase & {
284
333
  status: 'accepted';
285
334
  owner: UserConversationOwner;
286
- offeredAt?: Date;
287
- offerExpiresAt?: Date;
335
+ /** Present after accepting an offer; absent/null when taking work directly. */
336
+ offeredAt?: Date | null;
337
+ offerExpiresAt?: null;
288
338
  assignedAt: Date;
289
339
  acceptedAt: Date;
290
- });
340
+ };
291
341
  export type ActorType = 'user' | 'contact' | 'bot' | 'flow' | 'system';
292
342
  export type ParticipantRole = 'owner' | 'collaborator' | 'follower' | 'mentioned' | 'supervisor' | 'bot' | 'flow' | 'historical';
293
343
  export type ConversationEventType = 'conversation_created' | 'queued' | 'assigned' | 'accepted' | 'transferred' | 'consult_requested' | 'collaborator_added' | 'participant_added' | 'participant_removed' | 'participation_abandoned' | 'follow_started' | 'follow_stopped' | 'message_sent' | 'message_received' | 'internal_note_added' | 'bot_started' | 'bot_finished' | 'flow_started' | 'flow_finished' | 'status_changed' | 'resolved' | 'reopened' | 'sla_warning' | 'sla_breached' | 'sla_started' | 'sla_paused' | 'sla_resumed' | 'sla_met' | 'sla_overridden';
@@ -321,15 +371,15 @@ interface ConversationSubscriptionBase {
321
371
  * A subscription is persistent product intent. Assignment or participation
322
372
  * visibility must not create it unless an explicit auto-follow policy applies.
323
373
  */
324
- export type ConversationSubscription = (ConversationSubscriptionBase & {
374
+ export type ConversationSubscription = ConversationSubscriptionBase & {
325
375
  status: 'following';
326
376
  followedAt: Date;
327
377
  unfollowedAt?: never;
328
- }) | (ConversationSubscriptionBase & {
378
+ } | ConversationSubscriptionBase & {
329
379
  status: 'unfollowed';
330
380
  followedAt: Date;
331
381
  unfollowedAt: Date;
332
- });
382
+ };
333
383
  export interface PutConversationSubscriptionRequest {
334
384
  expectedVersion?: number;
335
385
  notifications: ConversationSubscriptionNotifications;
@@ -2,13 +2,17 @@ export type ConversationAutomationStatus = 'running' | 'completed' | 'cancelled'
2
2
  /**
3
3
  * Automatización que controla la conversación, como máximo una a la vez.
4
4
  * No representa tareas auxiliares en segundo plano ni su historial.
5
- * running incluye esperas internas y reintentos; failed significa fallo terminal.
5
+ * El estado corresponde al workflow completo, no a cada ejecución puntual (executionId).
6
+ * running incluye esperas internas y reintentos; failed significa fallo terminal del workflow.
7
+ * Terminar una ejecución puntual no termina el workflow.
6
8
  */
7
9
  export interface ConversationAutomationState {
8
10
  /**
9
- * Id de ejecución (WorkFlow.id), no de definición del flujo.
10
- * Una ejecución nueva reemplaza este objeto con otro executionId.
11
- * Eventos de otra ejecución no pueden modificar el estado ni reanudar sus SLA.
11
+ * Identifica el workflow (WorkFlow.id): ejecución completa de una configuración flow/automation.
12
+ * Cada ejecución puntual tiene su executionId, por ejemplo la disparada por un mensaje entrante.
13
+ * Esas ejecuciones conservan workflowId. Solo un workflow nuevo reemplaza esta identidad.
14
+ * Eventos de otro workflow no pueden modificar el estado ni reanudar sus SLA;
15
+ * eventos del mismo workflow también requieren control de versión para evitar regresiones.
12
16
  */
13
17
  workflowId: string;
14
18
  /**
@@ -16,12 +20,30 @@ export interface ConversationAutomationState {
16
20
  * a un humano. Ningún estado terminal finaliza por sí solo la conversación.
17
21
  */
18
22
  status: ConversationAutomationStatus;
19
- /** Fecha efectiva UTC en que tomó el control, no la recepción del evento. */
23
+ /**
24
+ * Referencia visual al agente IA que controla actualmente las respuestas al cliente.
25
+ * Opcional mientras running; null/ausente no implica que el workflow haya terminado.
26
+ * Establecer al tomar el control, reemplazar si cambia el agente y limpiar al devolver
27
+ * el control al flow/humano o terminar el workflow. No representa tareas auxiliares.
28
+ * Actualizar con workflowId y Conversation.version vigentes para rechazar eventos atrasados.
29
+ * No agrega participantes ni concede permisos; no modifica assignment ni controla SLA.
30
+ */
31
+ activeAiAgent?: ConversationActiveAiAgent | null;
32
+ /** Fecha efectiva UTC en que el workflow tomó el control; no se reinicia por cada executionId. */
20
33
  startedAt: Date;
21
34
  /**
22
35
  * Null mientras running; obligatoria en estados terminales y no anterior a startedAt.
23
36
  * Fecha efectiva UTC de devolución del control. Conservar el objeto terminal hasta
24
- * la siguiente ejecución permite reconocer eventos atrasados.
37
+ * el siguiente workflow permite reconocer eventos atrasados.
25
38
  */
26
39
  endedAt?: Date | null;
27
40
  }
41
+ /** Identidad visual del agente IA activo; no es una cuenta de usuario ni historial. */
42
+ export interface ConversationActiveAiAgent {
43
+ /** Identificador estable del agente IA, no userId, workflowId ni executionId. */
44
+ id: string;
45
+ /** Nombre del agente para mostrar en el CRM. */
46
+ name: string;
47
+ /** Avatar opcional; sin imagen, la interfaz puede mostrar un icono de IA. */
48
+ imageUrl?: string | null;
49
+ }
@@ -0,0 +1,2 @@
1
+ import { INode } from "../Flow";
2
+ export declare const defaultNodeApi: INode;
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultNodeApi = void 0;
4
+ const Flow_1 = require("../Flow");
5
+ exports.defaultNodeApi = {
6
+ id: "NodeApi-{uid}",
7
+ type: Flow_1.NodeType.API,
8
+ category: 'action',
9
+ description: "Node for making API calls, allowing for dynamic interactions with external services.",
10
+ tags: [],
11
+ version: 1,
12
+ asyncLoadHandlesOut: false,
13
+ handlesIn: [
14
+ {
15
+ id: "in",
16
+ type: 'target',
17
+ position: 'left',
18
+ name: "IN",
19
+ nameKey: 'NODE_API_IN',
20
+ showName: false,
21
+ multiple: false
22
+ }
23
+ ],
24
+ handlesOut: [
25
+ {
26
+ id: "onNext",
27
+ type: 'source',
28
+ position: 'right',
29
+ name: "Next",
30
+ nameKey: 'NODE_API_NEXT',
31
+ showName: true,
32
+ multiple: false
33
+ }
34
+ ],
35
+ name: "API Node",
36
+ nameKey: 'NODE_API_NAME',
37
+ enableStatics: false,
38
+ properties: [
39
+ {
40
+ type: 'string',
41
+ id: 'url',
42
+ label: 'URL',
43
+ labelKey: 'NODE_API_URL',
44
+ optional: false,
45
+ default: '',
46
+ placeholder: 'Enter the URL for the API endpoint',
47
+ description: 'The URL of the API endpoint to which the request will be sent.'
48
+ },
49
+ {
50
+ type: 'options',
51
+ id: 'method',
52
+ label: 'Method',
53
+ labelKey: 'NODE_API_METHOD',
54
+ optional: false,
55
+ default: 'GET',
56
+ options: [
57
+ { id: 'GET', label: 'GET' },
58
+ { id: 'POST', label: 'POST' },
59
+ { id: 'PUT', label: 'PUT' },
60
+ { id: 'DELETE', label: 'DELETE' },
61
+ { id: 'PATCH', label: 'PATCH' },
62
+ { id: 'HEAD', label: 'HEAD' },
63
+ { id: 'OPTIONS', label: 'OPTIONS' }
64
+ ]
65
+ },
66
+ {
67
+ type: 'options',
68
+ id: 'authType',
69
+ label: 'Authentication Type',
70
+ labelKey: 'NODE_API_AUTH_TYPE',
71
+ optional: true,
72
+ default: 'NONE',
73
+ options: [
74
+ { id: 'NONE', label: 'None' },
75
+ { id: 'BASIC', label: 'Basic Auth' },
76
+ { id: 'API_KEY', label: 'API Key' },
77
+ { id: 'BEARER', label: 'Bearer Token' }
78
+ ]
79
+ },
80
+ {
81
+ type: 'array',
82
+ id: 'authBasic',
83
+ label: 'Basic Authentication',
84
+ labelKey: 'NODE_API_AUTH_BASIC',
85
+ show: {
86
+ authType: 'BASIC'
87
+ },
88
+ optional: true,
89
+ array: [
90
+ {
91
+ type: 'string',
92
+ id: 'username',
93
+ label: 'Username',
94
+ labelKey: 'NODE_API_AUTH_BASIC_USERNAME',
95
+ default: '',
96
+ optional: false
97
+ },
98
+ {
99
+ type: 'string',
100
+ id: 'password',
101
+ label: 'Password',
102
+ labelKey: 'NODE_API_AUTH_BASIC_PASSWORD',
103
+ default: '',
104
+ optional: false
105
+ }
106
+ ],
107
+ },
108
+ {
109
+ type: 'array',
110
+ id: 'authApiKey',
111
+ label: 'API Key Authentication',
112
+ labelKey: 'NODE_API_AUTH_API_KEY',
113
+ show: {
114
+ authType: 'API_KEY'
115
+ },
116
+ optional: true,
117
+ array: [
118
+ {
119
+ type: 'string',
120
+ id: 'headerKey',
121
+ label: 'API Header Key',
122
+ labelKey: 'NODE_API_AUTH_API_KEY_NAME'
123
+ },
124
+ {
125
+ type: 'string',
126
+ id: 'key',
127
+ label: 'API Key',
128
+ labelKey: 'NODE_API_AUTH_API_KEY_KEY'
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ type: 'array',
134
+ id: 'authBearer',
135
+ label: 'Bearer Token Authentication',
136
+ show: {
137
+ authType: 'BEARER'
138
+ },
139
+ labelKey: 'NODE_API_AUTH_BEARER_TOKEN',
140
+ optional: true,
141
+ array: [
142
+ {
143
+ type: 'string',
144
+ id: 'token',
145
+ label: 'Bearer Token',
146
+ labelKey: 'NODE_API_AUTH_BEARER_TOKEN'
147
+ }
148
+ ]
149
+ },
150
+ {
151
+ id: 'body',
152
+ type: 'string',
153
+ label: 'Request Body',
154
+ labelKey: 'NODE_API_REQUEST_BODY',
155
+ optional: true,
156
+ acceptVariable: true,
157
+ placeholder: 'Enter the request body in JSON format',
158
+ rows: 5
159
+ },
160
+ {
161
+ type: 'options',
162
+ id: 'responseContentType',
163
+ label: 'Response Content Type',
164
+ labelKey: 'NODE_API_CONTENT_TYPE',
165
+ optional: true,
166
+ default: 'application/json',
167
+ options: [
168
+ { id: 'application/json', label: 'application/json' },
169
+ { id: 'application/x-www-form-urlencoded', label: 'application/x-www-form-urlencoded' },
170
+ { id: 'text/plain', label: 'text/plain' },
171
+ { id: 'multipart/form-data', label: 'multipart/form-data' }
172
+ ]
173
+ }
174
+ ],
175
+ values: undefined,
176
+ color: '#00bcd4', // Cyan color for the start node
177
+ icon: '',
178
+ badge: undefined,
179
+ hideInput: true,
180
+ hideOutput: false,
181
+ author: '',
182
+ documentation: '',
183
+ };
@@ -0,0 +1,15 @@
1
+ export declare class NodeBotIA {
2
+ id: string;
3
+ name: string;
4
+ enableStatics: boolean | false;
5
+ llmModel?: NodeBotIAModel;
6
+ llmTemperature?: number | 0.7;
7
+ llmMaxTokens?: number | 1000;
8
+ llmTopP?: number | 1;
9
+ prompt?: string | "";
10
+ retryCount?: number | 3;
11
+ retryDelay?: number | 1000;
12
+ apiKey?: string | "";
13
+ nextNodeId?: string | "";
14
+ }
15
+ export type NodeBotIAModel = "gpt-3.5-turbo" | "gpt-4" | "gpt-4-turbo" | "llama2" | "llama2-chat" | "llama2-7b-chat" | "llama2-13b-chat" | "llama2-70b-chat" | "llama2-7b" | "llama2-13b" | "llama2-70b" | "mistral" | "mistral-chat" | "mistral-7b-chat" | "mistral-7b";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeBotIA = void 0;
4
+ class NodeBotIA {
5
+ }
6
+ exports.NodeBotIA = NodeBotIA;
@@ -0,0 +1,15 @@
1
+ export declare class NodeChatBotIA {
2
+ id: string;
3
+ name: string;
4
+ enableStatics: boolean | false;
5
+ llmModel?: NodeNodeChatBotModel;
6
+ llmTemperature?: number | 0.7;
7
+ llmMaxTokens?: number | 1000;
8
+ llmTopP?: number | 1;
9
+ prompt?: string | "";
10
+ retryCount?: number | 3;
11
+ retryDelay?: number | 1000;
12
+ apiKey?: string | "";
13
+ nextNodeId?: string | "";
14
+ }
15
+ export type NodeNodeChatBotModel = "gpt-3.5-turbo" | "gpt-4" | "gpt-4-turbo" | "llama2" | "llama2-chat" | "llama2-7b-chat" | "llama2-13b-chat" | "llama2-70b-chat" | "llama2-7b" | "llama2-13b" | "llama2-70b" | "mistral" | "mistral-chat" | "mistral-7b-chat" | "mistral-7b";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeChatBotIA = void 0;
4
+ class NodeChatBotIA {
5
+ }
6
+ exports.NodeChatBotIA = NodeChatBotIA;
File without changes
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var NodeFillTicketPriority;
4
+ (function (NodeFillTicketPriority) {
5
+ NodeFillTicketPriority[NodeFillTicketPriority["LOW"] = 100] = "LOW";
6
+ NodeFillTicketPriority[NodeFillTicketPriority["NORMAL"] = 200] = "NORMAL";
7
+ NodeFillTicketPriority[NodeFillTicketPriority["HIGH"] = 300] = "HIGH";
8
+ NodeFillTicketPriority[NodeFillTicketPriority["CRITICAL"] = 400] = "CRITICAL";
9
+ })(NodeFillTicketPriority || (NodeFillTicketPriority = {}));
@@ -0,0 +1,20 @@
1
+ import { NodeBase, NodeType } from '../Flow';
2
+ export interface NodeGoogleCalendar extends NodeBase {
3
+ type: NodeType.GOOGLE_CALENDAR;
4
+ typeName: "googleCalendar";
5
+ handles: ['onNext'];
6
+ categories: ['tool'];
7
+ enableStatics: boolean | false;
8
+ authCredentialId?: string | null;
9
+ eventsAdd?: boolean | false;
10
+ eventsEdit?: boolean | false;
11
+ eventsGet?: boolean | false;
12
+ eventsSearch?: boolean | false;
13
+ eventsDelete?: boolean | false;
14
+ calendarList?: boolean | false;
15
+ polygonsId?: string | null;
16
+ polygonsName?: string | null;
17
+ placeSearch?: boolean | false;
18
+ variables?: string | null;
19
+ saveAs?: string | null;
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });