iatoolkit 2.58.2__tar.gz → 2.59.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 (264) hide show
  1. {iatoolkit-2.58.2/src/iatoolkit.egg-info → iatoolkit-2.59.0}/PKG-INFO +1 -1
  2. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/__init__.py +1 -1
  3. iatoolkit-2.59.0/src/iatoolkit/config/system_prompts/memory_usage.prompt +20 -0
  4. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_tools_pack.yaml +60 -26
  5. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/core.py +0 -4
  6. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/locales/en.yaml +14 -27
  7. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/locales/es.yaml +14 -27
  8. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/knowledge_wiki_repo.py +18 -0
  9. iatoolkit-2.59.0/src/iatoolkit/repositories/memory_repo.py +192 -0
  10. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/models.py +16 -45
  11. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/context_builder_service.py +1 -1
  12. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/dispatcher_service.py +1 -0
  13. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/llm_client_service.py +4 -0
  14. iatoolkit-2.59.0/src/iatoolkit/services/memory_compiler_service.py +727 -0
  15. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/memory_service.py +179 -429
  16. iatoolkit-2.59.0/src/iatoolkit/services/memory_wiki_service.py +223 -0
  17. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/query_service.py +2 -2
  18. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/tenant_wiki_service.py +183 -8
  19. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/tool_service.py +40 -0
  20. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_main.js +1 -1
  21. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_memory_button.js +6 -86
  22. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/chat_memory_modal.html +0 -2
  23. iatoolkit-2.59.0/src/iatoolkit/templates/memory/wiki_schema.md +44 -0
  24. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/memory_api_view.py +0 -4
  25. {iatoolkit-2.58.2 → iatoolkit-2.59.0/src/iatoolkit.egg-info}/PKG-INFO +1 -1
  26. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -3
  27. iatoolkit-2.58.2/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -32
  28. iatoolkit-2.58.2/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -13
  29. iatoolkit-2.58.2/src/iatoolkit/repositories/memory_repo.py +0 -317
  30. iatoolkit-2.58.2/src/iatoolkit/services/memory_compiler_service.py +0 -523
  31. iatoolkit-2.58.2/src/iatoolkit/services/memory_lint_service.py +0 -215
  32. iatoolkit-2.58.2/src/iatoolkit/services/memory_wiki_service.py +0 -329
  33. iatoolkit-2.58.2/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -38
  34. iatoolkit-2.58.2/src/iatoolkit/templates/memory/wiki_schema.md +0 -56
  35. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/LICENSE +0 -0
  36. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/LICENSE_COMMUNITY.md +0 -0
  37. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/pyproject.toml +0 -0
  38. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/readme.md +0 -0
  39. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/setup.cfg +0 -0
  40. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/base_company.py +0 -0
  41. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/cli_commands.py +0 -0
  42. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/__init__.py +0 -0
  43. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/bridge_validation.py +0 -0
  44. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/company_paths.py +0 -0
  45. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/exceptions.py +0 -0
  46. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
  47. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
  48. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
  49. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
  50. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
  51. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
  52. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
  53. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/model_registry.py +0 -0
  54. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/routes.py +0 -0
  55. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/secret_resolver.py +0 -0
  56. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/session_manager.py +0 -0
  57. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/text_splitter.py +0 -0
  58. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/url_safety.py +0 -0
  59. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/util.py +0 -0
  60. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/company_registry.py +0 -0
  61. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/__init__.py +0 -0
  62. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
  63. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
  64. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
  65. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
  66. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
  67. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
  68. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
  69. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
  70. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
  71. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
  72. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
  73. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
  74. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
  75. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
  76. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
  77. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
  78. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
  79. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
  80. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
  81. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
  82. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
  83. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
  84. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
  85. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
  86. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
  87. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
  88. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
  89. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/__init__.py +0 -0
  90. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  91. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/call_service.py +0 -0
  92. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  93. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  94. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  95. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  96. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  97. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  98. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  99. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/google_auth_client.py +0 -0
  100. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
  101. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
  102. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/inference_handler.py +0 -0
  103. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
  104. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
  105. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  106. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
  107. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
  108. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
  109. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
  110. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
  111. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
  112. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
  113. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_response.py +0 -0
  114. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  115. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/__init__.py +0 -0
  116. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/api_key_repo.py +0 -0
  117. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/bridge_repo.py +0 -0
  118. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/database_manager.py +0 -0
  119. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/document_repo.py +0 -0
  120. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
  121. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
  122. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  123. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
  124. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
  125. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
  126. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
  127. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
  128. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
  129. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/runtime_logging.py +0 -0
  130. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/__init__.py +0 -0
  131. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/api_key_service.py +0 -0
  132. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/attachment_policy_service.py +0 -0
  133. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/auth_service.py +0 -0
  134. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/branding_service.py +0 -0
  135. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/company_context_service.py +0 -0
  136. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/configuration_service.py +0 -0
  137. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/embedding_service.py +0 -0
  138. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/excel_service.py +0 -0
  139. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/file_processor_service.py +0 -0
  140. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/history_manager_service.py +0 -0
  141. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/http_tool_service.py +0 -0
  142. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/i18n_service.py +0 -0
  143. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/inference_service.py +0 -0
  144. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/jwt_service.py +0 -0
  145. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/knowledge_base_service.py +0 -0
  146. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/language_service.py +0 -0
  147. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/license_service.py +0 -0
  148. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/mail_service.py +0 -0
  149. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
  150. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/mcp_token_service.py +0 -0
  151. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
  152. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
  153. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/operator_identity_service.py +0 -0
  154. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/__init__.py +0 -0
  155. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/contracts.py +0 -0
  156. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
  157. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
  158. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
  159. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
  160. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
  161. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
  162. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
  163. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
  164. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/validator.py +0 -0
  165. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/pdf_service.py +0 -0
  166. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/profile_service.py +0 -0
  167. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/prompt_resource_service.py +0 -0
  168. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/prompt_service.py +0 -0
  169. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
  170. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/sql_dataset_service.py +0 -0
  171. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/sql_service.py +0 -0
  172. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/sql_source_service.py +0 -0
  173. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/storage_service.py +0 -0
  174. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/structured_output_service.py +0 -0
  175. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
  176. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/system_tools.py +0 -0
  177. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/telemetry_service.py +0 -0
  178. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/tool_output_contract.py +0 -0
  179. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
  180. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
  181. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/visual_kb_service.py +0 -0
  182. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/visual_tool_service.py +0 -0
  183. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/warmup_service.py +0 -0
  184. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/web_search/__init__.py +0 -0
  185. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
  186. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
  187. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
  188. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/web_search_service.py +0 -0
  189. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/images/favicon.ico +0 -0
  190. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/images/favicon.png +0 -0
  191. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  192. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  193. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  194. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  195. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  196. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_header_navigation.js +0 -0
  197. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  198. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  199. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  200. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
  201. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  202. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  203. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  204. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/account.css +0 -0
  205. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  206. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  207. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
  208. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/documents.css +0 -0
  209. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
  210. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
  211. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
  212. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/_chat_header.html +0 -0
  213. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/_company_header.html +0 -0
  214. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/_login_widget.html +0 -0
  215. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/account.html +0 -0
  216. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/base.html +0 -0
  217. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/change_password.html +0 -0
  218. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/chat.html +0 -0
  219. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/chat_modals.html +0 -0
  220. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/error.html +0 -0
  221. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/forgot_password.html +0 -0
  222. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/home_hosted_default.html +0 -0
  223. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/login_global.html +0 -0
  224. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  225. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/pdf/base.html +0 -0
  226. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/pdf/letter.html +0 -0
  227. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/pdf/report.html +0 -0
  228. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/pdf/simple.html +0 -0
  229. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/signup.html +0 -0
  230. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/__init__.py +0 -0
  231. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/account_view.py +0 -0
  232. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/api_key_api_view.py +0 -0
  233. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/base_login_view.py +0 -0
  234. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/categories_api_view.py +0 -0
  235. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/change_password_view.py +0 -0
  236. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
  237. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/chat_view.py +0 -0
  238. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/configuration_api_view.py +0 -0
  239. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/connectors_api_view.py +0 -0
  240. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
  241. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
  242. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
  243. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/history_api_view.py +0 -0
  244. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/home_view.py +0 -0
  245. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
  246. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  247. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/load_document_api_view.py +0 -0
  248. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/login_view.py +0 -0
  249. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/logout_api_view.py +0 -0
  250. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/profile_api_view.py +0 -0
  251. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
  252. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
  253. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
  254. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/rag_api_view.py +0 -0
  255. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
  256. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/signup_view.py +0 -0
  257. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/static_page_view.py +0 -0
  258. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/tool_api_view.py +0 -0
  259. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  260. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/users_api_view.py +0 -0
  261. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/verify_user_view.py +0 -0
  262. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  263. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit.egg-info/requires.txt +0 -0
  264. {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.58.2
3
+ Version: 2.59.0
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # IAToolkit is open source software.
5
5
 
6
- __version__ = "2.58.2"
6
+ __version__ = "2.59.0"
7
7
 
8
8
  # Expose main classes and functions at the top level of the package
9
9
 
@@ -0,0 +1,20 @@
1
+ ### Memoria de la empresa
2
+
3
+ - La empresa tiene una Memoria: páginas con cómo se hacen las cosas aquí
4
+ (procedimientos, reglas, excepciones, quién decide), escritas a partir de lo
5
+ que su gente explicó. Cada dato indica quién lo dijo y cuándo.
6
+ - Usa `iat_memory_search` antes de responder cómo se hace algo en la empresa o
7
+ cuando la respuesta dependa de prácticas internas. Usa `iat_memory_get_page`
8
+ para leer una página completa cuando lo necesites; si un resultado trae
9
+ `has_native_files=true` y el contenido del archivo importa, léela antes de
10
+ responder.
11
+ - Cuando uses la Memoria, menciona de quién y de cuándo es el dato
12
+ ("según Carmen, marzo 2026"), porque los procesos cambian.
13
+ - Si la Memoria contradice a un documento, muestra las dos versiones con su
14
+ fuente; no elijas en silencio.
15
+ - Cuando el usuario te explique cómo se hace algo o te corrija ("no, eso se
16
+ hace así"), ofrécele guardarlo en la Memoria de la empresa. Si acepta o te lo
17
+ pide ("guarda esto"), avísale que lo verá toda la empresa con su nombre y usa
18
+ `iat_memory_save`, con el contenido redactado en tono neutro y autocontenido.
19
+ - No guardes en la Memoria preferencias personales, recordatorios ni datos
20
+ sensibles que no sirvan al procedimiento.
@@ -372,35 +372,29 @@ tools:
372
372
  - wiki_key
373
373
  - path
374
374
  - function_name: iat_memory_search
375
- description: Busca páginas relevantes dentro de la Memoria personal del usuario y retorna contexto compilado. Incluye la señal `has_native_files` cuando una memoria tiene archivos fuente que pueden adjuntarse nativamente al modelo. Debe usarse antes de responder preguntas sobre cosas guardadas, notas previas, memoria del usuario, continuidad entre sesiones o "lo que hablamos/guardé antes".
375
+ description: Busca en la Memoria de la empresa, el conocimiento de cómo se hacen las cosas en esta empresa que su gente fue guardando (procedimientos, reglas, excepciones, quién decide, correcciones a documentos). Devuelve páginas con título, resumen y fuentes. Incluye la señal `has_native_files` cuando una página tiene archivos fuente que pueden adjuntarse nativamente al modelo. Úsala antes de responder cómo se hace algo en la empresa, o cuando la pregunta dependa de prácticas internas que podrían no estar en los documentos.
376
376
  routing:
377
377
  force_include_capability: has_user_memory
378
378
  routing_profile:
379
379
  tags:
380
380
  - memory
381
- - personal_context
382
- - notes
383
- - saved_notes
381
+ - company_memory
382
+ - know_how
383
+ - procedures
384
+ - internal_practices
385
+ - corrections
384
386
  - saved_content
385
- - plans
386
- - ideas
387
- - work_in_progress
388
- - continuity
389
- - weekly_focus
390
387
  - wiki
391
388
  intents:
392
- - Search the user's personal memory pages for relevant context.
393
- - Retrieve compiled personal notes, saved chat context, and remembered plans or ideas.
394
- - Retrieve what the user was planning, working on, or wanted to implement.
395
- - Search saved personal context about ideas, tasks, plans, priorities, and previous chat notes.
396
- - Use this before answering questions about what the user saved, discussed, planned, or was working on earlier.
389
+ - Search the company memory for how things are done here.
390
+ - Retrieve internal procedures, rules, exceptions and who decides, as people in the company explained them.
391
+ - Check whether people corrected or completed what a company document says.
392
+ - Use this before answering how something is done in this company.
397
393
  examples:
398
- - iat_memory_search(query="ideas sobre onboarding", limit=5)
399
- - iat_memory_search(query="lo que guardé del cliente acme", limit=3)
400
- - iat_memory_search(query="qué tengo pensado para implementar esta semana en iatoolkit", limit=5)
401
- - iat_memory_search(query="en qué estoy trabajando ahora", limit=5)
402
- - iat_memory_search(query="qué ideas guardé sobre agentes y memorias", limit=5)
403
- - iat_memory_search(query="what was I planning to implement this week", limit=5)
394
+ - iat_memory_search(query="cómo se emite una nota de crédito", limit=5)
395
+ - iat_memory_search(query="despachos a regiones los viernes", limit=3)
396
+ - iat_memory_search(query="quién aprueba descuentos sobre 10%", limit=5)
397
+ - iat_memory_search(query="plazo real de pago de clientes grandes", limit=5)
404
398
  cost:
405
399
  penalty: 0.08
406
400
  latency_class: medium
@@ -410,7 +404,7 @@ tools:
410
404
  properties:
411
405
  query:
412
406
  type: string
413
- description: Texto que describe lo que deseas recuperar desde Memoria.
407
+ description: Texto que describe lo que deseas recuperar desde la Memoria de la empresa.
414
408
  limit:
415
409
  type: integer
416
410
  description: Cantidad máxima de páginas a recuperar.
@@ -420,18 +414,18 @@ tools:
420
414
  - query
421
415
  - limit
422
416
  - function_name: iat_memory_get_page
423
- description: Recupera una página completa de la Memoria personal del usuario, incluyendo resumen, decisiones, próximos pasos y fuentes. Si la página proviene de capturas con archivos adjuntos compatibles, esos archivos pueden quedar adjuntos nativamente al turno actual del modelo para inspección directa; en ese caso no hace falta pedir permiso para abrir un access_url temporal. Si `iat_memory_search` devuelve `has_native_files=true` y la respuesta depende del contenido del archivo, debes llamar esta tool antes de responder.
417
+ description: Recupera una página completa de la Memoria de la empresa, en markdown, con autor y fecha de cada dato y sus fuentes. Si la página proviene de capturas con archivos adjuntos compatibles, esos archivos pueden quedar adjuntos nativamente al turno actual del modelo para inspección directa; en ese caso no hace falta pedir permiso para abrir un access_url temporal. Si `iat_memory_search` devuelve `has_native_files=true` y la respuesta depende del contenido del archivo, debes llamar esta tool antes de responder.
424
418
  routing:
425
419
  force_include_capability: has_user_memory
426
420
  routing_profile:
427
421
  tags:
428
422
  - memory
423
+ - company_memory
429
424
  - page
430
- - compiled_context
431
425
  - wiki
432
426
  intents:
433
- - Open a compiled memory page by id.
434
- - Read the full content of a personal memory page before answering.
427
+ - Open a company memory page by id.
428
+ - Read the full content of a company memory page before answering.
435
429
  examples:
436
430
  - iat_memory_get_page(page_id=12)
437
431
  cost:
@@ -443,9 +437,49 @@ tools:
443
437
  properties:
444
438
  page_id:
445
439
  type: integer
446
- description: Identificador de la página de Memoria a recuperar.
440
+ description: Identificador de la página de la Memoria de la empresa, devuelto por `iat_memory_search`.
447
441
  required:
448
442
  - page_id
443
+ - function_name: iat_memory_save
444
+ description: Guarda en la Memoria de la empresa algo que el usuario explicó sobre cómo se hacen las cosas en la empresa (un procedimiento, una regla, una excepción, quién decide) o una corrección a lo que dice un documento o a una respuesta tuya. Lo verá TODA la empresa, con el nombre del usuario y la fecha, y se publica de inmediato. Úsala solo cuando el usuario pida guardarlo ("guarda esto", "que lo sepa la empresa") o acepte cuando le ofreces guardarlo tras corregirte. Antes de llamarla, dile al usuario que lo verá toda la empresa. Redacta `content` en tono neutro e impersonal, con solo el conocimiento útil, sin datos personales ni sensibles que no sirvan al procedimiento. No la uses para preferencias o recordatorios personales.
445
+ # Publishes to the whole company: simulated when an evaluation replays an
446
+ # agent, and marked as a write for MCP clients so they ask the user first.
447
+ execution_config:
448
+ side_effects: true
449
+ destructive: false
450
+ routing:
451
+ force_include_capability: has_user_memory
452
+ routing_profile:
453
+ tags:
454
+ - memory
455
+ - company_memory
456
+ - save
457
+ - capture
458
+ - know_how
459
+ - corrections
460
+ intents:
461
+ - Save what the user explained about how things are done in the company.
462
+ - Save a correction the user made to a document or to an answer.
463
+ - Use only when the user asks to save it or accepts the offer to save it.
464
+ examples:
465
+ - iat_memory_save(content="Al cliente Transportes Sur no se le despacha los viernes; la bodega cierra temprano ese día.", title="Despachos a Transportes Sur")
466
+ - iat_memory_save(content="Las notas de crédito las aprueba Andrea Rojas; si no está, la gerencia.", title="Aprobación de notas de crédito")
467
+ cost:
468
+ penalty: 0.1
469
+ latency_class: medium
470
+ expensive: false
471
+ parameters:
472
+ type: object
473
+ properties:
474
+ content:
475
+ type: string
476
+ description: El conocimiento a guardar, redactado en tono neutro, completo y autocontenido (debe entenderse sin la conversación).
477
+ title:
478
+ type: string
479
+ description: Título corto del tema, por ejemplo "Notas de crédito".
480
+ required:
481
+ - content
482
+ - title
449
483
  - function_name: iat_image_search
450
484
  description: Busca imágenes en la base de conocimiento visual de la empresa usando una descripción de texto. Útil cuando el usuario pide 'ver' algo, 'muéstrame una foto de...', o busca gráficos y diagramas.
451
485
  routing:
@@ -399,9 +399,7 @@ class IAToolkit:
399
399
  from iatoolkit.repositories.filesystem_asset_repository import FileSystemAssetRepository
400
400
  from iatoolkit.repositories.env_secret_provider import EnvSecretProvider
401
401
  from iatoolkit.common.interfaces.memory_compilation_trigger import MemoryCompilationTrigger
402
- from iatoolkit.common.interfaces.memory_lint_trigger import MemoryLintTrigger
403
402
  from iatoolkit.services.noop_memory_compilation_trigger import NoopMemoryCompilationTrigger
404
- from iatoolkit.services.noop_memory_lint_trigger import NoopMemoryLintTrigger
405
403
  from iatoolkit.services.memory_lookup_policy_service import MemoryLookupPolicyService
406
404
 
407
405
  binder.bind(ApiKeyRepo, to=ApiKeyRepo)
@@ -423,8 +421,6 @@ class IAToolkit:
423
421
  binder.bind(SecretProvider, to=EnvSecretProvider)
424
422
  if not is_bound(self._injector, MemoryCompilationTrigger):
425
423
  binder.bind(MemoryCompilationTrigger, to=NoopMemoryCompilationTrigger)
426
- if not is_bound(self._injector, MemoryLintTrigger):
427
- binder.bind(MemoryLintTrigger, to=NoopMemoryLintTrigger)
428
424
  binder.bind(MemoryLookupPolicyService, to=MemoryLookupPolicyService)
429
425
 
430
426
  def _bind_services(self, binder: Binder):
@@ -378,26 +378,25 @@ ui:
378
378
  never_used: "No recorded use"
379
379
 
380
380
  memory:
381
- title: "Memory"
382
- capture_title: "Save something"
383
- capture_helper: "Write a note, paste a link, or add photos and documents to keep them in Memory."
384
- capture_label: "Your capture"
385
- capture_placeholder: "Write an idea, reminder, or paste a useful link here"
381
+ title: "Company memory"
382
+ capture_title: "Teach the company something"
383
+ capture_helper: "Explain how something is done, correct a fact, or attach a document. Everyone in the company will see it, with your name and the date."
384
+ capture_label: "What you want to save"
385
+ capture_placeholder: "For example: customer X never gets deliveries on Fridays"
386
386
  file_label: "Photos and documents"
387
387
  save_capture: "Save to Memory"
388
388
  cancel_edit: "Cancel editing"
389
- tab_recent: "Captures"
390
- tab_recent_helper: "Notes, links, and files you saved"
391
- tab_memories: "Summary"
392
- tab_memories_helper: "What Memory organized from those captures"
389
+ tab_recent: "My contributions"
390
+ tab_recent_helper: "What you saved"
391
+ tab_memories: "What we know"
392
+ tab_memories_helper: "The pages of the company memory"
393
393
  loading: "Loading..."
394
394
  loading_dashboard: "Loading Memory..."
395
- empty_recent: "You haven't saved anything to Memory yet."
396
- empty_memories: "There are no compiled summaries yet."
395
+ empty_recent: "You haven't contributed to the company memory yet."
396
+ empty_memories: "The company memory has no pages yet."
397
397
  delete_modal_title: "Delete from Memory"
398
- delete_modal_body: "Delete this item from Memory?"
398
+ delete_modal_body: "Delete this contribution? The pages built from it are kept."
399
399
  delete_confirm_button: "Delete"
400
- run_lint: "Review Memory"
401
400
 
402
401
  campaigns:
403
402
  title: "Campaigns"
@@ -2535,7 +2534,7 @@ ui:
2535
2534
 
2536
2535
  tooltips:
2537
2536
  history: "History of my queries"
2538
- memory: "Memory"
2537
+ memory: "Company memory"
2539
2538
  reload_context: "Force Context Reload"
2540
2539
  feedback: "Your feedback is very important"
2541
2540
  usage_guide: "Usage Guide"
@@ -2748,24 +2747,12 @@ js_messages:
2748
2747
  memory_file_required: "Select at least one file or photo."
2749
2748
  memory_open_error: "Could not open the memory."
2750
2749
  memory_save_error: "Could not save to Memory."
2751
- memory_save_success: "Saved to Memory"
2750
+ memory_save_success: "Saved to the company memory. Everyone in the company will see it, with your name."
2752
2751
  memory_load_error: "Could not load Memory."
2753
2752
  memory_capture_open_resource: "Open"
2754
2753
  memory_editing_capture: "Editing saved capture"
2755
2754
  memory_save_capture: "Save to Memory"
2756
2755
  memory_save_capture_changes: "Save changes"
2757
- memory_lint_error: "Could not review Memory."
2758
- memory_lint_running: "Reviewing..."
2759
- memory_lint_scheduled: "Memory review scheduled"
2760
- memory_lint_success: "Memory review completed"
2761
- memory_lint_last_title: "Latest review"
2762
- memory_lint_action: "Review memory"
2763
- memory_lint_never_reviewed: "No reviews have been run yet."
2764
- memory_lint_never_timestamp: "No reviews yet"
2765
- memory_lint_checked: "{count} pages checked"
2766
- memory_lint_actions: "{count} fixes applied"
2767
- memory_lint_duplicates: "{count} possible duplicates"
2768
- memory_lint_orphans: "{count} orphan pages"
2769
2756
  memory_page_card_label: "Page"
2770
2757
  memory_edit_item_title: "Edit capture"
2771
2758
  memory_remove_item: "Remove"
@@ -392,26 +392,25 @@ ui:
392
392
  never_used: "Sin uso registrado"
393
393
 
394
394
  memory:
395
- title: "Memoria"
396
- capture_title: "Guardar algo"
397
- capture_helper: "Escribe una nota, pega un link o añade fotos y documentos para guardarlos en Memoria."
398
- capture_label: "Tu captura"
399
- capture_placeholder: "Escribe una idea, recordatorio o pega aquí un link útil"
395
+ title: "Memoria de la empresa"
396
+ capture_title: "Enseñar algo a la empresa"
397
+ capture_helper: "Explica cómo se hace algo, corrige un dato o adjunta un documento. Lo verá toda la empresa, con tu nombre y la fecha."
398
+ capture_label: "Lo que quieres guardar"
399
+ capture_placeholder: "Por ejemplo: al cliente X nunca se le despacha los viernes"
400
400
  file_label: "Fotos y documentos"
401
401
  save_capture: "Guardar en Memoria"
402
402
  cancel_edit: "Cancelar edición"
403
- tab_recent: "Capturas"
404
- tab_recent_helper: "Notas, links y archivos que guardaste"
405
- tab_memories: "Resumen"
406
- tab_memories_helper: "Lo que Memoria organizó a partir de eso"
403
+ tab_recent: "Mis aportes"
404
+ tab_recent_helper: "Lo que tú guardaste"
405
+ tab_memories: "Lo que sabemos"
406
+ tab_memories_helper: "Las páginas de la memoria de la empresa"
407
407
  loading: "Cargando..."
408
408
  loading_dashboard: "Cargando Memoria..."
409
- empty_recent: "Todavía no has guardado nada en Memoria."
410
- empty_memories: "Aún no hay resúmenes compilados."
409
+ empty_recent: "Todavía no has aportado nada a la memoria de la empresa."
410
+ empty_memories: "La memoria de la empresa todavía no tiene páginas."
411
411
  delete_modal_title: "Eliminar de Memoria"
412
- delete_modal_body: "¿Eliminar este elemento de Memoria?"
412
+ delete_modal_body: "¿Eliminar este aporte? Las páginas que se armaron con él se mantienen."
413
413
  delete_confirm_button: "Eliminar"
414
- run_lint: "Revisar Memoria"
415
414
 
416
415
  campaigns:
417
416
  title: "Campañas"
@@ -2551,7 +2550,7 @@ ui:
2551
2550
 
2552
2551
  tooltips:
2553
2552
  history: "Historial con mis consultas"
2554
- memory: "Memoria"
2553
+ memory: "Memoria de la empresa"
2555
2554
  reload_context: "Forzar Recarga de Contexto"
2556
2555
  feedback: "Tu feedback es muy importante"
2557
2556
  usage_guide: "Guía de Uso"
@@ -2767,24 +2766,12 @@ js_messages:
2767
2766
  memory_file_required: "Selecciona al menos un archivo o foto."
2768
2767
  memory_open_error: "No se pudo abrir la memoria."
2769
2768
  memory_save_error: "No se pudo guardar en Memoria."
2770
- memory_save_success: "Guardado en Memoria"
2769
+ memory_save_success: "Guardado en la memoria de la empresa. Lo verá toda la empresa, con tu nombre."
2771
2770
  memory_load_error: "No se pudo cargar Memoria."
2772
2771
  memory_capture_open_resource: "Abrir"
2773
2772
  memory_editing_capture: "Editando captura guardada"
2774
2773
  memory_save_capture: "Guardar en Memoria"
2775
2774
  memory_save_capture_changes: "Guardar cambios"
2776
- memory_lint_error: "No se pudo revisar la Memoria."
2777
- memory_lint_running: "Revisando..."
2778
- memory_lint_scheduled: "Revisión de Memoria programada"
2779
- memory_lint_success: "Revisión de Memoria completada"
2780
- memory_lint_last_title: "Última revisión"
2781
- memory_lint_action: "Revisar memoria"
2782
- memory_lint_never_reviewed: "Aún no hay revisiones registradas."
2783
- memory_lint_never_timestamp: "Sin revisiones"
2784
- memory_lint_checked: "{count} páginas revisadas"
2785
- memory_lint_actions: "{count} ajustes aplicados"
2786
- memory_lint_duplicates: "{count} posibles duplicados"
2787
- memory_lint_orphans: "{count} huérfanas"
2788
2775
  memory_page_card_label: "Página"
2789
2776
  memory_edit_item_title: "Editar captura"
2790
2777
  memory_remove_item: "Quitar"
@@ -108,6 +108,15 @@ class KnowledgeWikiRepo:
108
108
  .first()
109
109
  )
110
110
 
111
+ def get_page_by_id(self, wiki_id: int, page_id: int) -> KnowledgeWikiPage | None:
112
+ if not wiki_id or not page_id:
113
+ return None
114
+ return (
115
+ self.session.query(KnowledgeWikiPage)
116
+ .filter_by(wiki_id=wiki_id, id=page_id)
117
+ .first()
118
+ )
119
+
111
120
  def get_page_by_slug(self, wiki_id: int, slug: str) -> KnowledgeWikiPage | None:
112
121
  if not wiki_id or not slug:
113
122
  return None
@@ -272,6 +281,15 @@ class KnowledgeWikiRepo:
272
281
  .all()
273
282
  )
274
283
 
284
+ def get_page_revision(self, wiki_id: int, revision_id: int) -> KnowledgeWikiPageRevision | None:
285
+ if not wiki_id or not revision_id:
286
+ return None
287
+ return (
288
+ self.session.query(KnowledgeWikiPageRevision)
289
+ .filter_by(wiki_id=wiki_id, id=revision_id)
290
+ .first()
291
+ )
292
+
275
293
  def archive_pages_not_in_paths(self, wiki_id: int, paths: set[str]) -> int:
276
294
  if not wiki_id:
277
295
  return 0
@@ -0,0 +1,192 @@
1
+ # Copyright (c) 2024 Fernando Libedinsky
2
+ # Product: IAToolkit
3
+ #
4
+ # IAToolkit is open source software.
5
+
6
+ from injector import inject
7
+
8
+ from iatoolkit.repositories.database_manager import DatabaseManager
9
+ from iatoolkit.repositories.models import (
10
+ MemoryCapture,
11
+ MemoryCaptureStatus,
12
+ MemoryItem,
13
+ MemoryWikiPageSource,
14
+ )
15
+
16
+
17
+ class MemoryRepo:
18
+ """
19
+ Memoria is the company's memory: captures and items belong to the company,
20
+ and `user_identifier` on them records who saved them (the author). Methods
21
+ that take a `user_identifier` restrict to that author's own captures, which
22
+ is what a user may edit or delete; the rest are company-wide.
23
+ """
24
+
25
+ @inject
26
+ def __init__(self, db_manager: DatabaseManager):
27
+ self.session = db_manager.get_session()
28
+
29
+ def commit(self):
30
+ self.session.commit()
31
+
32
+ def rollback(self):
33
+ self.session.rollback()
34
+
35
+ def create_item(self, item: MemoryItem) -> MemoryItem:
36
+ self.session.add(item)
37
+ self.session.commit()
38
+ return item
39
+
40
+ def create_capture(self, capture: MemoryCapture) -> MemoryCapture:
41
+ self.session.add(capture)
42
+ self.session.commit()
43
+ return capture
44
+
45
+ def save_capture(self, capture: MemoryCapture) -> MemoryCapture:
46
+ self.session.add(capture)
47
+ self.session.commit()
48
+ return capture
49
+
50
+ def save_item(self, item: MemoryItem) -> MemoryItem:
51
+ self.session.add(item)
52
+ self.session.commit()
53
+ return item
54
+
55
+ def get_item(self, company_id: int, item_id: int, user_identifier: str | None = None) -> MemoryItem | None:
56
+ if not company_id or not item_id:
57
+ return None
58
+ query = self.session.query(MemoryItem).filter_by(company_id=company_id, id=item_id)
59
+ if user_identifier is not None:
60
+ query = query.filter_by(user_identifier=user_identifier)
61
+ return query.first()
62
+
63
+ def get_capture(self, company_id: int, capture_id: int, user_identifier: str | None = None) -> MemoryCapture | None:
64
+ if not company_id or not capture_id:
65
+ return None
66
+ query = self.session.query(MemoryCapture).filter_by(company_id=company_id, id=capture_id)
67
+ if user_identifier is not None:
68
+ query = query.filter_by(user_identifier=user_identifier)
69
+ return query.first()
70
+
71
+ def list_capture_items(self, capture_id: int) -> list[MemoryItem]:
72
+ if not capture_id:
73
+ return []
74
+ return (
75
+ self.session.query(MemoryItem)
76
+ .filter_by(capture_id=capture_id)
77
+ .order_by(MemoryItem.created_at.asc(), MemoryItem.id.asc())
78
+ .all()
79
+ )
80
+
81
+ def list_items_by_ids(self, company_id: int, item_ids: list[int]) -> list[MemoryItem]:
82
+ normalized_ids = [item_id for item_id in (item_ids or []) if isinstance(item_id, int)]
83
+ if not company_id or not normalized_ids:
84
+ return []
85
+ return (
86
+ self.session.query(MemoryItem)
87
+ .filter(
88
+ MemoryItem.company_id == company_id,
89
+ MemoryItem.id.in_(normalized_ids),
90
+ )
91
+ .all()
92
+ )
93
+
94
+ def list_recent_captures(self,
95
+ company_id: int,
96
+ user_identifier: str | None = None,
97
+ limit: int = 25) -> list[MemoryCapture]:
98
+ if not company_id:
99
+ return []
100
+ query = self.session.query(MemoryCapture).filter_by(company_id=company_id)
101
+ if user_identifier is not None:
102
+ query = query.filter_by(user_identifier=user_identifier)
103
+ return (
104
+ query
105
+ .order_by(MemoryCapture.created_at.desc(), MemoryCapture.id.desc())
106
+ .limit(limit)
107
+ .all()
108
+ )
109
+
110
+ def list_recent_items(self, company_id: int, limit: int = 25) -> list[MemoryItem]:
111
+ if not company_id:
112
+ return []
113
+ return (
114
+ self.session.query(MemoryItem)
115
+ .filter_by(company_id=company_id)
116
+ .order_by(MemoryItem.created_at.desc(), MemoryItem.id.desc())
117
+ .limit(limit)
118
+ .all()
119
+ )
120
+
121
+ def get_pending_captures(self, company_id: int, limit: int = 25) -> list[MemoryCapture]:
122
+ if not company_id:
123
+ return []
124
+ return (
125
+ self.session.query(MemoryCapture)
126
+ .filter_by(company_id=company_id, status=MemoryCaptureStatus.PENDING)
127
+ .order_by(MemoryCapture.created_at.asc(), MemoryCapture.id.asc())
128
+ .limit(limit)
129
+ .all()
130
+ )
131
+
132
+ def add_page_sources(self, company_id: int, wiki_page_id: int, item_ids: list[int]) -> None:
133
+ """Links items to a wiki page, keeping the links it already has."""
134
+ if not company_id or not wiki_page_id:
135
+ return
136
+ existing = set(self.list_page_source_item_ids(wiki_page_id))
137
+ for item_id in item_ids or []:
138
+ if isinstance(item_id, int) and item_id not in existing:
139
+ self.session.add(MemoryWikiPageSource(
140
+ company_id=company_id,
141
+ wiki_page_id=wiki_page_id,
142
+ memory_item_id=item_id,
143
+ ))
144
+ existing.add(item_id)
145
+ self.session.commit()
146
+
147
+ def list_page_source_item_ids(self, wiki_page_id: int) -> list[int]:
148
+ if not wiki_page_id:
149
+ return []
150
+ rows = (
151
+ self.session.query(MemoryWikiPageSource.memory_item_id)
152
+ .filter_by(wiki_page_id=wiki_page_id)
153
+ .order_by(MemoryWikiPageSource.id.asc())
154
+ .all()
155
+ )
156
+ return [item_id for (item_id,) in rows]
157
+
158
+ def list_page_ids_for_items(self, item_ids: list[int]) -> list[int]:
159
+ normalized_ids = [item_id for item_id in (item_ids or []) if isinstance(item_id, int)]
160
+ if not normalized_ids:
161
+ return []
162
+ rows = (
163
+ self.session.query(MemoryWikiPageSource.wiki_page_id)
164
+ .filter(MemoryWikiPageSource.memory_item_id.in_(normalized_ids))
165
+ .distinct()
166
+ .all()
167
+ )
168
+ return [page_id for (page_id,) in rows]
169
+
170
+ def delete_page_sources_for_item(self, item_id: int) -> None:
171
+ """Unlinks an item from every page. The pages themselves are never touched."""
172
+ if not item_id:
173
+ return
174
+ (
175
+ self.session.query(MemoryWikiPageSource)
176
+ .filter_by(memory_item_id=item_id)
177
+ .delete(synchronize_session=False)
178
+ )
179
+ self.session.commit()
180
+
181
+ def delete_capture(self, capture: MemoryCapture) -> None:
182
+ if not capture:
183
+ return
184
+ self.session.delete(capture)
185
+ self.session.commit()
186
+
187
+ def delete_item(self, item: MemoryItem) -> None:
188
+ if not item:
189
+ return
190
+ self.delete_page_sources_for_item(item.id)
191
+ self.session.delete(item)
192
+ self.session.commit()