topos-node 0.1.5__tar.gz → 0.1.7__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-0.1.5 → topos_node-0.1.7}/PKG-INFO +2 -2
- {topos_node-0.1.5 → topos_node-0.1.7}/pyproject.toml +2 -2
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/__version__.py +2 -2
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/control_plane_client.py +19 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/api_models.py +1 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/local.py +4 -1
- {topos_node-0.1.5 → topos_node-0.1.7}/topos_node.egg-info/PKG-INFO +2 -2
- {topos_node-0.1.5 → topos_node-0.1.7}/LICENSE +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/README.md +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/setup.cfg +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/shared/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/shared/filtering.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/shared/schema_registry.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/analytics/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/analytics/duckdb_adapter.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/analytics/messenger_communities.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/analytics/messenger_graph.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/analytics/messenger_labels.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/analytics/profiles.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/analytics/query_engine.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/analytics/raw_queries.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/analytics.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/app_registry.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/backup.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/compute_remote.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/data_commit.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/data_explorer_table_prefs.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/db.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/device.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/enrichment.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/filter_lab.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/health.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/ingestion_api.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/ingestion_compat.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/ingestion_sources.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/llm.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/local_mcp.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/messenger_analytics.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/query_api.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/sanitization_ollama_config.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/source_install.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/sources.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/sync.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/ui_config.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/uma_data.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/usage.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/api/user_identity.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/app.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/auth.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/canonicalization/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/canonicalization/mappers/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/canonicalization/mappers/base.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/canonicalization/mappers/chatgpt_mapper.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/canonicalization/mappers/grok_mapper.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/canonicalization/mappers/messenger_mapper.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/canonicalization/models.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/canonicalization/resolver.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/cli/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/cli/__main__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/cli/commands.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/config/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/config/sanitization_ollama.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/config/settings.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/contacts/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/contacts/identity.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/connection_resilience.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/device_helpers.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/errors.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/events.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/handlers.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/logging.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/metrics.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/startup_banner.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/state.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/table_layers.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/core/types.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/data_explorer_table_prefs.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/backends/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/backends/base.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/backends/huggingface.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/backends/ollama.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/backends/stub.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/engine.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/intake.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/queue_manager.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/registration.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/result_formatter.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/router.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/scoped_token.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/tasks.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/transport.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/usage_guard.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/usage_observation.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/engine/validator.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/derived_tables.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/base.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/canonical/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/canonical/embeddings_job.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/canonical/emo_27_job.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/canonical/entities_job.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/canonical/sentiment_job.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/canonical/topics_job.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/raw/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/raw/attachments_job.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/raw/language_job.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/raw/time_normalization_job.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/jobs/raw/tool_calls_job.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/models/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/models/manager.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/models/registry.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/models/versioning.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/orchestrator.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/processor.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/progress_bar.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/enrichment/website_classifier.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/filter_lab/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/filter_lab/bundles.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/filter_lab/schema.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/filter_lab/service.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/filter_lab/store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/filter_lab/worker.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/hosted_pool_lease.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/checkpoints/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/checkpoints/checkpoint_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/checkpoints/sqlite_checkpoint_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/ingest_helpers.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/jobs.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/local_sync.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/log_preview.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/manager.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/parser.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/parsers/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/parsers/base.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/parsers/browser_parser.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/parsers/calendar_parser.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/parsers/chatgpt_conversation_flattener.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/parsers/chatgpt_parser.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/parsers/grok_parser.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/parsers/messenger_parser.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/progress.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/sources/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/sources/base.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/sources/calendar.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/sources/chatgpt.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/sources/contact_importers.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/sources/grok.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/sources/imessage_reader.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/sources/signal_export_parser.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/sources/signal_reader.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/state_machine.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/triggers/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/triggers/file_trigger.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/triggers/sqlite_trigger.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/validation/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/validation/base.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/validation/schema_registry.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/validation/schema_validator.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/lineage/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/lineage/provenance.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/lineage/tracker.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/mcp_stdio_proxy.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/observability/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/observability/alerts.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/observability/metrics.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/observability/tracing.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/openai_client.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/projections/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/projections/vector_index/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/projections/vector_index/base.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/projections/vector_index/builders.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/projections/vector_index/health_checks.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/rate_limit.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/sanitization/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/sanitization/ollama_transforms.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/scope_resolution.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/container.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/embeddings/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/embeddings/base.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/embeddings/local.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/embeddings/remote.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/interfaces.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/llm/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/llm/base.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/llm/openai.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/services/postgres.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/sources/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/sources/definitions.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/sources/install_service.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/sources/registry.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/sources/runtime_install.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/startup_banner.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/canonical/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/canonical/ai_chat/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/canonical/ai_chat/canonicalizer.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/canonical/ai_chat/mapper.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/canonical/ai_chat/model.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/canonical/ai_chat/tables.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/canonical/canonical_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/canonical/conversations_tables.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/canonical/mapping_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/canonical/postgres.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/db/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/db/client.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/db/migrations/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/db/migrations/stage9_column_renames.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/db/paths.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/db/postgres.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/db/schema.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/enrichment/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/enrichment/canonical_enrichment_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/enrichment/raw_enrichment_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/normalized/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/normalized/normalized_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/oplog/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/oplog/decision.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/oplog/oplog_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/oplog/postgres.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/projections/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/projections/index_ops_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/projections/vector_index_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/raw/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/raw/browser_flat_tables.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/raw/file_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/raw/raw_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/raw/raw_tables_manager.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/raw/sqlite_raw_store.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/security/encryption.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/signal_identity.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/source_settings.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/storage/user_identity.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/sync/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/sync/client.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/sync_handlers.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/testing/__init__.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/testing/lifespan.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/uma_contact_enrichment.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/uma_filters.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/uma_resource_id.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/uma_rpt.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/utils/base_object.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos/websocket_client.py +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos_node.egg-info/SOURCES.txt +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos_node.egg-info/dependency_links.txt +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos_node.egg-info/entry_points.txt +0 -0
- {topos_node-0.1.5 → topos_node-0.1.7}/topos_node.egg-info/requires.txt +1 -1
- {topos_node-0.1.5 → topos_node-0.1.7}/topos_node.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: topos-node
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Topos personal AI engine (FastAPI): local data, sync, control plane WebSocket client
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://topos.dialogues.ai
|
|
@@ -24,11 +24,11 @@ Requires-Dist: google-cloud-storage>=3.8.0
|
|
|
24
24
|
Requires-Dist: google-cloud-run>=0.14.0
|
|
25
25
|
Requires-Dist: networkx>=3.2.1
|
|
26
26
|
Requires-Dist: transformers>=4.57.6
|
|
27
|
+
Requires-Dist: torch>=2.8.0
|
|
27
28
|
Requires-Dist: python-louvain>=0.16
|
|
28
29
|
Requires-Dist: asgi-lifespan>=2.1
|
|
29
30
|
Provides-Extra: engine
|
|
30
31
|
Requires-Dist: duckdb>=1.0.0; extra == "engine"
|
|
31
|
-
Requires-Dist: torch>=2.8.0; extra == "engine"
|
|
32
32
|
Requires-Dist: psycopg[binary]>=3.2.0; extra == "engine"
|
|
33
33
|
Provides-Extra: signal
|
|
34
34
|
Requires-Dist: pysqlcipher3>=1.0.0; extra == "signal"
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "topos-node"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.7"
|
|
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"
|
|
@@ -26,6 +26,7 @@ dependencies = [
|
|
|
26
26
|
"google-cloud-run>=0.14.0",
|
|
27
27
|
"networkx>=3.2.1",
|
|
28
28
|
"transformers>=4.57.6",
|
|
29
|
+
"torch>=2.8.0",
|
|
29
30
|
"python-louvain>=0.16",
|
|
30
31
|
"asgi-lifespan>=2.1",
|
|
31
32
|
]
|
|
@@ -37,7 +38,6 @@ Source = "https://dialogues.ai"
|
|
|
37
38
|
[project.optional-dependencies]
|
|
38
39
|
engine = [
|
|
39
40
|
"duckdb>=1.0.0",
|
|
40
|
-
"torch>=2.8.0",
|
|
41
41
|
"psycopg[binary]>=3.2.0",
|
|
42
42
|
]
|
|
43
43
|
signal = [
|
|
@@ -103,6 +103,24 @@ class ControlPlaneClient:
|
|
|
103
103
|
self._task = asyncio.create_task(self._run())
|
|
104
104
|
logger.info("Control plane client starting: %s", self.control_plane_url)
|
|
105
105
|
|
|
106
|
+
def _restart_if_task_stopped(self) -> None:
|
|
107
|
+
# Self-heal if the reconnect loop exited unexpectedly while the app is still running.
|
|
108
|
+
if self._stop.is_set() or not self._task or not self._task.done():
|
|
109
|
+
return
|
|
110
|
+
reason = "unknown"
|
|
111
|
+
try:
|
|
112
|
+
exc = self._task.exception()
|
|
113
|
+
if exc is not None:
|
|
114
|
+
reason = repr(exc)
|
|
115
|
+
except asyncio.CancelledError:
|
|
116
|
+
reason = "cancelled"
|
|
117
|
+
logger.warning(
|
|
118
|
+
"Control plane background task stopped unexpectedly; restarting endpoint=%s reason=%s",
|
|
119
|
+
self.control_plane_url,
|
|
120
|
+
reason,
|
|
121
|
+
)
|
|
122
|
+
self.start()
|
|
123
|
+
|
|
106
124
|
async def wait_until_connected(self, timeout_s: float | None = None) -> bool:
|
|
107
125
|
timeout = float(timeout_s) if timeout_s is not None else float(settings.connection_readiness_timeout_seconds)
|
|
108
126
|
try:
|
|
@@ -292,6 +310,7 @@ class ControlPlaneClient:
|
|
|
292
310
|
async def send_message(self, message: Dict[str, Any]) -> None:
|
|
293
311
|
"""Send an unsolicited message to the control plane (e.g., progress updates)."""
|
|
294
312
|
if not self._ws:
|
|
313
|
+
self._restart_if_task_stopped()
|
|
295
314
|
await self._enqueue_presence_message(message)
|
|
296
315
|
logger.warning("Queued presence message; control plane currently disconnected")
|
|
297
316
|
return
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import sqlite3
|
|
3
4
|
from typing import Any, Dict, Optional
|
|
4
5
|
|
|
6
|
+
from ..__version__ import __version__
|
|
5
7
|
from ..core.api_models import (
|
|
6
8
|
DeviceInfoResponse,
|
|
7
9
|
DeviceNameResponse,
|
|
@@ -92,8 +94,9 @@ class LocalDeviceService:
|
|
|
92
94
|
engine_mode=state.get_engine_mode(),
|
|
93
95
|
llm_enabled=settings.enable_llm and state.get_engine_mode() == "full",
|
|
94
96
|
database_mode=settings.topos_database_mode,
|
|
97
|
+
database_version=sqlite3.sqlite_version if settings.topos_database_mode in {"local", "sqlite"} else None,
|
|
95
98
|
engine_name=device_name,
|
|
96
|
-
engine_version=
|
|
99
|
+
engine_version=__version__,
|
|
97
100
|
system=state.get_system_info(),
|
|
98
101
|
last_sync_at=last_sync_at,
|
|
99
102
|
last_received_hlc_ts=last_received_hlc_ts,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: topos-node
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Topos personal AI engine (FastAPI): local data, sync, control plane WebSocket client
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://topos.dialogues.ai
|
|
@@ -24,11 +24,11 @@ Requires-Dist: google-cloud-storage>=3.8.0
|
|
|
24
24
|
Requires-Dist: google-cloud-run>=0.14.0
|
|
25
25
|
Requires-Dist: networkx>=3.2.1
|
|
26
26
|
Requires-Dist: transformers>=4.57.6
|
|
27
|
+
Requires-Dist: torch>=2.8.0
|
|
27
28
|
Requires-Dist: python-louvain>=0.16
|
|
28
29
|
Requires-Dist: asgi-lifespan>=2.1
|
|
29
30
|
Provides-Extra: engine
|
|
30
31
|
Requires-Dist: duckdb>=1.0.0; extra == "engine"
|
|
31
|
-
Requires-Dist: torch>=2.8.0; extra == "engine"
|
|
32
32
|
Requires-Dist: psycopg[binary]>=3.2.0; extra == "engine"
|
|
33
33
|
Provides-Extra: signal
|
|
34
34
|
Requires-Dist: pysqlcipher3>=1.0.0; extra == "signal"
|
|
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
|
|
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
|
{topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/checkpoints/sqlite_checkpoint_store.py
RENAMED
|
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
|
{topos_node-0.1.5 → topos_node-0.1.7}/topos/ingestion/parsers/chatgpt_conversation_flattener.py
RENAMED
|
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
|