unique_toolkit 1.40.0__tar.gz → 1.41.0__tar.gz

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 (222) hide show
  1. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/CHANGELOG.md +7 -0
  2. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/PKG-INFO +8 -1
  3. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/pyproject.toml +1 -1
  4. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +54 -7
  5. unique_toolkit-1.41.0/unique_toolkit/agentic_table/__init__.py +56 -0
  6. unique_toolkit-1.41.0/unique_toolkit/agentic_table/schemas.py +305 -0
  7. unique_toolkit-1.41.0/unique_toolkit/agentic_table/service.py +452 -0
  8. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/fast_api_factory.py +15 -7
  9. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/LICENSE +0 -0
  10. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/README.md +0 -0
  11. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/__init__.py +0 -0
  12. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/_base_service.py +0 -0
  13. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/_time_utils.py +0 -0
  14. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  15. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  16. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  17. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  18. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  19. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  20. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  21. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/default_language_model.py +0 -0
  22. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  23. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  24. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  25. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  26. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  27. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  28. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  29. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/exception.py +0 -0
  30. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/execution.py +0 -0
  31. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  32. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  33. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  34. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  35. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  36. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/referencing.py +0 -0
  37. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/string_utilities.py +0 -0
  38. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  39. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  40. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  41. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/token/token_counting.py +0 -0
  42. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/utils/__init__.py +0 -0
  43. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/utils/files.py +0 -0
  44. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  45. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  46. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  47. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  48. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  49. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  50. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  51. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  52. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/validate_required_values.py +0 -0
  53. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/_common/validators.py +0 -0
  54. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/__init__.py +0 -0
  55. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  56. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  57. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  58. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  59. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  60. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  61. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  62. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  63. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  64. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  65. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  66. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  67. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  68. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  69. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  70. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  71. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  72. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  73. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  74. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  75. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  76. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  77. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  78. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  79. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  80. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  81. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  82. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  83. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  84. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  85. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  86. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  87. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  88. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  89. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  90. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  91. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  92. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  93. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  94. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  95. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  96. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  97. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  98. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  99. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  100. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  101. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  102. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  103. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  104. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  105. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  106. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  107. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  108. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  109. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  110. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  111. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  112. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  113. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  114. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  115. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  116. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  117. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  118. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  119. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  120. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  121. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  122. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  123. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  124. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  125. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  126. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/config.py +0 -0
  127. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/factory.py +0 -0
  128. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  129. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  130. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  131. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  132. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  133. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  134. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  135. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  136. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  137. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  138. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  139. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  140. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  141. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/tool.py +0 -0
  142. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  143. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  144. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  145. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  146. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  147. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  148. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  149. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/__init__.py +0 -0
  150. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/dev_util.py +0 -0
  151. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/init_logging.py +0 -0
  152. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/init_sdk.py +0 -0
  153. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  154. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  155. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/schemas.py +0 -0
  156. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/unique_settings.py +0 -0
  157. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/verification.py +0 -0
  158. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/app/webhook.py +0 -0
  159. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/chat/__init__.py +0 -0
  160. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/chat/constants.py +0 -0
  161. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/chat/deprecated/service.py +0 -0
  162. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/chat/functions.py +0 -0
  163. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/chat/rendering.py +0 -0
  164. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/chat/responses_api.py +0 -0
  165. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/chat/schemas.py +0 -0
  166. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/chat/service.py +0 -0
  167. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/chat/state.py +0 -0
  168. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/chat/utils.py +0 -0
  169. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/content/__init__.py +0 -0
  170. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/content/constants.py +0 -0
  171. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/content/functions.py +0 -0
  172. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/content/schemas.py +0 -0
  173. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/content/service.py +0 -0
  174. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/content/smart_rules.py +0 -0
  175. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/content/utils.py +0 -0
  176. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/data_extraction/README.md +0 -0
  177. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/data_extraction/__init__.py +0 -0
  178. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  179. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  180. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/data_extraction/base.py +0 -0
  181. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  182. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  183. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  184. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  185. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/embedding/__init__.py +0 -0
  186. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/embedding/constants.py +0 -0
  187. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/embedding/functions.py +0 -0
  188. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/embedding/schemas.py +0 -0
  189. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/embedding/service.py +0 -0
  190. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/embedding/utils.py +0 -0
  191. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  192. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  193. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  194. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  195. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  196. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  197. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  198. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/framework_utilities/utils.py +0 -0
  199. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/__init__.py +0 -0
  200. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  201. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/builder.py +0 -0
  202. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/constants.py +0 -0
  203. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/default_language_model.py +0 -0
  204. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/functions.py +0 -0
  205. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/infos.py +0 -0
  206. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/prompt.py +0 -0
  207. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/reference.py +0 -0
  208. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/schemas.py +0 -0
  209. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/service.py +0 -0
  210. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/language_model/utils.py +0 -0
  211. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/protocols/support.py +0 -0
  212. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/services/__init__.py +0 -0
  213. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/services/chat_service.py +0 -0
  214. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/services/knowledge_base.py +0 -0
  215. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  216. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/short_term_memory/constants.py +0 -0
  217. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/short_term_memory/functions.py +0 -0
  218. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  219. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/short_term_memory/service.py +0 -0
  220. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/smart_rules/__init__.py +0 -0
  221. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/smart_rules/compile.py +0 -0
  222. {unique_toolkit-1.40.0 → unique_toolkit-1.41.0}/unique_toolkit/test_utilities/events.py +0 -0
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+
9
+ ## [1.41.0] - 2025-12-29
10
+ - Add `AgenticTable` service to unique_toolkit
11
+
12
+ ## [1.40.0] - 2025-12-22
13
+ - Add option to use retrieve referenced chunks from their order
14
+
8
15
  ## [1.40.0] - 2025-12-22
9
16
  - Add `hide_in_chat` parameter to `upload_to_chat_from_bytes` and `upload_to_chat_from_bytes_async`
10
17
  - Hide code interpreter files in chat
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.40.0
3
+ Version: 1.41.0
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -123,6 +123,13 @@ All notable changes to this project will be documented in this file.
123
123
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
124
124
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
125
125
 
126
+
127
+ ## [1.41.0] - 2025-12-29
128
+ - Add `AgenticTable` service to unique_toolkit
129
+
130
+ ## [1.40.0] - 2025-12-22
131
+ - Add option to use retrieve referenced chunks from their order
132
+
126
133
  ## [1.40.0] - 2025-12-22
127
134
  - Add `hide_in_chat` parameter to `upload_to_chat_from_bytes` and `upload_to_chat_from_bytes_async`
128
135
  - Hide code interpreter files in chat
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.40.0"
3
+ version = "1.41.0"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -1,4 +1,5 @@
1
1
  import logging
2
+ from enum import StrEnum
2
3
  from string import Template
3
4
 
4
5
  from unique_toolkit.agentic.evaluation.config import EvaluationMetricConfig
@@ -9,6 +10,7 @@ from unique_toolkit.agentic.evaluation.schemas import (
9
10
  EvaluationMetricName,
10
11
  EvaluationMetricResult,
11
12
  )
13
+ from unique_toolkit.content import ContentReference
12
14
  from unique_toolkit.content.schemas import ContentChunk
13
15
  from unique_toolkit.language_model.schemas import (
14
16
  LanguageModelMessages,
@@ -201,13 +203,58 @@ def _get_user_prompt_default(config: EvaluationMetricConfig):
201
203
  )
202
204
 
203
205
 
206
+ class SourceSelectionMode(StrEnum):
207
+ FROM_IDS = "FROM_IDS"
208
+ FROM_ORDER = "FROM_ORDER"
209
+
210
+
204
211
  def context_text_from_stream_response(
205
- response: LanguageModelStreamResponse, selected_chunks: list[ContentChunk]
212
+ response: LanguageModelStreamResponse,
213
+ selected_chunks: list[ContentChunk],
214
+ source_selection_mode: SourceSelectionMode = SourceSelectionMode.FROM_IDS,
206
215
  ):
207
216
  response_references = response.message.references
208
- reference_ids = [reference.source_id for reference in response_references]
209
- filtered_contexts: list[str] = []
210
- for chunk in selected_chunks:
211
- if f"{chunk.id}_{chunk.chunk_id}" in reference_ids:
212
- filtered_contexts.append(chunk.text)
213
- return filtered_contexts
217
+ match source_selection_mode:
218
+ case SourceSelectionMode.FROM_IDS:
219
+ referenced_chunks = _default_source_selection_mode(
220
+ response_references, selected_chunks
221
+ )
222
+ case SourceSelectionMode.FROM_ORDER:
223
+ referenced_chunks = _from_order_source_selection_mode(
224
+ response_references, selected_chunks
225
+ )
226
+ case _:
227
+ raise ValueError(f"Invalid source selection mode: {source_selection_mode}")
228
+
229
+ return [chunk.text for chunk in referenced_chunks]
230
+
231
+
232
+ def _default_source_selection_mode(
233
+ references: list[ContentReference], selected_chunks: list[ContentChunk]
234
+ ):
235
+ reference_ids = {reference.source_id for reference in references}
236
+
237
+ def build_chunk_id(chunk: ContentChunk) -> str:
238
+ return f"{chunk.id}_{chunk.chunk_id}"
239
+
240
+ referenced_chunks = [
241
+ chunk for chunk in selected_chunks if build_chunk_id(chunk) in reference_ids
242
+ ]
243
+
244
+ return referenced_chunks
245
+
246
+
247
+ def _from_order_source_selection_mode(
248
+ references: list[ContentReference], selected_chunks: list[ContentChunk]
249
+ ):
250
+ original_chunks_order: list[int] = []
251
+ for reference in references:
252
+ for original_index in reference.original_index:
253
+ if original_index not in original_chunks_order:
254
+ original_chunks_order.append(original_index)
255
+
256
+ referenced_chunks: list[ContentChunk] = []
257
+ for index in original_chunks_order:
258
+ referenced_chunks.append(selected_chunks[index])
259
+
260
+ return referenced_chunks
@@ -0,0 +1,56 @@
1
+ from unique_sdk.api_resources._agentic_table import (
2
+ ActivityStatus,
3
+ CellRendererTypes,
4
+ FilterTypes,
5
+ RowVerificationStatus,
6
+ )
7
+
8
+ from .schemas import (
9
+ AgenticTableSheetState,
10
+ AgreementStatus,
11
+ ArtifactType,
12
+ LogEntry,
13
+ MagicTableAction,
14
+ MagicTableAddMetadataPayload,
15
+ MagicTableBasePayload,
16
+ MagicTableCell,
17
+ MagicTableCellMetaData,
18
+ MagicTableEvent,
19
+ MagicTableEventTypes,
20
+ MagicTableGenerateArtifactPayload,
21
+ MagicTableLibrarySheetRowVerifiedPayload,
22
+ MagicTableSheet,
23
+ MagicTableSheetCompletedPayload,
24
+ MagicTableSheetCreatedPayload,
25
+ MagicTableUpdateCellPayload,
26
+ RowMetadataEntry,
27
+ SelectionMethod,
28
+ )
29
+ from .service import AgenticTableService
30
+
31
+ __all__ = [
32
+ "AgenticTableService",
33
+ "ActivityStatus",
34
+ "AgenticTableSheetState",
35
+ "AgreementStatus",
36
+ "ArtifactType",
37
+ "CellRendererTypes",
38
+ "FilterTypes",
39
+ "LogEntry",
40
+ "MagicTableAction",
41
+ "MagicTableAddMetadataPayload",
42
+ "MagicTableBasePayload",
43
+ "MagicTableCell",
44
+ "MagicTableCellMetaData",
45
+ "MagicTableEvent",
46
+ "MagicTableEventTypes",
47
+ "MagicTableGenerateArtifactPayload",
48
+ "MagicTableLibrarySheetRowVerifiedPayload",
49
+ "MagicTableSheet",
50
+ "MagicTableSheetCompletedPayload",
51
+ "MagicTableSheetCreatedPayload",
52
+ "MagicTableUpdateCellPayload",
53
+ "RowMetadataEntry",
54
+ "RowVerificationStatus",
55
+ "SelectionMethod",
56
+ ]
@@ -0,0 +1,305 @@
1
+ from enum import StrEnum
2
+ from typing import Annotated, Any, Generic, Literal, TypeVar
3
+
4
+ from pydantic import (
5
+ BaseModel,
6
+ Field,
7
+ field_validator,
8
+ )
9
+ from unique_sdk import (
10
+ AgenticTableSheetState,
11
+ AgreementStatus,
12
+ SelectionMethod,
13
+ )
14
+ from unique_sdk import LogDetail as SDKLogDetail
15
+ from unique_sdk import LogEntry as SDKLogEntry
16
+ from unique_sdk.api_resources._agentic_table import (
17
+ MagicTableAction,
18
+ SheetType,
19
+ )
20
+
21
+ from unique_toolkit._common.pydantic_helpers import get_configuration_dict
22
+ from unique_toolkit.app.schemas import (
23
+ ChatEvent,
24
+ ChatEventAssistantMessage,
25
+ ChatEventUserMessage,
26
+ )
27
+ from unique_toolkit.language_model.schemas import (
28
+ LanguageModelMessageRole,
29
+ LanguageModelMessages,
30
+ )
31
+
32
+
33
+ class MagicTableEventTypes(StrEnum):
34
+ IMPORT_COLUMNS = "unique.magic-table.import-columns"
35
+ UPDATE_CELL = "unique.magic-table.update-cell"
36
+ ADD_DATA = "unique.magic-table.add-document"
37
+ ADD_META_DATA = "unique.magic-table.add-meta-data"
38
+ GENERATE_ARTIFACT = "unique.magic-table.generate-artifact"
39
+ SHEET_COMPLETED = "unique.magic-table.sheet-completed"
40
+ LIBRARY_SHEET_ROW_VERIFIED = "unique.magic-table.library-sheet-row.verified"
41
+ SHEET_CREATED = "unique.magic-table.sheet-created"
42
+
43
+
44
+ class BaseMetadata(BaseModel):
45
+ model_config = get_configuration_dict()
46
+
47
+ sheet_type: SheetType = Field(
48
+ description="The type of the sheet.",
49
+ default=SheetType.DEFAULT,
50
+ )
51
+
52
+
53
+ class RowMetadataEntry(BaseModel):
54
+ model_config = get_configuration_dict()
55
+ id: str = Field(description="The ID of the metadata")
56
+ key: str = Field(description="The key of the metadata")
57
+ value: str = Field(description="The value of the metadata")
58
+ exact_filter: bool = Field(
59
+ default=False,
60
+ description="Whether the metadata is to be used for strict filtering",
61
+ )
62
+
63
+
64
+ class DDMetadata(BaseMetadata):
65
+ model_config = get_configuration_dict()
66
+
67
+ question_file_ids: list[str] = Field(
68
+ default_factory=list, description="The IDs of the question files"
69
+ )
70
+ source_file_ids: list[str] = Field(
71
+ default_factory=list, description="The IDs of the source files"
72
+ )
73
+ question_texts: list[str] = Field(
74
+ default_factory=list, description="The texts of the questions"
75
+ )
76
+ context: str = Field(default="", description="The context text for the table.")
77
+
78
+ @field_validator("context", mode="before")
79
+ @classmethod
80
+ def normalize_context(cls, v):
81
+ if v is None:
82
+ return ""
83
+ return v
84
+
85
+
86
+ # Define template types
87
+ A = TypeVar("A", bound=MagicTableAction)
88
+ T = TypeVar("T", bound=BaseMetadata)
89
+
90
+
91
+ class MagicTableBasePayload(BaseModel, Generic[A, T]):
92
+ model_config = get_configuration_dict()
93
+ name: str = Field(description="The name of the module")
94
+ sheet_name: str
95
+
96
+ action: A
97
+ chat_id: str
98
+ assistant_id: str
99
+ table_id: str
100
+ user_message: ChatEventUserMessage = Field(
101
+ default=ChatEventUserMessage(
102
+ id="", text="", original_text="", created_at="", language=""
103
+ )
104
+ )
105
+ assistant_message: ChatEventAssistantMessage = Field(
106
+ default=ChatEventAssistantMessage(id="", created_at="")
107
+ )
108
+ configuration: dict[str, Any] = {}
109
+ metadata: T
110
+ metadata_filter: dict[str, Any] | None = None
111
+
112
+
113
+ ########### Specialized Payload definitions ###########
114
+
115
+
116
+ class MagicTableAddMetadataPayload(
117
+ MagicTableBasePayload[Literal[MagicTableAction.ADD_META_DATA], DDMetadata]
118
+ ): ...
119
+
120
+
121
+ class MagicTableUpdateCellPayload(
122
+ MagicTableBasePayload[Literal[MagicTableAction.UPDATE_CELL], DDMetadata]
123
+ ):
124
+ column_order: int
125
+ row_order: int
126
+ data: str
127
+
128
+
129
+ class ArtifactType(StrEnum):
130
+ QUESTIONS = "QUESTIONS"
131
+ FULL_REPORT = "FULL_REPORT"
132
+
133
+
134
+ class ArtifactData(BaseModel):
135
+ model_config = get_configuration_dict()
136
+ artifact_type: ArtifactType
137
+
138
+
139
+ class MagicTableGenerateArtifactPayload(
140
+ MagicTableBasePayload[Literal[MagicTableAction.GENERATE_ARTIFACT], BaseMetadata]
141
+ ):
142
+ data: ArtifactData
143
+
144
+
145
+ ########## Sheet Completed Payload ##########
146
+
147
+
148
+ class SheetCompletedMetadata(BaseMetadata):
149
+ model_config = get_configuration_dict()
150
+ sheet_id: str = Field(description="The ID of the sheet that was completed.")
151
+ library_sheet_id: str = Field(
152
+ description="The ID of the library corresponding to the sheet."
153
+ )
154
+ context: str = Field(default="", description="The context text for the table.")
155
+
156
+ @field_validator("context", mode="before")
157
+ @classmethod
158
+ def normalize_context(cls, v):
159
+ if v is None:
160
+ return ""
161
+ return v
162
+
163
+
164
+ class MagicTableSheetCompletedPayload(
165
+ MagicTableBasePayload[
166
+ Literal[MagicTableAction.SHEET_COMPLETED], SheetCompletedMetadata
167
+ ]
168
+ ): ...
169
+
170
+
171
+ class SheetCreatedMetadata(BaseMetadata): ...
172
+
173
+
174
+ class MagicTableSheetCreatedPayload(
175
+ MagicTableBasePayload[Literal[MagicTableAction.SHEET_CREATED], SheetCreatedMetadata]
176
+ ): ...
177
+
178
+
179
+ ########## Library Sheet Row Verified Payload ##########
180
+
181
+
182
+ class LibrarySheetRowVerifiedMetadata(BaseMetadata):
183
+ model_config = get_configuration_dict()
184
+ row_order: int = Field(description="The row index of the row that was verified.")
185
+
186
+
187
+ class MagicTableLibrarySheetRowVerifiedPayload(
188
+ MagicTableBasePayload[
189
+ Literal[MagicTableAction.LIBRARY_SHEET_ROW_VERIFIED],
190
+ LibrarySheetRowVerifiedMetadata,
191
+ ]
192
+ ): ...
193
+
194
+
195
+ ########### Magic Table Event definition ###########
196
+
197
+
198
+ PayloadTypes = (
199
+ MagicTableUpdateCellPayload
200
+ | MagicTableAddMetadataPayload
201
+ | MagicTableGenerateArtifactPayload
202
+ | MagicTableSheetCompletedPayload
203
+ | MagicTableLibrarySheetRowVerifiedPayload
204
+ | MagicTableSheetCreatedPayload
205
+ )
206
+
207
+ MagicTablePayloadTypes = Annotated[PayloadTypes, Field(discriminator="action")]
208
+
209
+
210
+ class MagicTableEvent(ChatEvent):
211
+ event: MagicTableEventTypes # type: ignore[assignment]
212
+ payload: MagicTablePayloadTypes # type: ignore[assignment]
213
+
214
+
215
+ class LogDetail(BaseModel):
216
+ model_config = get_configuration_dict()
217
+ llm_request: LanguageModelMessages | None = Field(
218
+ default=None, description="The LLM request for the log detail"
219
+ )
220
+
221
+ def to_sdk_log_detail(self) -> SDKLogDetail:
222
+ llm_request = None
223
+ if self.llm_request:
224
+ llm_request = self.llm_request.model_dump()
225
+ return SDKLogDetail(llmRequest=llm_request)
226
+
227
+
228
+ class LogEntry(BaseModel):
229
+ model_config = get_configuration_dict()
230
+
231
+ text: str
232
+ created_at: str
233
+ actor_type: LanguageModelMessageRole
234
+ message_id: str | None = None
235
+ details: LogDetail | None = Field(
236
+ default=None, description="The details of the log entry"
237
+ )
238
+
239
+ @field_validator("actor_type", mode="before")
240
+ @classmethod
241
+ def normalize_actor_type(cls, v):
242
+ if isinstance(v, str):
243
+ return v.lower()
244
+ return v
245
+
246
+ def to_sdk_log_entry(self) -> SDKLogEntry:
247
+ params: dict[str, Any] = {
248
+ "text": self.text,
249
+ "createdAt": self.created_at,
250
+ "actorType": self.actor_type.value.upper(),
251
+ }
252
+ if self.details:
253
+ params["details"] = self.details.to_sdk_log_detail()
254
+
255
+ return SDKLogEntry(**params)
256
+
257
+
258
+ class MagicTableCellMetaData(BaseModel):
259
+ model_config = get_configuration_dict()
260
+ row_order: int = Field(description="The row index of the cell.")
261
+ column_order: int = Field(description="The column index of the cell.")
262
+ selected: bool | None = None
263
+ selection_method: SelectionMethod | None = None
264
+ agreement_status: AgreementStatus | None = None
265
+
266
+
267
+ class MagicTableCell(BaseModel):
268
+ model_config = get_configuration_dict()
269
+ sheet_id: str
270
+ row_order: int = Field(description="The row index of the cell.")
271
+ column_order: int = Field(description="The column index of the cell.")
272
+ row_locked: bool = Field(default=False, description="Lock status of the row.")
273
+ text: str
274
+ log_entries: list[LogEntry] = Field(
275
+ default_factory=list, description="The log entries for the cell"
276
+ )
277
+ meta_data: MagicTableCellMetaData | None = Field(
278
+ default=None, description="The metadata for the cell"
279
+ )
280
+ row_metadata: list[RowMetadataEntry] = Field(
281
+ default_factory=list,
282
+ description="The metadata (key value pairs)for the rows.",
283
+ )
284
+
285
+
286
+ class MagicTableSheet(BaseModel):
287
+ model_config = get_configuration_dict()
288
+ sheet_id: str
289
+ name: str
290
+ state: AgenticTableSheetState
291
+ total_number_of_rows: int = Field(
292
+ default=0,
293
+ description="The total number of rows in the sheet",
294
+ alias="magicTableRowCount",
295
+ )
296
+ chat_id: str
297
+ created_by: str
298
+ company_id: str
299
+ created_at: str
300
+ magic_table_cells: list[MagicTableCell] = Field(
301
+ default_factory=list, description="The cells in the sheet"
302
+ )
303
+ magic_table_sheet_metadata: list[RowMetadataEntry] = Field(
304
+ default_factory=list, description="The metadata for the sheet"
305
+ )