topos-node 1.3.42__tar.gz → 1.3.43__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.
- {topos_node-1.3.42/topos_node.egg-info → topos_node-1.3.43}/PKG-INFO +1 -1
- {topos_node-1.3.42 → topos_node-1.3.43}/pyproject.toml +1 -1
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/__version__.py +2 -2
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/protocol/narrowing_vocabulary.json +1 -0
- topos_node-1.3.43/topos/query/graph_lane.py +152 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/narrowing.py +1 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/retrieval.py +56 -1
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/scope_registry.json +1 -1
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sources/install_service.py +51 -2
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/upgrades/manifests.json +6 -0
- {topos_node-1.3.42 → topos_node-1.3.43/topos_node.egg-info}/PKG-INFO +1 -1
- {topos_node-1.3.42 → topos_node-1.3.43}/topos_node.egg-info/SOURCES.txt +1 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/LICENSE +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/MANIFEST.in +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/README.md +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/setup.cfg +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/shared/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/shared/filtering.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/shared/schema_registry.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_active_database_binding.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_active_ingestion_binding.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_extensions.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_gate_leg_hermeticity.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_llm_integrations_storage.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_local_gate_composition.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_owner_database_hermeticity.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_prewarm_first_run.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_profile_hygiene.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_profiles.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_protocol_handled_types.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_query_field_contract.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/tests/test_system_computer_name.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/dataset_resolution.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/duckdb_adapter.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/luck_surface.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/messenger_communities.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/messenger_directed.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/messenger_graph.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/messenger_labels.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/person_graph.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/person_overlay.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/profiles.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/query_engine.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/raw_queries.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/analytics/relationship_reads.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/analytics.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/app_registry.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/backup.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/community_naming_config.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/compute_remote.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/connected_apps.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/conversation_context.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/data_commit.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/data_explorer_table_prefs.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/database_explorer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/db.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/device.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/disk_space_config.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/engine_run.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/enrichment.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/enrichment_lab.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/facts_llm_config.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/filter_lab.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/health.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/home_chat.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/ingestion_api.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/ingestion_compat.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/ingestion_sources.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/intelligence_lifecycle.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/llm.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/local_mcp.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/messenger_analytics.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/privacy_disclose.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/query_api.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/runtime_bootstrap.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/sanitization_ollama_config.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/shell.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/signal.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/signal_extraction_config.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/source_install.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/source_scrub.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/sources.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/sources_overview.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/sync.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/tool_index.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/ui_config.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/uma_data.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/upgrades.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/usage.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/api/user_identity.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/app.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/auth.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/declared_field_map.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/mappers/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/mappers/base.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/mappers/browser_activity_mapper.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/mappers/chatgpt_mapper.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/mappers/demo_mappers.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/mappers/documents_mapper.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/mappers/github_activity_mapper.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/mappers/google_calendar_mapper.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/mappers/grok_mapper.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/mappers/messenger_mapper.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/models.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/canonicalization/resolver.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/cli/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/cli/__main__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/cli/assets/topos_blk_rounded.png +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/cli/assets/topos_white.png +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/cli/commands.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/cli/profile_cmd.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/cli/reprocess_cmd.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/cli/setup_models_cmd.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/cli/tray.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/config/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/config/conversation_context_llm.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/config/facts_llm.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/config/local_model_builds.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/config/model_packs.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/config/node_function_providers.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/config/sanitization_ollama.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/config/settings.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/config/signal_extraction.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/config/uvicorn_logging.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/contacts/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/contacts/identity.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/control_plane_client.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/api_models.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/connection_resilience.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/db_health.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/device_helpers.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/errors.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/events.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/common.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/complexity.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/config.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/contacts_import.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/database_explorer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/derivation.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/device.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/enrichment.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/enrichment_lab.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/filter_lab.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/graph_query.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/graph_summary.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/home_chat.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/ingest.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/mcp_client_elevations.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/mcp_clients.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/messages.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/messenger_analytics.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/query.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/registry.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/routines.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/signal_features.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/sources.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/timeline_daily.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/tool_index.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/handlers/uma.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/logging.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/metrics.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/routine_access.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/startup_banner.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/state.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/table_layers.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/core/types.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/data_explorer_row_delete.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/data_explorer_table_prefs.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/data_explorer_tables.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/defaults.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/disclosure/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/disclosure/canonical_writer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/disclosure/content_policy.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/disclosure/field_registry.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/disclosure/privacy_layer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/disclosure/tier.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/backends/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/backends/base.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/backends/generative_prompts.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/backends/generative_response.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/backends/huggingface.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/backends/ollama.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/backends/openai.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/backends/openai_compatible.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/backends/redpill.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/backends/stub.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/client.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/disk_space.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/engine.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/hosted_llm_wallet.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/intake.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/memory_utils.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/model_cache.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/model_manager.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/ollama_install.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/ollama_pull.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/ollama_runtime.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/ollama_setup_guidance.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/pipeline_memory.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/queue_manager.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/registration.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/result_formatter.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/router.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/scoped_token.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/tasks.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/torch_runtime.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/transport.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/usage_guard.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/usage_observation.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/engine/validator.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/catalog.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/derivation_recovery.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/derived_tables.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/job_readiness.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/job_writer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/base.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/_batch_limits.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/_engine_runner.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/attention_triage_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/availability_scores_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/brief_fallback.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/complexity_snapshot_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/derivation_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/derived_object_embeddings_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/dimension_summary_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/embeddings_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/emo_27_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/entities_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/fact_extraction_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/goal_extraction_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/pii_redaction_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/relationship_edges_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/sentiment_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/statistics_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/timeline_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/topic_clusters_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/canonical/topics_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/raw/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/raw/attachments_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/raw/language_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/raw/time_normalization_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/jobs/raw/tool_calls_job.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/model_overrides.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/models/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/models/manager.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/models/mvp_defaults.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/models/registry.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/models/versioning.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/orchestrator.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/pipeline_activity.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/processor.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/progress_bar.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/record_progress.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/registry_contract.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/signal_derivation_config.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment/source_overrides.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment_lab/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment_lab/bundles.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment_lab/model_resolve.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment_lab/schema.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment_lab/service.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment_lab/store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/enrichment_lab/worker.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/evals/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/evals/enrichment_eval.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/extensions.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/canonical.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/engine.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/entropy.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/focus.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/graph_metrics.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/influence.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/projection.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/snapshots.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/topic_merge.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/topics.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/topics_daily.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/complexity/volatility.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/_scales.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/admin.legal.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/aspirations.goals.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/behavior.habits.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/behavior.preferences.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/beliefs.civic.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/beliefs.spiritual.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/communication.style.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/community.membership.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/craft.tooling.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/expertise.knowledge.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/finances.economics.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/health.lifestyle.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/health.mental.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/health.physical.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/household.pets.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/identity.core.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/interests.taste.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/life.events.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/narrative.self.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/net.capability.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/obligations.commitments.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/personality.traits.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/places.mobility.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/possessions.assets.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/relationships.social.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/values.motivation.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/vocab/dispositions.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/vocab/expertise.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/vocab/habits.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/vocab/interests.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/vocab/preferences.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/vocab/stances.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/vocab/tools.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/vocab/values.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/bundled_packs/work.career.yaml +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/candidates.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/guard.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/kernels.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/net_subject_policy.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/packs.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/person_bridge.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/prefilter.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/registry.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/report_card.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/router.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/social_bench.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/social_kernels.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/surfaces.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/synthesize.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/template.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/verify.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/derivation/writer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/affinity.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/affinity_owner.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/affinity_quality.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/chatgpt_declared.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/community_names.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/community_naming.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/consolidation.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/context_vectors.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/cypher.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/declared_mappings.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/dossier.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/edges.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/fact_materializer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/graph_enrichers.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/graph_refresh.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/graph_search.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/linking.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/maintenance.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/owner.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/reads.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/rebuild_subprocess.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/resolver.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/entities/structured_fields.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/facts/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/facts/extract.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/facts/llm_extract.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/facts/reads.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/facts/store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/facts/verdicts.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/fit/evaluator.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/fit/opportunity_types.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/lifecycle/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/lifecycle/blackhole.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/lifecycle/blackhole_guard.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/lifecycle/blackhole_llm.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/lifecycle/blackhole_rebuild.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/lifecycle/derived_scrub.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/lifecycle/exclusions.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/lifecycle/gc.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/provenance/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/provenance/posture.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/provenance/roles.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/brief_canonical_loader.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/brief_ontology.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/brief_renderer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/brief_schemas.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/chunking.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/cluster_labels.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/conversation_context.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/conversation_windows.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/data_health.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/brief_ontologies.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/intentions.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/interests.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/memory.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/places.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/profile.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/relationships.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/resources.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/schema/dimension_definition.schema.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/time.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/wellbeing.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/definitions/work.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/derived_index.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/derived_spec.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/dimension_briefs.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/dimension_definition_loader.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/dimension_profiles.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/dimension_registry.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/embed_context.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/extraction/artifact_router.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/extraction/artifact_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/extraction/rule_extractors.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/graph_sanitize.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/hybrid_search.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/incremental_clustering.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/model_recommendations.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/query_embed_cache.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/schemas.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/service.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/signal_object_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/source_hydration.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/structured_signal.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/tool_index.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/topic_clustering.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/typed_stores/aggregates.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/typed_stores/commitments.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/typed_stores/rhythm.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/typed_stores/scope_materializer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/vector_codec.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/vector_math.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/signal/vector_settings.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/stats/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/stats/definitions.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/stats/engine.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/stats/fold.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/stats/insights.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/timeline_projection.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/timeline_rollup.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/triage/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/triage/badges.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/triage/daily.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/triage/dashboard.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/triage/instruments.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/triage/intents.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/features/triage/readiness.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/filter_lab/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/filter_lab/bundles.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/filter_lab/schema.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/filter_lab/service.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/filter_lab/store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/filter_lab/worker.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/home_chat/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/home_chat/schema.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/home_chat/store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/hosted_pool_lease.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/canonical_pipeline.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/checkpoints/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/checkpoints/checkpoint_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/checkpoints/sqlite_checkpoint_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/inbox_crypto.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/inbox_drain.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/ingest_helpers.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/jobs.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/journal_location_fanout.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/journal_time_log_normalize.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/local_exports.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/local_sync.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/log_preview.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/manager.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/base.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/browser_parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/calendar_parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/chatgpt_conversation_flattener.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/chatgpt_export.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/chatgpt_parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/demo_file_parsers.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/documents_parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/github_activity_parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/google_calendar_parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/grok_parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/messenger_parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/parsers/voxterm_parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/progress.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/reprocess.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/sources/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/sources/base.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/sources/calendar.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/sources/chatgpt.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/sources/contact_importers.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/sources/grok.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/sources/imessage_reader.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/sources/signal_export_parser.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/sources/signal_reader.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/state_machine.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/triggers/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/triggers/file_trigger.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/triggers/sqlite_trigger.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/usage_inbox_dedupe.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/validation/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/validation/base.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/validation/schema_registry.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/ingestion/validation/schema_validator.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/lineage/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/lineage/provenance.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/lineage/tracker.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/llm_integrations_storage.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/mcp_clients.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/mcp_stdio_proxy.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/observability/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/observability/alerts.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/observability/metrics.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/observability/tracing.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/openai_client.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/owner_key.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/pipeline/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/pipeline/audit.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/pipeline/envelope.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/pipeline/job_runner.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/pipeline/job_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/pipeline/stages.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/pipeline/stub_enqueue.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/principal.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/profiles.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/projections/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/projections/vector_index/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/projections/vector_index/base.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/projections/vector_index/builders.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/projections/vector_index/health_checks.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/protocol/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/protocol/handled_message_types.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/protocol/query_field_contract.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/audit.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/closeness.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/cohort_resolvers.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/collaborators.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/ddr.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/disclosure.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/entity_window.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/exclusion.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/facts_direct.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/fingerprint.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/game_layer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/grant_cache.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/inference.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/intent.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/manifest.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/manifest_validation.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/minimizer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/negotiation.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/packet_resolution.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/pipeline.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/planner.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/runtime.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/scope_arbiter.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/scope_classifier.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/scope_head.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/scope_registry_loader.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/scope_shadow.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/session.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/session_utils.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/source_generation.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/truth_facts.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/truth_prompts.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/turn_classifier.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/types.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/verify.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/query/verify_modes.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/rate_limit.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/relay_stamp.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/routines/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/routines/schema.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/routines/store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/runtime_housekeeping.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/runtime_shutdown.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/runtime_update.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sanitization/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sanitization/nsfw_classifier.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sanitization/ollama_transforms.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sanitization/prewarm.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sanitization/privacy_filter.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/scope_resolution.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/container.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/embeddings/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/embeddings/base.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/embeddings/local.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/embeddings/remote.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/interfaces.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/llm/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/llm/base.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/llm/openai.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/local.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/services/postgres.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sources/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sources/bundled_canonical_triples.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sources/canonical_signal_defaults.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sources/declared_field_map_spec.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sources/definitions.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sources/registry.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sources/runtime_install.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sources/scrub_attribution.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sources/scrub_service.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/startup_banner.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/adapters/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/adapters/factory.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/adapters/fakes.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/adapters/postgres/stores.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/adapters/protocols.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/adapters/sqlite/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/adapters/sqlite/stores.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/adapters/sqlite/vector_search.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/activity_tables.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/ai_chat/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/ai_chat/canonicalizer.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/ai_chat/mapper.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/ai_chat/model.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/ai_chat/tables.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/calendar_contacts_tables.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/canonical_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/conversations_tables.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/journal_repair.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/mapping_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/canonical/postgres.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/client.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/connection_tuning.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/activity_events_content_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/actor_role_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/affinity_pair_labels_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/attention_triage_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/attention_triage_v2.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/backup.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/backup_custody.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/calendar_events_scheduling_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/canonical_address_book_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/canonical_disclosure_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/canonical_nsfw_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/community_names_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/complexity_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/conflict_provenance_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/conversation_context_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/derivation_factory_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/derivation_ledger_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/derivation_provenance_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/derived_row_identity_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/documents_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/enrichment_record_progress_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/enrichment_spec_version_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/entity_affinity_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/entity_blackhole_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/entity_context_vectors_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/entity_context_vectors_v2.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/entity_edges_validity_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/entity_mentions_authored_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/entity_review_candidate_bar_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/entity_review_dedup_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/entity_review_provenance_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/episodes_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/extraction_artifacts.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/fact_dimension_by_entity_type_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/journal_entries_duration_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/journal_entries_ends_at_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/journal_entries_people_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/journal_entries_place_name_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/journal_entries_starts_at_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/journal_origin_dimension_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/mention_table_stamp_backfill_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/message_emotions_role_backfill_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/message_emotions_role_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/net_subject_policy_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/pack_registry_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/pipeline_jobs_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/query_artifacts_duration_ms_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/registry.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/registry_checksums.json +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/remediation_person_model.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/retire_url_classification_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/scope_source_generation.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/signal_dimension_backfill_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/signal_dimension_harness.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/signal_objects.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/signal_objects_period_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/signal_objects_updated_by_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/signal_summaries_drop_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/stage9_column_renames.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/vector_storage_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/vector_storage_v2.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/vector_storage_v3.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/vector_storage_v4.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_clusters_v2.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_entities_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_entity_review_v2.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_facts_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_lifecycle_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_mvp_phase0.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_mvp_phase1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_mvp_phase4_messages_cutover.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_mvp_phase5_topic_clusters.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_mvp_phase6_dimension_briefs.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_mvp_query_quality.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_mvp_topic_clusters_coordination.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_stats_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/migrations/wiki_timeline_v1.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/paths.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/postgres.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/schema.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/schema_probe.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/storage_breakdown.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/db/write_gate.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/derived_row_identity.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/enrichment/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/enrichment/canonical_enrichment_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/enrichment/raw_enrichment_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/normalized/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/normalized/normalized_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/oplog/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/oplog/decision.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/oplog/oplog_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/oplog/postgres.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/person/identity_resolver.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/projections/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/projections/index_ops_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/projections/vector_index_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/raw/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/raw/browser_flat_tables.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/raw/file_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/raw/raw_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/raw/raw_tables_manager.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/raw/sqlite_raw_store.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/security/encryption.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/signal_identity.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/source_settings.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/storage/user_identity.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sync/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sync/client.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/sync_handlers.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/testing/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/testing/lifespan.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/uds.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/uma_contact_enrichment.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/uma_filters.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/uma_resource_id.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/uma_rpt.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/upgrades/__init__.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/upgrades/runner.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/utils/base_object.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos/websocket_client.py +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos_node.egg-info/dependency_links.txt +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos_node.egg-info/entry_points.txt +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos_node.egg-info/requires.txt +0 -0
- {topos_node-1.3.42 → topos_node-1.3.43}/topos_node.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "topos-node"
|
|
7
|
-
version = "1.3.
|
|
7
|
+
version = "1.3.43"
|
|
8
8
|
description = "Topos personal AI engine (FastAPI): local data, sync, control plane WebSocket client"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"""The graph retrieval lane (S6, PLAN_QUERY_LOOP.md): edges as evidence.
|
|
2
|
+
|
|
3
|
+
Before this lane, 272 of 38,060 live edges were readable at query time — one
|
|
4
|
+
edge type, one cohort resolver. The relations the derivation layer builds
|
|
5
|
+
(``communicates_with``, ``co_occurrence``, ``pursues``, ``participates_in``,
|
|
6
|
+
``located_at``, ``semantic_affinity``) had no reader on the answer path: the
|
|
7
|
+
"Who works on this with me?" probe returned topic-cluster fragments while a
|
|
8
|
+
528-degree project hub sat unread one table away.
|
|
9
|
+
|
|
10
|
+
This lane contributes 1-hop neighborhoods of the query's linked entities as
|
|
11
|
+
ordinary fusion candidates — at canonical weight, never above (a lane reached
|
|
12
|
+
by a different key but carrying ordinary evidence fuses AT the canonical
|
|
13
|
+
weight; see the lane table in retrieval.py).
|
|
14
|
+
|
|
15
|
+
Privacy posture, deliberately minimal for v1:
|
|
16
|
+
|
|
17
|
+
* **Owner-only.** The lane runs only at ``disclosure_tier == "owner_raw"`` —
|
|
18
|
+
the same proxy the blackhole summary policy trusts, sound because
|
|
19
|
+
``resolve_disclosure_tier`` never elevates a grantee there. For any other
|
|
20
|
+
tier the lane returns nothing and writes NO ledger receipt: a receipt for a
|
|
21
|
+
withheld lane is itself an existence signal.
|
|
22
|
+
* **Blackhole rides the exit wire.** Items carry the neighbor as
|
|
23
|
+
``entity_id`` and the anchor as ``subject_entity_id`` — both members of
|
|
24
|
+
``_BLACKHOLE_ENTITY_ID_KEYS`` — so ``_blackhole_policy_for_summary`` can
|
|
25
|
+
match EITHER endpoint: a black-holed entity can neither appear as a
|
|
26
|
+
neighbor nor be reached through as an anchor. (Owner items are stamped
|
|
27
|
+
``blackhole_protected``, the taint feed Gate C needs; nothing is silently
|
|
28
|
+
dropped from the owner's own view.)
|
|
29
|
+
* **Anchor admission is the thread lane's.** Callers pass anchor ids that
|
|
30
|
+
already went through ``_entity_thread_entities`` — is_self dropped,
|
|
31
|
+
selector policy honored, fail-closed on an unreadable is_self.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
from __future__ import annotations
|
|
35
|
+
|
|
36
|
+
import logging
|
|
37
|
+
from typing import Any, Dict, List, Optional
|
|
38
|
+
|
|
39
|
+
from ..features.entities.edges import top_edges
|
|
40
|
+
from . import narrowing as _N
|
|
41
|
+
|
|
42
|
+
logger = logging.getLogger(__name__)
|
|
43
|
+
|
|
44
|
+
#: Neighbors fetched per anchor before the global cap ranks by weight.
|
|
45
|
+
GRAPH_LANE_PER_ANCHOR_LIMIT = 10
|
|
46
|
+
#: Total items the lane may contribute to fusion (SUMMARY_ITEM_CAP is 25;
|
|
47
|
+
#: a graph that floods the packet would drown the content lanes).
|
|
48
|
+
GRAPH_LANE_MAX_ITEMS = 8
|
|
49
|
+
|
|
50
|
+
_EDGE_SENTENCES: Dict[str, str] = {
|
|
51
|
+
"communicates_with": "{a} communicates with {b}",
|
|
52
|
+
"co_occurrence": "{a} and {b} appear together",
|
|
53
|
+
"pursues": "{a} pursues {b}",
|
|
54
|
+
"participates_in": "{a} participates in {b}",
|
|
55
|
+
"located_at": "{a} is located at {b}",
|
|
56
|
+
"semantic_affinity": "{a} is closely related to {b}",
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def _edge_sentence(anchor_name: str, neighbor_name: str, edge: Dict[str, Any]) -> str:
|
|
61
|
+
template = _EDGE_SENTENCES.get(
|
|
62
|
+
str(edge.get("edge_type") or ""), "{a} is linked to {b}"
|
|
63
|
+
)
|
|
64
|
+
sentence = template.format(a=anchor_name, b=neighbor_name)
|
|
65
|
+
evidence = edge.get("evidence_count")
|
|
66
|
+
if evidence:
|
|
67
|
+
sentence += f" ({evidence}×)"
|
|
68
|
+
return sentence
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def graph_neighborhood_items(
|
|
72
|
+
conn: Any,
|
|
73
|
+
*,
|
|
74
|
+
anchor_ids: List[str],
|
|
75
|
+
anchor_names: Dict[str, str],
|
|
76
|
+
scope_id: str,
|
|
77
|
+
manifest: Any,
|
|
78
|
+
disclosure_tier: str,
|
|
79
|
+
ledger: Optional[Any] = None,
|
|
80
|
+
) -> List[Dict[str, Any]]:
|
|
81
|
+
"""1-hop neighborhoods of the anchors, as fusion-ready summary items.
|
|
82
|
+
|
|
83
|
+
Returns [] — with no ledger receipt — unless the tier is owner_raw and
|
|
84
|
+
the scope warrants relationship structure.
|
|
85
|
+
"""
|
|
86
|
+
if str(disclosure_tier or "") != "owner_raw":
|
|
87
|
+
return []
|
|
88
|
+
tables = list(getattr(manifest, "canonical_tables", None) or [])
|
|
89
|
+
# relationship_context:read is the deliberate exception: its declared
|
|
90
|
+
# table is conversation_messages, but relationship STRUCTURE is exactly
|
|
91
|
+
# what the scope's own card advertises ("Who works on this with me?") —
|
|
92
|
+
# the same explicit-scope pattern the goals and emotions lanes use.
|
|
93
|
+
if "entity_edges" not in tables and str(scope_id) != "relationship_context:read":
|
|
94
|
+
return []
|
|
95
|
+
if conn is None or not anchor_ids:
|
|
96
|
+
return []
|
|
97
|
+
|
|
98
|
+
seen: set = set()
|
|
99
|
+
collected: List[Dict[str, Any]] = []
|
|
100
|
+
for anchor_id in anchor_ids:
|
|
101
|
+
anchor_name = anchor_names.get(anchor_id) or anchor_id
|
|
102
|
+
try:
|
|
103
|
+
edges = top_edges(conn, anchor_id, limit=GRAPH_LANE_PER_ANCHOR_LIMIT)
|
|
104
|
+
except Exception as exc: # noqa: BLE001 — one bad anchor must not kill the lane
|
|
105
|
+
logger.debug("graph lane: top_edges failed for %s: %s", anchor_id, exc)
|
|
106
|
+
continue
|
|
107
|
+
for edge in edges:
|
|
108
|
+
neighbor_id = str(edge.get("entity_id") or "")
|
|
109
|
+
edge_type = str(edge.get("edge_type") or "")
|
|
110
|
+
if not neighbor_id or not edge_type:
|
|
111
|
+
continue
|
|
112
|
+
key = (anchor_id, neighbor_id, edge_type)
|
|
113
|
+
if key in seen:
|
|
114
|
+
continue
|
|
115
|
+
seen.add(key)
|
|
116
|
+
neighbor_name = str(edge.get("entity_name") or neighbor_id)
|
|
117
|
+
event_at = edge.get("last_event_at") or edge.get("valid_from")
|
|
118
|
+
item: Dict[str, Any] = {
|
|
119
|
+
"topic": neighbor_name[:120],
|
|
120
|
+
"summary_text": _edge_sentence(anchor_name, neighbor_name, edge),
|
|
121
|
+
# Neighbor and anchor: both endpoints must be matchable by the
|
|
122
|
+
# blackhole exit wire (_BLACKHOLE_ENTITY_ID_KEYS).
|
|
123
|
+
"entity_id": neighbor_id,
|
|
124
|
+
"subject_entity_id": anchor_id,
|
|
125
|
+
"entity_type": edge.get("entity_type"),
|
|
126
|
+
"edge_type": edge_type,
|
|
127
|
+
"relevance_score": float(edge.get("weight") or 0.0),
|
|
128
|
+
"retrieval_source": f"graph:{edge_type}",
|
|
129
|
+
}
|
|
130
|
+
if event_at:
|
|
131
|
+
item["event_at"] = event_at
|
|
132
|
+
collected.append(item)
|
|
133
|
+
|
|
134
|
+
collected.sort(key=lambda i: i.get("relevance_score") or 0.0, reverse=True)
|
|
135
|
+
dropped = max(0, len(collected) - GRAPH_LANE_MAX_ITEMS)
|
|
136
|
+
items = collected[:GRAPH_LANE_MAX_ITEMS]
|
|
137
|
+
if items and ledger is not None:
|
|
138
|
+
try:
|
|
139
|
+
ledger.record(
|
|
140
|
+
_N.STAGE_RETRIEVAL,
|
|
141
|
+
"contributed",
|
|
142
|
+
"graph_lane",
|
|
143
|
+
dropped=dropped,
|
|
144
|
+
detail={
|
|
145
|
+
"anchors": len(anchor_ids),
|
|
146
|
+
"contributed": len(items),
|
|
147
|
+
"edge_types": sorted({i["edge_type"] for i in items}),
|
|
148
|
+
},
|
|
149
|
+
)
|
|
150
|
+
except Exception: # noqa: BLE001 — the ledger never breaks a turn
|
|
151
|
+
pass
|
|
152
|
+
return items
|
|
@@ -195,6 +195,7 @@ REASONS = frozenset(
|
|
|
195
195
|
"embedded_subject_not_instruction",
|
|
196
196
|
"entity_thread_is_self",
|
|
197
197
|
"entity_thread_lane",
|
|
198
|
+
"graph_lane",
|
|
198
199
|
"entity_thread_selector_not_accessible",
|
|
199
200
|
"entity_thread_self_check_unavailable",
|
|
200
201
|
"entity_thread_unresolved",
|
|
@@ -4716,7 +4716,10 @@ _NO_DECAY_FUSION_SOURCES = frozenset(
|
|
|
4716
4716
|
# a RelationshipEdge or a dossier is a statement about how things ARE, not
|
|
4717
4717
|
# an event that happened at a time. Decaying it would rank the owner's
|
|
4718
4718
|
# mother below last night's chatter.
|
|
4719
|
-
|
|
4719
|
+
# S6 "graph": an edge is a statement about how things stand between two
|
|
4720
|
+
# entities, not an event — decayed by created_at, the owner's closest
|
|
4721
|
+
# collaborator would rank below last night's chatter.
|
|
4722
|
+
{"stat_insights", "facts_store", "entities", "briefs", "goals", "derived_objects", "graph"}
|
|
4720
4723
|
)
|
|
4721
4724
|
|
|
4722
4725
|
|
|
@@ -5634,6 +5637,7 @@ def _build_summary_items_unfiltered(
|
|
|
5634
5637
|
entity_items: List[Dict[str, Any]] = []
|
|
5635
5638
|
entity_thread_items: List[Dict[str, Any]] = []
|
|
5636
5639
|
fact_store_items: List[Dict[str, Any]] = []
|
|
5640
|
+
graph_items: List[Dict[str, Any]] = []
|
|
5637
5641
|
if query_text:
|
|
5638
5642
|
try:
|
|
5639
5643
|
from ..core.state import get_db_connection
|
|
@@ -5688,6 +5692,32 @@ def _build_summary_items_unfiltered(
|
|
|
5688
5692
|
ledger=ledger,
|
|
5689
5693
|
thread_sink=thread_sink,
|
|
5690
5694
|
)
|
|
5695
|
+
# S6: the graph lane — the same resolution, one join outward.
|
|
5696
|
+
# `entity_context_items` says what the graph KNOWS about the
|
|
5697
|
+
# entity; the thread lane fetches its RECORDS; this contributes
|
|
5698
|
+
# its RELATIONS — the edges no lane could previously read. Own
|
|
5699
|
+
# try/except: a graph failure must not also kill the thread
|
|
5700
|
+
# lane (this block's outer except swallows everything).
|
|
5701
|
+
try:
|
|
5702
|
+
from .graph_lane import graph_neighborhood_items
|
|
5703
|
+
|
|
5704
|
+
anchor_ids, _skipped = _entity_thread_entities(
|
|
5705
|
+
conn, linked, manifest=manifest
|
|
5706
|
+
)
|
|
5707
|
+
graph_items = graph_neighborhood_items(
|
|
5708
|
+
conn,
|
|
5709
|
+
anchor_ids=anchor_ids,
|
|
5710
|
+
anchor_names={
|
|
5711
|
+
str(e.get("entity_id")): str(e.get("canonical_name") or "")
|
|
5712
|
+
for e in linked
|
|
5713
|
+
},
|
|
5714
|
+
scope_id=str(getattr(manifest, "scope_id", "") or ""),
|
|
5715
|
+
manifest=manifest,
|
|
5716
|
+
disclosure_tier=disclosure_tier,
|
|
5717
|
+
ledger=ledger,
|
|
5718
|
+
)
|
|
5719
|
+
except Exception as graph_exc: # noqa: BLE001
|
|
5720
|
+
logger.debug("graph lane skipped: %s", graph_exc)
|
|
5691
5721
|
except Exception as exc:
|
|
5692
5722
|
logger.debug("entity linking skipped: %s", exc)
|
|
5693
5723
|
|
|
@@ -5803,6 +5833,15 @@ def _build_summary_items_unfiltered(
|
|
|
5803
5833
|
if ai_scope and canonical_items:
|
|
5804
5834
|
min_per = dict(min_per or {})
|
|
5805
5835
|
min_per["canonical"] = max(int(min_per.get("canonical") or 0), 3)
|
|
5836
|
+
# S6: the graph lane only produces items under the scopes that
|
|
5837
|
+
# advertise relationship STRUCTURE (relationship_context:read,
|
|
5838
|
+
# graph:read) — and on a rich corpus its RRF share at canonical
|
|
5839
|
+
# weight loses the top-25 to sixteen content lanes (measured on the
|
|
5840
|
+
# owner snapshot: 8 lane items, 0 survivors). Structure is the
|
|
5841
|
+
# product there, so it keeps a two-slot spine, same as goals.
|
|
5842
|
+
if graph_items:
|
|
5843
|
+
min_per = dict(min_per or {})
|
|
5844
|
+
min_per["graph"] = max(int(min_per.get("graph") or 0), 2)
|
|
5806
5845
|
# NOTE: cosine similarity must NOT waive the zero-df gate — a strong hit
|
|
5807
5846
|
# on the generic half of a query ("compiler rewrite") cannot evidence a
|
|
5808
5847
|
# name the corpus does not contain ("Threnody-7"). The N-lane found
|
|
@@ -5822,6 +5861,11 @@ def _build_summary_items_unfiltered(
|
|
|
5822
5861
|
# ordinary canonical evidence that arrived by a different key, so
|
|
5823
5862
|
# it fuses at the canonical lane's own weight.
|
|
5824
5863
|
("entity_thread", 1.0, entity_thread_items),
|
|
5864
|
+
# S6: edges are ordinary evidence that arrived by the entity
|
|
5865
|
+
# key instead of a content key — the same argument as the
|
|
5866
|
+
# thread lane, so the same weight: beside the scope routes,
|
|
5867
|
+
# never above them.
|
|
5868
|
+
("graph", 1.0, graph_items),
|
|
5825
5869
|
# Q1. Same argument, same weight: evidence for a stated goal is
|
|
5826
5870
|
# ordinary canonical evidence that arrived keyed to that goal's ids.
|
|
5827
5871
|
# It is a joined minority lane beside the scope routes, never above
|
|
@@ -5858,6 +5902,7 @@ def _build_summary_items_unfiltered(
|
|
|
5858
5902
|
+ entity_items
|
|
5859
5903
|
+ derived_items
|
|
5860
5904
|
+ entity_thread_items
|
|
5905
|
+
+ graph_items
|
|
5861
5906
|
+ commitment_items
|
|
5862
5907
|
+ goal_items
|
|
5863
5908
|
+ emotion_items
|
|
@@ -6638,6 +6683,16 @@ class DefaultSignalRetrievalAdapter:
|
|
|
6638
6683
|
)
|
|
6639
6684
|
if summaries:
|
|
6640
6685
|
touched.append("signal")
|
|
6686
|
+
# S6: the graph store is declared touched when the graph lane
|
|
6687
|
+
# actually contributed — the Shortfall probe's assertion target
|
|
6688
|
+
# ("Who works on this with me?" must consult the graph, not
|
|
6689
|
+
# topic-cluster noise). Checked on items rather than threaded
|
|
6690
|
+
# through a sink: the lane's provenance prefix IS the signal.
|
|
6691
|
+
if any(
|
|
6692
|
+
str(item.get("retrieval_source") or "").startswith("graph:")
|
|
6693
|
+
for item in summaries
|
|
6694
|
+
):
|
|
6695
|
+
touched.append("graph")
|
|
6641
6696
|
# Surface the planner's parsed window so synthesis can state
|
|
6642
6697
|
# which dates were searched ("nothing from 2026-07-16") instead
|
|
6643
6698
|
# of inferring it from per-item timestamps. Summary mode only:
|
|
@@ -929,6 +929,15 @@ def _is_rehydratable_source_definition(source_def: Dict[str, Any]) -> bool:
|
|
|
929
929
|
# proves a legacy-scope gdrive_files row is retired, not merely missing.
|
|
930
930
|
_LEGACY_SOURCE_SUCCESSORS: Dict[str, str] = {"gdrive_files": "drive_files"}
|
|
931
931
|
|
|
932
|
+
# Going forward the Drive connector converges back on the bundled id: the CP
|
|
933
|
+
# registry republish (2026-09-02) made gdrive_files the installable card, so a
|
|
934
|
+
# fresh connect leaves a node with BOTH ids active under the same canonical
|
|
935
|
+
# scope. Not a contradiction with _LEGACY_SOURCE_SUCCESSORS: that map proves
|
|
936
|
+
# LEGACY-scope rows dead against the July replacement that was live at the
|
|
937
|
+
# time; this one retires a canonical-scope row once a healthy canonical-scope
|
|
938
|
+
# install of its successor exists for the same user+topos.
|
|
939
|
+
_CANONICAL_SOURCE_SUCCESSORS: Dict[str, str] = {"drive_files": "gdrive_files"}
|
|
940
|
+
|
|
932
941
|
_LEGACY_DATASET_SEGMENT = "default"
|
|
933
942
|
_CANONICAL_DATASET_SEGMENT = "topos"
|
|
934
943
|
|
|
@@ -938,9 +947,16 @@ def _dataset_scope_segment(scope: Dict[str, str]) -> str:
|
|
|
938
947
|
return parts[1] if len(parts) == 3 else ""
|
|
939
948
|
|
|
940
949
|
|
|
941
|
-
def _canonical_active_index(
|
|
950
|
+
def _canonical_active_index(
|
|
951
|
+
records: List[InstallRecord], *, healthy_only: bool = False
|
|
952
|
+
) -> Set[Tuple[str, str, str]]:
|
|
942
953
|
"""(user_id, topos_id, source_id) for active installs under the canonical
|
|
943
|
-
{owner}:topos:{topos_id} dataset scope.
|
|
954
|
+
{owner}:topos:{topos_id} dataset scope.
|
|
955
|
+
|
|
956
|
+
healthy_only drops rows this same pass would retire (lane conflict or
|
|
957
|
+
schema drift): a row being demoted must never count as the proof that
|
|
958
|
+
demotes its predecessor, or one pass could unwire a connector entirely.
|
|
959
|
+
"""
|
|
944
960
|
index: Set[Tuple[str, str, str]] = set()
|
|
945
961
|
for rec in records:
|
|
946
962
|
scope = _normalize_scope(rec.scope)
|
|
@@ -948,6 +964,10 @@ def _canonical_active_index(records: List[InstallRecord]) -> Set[Tuple[str, str,
|
|
|
948
964
|
continue
|
|
949
965
|
if scope["user_id"] == "*" or scope["topos_id"] == "*":
|
|
950
966
|
continue
|
|
967
|
+
if healthy_only:
|
|
968
|
+
source_def = rec.source_definition_json if isinstance(rec.source_definition_json, dict) else {}
|
|
969
|
+
if bundled_lane_conflict(source_def) or bundled_schema_drift(source_def):
|
|
970
|
+
continue
|
|
951
971
|
index.add((scope["user_id"], scope["topos_id"], rec.source_id))
|
|
952
972
|
return index
|
|
953
973
|
|
|
@@ -986,6 +1006,28 @@ def _legacy_scope_superseded_reason(
|
|
|
986
1006
|
return None
|
|
987
1007
|
|
|
988
1008
|
|
|
1009
|
+
def _canonical_successor_superseded_reason(
|
|
1010
|
+
rec: InstallRecord, healthy_canonical: Set[Tuple[str, str, str]]
|
|
1011
|
+
) -> Optional[str]:
|
|
1012
|
+
"""Reason to retire a canonical-scope row whose declared successor is live.
|
|
1013
|
+
|
|
1014
|
+
Only fires for source_ids in _CANONICAL_SOURCE_SUCCESSORS, and only when
|
|
1015
|
+
the successor's canonical-scope row is healthy — a successor this pass is
|
|
1016
|
+
itself retiring proves nothing.
|
|
1017
|
+
"""
|
|
1018
|
+
successor = _CANONICAL_SOURCE_SUCCESSORS.get(rec.source_id)
|
|
1019
|
+
if not successor:
|
|
1020
|
+
return None
|
|
1021
|
+
scope = _normalize_scope(rec.scope)
|
|
1022
|
+
if _dataset_scope_segment(scope) != _CANONICAL_DATASET_SEGMENT:
|
|
1023
|
+
return None
|
|
1024
|
+
if scope["user_id"] == "*" or scope["topos_id"] == "*":
|
|
1025
|
+
return None
|
|
1026
|
+
if (scope["user_id"], scope["topos_id"], successor) in healthy_canonical:
|
|
1027
|
+
return f"superseded by active canonical-scope install of successor source_id={successor}"
|
|
1028
|
+
return None
|
|
1029
|
+
|
|
1030
|
+
|
|
989
1031
|
def _supersede_install(*, scope_key: str, source_id: str, reason: str) -> None:
|
|
990
1032
|
"""Retire an active install row that can never install again.
|
|
991
1033
|
|
|
@@ -1021,6 +1063,7 @@ def rehydrate_active_installs_runtime(*, source_id: Optional[str] = None) -> Dic
|
|
|
1021
1063
|
# source_id-filtered listing excludes.
|
|
1022
1064
|
peers = records if source_id is None else [rec for rec in list_installs() if rec.is_active]
|
|
1023
1065
|
canonical_active = _canonical_active_index(peers)
|
|
1066
|
+
healthy_canonical = _canonical_active_index(peers, healthy_only=True)
|
|
1024
1067
|
rehydrated = 0
|
|
1025
1068
|
failed = 0
|
|
1026
1069
|
# (scope_key, source_id, reason) for rows retired after the locked pass.
|
|
@@ -1033,6 +1076,12 @@ def rehydrate_active_installs_runtime(*, source_id: Optional[str] = None) -> Dic
|
|
|
1033
1076
|
if legacy_reason:
|
|
1034
1077
|
superseded.append((_scope_key(rec.scope), rec.source_id, legacy_reason))
|
|
1035
1078
|
continue
|
|
1079
|
+
# A canonical-scope duplicate left behind by an id convergence
|
|
1080
|
+
# (drive_files -> gdrive_files) retires once the successor is live.
|
|
1081
|
+
successor_reason = _canonical_successor_superseded_reason(rec, healthy_canonical)
|
|
1082
|
+
if successor_reason:
|
|
1083
|
+
superseded.append((_scope_key(rec.scope), rec.source_id, successor_reason))
|
|
1084
|
+
continue
|
|
1036
1085
|
source_def = rec.source_definition_json if isinstance(rec.source_definition_json, dict) else {}
|
|
1037
1086
|
if not source_def:
|
|
1038
1087
|
continue
|
|
@@ -763,6 +763,12 @@
|
|
|
763
763
|
"steps": [],
|
|
764
764
|
"notes": []
|
|
765
765
|
},
|
|
766
|
+
{
|
|
767
|
+
"version": "1.3.43",
|
|
768
|
+
"summary": "Release 1.3.43.",
|
|
769
|
+
"steps": [],
|
|
770
|
+
"notes": []
|
|
771
|
+
},
|
|
766
772
|
{
|
|
767
773
|
"version": "unreleased",
|
|
768
774
|
"summary": "Staging entry for in-flight PRs. cut_release.py stamps this with the next version at release cut. Never executed by steps_between.",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|