rasa-pro 3.13.1a10__py3-none-any.whl → 3.13.1a12__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.

Potentially problematic release.


This version of rasa-pro might be problematic. Click here for more details.

rasa/builder/README.md CHANGED
@@ -115,6 +115,6 @@ Only classes that truly need state:
115
115
 
116
116
  1. **`LLMService`** - Caches schemas and manages OpenAI client
117
117
  2. **`ProjectGenerator`** - Maintains current bot files
118
- 3. **`PromptToBotService`** - Manages Sanic app and agent state
118
+ 3. **`BotBuilderService`** - Manages Sanic app and agent state
119
119
 
120
120
  Everything else uses pure functions for maximum simplicity and testability.
rasa/builder/main.py CHANGED
@@ -7,13 +7,13 @@ from typing import Optional
7
7
 
8
8
  import rasa.core.utils
9
9
  from rasa.builder.logging_utils import collecting_logs_processor
10
- from rasa.builder.service import PromptToBotService
10
+ from rasa.builder.service import BotBuilderService
11
11
  from rasa.utils.common import configure_logging_and_warnings
12
12
  from rasa.utils.log_utils import configure_structlog
13
13
  from rasa.utils.sanic_error_handler import register_custom_sanic_error_handler
14
14
 
15
15
 
16
- def setup_logging():
16
+ def setup_logging() -> None:
17
17
  """Setup logging configuration."""
18
18
  log_level = logging.DEBUG
19
19
 
@@ -31,7 +31,7 @@ def setup_logging():
31
31
  )
32
32
 
33
33
 
34
- def main(project_folder: Optional[str] = None):
34
+ def main(project_folder: Optional[str] = None) -> None:
35
35
  """Main entry point."""
36
36
  try:
37
37
  # Setup logging
@@ -39,7 +39,7 @@ def main(project_folder: Optional[str] = None):
39
39
 
40
40
  # Create and configure service
41
41
 
42
- service = PromptToBotService(project_folder)
42
+ service = BotBuilderService(project_folder)
43
43
  register_custom_sanic_error_handler(service.app)
44
44
 
45
45
  # Log available routes
rasa/builder/service.py CHANGED
@@ -1,5 +1,6 @@
1
1
  """Main service for the prompt-to-bot functionality."""
2
2
 
3
+ import os
3
4
  from typing import Optional
4
5
 
5
6
  import structlog
@@ -35,8 +36,8 @@ from rasa.shared.core.trackers import DialogueStateTracker
35
36
  structlogger = structlog.get_logger()
36
37
 
37
38
 
38
- class PromptToBotService:
39
- """Main service for prompt-to-bot functionality."""
39
+ class BotBuilderService:
40
+ """Main service for bot building functionality."""
40
41
 
41
42
  def __init__(self, project_folder: Optional[str] = None):
42
43
  """Initialize the service with a project folder for file persistence.
@@ -50,13 +51,16 @@ class PromptToBotService:
50
51
 
51
52
  project_folder = tempfile.mkdtemp(prefix="rasa_builder_")
52
53
 
54
+ # working directory needs to be the project folder, e.g.
55
+ # for relative paths (./docs) in a projects config to work
56
+ os.chdir(project_folder)
57
+
53
58
  structlogger.info(
54
- "prompt_to_bot.service_initialized", project_folder=project_folder
59
+ "bot_builder_service.service_initialized", project_folder=project_folder
55
60
  )
56
61
 
57
62
  self.project_generator = ProjectGenerator(project_folder)
58
-
59
- self.app = Sanic("PromptToBotService")
63
+ self.app = Sanic("BotBuilderService")
60
64
  self.app.config.REQUEST_TIMEOUT = 60 # 1 minute timeout
61
65
  self.app.ctx.agent = None
62
66
  self.input_channel = self.setup_input_channel()
@@ -116,165 +120,249 @@ class PromptToBotService:
116
120
 
117
121
  async def health(self, request: Request) -> HTTPResponse:
118
122
  """Health check endpoint."""
119
- return response.json({"status": "ok", "service": "prompt-to-bot"})
123
+ return response.json({"status": "ok", "service": "bot-builder"})
120
124
 
121
- async def handle_prompt_to_bot(self, request: Request) -> HTTPResponse:
125
+ async def handle_prompt_to_bot(self, request: Request) -> None:
122
126
  """Handle prompt-to-bot generation requests."""
127
+ sse_response = await request.respond(content_type="text/event-stream")
128
+
123
129
  try:
130
+ # 1. Received
131
+ await self._send_sse_event(
132
+ sse_response,
133
+ ServerSentEvent(event="received", data={"status": "received"}),
134
+ )
135
+
124
136
  # Validate request
125
137
  prompt_data = PromptRequest(**request.json)
126
138
 
127
- # Generate project with retries
128
- bot_files = await self.project_generator.generate_project_with_retries(
129
- prompt_data.prompt,
130
- template=ProjectTemplateName.PLAIN,
139
+ # 2. Generating
140
+ await self._send_sse_event(
141
+ sse_response,
142
+ ServerSentEvent(event="generating", data={"status": "generating"}),
131
143
  )
132
144
 
133
- # Train and load agent
134
- importer = self.project_generator._create_importer()
135
- self.app.ctx.agent = await train_and_load_agent(importer)
145
+ try:
146
+ # Generate project with retries
147
+ bot_files = await self.project_generator.generate_project_with_retries(
148
+ prompt_data.prompt,
149
+ template=ProjectTemplateName.PLAIN,
150
+ )
136
151
 
137
- # Update input channel with new agent
138
- self.input_channel.agent = self.app.ctx.agent
152
+ await self._send_sse_event(
153
+ sse_response,
154
+ ServerSentEvent(
155
+ event="generation_success",
156
+ data={"status": "generation_success"},
157
+ ),
158
+ )
139
159
 
140
- structlogger.info(
141
- "prompt_to_bot.success",
142
- client_id=prompt_data.client_id,
143
- files_generated=list(bot_files.keys()),
144
- )
160
+ except (ProjectGenerationError, LLMGenerationError) as e:
161
+ await self._send_sse_event(
162
+ sse_response,
163
+ ServerSentEvent(
164
+ event="generation_error",
165
+ data={"status": "generation_error", "error": str(e)},
166
+ ),
167
+ )
168
+ await sse_response.eof()
169
+ return
145
170
 
146
- return response.json(
147
- ApiResponse(
148
- status="success",
149
- message="Bot generated successfully",
150
- data={"bot_data": bot_files},
151
- ).model_dump()
171
+ # 3. Training
172
+ await self._send_sse_event(
173
+ sse_response,
174
+ ServerSentEvent(event="training", data={"status": "training"}),
152
175
  )
153
176
 
154
- except ValidationError as e:
155
- structlogger.error("prompt_to_bot.validation_error", error=str(e))
156
- return response.json(
157
- ApiErrorResponse(
158
- error="Validation failed", details={"validation_error": str(e)}
159
- ).model_dump(),
160
- status=400,
161
- )
177
+ try:
178
+ # Train and load agent
179
+ importer = self.project_generator._create_importer()
180
+ self.app.ctx.agent = await train_and_load_agent(importer)
162
181
 
163
- except ProjectGenerationError as e:
164
- structlogger.error("prompt_to_bot.generation_error", error=str(e))
165
- return response.json(
166
- ApiErrorResponse(
167
- error="Project generation failed",
168
- details={"attempts": e.attempts, "error": str(e)},
169
- ).model_dump(),
170
- status=500,
182
+ # Update input channel with new agent
183
+ self.input_channel.agent = self.app.ctx.agent
184
+
185
+ await self._send_sse_event(
186
+ sse_response,
187
+ ServerSentEvent(
188
+ event="train_success", data={"status": "train_success"}
189
+ ),
190
+ )
191
+
192
+ except TrainingError as e:
193
+ await self._send_sse_event(
194
+ sse_response,
195
+ ServerSentEvent(
196
+ event="train_error",
197
+ data={"status": "train_error", "error": str(e)},
198
+ ),
199
+ )
200
+ await sse_response.eof()
201
+ return
202
+
203
+ # 4. Done
204
+ await self._send_sse_event(
205
+ sse_response,
206
+ ServerSentEvent(
207
+ event="done",
208
+ data={
209
+ "status": "done",
210
+ "bot_data": bot_files,
211
+ },
212
+ ),
171
213
  )
172
214
 
173
- except TrainingError as e:
174
- structlogger.error("prompt_to_bot.training_error", error=str(e))
175
- return response.json(
176
- ApiErrorResponse(
177
- error="Model training failed", details={"training_error": str(e)}
178
- ).model_dump(),
179
- status=500,
215
+ structlogger.info(
216
+ "bot_builder_service.prompt_to_bot.success",
217
+ client_id=prompt_data.client_id,
218
+ files_generated=list(bot_files.keys()),
180
219
  )
181
220
 
182
- except LLMGenerationError as e:
183
- structlogger.error("prompt_to_bot.llm_error", error=str(e))
184
- return response.json(
185
- ApiErrorResponse(
186
- error="LLM generation failed", details={"llm_error": str(e)}
187
- ).model_dump(),
188
- status=502,
221
+ except ValidationError as e:
222
+ structlogger.error(
223
+ "bot_builder_service.prompt_to_bot.validation_error", error=str(e)
224
+ )
225
+ await self._send_sse_event(
226
+ sse_response,
227
+ ServerSentEvent(
228
+ event="validation_error",
229
+ data={"status": "validation_error", "error": str(e)},
230
+ ),
189
231
  )
190
232
 
191
233
  except Exception as e:
192
- structlogger.error("prompt_to_bot.unexpected_error", error=str(e))
193
- return response.json(
194
- ApiErrorResponse(
195
- error="Unexpected error occurred", details=None
196
- ).model_dump(),
197
- status=500,
234
+ structlogger.error(
235
+ "bot_builder_service.prompt_to_bot.unexpected_error", error=str(e)
198
236
  )
237
+ await self._send_sse_event(
238
+ sse_response,
239
+ ServerSentEvent(
240
+ event="error", data={"status": "error", "error": str(e)}
241
+ ),
242
+ )
243
+ finally:
244
+ await sse_response.eof()
199
245
 
200
- async def handle_template_to_bot(self, request: Request) -> HTTPResponse:
246
+ async def handle_template_to_bot(self, request: Request) -> None:
201
247
  """Handle template-to-bot generation requests."""
248
+ sse_response = await request.respond(content_type="text/event-stream")
249
+
202
250
  try:
251
+ # 1. Received
252
+ await self._send_sse_event(
253
+ sse_response,
254
+ ServerSentEvent(event="received", data={"status": "received"}),
255
+ )
256
+
203
257
  # Validate request
204
258
  template_data = TemplateRequest(**request.json)
205
259
 
206
- # Generate project with retries
207
- self.project_generator.init_from_template(
208
- template_data.template_name,
260
+ # 2. Generating
261
+ await self._send_sse_event(
262
+ sse_response,
263
+ ServerSentEvent(event="generating", data={"status": "generating"}),
209
264
  )
210
- bot_files = self.project_generator.get_bot_files()
211
265
 
212
- # Train and load agent
213
- importer = self.project_generator._create_importer()
214
- self.app.ctx.agent = await train_and_load_agent(importer)
266
+ try:
267
+ # Generate project with retries
268
+ self.project_generator.init_from_template(
269
+ template_data.template_name,
270
+ )
271
+ bot_files = self.project_generator.get_bot_files()
215
272
 
216
- # Update input channel with new agent
217
- self.input_channel.agent = self.app.ctx.agent
273
+ await self._send_sse_event(
274
+ sse_response,
275
+ ServerSentEvent(
276
+ event="generation_success",
277
+ data={"status": "generation_success"},
278
+ ),
279
+ )
218
280
 
219
- structlogger.info(
220
- "template_to_bot.success",
221
- client_id=template_data.client_id,
222
- files_generated=list(bot_files.keys()),
223
- )
281
+ except ProjectGenerationError as e:
282
+ await self._send_sse_event(
283
+ sse_response,
284
+ ServerSentEvent(
285
+ event="generation_error",
286
+ data={"status": "generation_error", "error": str(e)},
287
+ ),
288
+ )
289
+ await sse_response.eof()
290
+ return
224
291
 
225
- return response.json(
226
- ApiResponse(
227
- status="success",
228
- message="Bot generated successfully",
229
- data={"bot_data": bot_files},
230
- ).model_dump()
292
+ # 3. Training
293
+ await self._send_sse_event(
294
+ sse_response,
295
+ ServerSentEvent(event="training", data={"status": "training"}),
231
296
  )
232
297
 
233
- except ValidationError as e:
234
- structlogger.error("template_to_bot.validation_error", error=str(e))
235
- return response.json(
236
- ApiErrorResponse(
237
- error="Validation failed", details={"validation_error": str(e)}
238
- ).model_dump(),
239
- status=400,
240
- )
298
+ try:
299
+ # Train and load agent
300
+ importer = self.project_generator._create_importer()
301
+ self.app.ctx.agent = await train_and_load_agent(importer)
241
302
 
242
- except ProjectGenerationError as e:
243
- structlogger.error("template_to_bot.generation_error", error=str(e))
244
- return response.json(
245
- ApiErrorResponse(
246
- error="Project generation failed",
247
- details={"attempts": e.attempts, "error": str(e)},
248
- ).model_dump(),
249
- status=500,
303
+ # Update input channel with new agent
304
+ self.input_channel.agent = self.app.ctx.agent
305
+
306
+ await self._send_sse_event(
307
+ sse_response,
308
+ ServerSentEvent(
309
+ event="train_success", data={"status": "train_success"}
310
+ ),
311
+ )
312
+
313
+ except TrainingError as e:
314
+ await self._send_sse_event(
315
+ sse_response,
316
+ ServerSentEvent(
317
+ event="train_error",
318
+ data={"status": "train_error", "error": str(e)},
319
+ ),
320
+ )
321
+ await sse_response.eof()
322
+ return
323
+
324
+ # 4. Done
325
+ await self._send_sse_event(
326
+ sse_response,
327
+ ServerSentEvent(
328
+ event="done",
329
+ data={
330
+ "status": "done",
331
+ "bot_data": bot_files,
332
+ },
333
+ ),
250
334
  )
251
335
 
252
- except TrainingError as e:
253
- structlogger.error("template_to_bot.training_error", error=str(e))
254
- return response.json(
255
- ApiErrorResponse(
256
- error="Model training failed", details={"training_error": str(e)}
257
- ).model_dump(),
258
- status=500,
336
+ structlogger.info(
337
+ "bot_builder_service.template_to_bot.success",
338
+ client_id=template_data.client_id,
339
+ files_generated=list(bot_files.keys()),
259
340
  )
260
341
 
261
- except LLMGenerationError as e:
262
- structlogger.error("template_to_bot.llm_error", error=str(e))
263
- return response.json(
264
- ApiErrorResponse(
265
- error="LLM generation failed", details={"llm_error": str(e)}
266
- ).model_dump(),
267
- status=502,
342
+ except ValidationError as e:
343
+ structlogger.error(
344
+ "bot_builder_service.template_to_bot.validation_error", error=str(e)
345
+ )
346
+ await self._send_sse_event(
347
+ sse_response,
348
+ ServerSentEvent(
349
+ event="validation_error",
350
+ data={"status": "validation_error", "error": str(e)},
351
+ ),
268
352
  )
269
353
 
270
354
  except Exception as e:
271
- structlogger.error("template_to_bot.unexpected_error", error=str(e))
272
- return response.json(
273
- ApiErrorResponse(
274
- error="Unexpected error occurred", details=None
275
- ).model_dump(),
276
- status=500,
355
+ structlogger.error(
356
+ "bot_builder_service.template_to_bot.unexpected_error", error=str(e)
277
357
  )
358
+ await self._send_sse_event(
359
+ sse_response,
360
+ ServerSentEvent(
361
+ event="error", data={"status": "error", "error": str(e)}
362
+ ),
363
+ )
364
+ finally:
365
+ await sse_response.eof()
278
366
 
279
367
  async def get_bot_data(self, request: Request) -> HTTPResponse:
280
368
  """Get current bot data."""
@@ -410,7 +498,9 @@ class PromptToBotService:
410
498
  return response.json(llm_response)
411
499
 
412
500
  except LLMGenerationError as e:
413
- structlogger.error("llm_builder.generation_error", error=str(e))
501
+ structlogger.error(
502
+ "bot_builder_service.llm_builder.generation_error", error=str(e)
503
+ )
414
504
  return response.json(
415
505
  ApiErrorResponse(
416
506
  error="LLM helper generation failed", details={"llm_error": str(e)}
@@ -419,7 +509,9 @@ class PromptToBotService:
419
509
  )
420
510
 
421
511
  except Exception as e:
422
- structlogger.error("llm_builder.unexpected_error", error=str(e))
512
+ structlogger.error(
513
+ "bot_builder_service.llm_builder.unexpected_error", error=str(e)
514
+ )
423
515
  return response.json(
424
516
  ApiErrorResponse(
425
517
  error="Unexpected error in LLM builder",
rasa/cli/scaffold.py CHANGED
@@ -178,6 +178,8 @@ def create_initial_project(
178
178
  # https://stackoverflow.com/questions/9160227/dir-util-copy-tree-fails-after-shutil-rmtree
179
179
  if hasattr(dir_util, "_path_created"):
180
180
  dir_util._path_created.clear()
181
+ else:
182
+ dir_util.SkipRepeatAbsolutePaths.clear()
181
183
  dir_util.copy_tree(scaffold_path(template), path)
182
184
 
183
185
 
rasa/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  # this file will automatically be changed,
2
2
  # do not add anything but the version number here!
3
- __version__ = "3.13.1a10"
3
+ __version__ = "3.13.1a12"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rasa-pro
3
- Version: 3.13.1a10
3
+ Version: 3.13.1a12
4
4
  Summary: State-of-the-art open-core Conversational AI framework for Enterprises that natively leverages generative AI for effortless assistant development.
5
5
  Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
6
6
  Author: Rasa Technologies GmbH
@@ -1,7 +1,7 @@
1
1
  rasa/__init__.py,sha256=YXG8RzVxiSJ__v-AewtV453YoCbmzWlHsU_4S0O2XpE,206
2
2
  rasa/__main__.py,sha256=-PZSicdimOUsU-dkWu3x6eY1G6P8VwqZvB1ag02PoE8,6418
3
3
  rasa/api.py,sha256=RY3SqtlOcdq4YZGgr6DOm-nUBpiA8l8uguUZOctL_7o,6320
4
- rasa/builder/README.md,sha256=TnVfHKD-W4vcnHjGA53BMd9X7RJIeZQQe0cuCZXwFlo,3716
4
+ rasa/builder/README.md,sha256=7WYioSzBHFY25h1QCFellv7bIOW9VLH7Gf7dwQEc1k0,3715
5
5
  rasa/builder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  rasa/builder/config.py,sha256=j1pP1nC5a2_iZMaU9qgjhbuPACSayzS_UrfTriAfPzM,2202
7
7
  rasa/builder/create_openai_vector_store.py,sha256=jAk1QzM4HiC0wjkn1031xBzLFGwVV4JUJMc50QZFIdw,6642
@@ -11,11 +11,11 @@ rasa/builder/llm_context.py,sha256=zy7htrXgS_QWJWeEj4TfseQgTI65whFJR_4GKm_iOvE,2
11
11
  rasa/builder/llm_helper_prompt.jinja2,sha256=AhfEzXYIMTmWgd2TgVmPVeCfojHA29IiuO6JhTOXXKY,9585
12
12
  rasa/builder/llm_service.py,sha256=tFtIno9V5Fq2idJ2uJt8K9b3GeO9ic2ZWWYg3rKdufw,11480
13
13
  rasa/builder/logging_utils.py,sha256=iPJoN2HhNlS14SKyZv0s0iIljrmP6A8s8C5btoDVOXM,1383
14
- rasa/builder/main.py,sha256=M_c751NEnl14jI97WSZfL7M8BKydS1Uqzdkk20DEJsk,1587
14
+ rasa/builder/main.py,sha256=1UUaBf9SUbuxDmS_bLgF5vxsiRNr_N1EOtZGYYzss1I,1601
15
15
  rasa/builder/models.py,sha256=IFsVCTIE3cUeuwxZ0MHgB9jD8T354fPPh86bZ0QrGBg,4494
16
16
  rasa/builder/project_generator.py,sha256=ZWsL3oqAIYIqJBJ8GJsLmMotgbF0ZOOMO1dQSz4xlYs,10868
17
17
  rasa/builder/scrape_rasa_docs.py,sha256=HukkTCIh1rMCE8D_EtXGHy0aHtFBVrVTT_6Wpex3XQM,2428
18
- rasa/builder/service.py,sha256=692nyowd3RkZfrKqfmw_MGorDU6F5tsTFxGDO8768A4,16512
18
+ rasa/builder/service.py,sha256=YpVhK8HQxK9l8MFf70hK9U5cYp8GGMYvvLr4Lq0Co8I,19252
19
19
  rasa/builder/skill_to_bot_prompt.jinja2,sha256=h2Fgoh9k3XinN0blEEqMuOWuvwXxJifP3GJs-GczgBU,5530
20
20
  rasa/builder/training_service.py,sha256=YSVaf6x9WuddrOruJ5BmacnRoypQVVuKZbvZq_c6xEE,3849
21
21
  rasa/builder/validation_service.py,sha256=rKMgbG8Jyv8WMnTIXOMd7VuGWAYicrL9wDJ22BJXZHE,2765
@@ -277,7 +277,7 @@ rasa/cli/project_templates/tutorial/data/patterns.yml,sha256=phj1vrOcAacwzdVHFHN
277
277
  rasa/cli/project_templates/tutorial/domain.yml,sha256=X16UwfoTNKSV2DYvEQZ-CfRczzg5MqI49AHgSH0-aZs,974
278
278
  rasa/cli/project_templates/tutorial/endpoints.yml,sha256=ZZfchpZLo5MObU5JVXPqBi8KrKe8gzsZskSDAjpfS9E,1788
279
279
  rasa/cli/run.py,sha256=QnmVCXORZambJzee1z3wMa3Ki8cPwSsImgQ2hbvbpuU,4632
280
- rasa/cli/scaffold.py,sha256=pDtpXoCIba___Mt92we-gzKPiNRq_F4FkSOXs-50qMM,8667
280
+ rasa/cli/scaffold.py,sha256=_r6LlS4XQ_vZjcEzkP90V1KGrDaPFVflzhMIKGoVGGM,8726
281
281
  rasa/cli/shell.py,sha256=YTXn3_iDWJySY187BEJTRDxPoG-mqRtl17jqwqQ6hX4,4332
282
282
  rasa/cli/studio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
283
  rasa/cli/studio/download.py,sha256=5uLdnW60JQ1NkUcJfK_be2pKjVOtYzCCjNAQpfGkYnM,1163
@@ -1064,9 +1064,9 @@ rasa/utils/train_utils.py,sha256=ClJx-6x3-h3Vt6mskacgkcCUJTMXjFPe3zAcy_DfmaU,212
1064
1064
  rasa/utils/url_tools.py,sha256=dZ1HGkVdWTJB7zYEdwoDIrEuyX9HE5WsxKKFVsXBLE0,1218
1065
1065
  rasa/utils/yaml.py,sha256=KjbZq5C94ZP7Jdsw8bYYF7HASI6K4-C_kdHfrnPLpSI,2000
1066
1066
  rasa/validator.py,sha256=IRhLfcgCpps0wSpokOvUGNaY8t8GsmeSmPOUVRKeOeE,83087
1067
- rasa/version.py,sha256=9Z2XfPkNPb6BhqWKcPXWK-BtJovVKIMw_K9DJFhrGW4,120
1068
- rasa_pro-3.13.1a10.dist-info/METADATA,sha256=ybV7_2yQmpXx9Q3hOq_glwDSkExVYFIBsDMwGkAy41I,10556
1069
- rasa_pro-3.13.1a10.dist-info/NOTICE,sha256=7HlBoMHJY9CL2GlYSfTQ-PZsVmLmVkYmMiPlTjhuCqA,218
1070
- rasa_pro-3.13.1a10.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
1071
- rasa_pro-3.13.1a10.dist-info/entry_points.txt,sha256=ckJ2SfEyTPgBqj_I6vm_tqY9dZF_LAPJZA335Xp0Q9U,43
1072
- rasa_pro-3.13.1a10.dist-info/RECORD,,
1067
+ rasa/version.py,sha256=EOvwRH_ZdAavpBA4bcQ7NwBtPoPX4LPPjQhA6ru8y8Y,120
1068
+ rasa_pro-3.13.1a12.dist-info/METADATA,sha256=KkHYzwkHiQwJnCHPOw_BJCS86TogyDwj03j6sJqXn4c,10556
1069
+ rasa_pro-3.13.1a12.dist-info/NOTICE,sha256=7HlBoMHJY9CL2GlYSfTQ-PZsVmLmVkYmMiPlTjhuCqA,218
1070
+ rasa_pro-3.13.1a12.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
1071
+ rasa_pro-3.13.1a12.dist-info/entry_points.txt,sha256=ckJ2SfEyTPgBqj_I6vm_tqY9dZF_LAPJZA335Xp0Q9U,43
1072
+ rasa_pro-3.13.1a12.dist-info/RECORD,,