@botonic/react 0.48.0 → 0.49.0-alpha.0

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 (101) hide show
  1. package/lib/cjs/components/button/index.js +3 -2
  2. package/lib/cjs/components/button/index.js.map +1 -1
  3. package/lib/cjs/components/system-debug-trace/debug-message.js +2 -0
  4. package/lib/cjs/components/system-debug-trace/debug-message.js.map +1 -1
  5. package/lib/cjs/components/system-debug-trace/events/ai-agent/ai-agent.js +1 -1
  6. package/lib/cjs/components/system-debug-trace/events/ai-agent/ai-agent.js.map +1 -1
  7. package/lib/cjs/components/system-debug-trace/events/ai-agent/parse-tools.d.ts +1 -1
  8. package/lib/cjs/components/system-debug-trace/events/ai-agent/parse-tools.js +6 -2
  9. package/lib/cjs/components/system-debug-trace/events/ai-agent/parse-tools.js.map +1 -1
  10. package/lib/cjs/components/system-debug-trace/events/ai-agent-router/ai-agent-router.d.ts +4 -0
  11. package/lib/cjs/components/system-debug-trace/events/ai-agent-router/ai-agent-router.js +23 -0
  12. package/lib/cjs/components/system-debug-trace/events/ai-agent-router/ai-agent-router.js.map +1 -0
  13. package/lib/cjs/components/system-debug-trace/events/ai-agent-router/index.d.ts +2 -0
  14. package/lib/cjs/components/system-debug-trace/events/ai-agent-router/index.js +6 -0
  15. package/lib/cjs/components/system-debug-trace/events/ai-agent-router/index.js.map +1 -0
  16. package/lib/cjs/components/system-debug-trace/events/ai-agent-router/types.d.ts +23 -0
  17. package/lib/cjs/components/system-debug-trace/events/ai-agent-router/types.js +3 -0
  18. package/lib/cjs/components/system-debug-trace/events/ai-agent-router/types.js.map +1 -0
  19. package/lib/cjs/components/system-debug-trace/events/constants.d.ts +4 -0
  20. package/lib/cjs/components/system-debug-trace/events/constants.js +4 -0
  21. package/lib/cjs/components/system-debug-trace/events/constants.js.map +1 -1
  22. package/lib/cjs/components/system-debug-trace/events/index.d.ts +1 -0
  23. package/lib/cjs/components/system-debug-trace/events/index.js +1 -0
  24. package/lib/cjs/components/system-debug-trace/events/index.js.map +1 -1
  25. package/lib/cjs/components/system-debug-trace/hooks/use-last-label-position.js +36 -28
  26. package/lib/cjs/components/system-debug-trace/hooks/use-last-label-position.js.map +1 -1
  27. package/lib/cjs/components/system-debug-trace/icons/ai-router.d.ts +1 -0
  28. package/lib/cjs/components/system-debug-trace/icons/ai-router.js +11 -0
  29. package/lib/cjs/components/system-debug-trace/icons/ai-router.js.map +1 -0
  30. package/lib/cjs/components/system-debug-trace/icons/index.d.ts +2 -0
  31. package/lib/cjs/components/system-debug-trace/icons/index.js +2 -0
  32. package/lib/cjs/components/system-debug-trace/icons/index.js.map +1 -1
  33. package/lib/cjs/components/system-debug-trace/types.d.ts +2 -2
  34. package/lib/cjs/debug-system-messages.d.ts +198 -0
  35. package/lib/cjs/debug-system-messages.js +240 -0
  36. package/lib/cjs/debug-system-messages.js.map +1 -0
  37. package/lib/cjs/dev-app.d.ts +199 -0
  38. package/lib/cjs/dev-app.js +22 -0
  39. package/lib/cjs/dev-app.js.map +1 -1
  40. package/lib/cjs/index.d.ts +1 -0
  41. package/lib/cjs/index.js +3 -1
  42. package/lib/cjs/index.js.map +1 -1
  43. package/lib/esm/components/button/index.js +3 -2
  44. package/lib/esm/components/button/index.js.map +1 -1
  45. package/lib/esm/components/system-debug-trace/debug-message.js +2 -0
  46. package/lib/esm/components/system-debug-trace/debug-message.js.map +1 -1
  47. package/lib/esm/components/system-debug-trace/events/ai-agent/ai-agent.js +1 -1
  48. package/lib/esm/components/system-debug-trace/events/ai-agent/ai-agent.js.map +1 -1
  49. package/lib/esm/components/system-debug-trace/events/ai-agent/parse-tools.d.ts +1 -1
  50. package/lib/esm/components/system-debug-trace/events/ai-agent/parse-tools.js +6 -2
  51. package/lib/esm/components/system-debug-trace/events/ai-agent/parse-tools.js.map +1 -1
  52. package/lib/esm/components/system-debug-trace/events/ai-agent-router/ai-agent-router.d.ts +4 -0
  53. package/lib/esm/components/system-debug-trace/events/ai-agent-router/ai-agent-router.js +23 -0
  54. package/lib/esm/components/system-debug-trace/events/ai-agent-router/ai-agent-router.js.map +1 -0
  55. package/lib/esm/components/system-debug-trace/events/ai-agent-router/index.d.ts +2 -0
  56. package/lib/esm/components/system-debug-trace/events/ai-agent-router/index.js +6 -0
  57. package/lib/esm/components/system-debug-trace/events/ai-agent-router/index.js.map +1 -0
  58. package/lib/esm/components/system-debug-trace/events/ai-agent-router/types.d.ts +23 -0
  59. package/lib/esm/components/system-debug-trace/events/ai-agent-router/types.js +3 -0
  60. package/lib/esm/components/system-debug-trace/events/ai-agent-router/types.js.map +1 -0
  61. package/lib/esm/components/system-debug-trace/events/constants.d.ts +4 -0
  62. package/lib/esm/components/system-debug-trace/events/constants.js +4 -0
  63. package/lib/esm/components/system-debug-trace/events/constants.js.map +1 -1
  64. package/lib/esm/components/system-debug-trace/events/index.d.ts +1 -0
  65. package/lib/esm/components/system-debug-trace/events/index.js +1 -0
  66. package/lib/esm/components/system-debug-trace/events/index.js.map +1 -1
  67. package/lib/esm/components/system-debug-trace/hooks/use-last-label-position.js +36 -28
  68. package/lib/esm/components/system-debug-trace/hooks/use-last-label-position.js.map +1 -1
  69. package/lib/esm/components/system-debug-trace/icons/ai-router.d.ts +1 -0
  70. package/lib/esm/components/system-debug-trace/icons/ai-router.js +11 -0
  71. package/lib/esm/components/system-debug-trace/icons/ai-router.js.map +1 -0
  72. package/lib/esm/components/system-debug-trace/icons/index.d.ts +2 -0
  73. package/lib/esm/components/system-debug-trace/icons/index.js +2 -0
  74. package/lib/esm/components/system-debug-trace/icons/index.js.map +1 -1
  75. package/lib/esm/components/system-debug-trace/types.d.ts +2 -2
  76. package/lib/esm/debug-system-messages.d.ts +198 -0
  77. package/lib/esm/debug-system-messages.js +240 -0
  78. package/lib/esm/debug-system-messages.js.map +1 -0
  79. package/lib/esm/dev-app.d.ts +199 -0
  80. package/lib/esm/dev-app.js +22 -0
  81. package/lib/esm/dev-app.js.map +1 -1
  82. package/lib/esm/index.d.ts +1 -0
  83. package/lib/esm/index.js +3 -1
  84. package/lib/esm/index.js.map +1 -1
  85. package/package.json +3 -3
  86. package/src/components/button/index.tsx +3 -2
  87. package/src/components/system-debug-trace/debug-message.tsx +3 -0
  88. package/src/components/system-debug-trace/events/ai-agent/ai-agent.tsx +1 -1
  89. package/src/components/system-debug-trace/events/ai-agent/parse-tools.ts +14 -2
  90. package/src/components/system-debug-trace/events/ai-agent-router/ai-agent-router.tsx +75 -0
  91. package/src/components/system-debug-trace/events/ai-agent-router/index.ts +2 -0
  92. package/src/components/system-debug-trace/events/ai-agent-router/types.ts +26 -0
  93. package/src/components/system-debug-trace/events/constants.ts +4 -0
  94. package/src/components/system-debug-trace/events/index.ts +1 -0
  95. package/src/components/system-debug-trace/hooks/use-last-label-position.ts +42 -32
  96. package/src/components/system-debug-trace/icons/ai-router.tsx +45 -0
  97. package/src/components/system-debug-trace/icons/index.ts +2 -0
  98. package/src/components/system-debug-trace/types.ts +2 -0
  99. package/src/debug-system-messages.ts +276 -0
  100. package/src/dev-app.jsx +24 -0
  101. package/src/index.ts +1 -0
@@ -0,0 +1,276 @@
1
+ /**
2
+ * Dev-only mock payloads for every SystemDebugTrace event type.
3
+ *
4
+ * Usage from dev-entry.ts:
5
+ * import { DEBUG_SYSTEM_MESSAGES } from '@botonic/react/src/debug-system-messages'
6
+ * app.addDebugSystemMessage(DEBUG_SYSTEM_MESSAGES.keyword)
7
+ *
8
+ * Usage from the browser console (window.Botonic is the DevApp instance):
9
+ * Botonic.addDebugSystemMessage({ action: 'nlu_keyword', nlu_keyword_name: 'hello', ... })
10
+ * // or use the pre-built fixtures exposed on the DevApp:
11
+ * Botonic.addDebugSystemMessage(Botonic.debugSystemMessages.aiAgent)
12
+ */
13
+
14
+ import { EventAction } from '@botonic/core'
15
+
16
+ import type {
17
+ AiAgentDebugEvent,
18
+ AiAgentRouterDebugEvent,
19
+ BotActionDebugEvent,
20
+ ConditionalChannelDebugEvent,
21
+ ConditionalCountryDebugEvent,
22
+ ConditionalCustomDebugEvent,
23
+ ConditionalQueueStatusDebugEvent,
24
+ FallbackDebugEvent,
25
+ HandoffSuccessDebugEvent,
26
+ KeywordDebugEvent,
27
+ KnowledgeBaseDebugEvent,
28
+ RedirectFlowDebugEvent,
29
+ SmartIntentDebugEvent,
30
+ WebviewActionTriggeredDebugEvent,
31
+ } from './components/system-debug-trace/events'
32
+ import type { ChunkIdsGroupedBySourceData } from './components/system-debug-trace/events/knowledge-bases-types'
33
+
34
+ const mockChunksWithSources: ChunkIdsGroupedBySourceData[] = [
35
+ {
36
+ source: {
37
+ id: 'src-mock-001',
38
+ name: 'Help Center',
39
+ type: 'url',
40
+ scrapingCountryCode: null,
41
+ createdAt: '2026-01-01T00:00:00Z',
42
+ createdBy: 'mock',
43
+ lastUpdatedAt: '2026-01-01T00:00:00Z',
44
+ lastUpdatedBy: 'mock',
45
+ activeExtractionJob: null as any,
46
+ lastExtractionJob: null as any,
47
+ },
48
+ chunks: [
49
+ {
50
+ id: 'chunk-mock-001',
51
+ text: 'To reset your password, go to Settings > Security > Reset Password.',
52
+ },
53
+ ],
54
+ },
55
+ ]
56
+
57
+ export const DEBUG_SYSTEM_MESSAGES = {
58
+ keyword: {
59
+ action: EventAction.Keyword,
60
+ flow_id: 'flow-mock-001',
61
+ flow_node_id: 'node-mock-001',
62
+ nlu_keyword_is_regex: false,
63
+ nlu_keyword_name: 'hello',
64
+ } satisfies KeywordDebugEvent,
65
+
66
+ smartIntent: {
67
+ action: EventAction.IntentSmart,
68
+ nlu_intent_smart_title: 'Greeting smart intent',
69
+ } satisfies SmartIntentDebugEvent,
70
+
71
+ fallback: {
72
+ action: EventAction.Fallback,
73
+ user_input: "I don't understand this bot",
74
+ fallback_out: 1,
75
+ fallback_message_id: 'msg-mock-002',
76
+ } satisfies FallbackDebugEvent,
77
+
78
+ handoffSuccess: {
79
+ action: EventAction.HandoffSuccess,
80
+ handoff_queue_name: 'Support Team',
81
+ handoff_is_queue_open: true,
82
+ handoff_has_auto_assign: true,
83
+ handoff_note_id: '',
84
+ } satisfies HandoffSuccessDebugEvent,
85
+
86
+ botAction: {
87
+ action: EventAction.BotAction,
88
+ payload: 'custom-action-result',
89
+ } satisfies BotActionDebugEvent,
90
+
91
+ knowledgeBase: {
92
+ action: EventAction.Knowledgebase,
93
+ flow_id: 'flow-mock-001',
94
+ flow_node_id: 'node-mock-004',
95
+ knowledgebase_inference_id: 'inf-mock-001',
96
+ knowledgebase_fail_reason: '',
97
+ knowledgebase_sources_ids: ['src-mock-001'],
98
+ knowledgebase_chunks_ids: ['chunk-mock-001'],
99
+ user_input: 'How do I reset my password?',
100
+ knowledge_base_chunks_with_sources: mockChunksWithSources,
101
+ } satisfies KnowledgeBaseDebugEvent,
102
+
103
+ knowledgeBaseFailed: {
104
+ action: EventAction.Knowledgebase,
105
+ flow_id: 'flow-mock-001',
106
+ flow_node_id: 'node-mock-004',
107
+ knowledgebase_inference_id: 'inf-mock-002',
108
+ knowledgebase_fail_reason: 'no_relevant_content',
109
+ knowledgebase_sources_ids: [],
110
+ knowledgebase_chunks_ids: [],
111
+ user_input: 'What is the meaning of life?',
112
+ knowledge_base_chunks_with_sources: [],
113
+ } satisfies KnowledgeBaseDebugEvent,
114
+
115
+ conditionalChannel: {
116
+ action: EventAction.ConditionalChannel,
117
+ channel: 'whatsapp',
118
+ } satisfies ConditionalChannelDebugEvent,
119
+
120
+ conditionalCountry: {
121
+ action: EventAction.ConditionalCountry,
122
+ country: 'ES',
123
+ } satisfies ConditionalCountryDebugEvent,
124
+
125
+ conditionalCustom: {
126
+ action: EventAction.ConditionalCustom,
127
+ conditional_variable: 'user_plan',
128
+ variable_format: 'string',
129
+ } satisfies ConditionalCustomDebugEvent,
130
+
131
+ conditionalQueueStatus: {
132
+ action: EventAction.ConditionalQueueStatus,
133
+ queue_id: 'queue-mock-001',
134
+ queue_name: 'Support Team',
135
+ is_queue_open: true,
136
+ is_available_agent: true,
137
+ } satisfies ConditionalQueueStatusDebugEvent,
138
+
139
+ redirectFlow: {
140
+ action: EventAction.RedirectFlow,
141
+ flow_id: 'flow-mock-001',
142
+ flow_name: 'Main Flow',
143
+ flow_target_id: 'flow-mock-002',
144
+ flow_target_name: 'Billing Flow',
145
+ } satisfies RedirectFlowDebugEvent,
146
+
147
+ webviewActionTriggered: {
148
+ action: EventAction.WebviewActionTriggered,
149
+ webview_target_id: 'webview-mock-001',
150
+ webview_name: 'Payment Form',
151
+ } satisfies WebviewActionTriggeredDebugEvent,
152
+
153
+ aiAgent: {
154
+ action: EventAction.AiAgent,
155
+ flow_node_content_id: 'content-mock-001',
156
+ user_input: 'Can you help me with my subscription?',
157
+ tools_executed: [
158
+ {
159
+ tool_name: 'retrieve_knowledge',
160
+ tool_arguments: { query: 'subscription management' },
161
+ tool_results:
162
+ 'Found 3 relevant articles about subscription management.',
163
+ knowledgebase_sources_ids: ['src-mock-001'],
164
+ knowledgebase_chunks_ids: ['chunk-mock-001'],
165
+ },
166
+ {
167
+ tool_name: 'get_user_subscription',
168
+ tool_arguments: { user_id: 'user-mock-001' },
169
+ tool_results: '{"plan": "pro", "renewal_date": "2026-06-01"}',
170
+ },
171
+ ],
172
+ input_guardrails_triggered: [],
173
+ output_guardrails_triggered: [],
174
+ exit: false,
175
+ error: false,
176
+ knowledge_base_chunks_with_sources: mockChunksWithSources,
177
+ } satisfies AiAgentDebugEvent,
178
+
179
+ aiAgentWithGuardrails: {
180
+ action: EventAction.AiAgent,
181
+ flow_node_content_id: 'content-mock-002',
182
+ user_input: 'Tell me something inappropriate',
183
+ tools_executed: [],
184
+ input_guardrails_triggered: ['content_safety', 'topic_restriction'],
185
+ output_guardrails_triggered: [],
186
+ exit: false,
187
+ error: false,
188
+ } satisfies AiAgentDebugEvent,
189
+
190
+ aiAgentError: {
191
+ action: EventAction.AiAgent,
192
+ flow_node_content_id: 'content-mock-003',
193
+ user_input: 'Hello',
194
+ tools_executed: [],
195
+ input_guardrails_triggered: [],
196
+ output_guardrails_triggered: [],
197
+ exit: false,
198
+ error: true,
199
+ } satisfies AiAgentDebugEvent,
200
+
201
+ aiAgentRouter: {
202
+ noTransfer: {
203
+ action: EventAction.AiAgentRouter,
204
+ flow_node_content_id: 'customer_support_router',
205
+ tools_executed: [],
206
+ memory_length: 2,
207
+ input_guardrails_triggered: [],
208
+ output_guardrails_triggered: [],
209
+ exit: false,
210
+ starting_agent_name: 'customer_support_router',
211
+ last_agent_name: 'customer_support_router',
212
+ available_specialists: [
213
+ {
214
+ name: 'billing_specialist',
215
+ description: 'Handles billing and invoice queries',
216
+ },
217
+ {
218
+ name: 'technical_support_specialist',
219
+ description: 'Handles technical issues',
220
+ },
221
+ ],
222
+ is_transferred_to_specialist: false,
223
+ } satisfies AiAgentRouterDebugEvent,
224
+
225
+ inputGuardrail: {
226
+ action: EventAction.AiAgentRouter,
227
+ flow_node_content_id: 'customer_support_router',
228
+ tools_executed: [],
229
+ memory_length: 0,
230
+ input_guardrails_triggered: ['is_competence'],
231
+ output_guardrails_triggered: [],
232
+ exit: false,
233
+ starting_agent_name: 'customer_support_router',
234
+ last_agent_name: 'customer_support_router',
235
+ available_specialists: [
236
+ {
237
+ name: 'billing_specialist',
238
+ description: 'Handles billing and invoice queries',
239
+ },
240
+ {
241
+ name: 'technical_support_specialist',
242
+ description: 'Handles technical issues',
243
+ },
244
+ ],
245
+ is_transferred_to_specialist: false,
246
+ } satisfies AiAgentRouterDebugEvent,
247
+
248
+ transfer: {
249
+ action: EventAction.AiAgentRouter,
250
+ flow_node_content_id: 'customer_support_router',
251
+ tools_executed: [],
252
+ memory_length: 3,
253
+ input_guardrails_triggered: [],
254
+ output_guardrails_triggered: [],
255
+ exit: true,
256
+ starting_agent_name: 'customer_support_router',
257
+ last_agent_name: 'billing_specialist',
258
+ available_specialists: [
259
+ {
260
+ name: 'billing_specialist',
261
+ description: 'Handles billing and invoice queries',
262
+ },
263
+ {
264
+ name: 'technical_support_specialist',
265
+ description: 'Handles technical issues',
266
+ },
267
+ {
268
+ name: 'sales_specialist',
269
+ description: 'Handles sales and pricing queries',
270
+ },
271
+ ],
272
+ is_transferred_to_specialist: true,
273
+ knowledge_base_chunks_with_sources: [],
274
+ } satisfies AiAgentRouterDebugEvent,
275
+ },
276
+ }
package/src/dev-app.jsx CHANGED
@@ -1,5 +1,7 @@
1
+ import { INPUT } from '@botonic/core'
1
2
  import { createRoot } from 'react-dom/client'
2
3
 
4
+ import { DEBUG_SYSTEM_MESSAGES } from './debug-system-messages'
3
5
  import { SENDERS } from './index-types'
4
6
  import { ReactBot } from './react-bot'
5
7
  import { onDOMLoaded } from './util/dom'
@@ -104,6 +106,28 @@ export class DevApp extends WebchatApp {
104
106
  })
105
107
  }
106
108
 
109
+ /** Pre-built mock payloads for every debug event type. Handy from the console:
110
+ * Botonic.addDebugSystemMessage(Botonic.debugSystemMessages.aiAgent) */
111
+ get debugSystemMessages() {
112
+ return DEBUG_SYSTEM_MESSAGES
113
+ }
114
+
115
+ /**
116
+ * Inject a mock SystemDebugTrace event into the preview webchat.
117
+ * Accepts any DebugEvent payload (plain object with an `action` field).
118
+ *
119
+ * From code:
120
+ * import { DEBUG_SYSTEM_MESSAGES } from '@botonic/react/src/debug-system-messages'
121
+ * app.addDebugSystemMessage(DEBUG_SYSTEM_MESSAGES.aiAgent)
122
+ *
123
+ * From the browser console:
124
+ * Botonic.addDebugSystemMessage(Botonic.debugSystemMessages.conditionalQueueStatus)
125
+ * Botonic.addDebugSystemMessage({ action: 'nlu_keyword', nlu_keyword_name: 'hi', nlu_keyword_is_regex: false, flow_id: 'f1', flow_node_id: 'n1' })
126
+ */
127
+ addDebugSystemMessage(eventData) {
128
+ this.addSystemMessage({ type: INPUT.SYSTEM_DEBUG_TRACE, data: eventData })
129
+ }
130
+
107
131
  async onUserInput({ input, session, lastRoutePath }) {
108
132
  this.onMessage?.(this, {
109
133
  sentBy: SENDERS.user,
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { BotonicInputTester, BotonicOutputTester } from './botonic-tester'
2
2
  export * from './components'
3
3
  export * from './contexts'
4
+ export { DEBUG_SYSTEM_MESSAGES } from './debug-system-messages'
4
5
  export { DevApp } from './dev-app'
5
6
  export * from './index-types'
6
7
  export { msgsToBotonic, msgToBotonic } from './msg-to-botonic'