iatoolkit 2.26.3__tar.gz → 2.26.5__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 (249) hide show
  1. {iatoolkit-2.26.3/src/iatoolkit.egg-info → iatoolkit-2.26.5}/PKG-INFO +1 -1
  2. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/__init__.py +1 -1
  3. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/locales/en.yaml +74 -10
  4. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/locales/es.yaml +74 -10
  5. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/knowledge_wiki_repo.py +78 -0
  6. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/models.py +36 -0
  7. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/tenant_wiki_service.py +705 -46
  8. {iatoolkit-2.26.3 → iatoolkit-2.26.5/src/iatoolkit.egg-info}/PKG-INFO +1 -1
  9. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/LICENSE +0 -0
  10. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/LICENSE_COMMUNITY.md +0 -0
  11. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/pyproject.toml +0 -0
  12. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/readme.md +0 -0
  13. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/requirements.txt +0 -0
  14. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/setup.cfg +0 -0
  15. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/base_company.py +0 -0
  16. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/cli_commands.py +0 -0
  17. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/__init__.py +0 -0
  18. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/exceptions.py +0 -0
  19. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/interfaces/__init__.py +0 -0
  20. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
  21. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
  22. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
  23. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
  24. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
  25. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
  26. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
  27. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/model_registry.py +0 -0
  28. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/routes.py +0 -0
  29. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/secret_resolver.py +0 -0
  30. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/session_manager.py +0 -0
  31. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/common/util.py +0 -0
  32. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/company_registry.py +0 -0
  33. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/__init__.py +0 -0
  34. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
  35. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
  36. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
  37. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
  38. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
  39. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
  40. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
  41. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
  42. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
  43. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
  44. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
  45. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
  46. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
  47. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
  48. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
  49. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
  50. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
  51. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
  52. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
  53. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
  54. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
  55. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
  56. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
  57. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
  58. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
  59. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
  60. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
  61. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
  62. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
  63. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/core.py +0 -0
  64. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/__init__.py +0 -0
  65. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  66. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/call_service.py +0 -0
  67. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  68. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  69. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  70. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  71. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  72. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  73. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  74. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/google_auth_client.py +0 -0
  75. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/google_chat_app.py +0 -0
  76. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
  77. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/inference_handler.py +0 -0
  78. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
  79. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
  80. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  81. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
  82. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
  83. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
  84. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
  85. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
  86. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
  87. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/llm_proxy.py +0 -0
  88. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/llm_response.py +0 -0
  89. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  90. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/__init__.py +0 -0
  91. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/api_key_repo.py +0 -0
  92. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/database_manager.py +0 -0
  93. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/document_repo.py +0 -0
  94. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
  95. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
  96. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  97. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
  98. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/memory_repo.py +0 -0
  99. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/profile_repo.py +0 -0
  100. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
  101. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
  102. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
  103. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/repositories/vs_repo.py +0 -0
  104. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/runtime_logging.py +0 -0
  105. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/__init__.py +0 -0
  106. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/api_key_service.py +0 -0
  107. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/attachment_policy_service.py +0 -0
  108. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/auth_service.py +0 -0
  109. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/benchmark_service.py +0 -0
  110. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/branding_service.py +0 -0
  111. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/company_context_service.py +0 -0
  112. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/configuration_service.py +0 -0
  113. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/context_builder_service.py +0 -0
  114. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/dispatcher_service.py +0 -0
  115. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/embedding_service.py +0 -0
  116. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/excel_service.py +0 -0
  117. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/file_processor_service.py +0 -0
  118. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/history_manager_service.py +0 -0
  119. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/http_tool_service.py +0 -0
  120. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/i18n_service.py +0 -0
  121. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/inference_service.py +0 -0
  122. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/jwt_service.py +0 -0
  123. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/knowledge_base_service.py +0 -0
  124. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/language_service.py +0 -0
  125. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/license_service.py +0 -0
  126. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/llm_client_service.py +0 -0
  127. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/mail_service.py +0 -0
  128. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
  129. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/mcp_token_service.py +0 -0
  130. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/memory_compiler_service.py +0 -0
  131. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/memory_lint_service.py +0 -0
  132. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
  133. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/memory_service.py +0 -0
  134. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/memory_wiki_service.py +0 -0
  135. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
  136. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
  137. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/__init__.py +0 -0
  138. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/contracts.py +0 -0
  139. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
  140. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
  141. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
  142. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
  143. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
  144. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
  145. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
  146. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
  147. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/parsers/validator.py +0 -0
  148. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/pdf_service.py +0 -0
  149. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/profile_service.py +0 -0
  150. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/prompt_resource_service.py +0 -0
  151. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/prompt_service.py +0 -0
  152. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/query_service.py +0 -0
  153. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
  154. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/sql_dataset_service.py +0 -0
  155. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/sql_service.py +0 -0
  156. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/sql_source_service.py +0 -0
  157. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/storage_service.py +0 -0
  158. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/structured_output_service.py +0 -0
  159. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
  160. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/system_tools.py +0 -0
  161. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/telemetry_service.py +0 -0
  162. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/tool_output_contract.py +0 -0
  163. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/tool_service.py +0 -0
  164. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/user_feedback_service.py +0 -0
  165. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/user_session_context_service.py +0 -0
  166. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/visual_kb_service.py +0 -0
  167. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/visual_tool_service.py +0 -0
  168. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/warmup_service.py +0 -0
  169. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/web_search/__init__.py +0 -0
  170. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
  171. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
  172. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
  173. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/services/web_search_service.py +0 -0
  174. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  175. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  176. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  177. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  178. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  179. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  180. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  181. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  182. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_main.js +0 -0
  183. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
  184. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
  185. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  186. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  187. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  188. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  189. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  190. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/styles/chat_public.css +0 -0
  191. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/styles/documents.css +0 -0
  192. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/styles/landing_page.css +0 -0
  193. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/styles/llm_output.css +0 -0
  194. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/static/styles/onboarding.css +0 -0
  195. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/_company_header.html +0 -0
  196. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/_login_widget.html +0 -0
  197. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/account.html +0 -0
  198. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/base.html +0 -0
  199. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/change_password.html +0 -0
  200. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/chat.html +0 -0
  201. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
  202. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/chat_modals.html +0 -0
  203. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/error.html +0 -0
  204. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/forgot_password.html +0 -0
  205. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/home_hosted_default.html +0 -0
  206. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
  207. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  208. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/pdf/base.html +0 -0
  209. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/pdf/letter.html +0 -0
  210. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/pdf/report.html +0 -0
  211. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/pdf/simple.html +0 -0
  212. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/templates/signup.html +0 -0
  213. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/__init__.py +0 -0
  214. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/account_view.py +0 -0
  215. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/api_key_api_view.py +0 -0
  216. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/base_login_view.py +0 -0
  217. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/categories_api_view.py +0 -0
  218. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/change_password_view.py +0 -0
  219. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
  220. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/chat_view.py +0 -0
  221. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/configuration_api_view.py +0 -0
  222. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/connectors_api_view.py +0 -0
  223. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/embedding_api_view.py +0 -0
  224. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/forgot_password_view.py +0 -0
  225. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/help_content_api_view.py +0 -0
  226. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/history_api_view.py +0 -0
  227. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/home_view.py +0 -0
  228. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/init_context_api_view.py +0 -0
  229. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  230. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/load_document_api_view.py +0 -0
  231. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/login_view.py +0 -0
  232. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/logout_api_view.py +0 -0
  233. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/memory_api_view.py +0 -0
  234. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/profile_api_view.py +0 -0
  235. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/prompt_api_view.py +0 -0
  236. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
  237. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
  238. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/rag_api_view.py +0 -0
  239. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/root_redirect_view.py +0 -0
  240. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/signup_view.py +0 -0
  241. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/static_page_view.py +0 -0
  242. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/tool_api_view.py +0 -0
  243. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  244. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/users_api_view.py +0 -0
  245. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit/views/verify_user_view.py +0 -0
  246. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
  247. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  248. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/src/iatoolkit.egg-info/requires.txt +0 -0
  249. {iatoolkit-2.26.3 → iatoolkit-2.26.5}/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.26.3
3
+ Version: 2.26.5
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.26.3"
6
+ __version__ = "2.26.5"
7
7
 
8
8
  # Expose main classes and functions at the top level of the package
9
9
 
@@ -629,9 +629,18 @@ ui:
629
629
  create_wiki: "Create wiki"
630
630
  select_wiki: "Select a wiki"
631
631
  workspace_placeholder: "Choose a wiki from the list or create a new one."
632
+ open_wiki: "Open wiki"
633
+ back_to_wikis: "Back to wikis"
632
634
  configure: "Configuration"
635
+ configure_action: "Configure"
636
+ general: "General"
633
637
  key: "Key"
634
638
  name: "Name"
639
+ authoring_mode: "Authoring mode"
640
+ mode_managed: "Managed"
641
+ mode_external_sync: "External"
642
+ mode_managed_help: "The wiki is edited from this workspace and pages are saved into storage."
643
+ mode_external_sync_help: "The wiki stays read-only in IAToolkit and updates from the configured storage root."
635
644
  root: "Storage root"
636
645
  edit_root: "Edit storage root"
637
646
  lock_root: "Lock storage root editing"
@@ -643,20 +652,75 @@ ui:
643
652
  pages: "Pages"
644
653
  index: "Index"
645
654
  mcp: "MCP"
655
+ content: "Content"
656
+ tree: "Tree"
657
+ list: "List"
658
+ home: "Home"
659
+ home_short: "Home"
660
+ home_summary: "Root page exposed to MCP."
661
+ page: "Page"
662
+ edit_page: "Edit"
663
+ back: "Back"
664
+ link_page: "Link"
665
+ new_page: "Page"
666
+ history: "History"
667
+ page_history: "Page history"
668
+ no_revisions: "No revisions yet."
669
+ history_error: "Could not load history."
670
+ move_page: "Move"
671
+ create_page: "Create page"
672
+ delete_page: "Delete page"
673
+ delete_page_confirmation: "Delete page"
674
+ delete_page_message: "This removes the page from the managed wiki and deletes its markdown file."
675
+ page_path: "File path"
676
+ current_path: "Current path"
677
+ new_path: "New path"
678
+ page_title: "Title"
679
+ source: "Source"
680
+ pages_summary: "{count} pages available."
681
+ pages_available_short: "{count} available"
682
+ page_editing: "Editing {path}"
683
+ page_local_draft: "Local changes"
684
+ page_create_ok: "Page created."
685
+ page_create_error: "Could not create page."
686
+ page_save_ok: "Page saved."
687
+ page_save_error: "Could not save page."
688
+ page_saving: "Saving..."
689
+ save_page: "Save"
690
+ page_delete_ok: "Page deleted."
691
+ page_delete_error: "Could not delete page."
692
+ page_deleting: "Deleting..."
693
+ page_move_ok: "Page moved."
694
+ page_move_error: "Could not move page."
695
+ page_path_required: "Page path is required."
696
+ revision_create: "Created"
697
+ revision_update: "Edited"
698
+ revision_delete: "Deleted"
699
+ revision_move: "Moved"
700
+ root_group: "Root"
701
+ delete_wiki: "Delete wiki"
646
702
  mcp_status: "MCP publication"
647
703
  mcp_status_published: "Published"
648
704
  mcp_status_unpublished: "Not published"
649
705
  mcp_status_published_help: "This wiki index is already exposed as a resource in the tenant MCP catalog."
650
706
  mcp_status_unpublished_help: "This wiki does not yet expose its index as an MCP resource."
651
707
  mcp_wiki_key: "MCP wiki_key"
708
+ mcp_entrypoint: "MCP home"
652
709
  lint: "Validate"
653
710
  validate: "Validate"
654
711
  validation_results: "Validation results"
655
- sync: "Sync"
712
+ sync: "Update"
656
713
  issues: "issues"
657
- index_mcp_path: "MCP path"
714
+ index_path: "Path"
658
715
  index_source: "Source"
716
+ index_view_generated: "Generated"
717
+ index_view_mcp: "MCP"
659
718
  index_resource: "Resource URI"
719
+ workspace_hint_title: "Workspace"
720
+ workspace_hint_copy: "Open this wiki to browse its pages and switch into editing without the wiki list."
721
+ overview_structure: "Structure"
722
+ overview_structure_empty: "No indexed pages yet."
723
+ overview_structure_more: "{count} more folders"
660
724
  mcp_publish_help: "This action publishes only this wiki's markdown index resource into MCP."
661
725
  mcp_tools_help: "The tools iat_wiki_search and iat_wiki_get_page are enabled separately from the MCP manager."
662
726
  mcp_step_publish_title: "1. Publish resource"
@@ -683,11 +747,11 @@ ui:
683
747
  delete_message: "This removes the wiki configuration, generated index, and indexed pages. Source markdown files in storage are not deleted."
684
748
  delete_ok: "Wiki deleted."
685
749
  delete_error: "Could not delete wiki."
686
- sync_ok: "Sync completed."
687
- sync_partial_ok: "Sync completed with errors."
688
- sync_error: "Could not sync wiki."
689
- sync_running: "Syncing..."
690
- sync_results: "Sync result"
750
+ sync_ok: "Update completed."
751
+ sync_partial_ok: "Update completed with errors."
752
+ sync_error: "Could not update the wiki from storage."
753
+ sync_running: "Updating..."
754
+ sync_results: "Update result"
691
755
  sync_status_idle: "Not run"
692
756
  sync_status_success: "Completed"
693
757
  sync_status_partial: "Completed with errors"
@@ -697,9 +761,9 @@ ui:
697
761
  sync_failed: "Failed"
698
762
  sync_finished_at: "Finished"
699
763
  sync_first_error: "First error"
700
- sync_summary_success: "Reviewed {seen} markdown files and indexed {indexed} pages."
701
- sync_summary_partial: "Reviewed {seen} markdown files, indexed {indexed} pages, and found {failed} failures."
702
- sync_summary_error: "Sync failed after reviewing {seen} markdown files. {failed} files could not be indexed."
764
+ sync_summary_success: "Reviewed {seen} markdown files and updated {indexed} pages."
765
+ sync_summary_partial: "Reviewed {seen} markdown files, updated {indexed} pages, and found {failed} failures."
766
+ sync_summary_error: "The update failed after reviewing {seen} markdown files. {failed} files could not be indexed."
703
767
  sync_summary_empty: "No markdown files were found under this storage root."
704
768
  lint_ok: "Validation completed."
705
769
  lint_error: "Could not validate wiki."
@@ -629,9 +629,18 @@ ui:
629
629
  create_wiki: "Crear wiki"
630
630
  select_wiki: "Selecciona una wiki"
631
631
  workspace_placeholder: "Elige una wiki del listado o crea una nueva."
632
+ open_wiki: "Abrir wiki"
633
+ back_to_wikis: "Volver a wikis"
632
634
  configure: "Configuración"
635
+ configure_action: "Configurar"
636
+ general: "General"
633
637
  key: "Clave"
634
638
  name: "Nombre"
639
+ authoring_mode: "Modo de gestión"
640
+ mode_managed: "Gestionada"
641
+ mode_external_sync: "Externa"
642
+ mode_managed_help: "La wiki se edita desde esta interfaz y guarda sus páginas en storage."
643
+ mode_external_sync_help: "La wiki queda de solo lectura en IAToolkit y se actualiza desde la raíz storage configurada."
635
644
  root: "Raíz storage"
636
645
  edit_root: "Editar raíz storage"
637
646
  lock_root: "Bloquear edición de raíz storage"
@@ -643,20 +652,75 @@ ui:
643
652
  pages: "Páginas"
644
653
  index: "Índice"
645
654
  mcp: "MCP"
655
+ content: "Contenido"
656
+ tree: "Árbol"
657
+ list: "Lista"
658
+ home: "Portada"
659
+ home_short: "Inicio"
660
+ home_summary: "Página raíz expuesta al MCP."
661
+ page: "Página"
662
+ edit_page: "Editar"
663
+ back: "Volver"
664
+ link_page: "Vincular"
665
+ new_page: "Página"
666
+ history: "Historial"
667
+ page_history: "Historial de página"
668
+ no_revisions: "Aún no hay revisiones."
669
+ history_error: "No se pudo cargar el historial."
670
+ move_page: "Mover"
671
+ create_page: "Crear página"
672
+ delete_page: "Borrar página"
673
+ delete_page_confirmation: "Eliminar página"
674
+ delete_page_message: "Se borrará esta página del wiki gestionado y su archivo markdown asociado."
675
+ page_path: "Ruta de archivo"
676
+ current_path: "Ruta actual"
677
+ new_path: "Nueva ruta"
678
+ page_title: "Título"
679
+ source: "Origen"
680
+ pages_summary: "{count} páginas disponibles."
681
+ pages_available_short: "{count} disponibles"
682
+ page_editing: "Editando {path}"
683
+ page_local_draft: "Cambios locales"
684
+ page_create_ok: "Página creada."
685
+ page_create_error: "No se pudo crear la página."
686
+ page_save_ok: "Página guardada."
687
+ page_save_error: "No se pudo guardar la página."
688
+ page_saving: "Guardando..."
689
+ save_page: "Guardar"
690
+ page_delete_ok: "Página eliminada."
691
+ page_delete_error: "No se pudo eliminar la página."
692
+ page_deleting: "Eliminando..."
693
+ page_move_ok: "Página movida."
694
+ page_move_error: "No se pudo mover la página."
695
+ page_path_required: "Debes ingresar la ruta del archivo."
696
+ revision_create: "Creada"
697
+ revision_update: "Editada"
698
+ revision_delete: "Eliminada"
699
+ revision_move: "Movida"
700
+ root_group: "Raíz"
701
+ delete_wiki: "Borrar wiki"
646
702
  mcp_status: "Publicación MCP"
647
703
  mcp_status_published: "Publicado"
648
704
  mcp_status_unpublished: "No publicado"
649
705
  mcp_status_published_help: "El índice de esta wiki ya está expuesto como resource en el catálogo MCP del tenant."
650
706
  mcp_status_unpublished_help: "Esta wiki todavía no expone su índice como resource MCP."
651
707
  mcp_wiki_key: "wiki_key MCP"
708
+ mcp_entrypoint: "Portada MCP"
652
709
  lint: "Validar"
653
710
  validate: "Validar"
654
711
  validation_results: "Resultados de validación"
655
- sync: "Sincronizar"
712
+ sync: "Actualizar"
656
713
  issues: "hallazgos"
657
- index_mcp_path: "Ruta MCP"
714
+ index_path: "Ruta"
658
715
  index_source: "Fuente"
716
+ index_view_generated: "Generado"
717
+ index_view_mcp: "MCP"
659
718
  index_resource: "URI del resource"
719
+ workspace_hint_title: "Workspace"
720
+ workspace_hint_copy: "Abre esta wiki para explorar sus páginas y pasar a modo edición sin la lista de wikis."
721
+ overview_structure: "Estructura"
722
+ overview_structure_empty: "Aún no hay páginas indexadas."
723
+ overview_structure_more: "{count} carpetas más"
660
724
  mcp_publish_help: "Esta acción publica en MCP solo el resource del índice markdown de esta wiki."
661
725
  mcp_tools_help: "Las tools iat_wiki_search e iat_wiki_get_page se habilitan por separado desde el gestor MCP."
662
726
  mcp_step_publish_title: "1. Publicar resource"
@@ -683,11 +747,11 @@ ui:
683
747
  delete_message: "Se borrará la configuración de la wiki, el índice generado y las páginas indexadas. Los archivos markdown fuente del storage no se borran."
684
748
  delete_ok: "Wiki eliminada."
685
749
  delete_error: "No se pudo eliminar la wiki."
686
- sync_ok: "Sincronización completada."
687
- sync_partial_ok: "Sincronización completada con errores."
688
- sync_error: "No se pudo sincronizar la wiki."
689
- sync_running: "Sincronizando..."
690
- sync_results: "Resultado de sincronización"
750
+ sync_ok: "Actualización completada."
751
+ sync_partial_ok: "Actualización completada con errores."
752
+ sync_error: "No se pudo actualizar la wiki desde storage."
753
+ sync_running: "Actualizando..."
754
+ sync_results: "Resultado de actualización"
691
755
  sync_status_idle: "Sin ejecutar"
692
756
  sync_status_success: "Completada"
693
757
  sync_status_partial: "Con errores"
@@ -697,9 +761,9 @@ ui:
697
761
  sync_failed: "Fallidas"
698
762
  sync_finished_at: "Finalizó"
699
763
  sync_first_error: "Primer error"
700
- sync_summary_success: "Se revisaron {seen} archivos markdown y se indexaron {indexed} páginas."
701
- sync_summary_partial: "Se revisaron {seen} archivos markdown, se indexaron {indexed} páginas y {failed} fallaron."
702
- sync_summary_error: "La sincronización falló después de revisar {seen} archivos markdown. {failed} archivos no pudieron indexarse."
764
+ sync_summary_success: "Se revisaron {seen} archivos markdown y se actualizaron {indexed} páginas."
765
+ sync_summary_partial: "Se revisaron {seen} archivos markdown, se actualizaron {indexed} páginas y {failed} fallaron."
766
+ sync_summary_error: "La actualización falló después de revisar {seen} archivos markdown. {failed} archivos no pudieron indexarse."
703
767
  sync_summary_empty: "No se encontraron archivos markdown bajo esta raíz de storage."
704
768
  lint_ok: "Validación completada."
705
769
  lint_error: "No se pudo validar la wiki."
@@ -8,11 +8,13 @@ from __future__ import annotations
8
8
  from datetime import datetime
9
9
 
10
10
  from injector import inject
11
+ from sqlalchemy import or_
11
12
 
12
13
  from iatoolkit.repositories.database_manager import DatabaseManager
13
14
  from iatoolkit.repositories.models import (
14
15
  KnowledgeWiki,
15
16
  KnowledgeWikiPage,
17
+ KnowledgeWikiPageRevision,
16
18
  KnowledgeWikiPageStatus,
17
19
  KnowledgeWikiStatus,
18
20
  KnowledgeWikiSyncRun,
@@ -187,6 +189,82 @@ class KnowledgeWikiRepo:
187
189
  self.session.commit()
188
190
  return page
189
191
 
192
+ def save_page(self, page: KnowledgeWikiPage) -> KnowledgeWikiPage:
193
+ self.session.add(page)
194
+ self.session.commit()
195
+ return page
196
+
197
+ def delete_page(self, wiki_id: int, path: str) -> KnowledgeWikiPage | None:
198
+ page = self.get_page_by_path(wiki_id, path)
199
+ if page is None:
200
+ return None
201
+ self.session.delete(page)
202
+ self.session.commit()
203
+ return page
204
+
205
+ def create_page_revision(
206
+ self,
207
+ *,
208
+ company_id: int,
209
+ wiki_id: int,
210
+ page_id: int | None,
211
+ action: str,
212
+ path: str,
213
+ previous_path: str | None = None,
214
+ title: str | None = None,
215
+ markdown: str | None = None,
216
+ checksum: str | None = None,
217
+ edited_by: str | None = None,
218
+ change_summary: str | None = None,
219
+ metadata_json: dict | None = None,
220
+ ) -> KnowledgeWikiPageRevision:
221
+ revision = KnowledgeWikiPageRevision(
222
+ company_id=company_id,
223
+ wiki_id=wiki_id,
224
+ page_id=page_id,
225
+ action=action,
226
+ path=path,
227
+ previous_path=previous_path,
228
+ title=title,
229
+ markdown=markdown,
230
+ checksum=checksum,
231
+ edited_by=edited_by,
232
+ change_summary=change_summary,
233
+ metadata_json=metadata_json or {},
234
+ )
235
+ self.session.add(revision)
236
+ self.session.commit()
237
+ return revision
238
+
239
+ def list_page_revisions(
240
+ self,
241
+ wiki_id: int,
242
+ *,
243
+ path: str | None = None,
244
+ page_id: int | None = None,
245
+ limit: int = 50,
246
+ ) -> list[KnowledgeWikiPageRevision]:
247
+ if not wiki_id:
248
+ return []
249
+ query = self.session.query(KnowledgeWikiPageRevision).filter_by(wiki_id=wiki_id)
250
+ filters = []
251
+ if page_id:
252
+ filters.append(KnowledgeWikiPageRevision.page_id == page_id)
253
+ if path:
254
+ filters.extend([
255
+ KnowledgeWikiPageRevision.path == path,
256
+ KnowledgeWikiPageRevision.previous_path == path,
257
+ ])
258
+ if filters:
259
+ query = query.filter(or_(*filters))
260
+ bounded_limit = min(max(int(limit or 50), 1), 200)
261
+ return (
262
+ query
263
+ .order_by(KnowledgeWikiPageRevision.created_at.desc(), KnowledgeWikiPageRevision.id.desc())
264
+ .limit(bounded_limit)
265
+ .all()
266
+ )
267
+
190
268
  def archive_pages_not_in_paths(self, wiki_id: int, paths: set[str]) -> int:
191
269
  if not wiki_id:
192
270
  return 0
@@ -209,6 +209,11 @@ class Company(Base):
209
209
  back_populates="company",
210
210
  cascade="all, delete-orphan",
211
211
  )
212
+ knowledge_wiki_page_revisions = relationship(
213
+ "KnowledgeWikiPageRevision",
214
+ back_populates="company",
215
+ cascade="all, delete-orphan",
216
+ )
212
217
 
213
218
 
214
219
  def to_dict(self):
@@ -579,6 +584,11 @@ class KnowledgeWiki(Base):
579
584
  back_populates="wiki",
580
585
  cascade="all, delete-orphan",
581
586
  )
587
+ page_revisions = relationship(
588
+ "KnowledgeWikiPageRevision",
589
+ back_populates="wiki",
590
+ cascade="all, delete-orphan",
591
+ )
582
592
 
583
593
  def to_dict(self):
584
594
  return {column.key: getattr(self, column.key) for column in class_mapper(self.__class__).columns}
@@ -617,6 +627,32 @@ class KnowledgeWikiPage(Base):
617
627
  return {column.key: getattr(self, column.key) for column in class_mapper(self.__class__).columns}
618
628
 
619
629
 
630
+ class KnowledgeWikiPageRevision(Base):
631
+ """Immutable audit snapshot for a manual tenant wiki page change."""
632
+ __tablename__ = "iat_knowledge_wiki_page_revisions"
633
+
634
+ id = Column(Integer, primary_key=True, autoincrement=True)
635
+ company_id = Column(Integer, ForeignKey(f"{ORM_SCHEMA}.iat_companies.id", ondelete="CASCADE"), nullable=False)
636
+ wiki_id = Column(Integer, ForeignKey(f"{ORM_SCHEMA}.iat_knowledge_wikis.id", ondelete="CASCADE"), nullable=False)
637
+ page_id = Column(Integer, ForeignKey(f"{ORM_SCHEMA}.iat_knowledge_wiki_pages.id", ondelete="SET NULL"), nullable=True)
638
+ action = Column(String, nullable=False)
639
+ path = Column(String, nullable=False)
640
+ previous_path = Column(String, nullable=True)
641
+ title = Column(String, nullable=True)
642
+ markdown = Column(Text, nullable=True)
643
+ checksum = Column(String, nullable=True)
644
+ edited_by = Column(String, nullable=True)
645
+ change_summary = Column(Text, nullable=True)
646
+ metadata_json = Column(JSON_NATIVE, nullable=False, default=dict)
647
+ created_at = Column(DateTime, default=datetime.now, nullable=False)
648
+
649
+ company = relationship("Company", back_populates="knowledge_wiki_page_revisions")
650
+ wiki = relationship("KnowledgeWiki", back_populates="page_revisions")
651
+
652
+ def to_dict(self):
653
+ return {column.key: getattr(self, column.key) for column in class_mapper(self.__class__).columns}
654
+
655
+
620
656
  class KnowledgeWikiSyncRun(Base):
621
657
  """Tracks one import/reindex pass for a tenant knowledge wiki."""
622
658
  __tablename__ = "iat_knowledge_wiki_sync_runs"