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.
- {iatoolkit-2.58.2/src/iatoolkit.egg-info → iatoolkit-2.59.0}/PKG-INFO +1 -1
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/__init__.py +1 -1
- iatoolkit-2.59.0/src/iatoolkit/config/system_prompts/memory_usage.prompt +20 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_tools_pack.yaml +60 -26
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/core.py +0 -4
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/locales/en.yaml +14 -27
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/locales/es.yaml +14 -27
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/knowledge_wiki_repo.py +18 -0
- iatoolkit-2.59.0/src/iatoolkit/repositories/memory_repo.py +192 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/models.py +16 -45
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/context_builder_service.py +1 -1
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/dispatcher_service.py +1 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/llm_client_service.py +4 -0
- iatoolkit-2.59.0/src/iatoolkit/services/memory_compiler_service.py +727 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/memory_service.py +179 -429
- iatoolkit-2.59.0/src/iatoolkit/services/memory_wiki_service.py +223 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/query_service.py +2 -2
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/tenant_wiki_service.py +183 -8
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/tool_service.py +40 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_main.js +1 -1
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_memory_button.js +6 -86
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/chat_memory_modal.html +0 -2
- iatoolkit-2.59.0/src/iatoolkit/templates/memory/wiki_schema.md +44 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/memory_api_view.py +0 -4
- {iatoolkit-2.58.2 → iatoolkit-2.59.0/src/iatoolkit.egg-info}/PKG-INFO +1 -1
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -3
- iatoolkit-2.58.2/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -32
- iatoolkit-2.58.2/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -13
- iatoolkit-2.58.2/src/iatoolkit/repositories/memory_repo.py +0 -317
- iatoolkit-2.58.2/src/iatoolkit/services/memory_compiler_service.py +0 -523
- iatoolkit-2.58.2/src/iatoolkit/services/memory_lint_service.py +0 -215
- iatoolkit-2.58.2/src/iatoolkit/services/memory_wiki_service.py +0 -329
- iatoolkit-2.58.2/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -38
- iatoolkit-2.58.2/src/iatoolkit/templates/memory/wiki_schema.md +0 -56
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/LICENSE +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/pyproject.toml +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/readme.md +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/setup.cfg +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/bridge_validation.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/company_paths.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/model_registry.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/routes.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/secret_resolver.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/text_splitter.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/url_safety.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/google_auth_client.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/inference_handler.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/api_key_repo.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/bridge_repo.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/database_manager.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/runtime_logging.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/api_key_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/attachment_policy_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/company_context_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/configuration_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/history_manager_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/http_tool_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/inference_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/knowledge_base_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/mcp_token_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/operator_identity_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/contracts.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/parsers/validator.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/pdf_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/prompt_resource_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/prompt_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/sql_dataset_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/sql_source_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/storage_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/structured_output_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/system_tools.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/telemetry_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/tool_output_contract.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/visual_kb_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/visual_tool_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/warmup_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/web_search/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/services/web_search_service.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/images/favicon.ico +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/images/favicon.png +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_header_navigation.js +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/account.css +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/_chat_header.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/account.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/home_hosted_default.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/login_global.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/pdf/base.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/pdf/letter.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/pdf/report.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/pdf/simple.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/account_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/api_key_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/categories_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/configuration_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/connectors_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/rag_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/tool_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-2.58.2 → iatoolkit-2.59.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -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
|
|
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
|
-
-
|
|
382
|
-
-
|
|
383
|
-
-
|
|
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
|
|
393
|
-
- Retrieve
|
|
394
|
-
-
|
|
395
|
-
-
|
|
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="
|
|
399
|
-
- iat_memory_search(query="
|
|
400
|
-
- iat_memory_search(query="
|
|
401
|
-
- iat_memory_search(query="
|
|
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
|
|
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
|
|
434
|
-
- Read the full content of a
|
|
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
|
|
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: "
|
|
382
|
-
capture_title: "
|
|
383
|
-
capture_helper: "
|
|
384
|
-
capture_label: "
|
|
385
|
-
capture_placeholder: "
|
|
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: "
|
|
390
|
-
tab_recent_helper: "
|
|
391
|
-
tab_memories: "
|
|
392
|
-
tab_memories_helper: "
|
|
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
|
|
396
|
-
empty_memories: "
|
|
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
|
|
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: "
|
|
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
|
|
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: "
|
|
397
|
-
capture_helper: "
|
|
398
|
-
capture_label: "
|
|
399
|
-
capture_placeholder: "
|
|
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: "
|
|
404
|
-
tab_recent_helper: "
|
|
405
|
-
tab_memories: "
|
|
406
|
-
tab_memories_helper: "
|
|
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
|
|
410
|
-
empty_memories: "
|
|
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
|
|
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
|
|
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()
|