topos-node 1.3.54__tar.gz → 1.3.55__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (784) hide show
  1. topos_node-1.3.55/PKG-INFO +335 -0
  2. topos_node-1.3.55/README.md +268 -0
  3. {topos_node-1.3.54 → topos_node-1.3.55}/pyproject.toml +27 -6
  4. topos_node-1.3.55/tests/test_sync_dep_pins.py +121 -0
  5. {topos_node-1.3.54 → topos_node-1.3.55}/topos/__version__.py +2 -2
  6. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/ingestion_sources.py +55 -36
  7. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/signal.py +43 -0
  8. {topos_node-1.3.54 → topos_node-1.3.55}/topos/app.py +10 -16
  9. topos_node-1.3.55/topos/cli/assets/topos_black.png +0 -0
  10. topos_node-1.3.55/topos/cli/assets/topos_white.png +0 -0
  11. {topos_node-1.3.54 → topos_node-1.3.55}/topos/cli/tray.py +13 -3
  12. {topos_node-1.3.54 → topos_node-1.3.55}/topos/control_plane_client.py +93 -10
  13. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/db_health.py +14 -5
  14. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/enrichment.py +22 -1
  15. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/signal_features.py +36 -0
  16. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/sources.py +47 -38
  17. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/edges.py +89 -0
  18. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/reads.py +34 -1
  19. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/local_sync.py +55 -1
  20. topos_node-1.3.55/topos/ingestion/local_sync_jobs.py +139 -0
  21. {topos_node-1.3.54 → topos_node-1.3.55}/topos/pipeline/job_runner.py +246 -35
  22. {topos_node-1.3.54 → topos_node-1.3.55}/topos/pipeline/job_store.py +114 -0
  23. {topos_node-1.3.54 → topos_node-1.3.55}/topos/protocol/handled_message_types.json +1 -0
  24. {topos_node-1.3.54 → topos_node-1.3.55}/topos/protocol/narrowing_vocabulary.json +6 -0
  25. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/inference.py +16 -4
  26. topos_node-1.3.55/topos/query/journal_event_lane.py +322 -0
  27. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/narrowing.py +9 -0
  28. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/pipeline.py +124 -27
  29. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/planner.py +65 -1
  30. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/retrieval.py +186 -5
  31. {topos_node-1.3.54 → topos_node-1.3.55}/topos/upgrades/manifests.json +6 -0
  32. topos_node-1.3.55/topos_node.egg-info/PKG-INFO +335 -0
  33. {topos_node-1.3.54 → topos_node-1.3.55}/topos_node.egg-info/SOURCES.txt +4 -0
  34. {topos_node-1.3.54 → topos_node-1.3.55}/topos_node.egg-info/requires.txt +4 -4
  35. topos_node-1.3.54/PKG-INFO +0 -310
  36. topos_node-1.3.54/README.md +0 -243
  37. topos_node-1.3.54/topos/cli/assets/topos_white.png +0 -0
  38. topos_node-1.3.54/topos_node.egg-info/PKG-INFO +0 -310
  39. {topos_node-1.3.54 → topos_node-1.3.55}/LICENSE +0 -0
  40. {topos_node-1.3.54 → topos_node-1.3.55}/MANIFEST.in +0 -0
  41. {topos_node-1.3.54 → topos_node-1.3.55}/setup.cfg +0 -0
  42. {topos_node-1.3.54 → topos_node-1.3.55}/shared/__init__.py +0 -0
  43. {topos_node-1.3.54 → topos_node-1.3.55}/shared/filtering.py +0 -0
  44. {topos_node-1.3.54 → topos_node-1.3.55}/shared/schema_registry.py +0 -0
  45. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_active_database_binding.py +0 -0
  46. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_active_ingestion_binding.py +0 -0
  47. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_extensions.py +0 -0
  48. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_gate_leg_hermeticity.py +0 -0
  49. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_llm_integrations_storage.py +0 -0
  50. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_local_gate_composition.py +0 -0
  51. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_owner_database_hermeticity.py +0 -0
  52. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_prewarm_first_run.py +0 -0
  53. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_profile_hygiene.py +0 -0
  54. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_profiles.py +0 -0
  55. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_protocol_handled_types.py +0 -0
  56. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_query_field_contract.py +0 -0
  57. {topos_node-1.3.54 → topos_node-1.3.55}/tests/test_system_computer_name.py +0 -0
  58. {topos_node-1.3.54 → topos_node-1.3.55}/topos/__init__.py +0 -0
  59. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/__init__.py +0 -0
  60. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/dataset_resolution.py +0 -0
  61. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/duckdb_adapter.py +0 -0
  62. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/luck_surface.py +0 -0
  63. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/messenger_communities.py +0 -0
  64. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/messenger_directed.py +0 -0
  65. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/messenger_graph.py +0 -0
  66. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/messenger_labels.py +0 -0
  67. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/person_graph.py +0 -0
  68. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/person_overlay.py +0 -0
  69. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/profiles.py +0 -0
  70. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/query_engine.py +0 -0
  71. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/raw_queries.py +0 -0
  72. {topos_node-1.3.54 → topos_node-1.3.55}/topos/analytics/relationship_reads.py +0 -0
  73. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/__init__.py +0 -0
  74. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/analytics.py +0 -0
  75. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/app_registry.py +0 -0
  76. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/backup.py +0 -0
  77. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/community_naming_config.py +0 -0
  78. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/compute_remote.py +0 -0
  79. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/connected_apps.py +0 -0
  80. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/conversation_context.py +0 -0
  81. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/data_commit.py +0 -0
  82. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/data_explorer_table_prefs.py +0 -0
  83. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/database_explorer.py +0 -0
  84. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/db.py +0 -0
  85. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/device.py +0 -0
  86. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/disk_space_config.py +0 -0
  87. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/engine_run.py +0 -0
  88. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/enrichment.py +0 -0
  89. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/enrichment_lab.py +0 -0
  90. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/facts_llm_config.py +0 -0
  91. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/filter_lab.py +0 -0
  92. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/health.py +0 -0
  93. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/home_chat.py +0 -0
  94. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/ingestion_api.py +0 -0
  95. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/ingestion_compat.py +0 -0
  96. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/intelligence_lifecycle.py +0 -0
  97. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/llm.py +0 -0
  98. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/local_mcp.py +0 -0
  99. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/messenger_analytics.py +0 -0
  100. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/privacy_disclose.py +0 -0
  101. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/query_api.py +0 -0
  102. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/runtime_bootstrap.py +0 -0
  103. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/sanitization_ollama_config.py +0 -0
  104. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/shell.py +0 -0
  105. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/signal_extraction_config.py +0 -0
  106. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/source_install.py +0 -0
  107. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/source_scrub.py +0 -0
  108. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/sources.py +0 -0
  109. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/sources_overview.py +0 -0
  110. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/sync.py +0 -0
  111. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/tool_index.py +0 -0
  112. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/ui_config.py +0 -0
  113. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/uma_data.py +0 -0
  114. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/upgrades.py +0 -0
  115. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/usage.py +0 -0
  116. {topos_node-1.3.54 → topos_node-1.3.55}/topos/api/user_identity.py +0 -0
  117. {topos_node-1.3.54 → topos_node-1.3.55}/topos/auth.py +0 -0
  118. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/__init__.py +0 -0
  119. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/declared_field_map.py +0 -0
  120. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/__init__.py +0 -0
  121. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/base.py +0 -0
  122. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/browser_activity_mapper.py +0 -0
  123. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/chatgpt_mapper.py +0 -0
  124. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/demo_mappers.py +0 -0
  125. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/documents_mapper.py +0 -0
  126. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/github_activity_mapper.py +0 -0
  127. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/google_calendar_mapper.py +0 -0
  128. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/grok_mapper.py +0 -0
  129. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/messenger_mapper.py +0 -0
  130. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/mappers/transcript_mapper.py +0 -0
  131. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/models.py +0 -0
  132. {topos_node-1.3.54 → topos_node-1.3.55}/topos/canonicalization/resolver.py +0 -0
  133. {topos_node-1.3.54 → topos_node-1.3.55}/topos/cli/__init__.py +0 -0
  134. {topos_node-1.3.54 → topos_node-1.3.55}/topos/cli/__main__.py +0 -0
  135. {topos_node-1.3.54 → topos_node-1.3.55}/topos/cli/assets/topos_blk_rounded.png +0 -0
  136. {topos_node-1.3.54 → topos_node-1.3.55}/topos/cli/commands.py +0 -0
  137. {topos_node-1.3.54 → topos_node-1.3.55}/topos/cli/profile_cmd.py +0 -0
  138. {topos_node-1.3.54 → topos_node-1.3.55}/topos/cli/reprocess_cmd.py +0 -0
  139. {topos_node-1.3.54 → topos_node-1.3.55}/topos/cli/setup_models_cmd.py +0 -0
  140. {topos_node-1.3.54 → topos_node-1.3.55}/topos/config/__init__.py +0 -0
  141. {topos_node-1.3.54 → topos_node-1.3.55}/topos/config/conversation_context_llm.py +0 -0
  142. {topos_node-1.3.54 → topos_node-1.3.55}/topos/config/facts_llm.py +0 -0
  143. {topos_node-1.3.54 → topos_node-1.3.55}/topos/config/local_model_builds.py +0 -0
  144. {topos_node-1.3.54 → topos_node-1.3.55}/topos/config/model_packs.py +0 -0
  145. {topos_node-1.3.54 → topos_node-1.3.55}/topos/config/node_function_providers.py +0 -0
  146. {topos_node-1.3.54 → topos_node-1.3.55}/topos/config/sanitization_ollama.py +0 -0
  147. {topos_node-1.3.54 → topos_node-1.3.55}/topos/config/settings.py +0 -0
  148. {topos_node-1.3.54 → topos_node-1.3.55}/topos/config/signal_extraction.py +0 -0
  149. {topos_node-1.3.54 → topos_node-1.3.55}/topos/config/uvicorn_logging.json +0 -0
  150. {topos_node-1.3.54 → topos_node-1.3.55}/topos/contacts/__init__.py +0 -0
  151. {topos_node-1.3.54 → topos_node-1.3.55}/topos/contacts/identity.py +0 -0
  152. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/__init__.py +0 -0
  153. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/api_models.py +0 -0
  154. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/connection_resilience.py +0 -0
  155. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/device_helpers.py +0 -0
  156. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/errors.py +0 -0
  157. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/events.py +0 -0
  158. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/__init__.py +0 -0
  159. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/aggregate.py +0 -0
  160. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/common.py +0 -0
  161. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/complexity.py +0 -0
  162. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/config.py +0 -0
  163. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/contacts_import.py +0 -0
  164. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/database_explorer.py +0 -0
  165. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/derivation.py +0 -0
  166. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/device.py +0 -0
  167. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/enrichment_lab.py +0 -0
  168. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/filter_lab.py +0 -0
  169. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/graph_query.py +0 -0
  170. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/graph_summary.py +0 -0
  171. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/home_chat.py +0 -0
  172. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/ingest.py +0 -0
  173. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/mcp_client_elevations.py +0 -0
  174. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/mcp_clients.py +0 -0
  175. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/messages.py +0 -0
  176. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/messenger_analytics.py +0 -0
  177. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/query.py +0 -0
  178. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/registry.py +0 -0
  179. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/routines.py +0 -0
  180. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/timeline_daily.py +0 -0
  181. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/tool_index.py +0 -0
  182. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/handlers/uma.py +0 -0
  183. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/logging.py +0 -0
  184. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/metrics.py +0 -0
  185. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/routine_access.py +0 -0
  186. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/startup_banner.py +0 -0
  187. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/state.py +0 -0
  188. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/table_layers.py +0 -0
  189. {topos_node-1.3.54 → topos_node-1.3.55}/topos/core/types.py +0 -0
  190. {topos_node-1.3.54 → topos_node-1.3.55}/topos/data_explorer_row_delete.py +0 -0
  191. {topos_node-1.3.54 → topos_node-1.3.55}/topos/data_explorer_table_prefs.py +0 -0
  192. {topos_node-1.3.54 → topos_node-1.3.55}/topos/data_explorer_tables.py +0 -0
  193. {topos_node-1.3.54 → topos_node-1.3.55}/topos/defaults.py +0 -0
  194. {topos_node-1.3.54 → topos_node-1.3.55}/topos/disclosure/__init__.py +0 -0
  195. {topos_node-1.3.54 → topos_node-1.3.55}/topos/disclosure/canonical_writer.py +0 -0
  196. {topos_node-1.3.54 → topos_node-1.3.55}/topos/disclosure/content_policy.py +0 -0
  197. {topos_node-1.3.54 → topos_node-1.3.55}/topos/disclosure/field_registry.py +0 -0
  198. {topos_node-1.3.54 → topos_node-1.3.55}/topos/disclosure/privacy_layer.py +0 -0
  199. {topos_node-1.3.54 → topos_node-1.3.55}/topos/disclosure/tier.py +0 -0
  200. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/__init__.py +0 -0
  201. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/backends/__init__.py +0 -0
  202. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/backends/base.py +0 -0
  203. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/backends/generative_prompts.py +0 -0
  204. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/backends/generative_response.py +0 -0
  205. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/backends/huggingface.py +0 -0
  206. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/backends/ollama.py +0 -0
  207. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/backends/openai.py +0 -0
  208. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/backends/openai_compatible.py +0 -0
  209. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/backends/redpill.py +0 -0
  210. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/backends/stub.py +0 -0
  211. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/client.py +0 -0
  212. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/disk_space.py +0 -0
  213. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/engine.py +0 -0
  214. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/hosted_llm_wallet.py +0 -0
  215. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/intake.py +0 -0
  216. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/memory_utils.py +0 -0
  217. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/model_cache.py +0 -0
  218. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/model_manager.py +0 -0
  219. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/ollama_install.py +0 -0
  220. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/ollama_pull.py +0 -0
  221. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/ollama_runtime.py +0 -0
  222. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/ollama_setup_guidance.py +0 -0
  223. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/pipeline_memory.py +0 -0
  224. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/queue_manager.py +0 -0
  225. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/registration.py +0 -0
  226. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/result_formatter.py +0 -0
  227. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/router.py +0 -0
  228. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/scoped_token.py +0 -0
  229. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/tasks.py +0 -0
  230. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/torch_runtime.py +0 -0
  231. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/transport.py +0 -0
  232. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/usage_guard.py +0 -0
  233. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/usage_observation.py +0 -0
  234. {topos_node-1.3.54 → topos_node-1.3.55}/topos/engine/validator.py +0 -0
  235. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/__init__.py +0 -0
  236. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/catalog.py +0 -0
  237. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/derivation_recovery.py +0 -0
  238. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/derived_tables.py +0 -0
  239. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/job_readiness.py +0 -0
  240. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/job_writer.py +0 -0
  241. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/__init__.py +0 -0
  242. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/base.py +0 -0
  243. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/__init__.py +0 -0
  244. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/_batch_limits.py +0 -0
  245. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/_engine_runner.py +0 -0
  246. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/attention_triage_job.py +0 -0
  247. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/availability_scores_job.py +0 -0
  248. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/brief_fallback.py +0 -0
  249. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/complexity_snapshot_job.py +0 -0
  250. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/derivation_job.py +0 -0
  251. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/derived_object_embeddings_job.py +0 -0
  252. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/dimension_summary_job.py +0 -0
  253. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/embeddings_job.py +0 -0
  254. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/emo_27_job.py +0 -0
  255. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/entities_job.py +0 -0
  256. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/fact_extraction_job.py +0 -0
  257. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/goal_extraction_job.py +0 -0
  258. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/pii_redaction_job.py +0 -0
  259. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/relationship_edges_job.py +0 -0
  260. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/sentiment_job.py +0 -0
  261. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/statistics_job.py +0 -0
  262. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/timeline_job.py +0 -0
  263. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/topic_clusters_job.py +0 -0
  264. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/canonical/topics_job.py +0 -0
  265. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/raw/__init__.py +0 -0
  266. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/raw/attachments_job.py +0 -0
  267. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/raw/language_job.py +0 -0
  268. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/raw/time_normalization_job.py +0 -0
  269. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/jobs/raw/tool_calls_job.py +0 -0
  270. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/model_overrides.py +0 -0
  271. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/models/__init__.py +0 -0
  272. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/models/manager.py +0 -0
  273. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/models/mvp_defaults.py +0 -0
  274. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/models/registry.py +0 -0
  275. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/models/versioning.py +0 -0
  276. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/orchestrator.py +0 -0
  277. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/pipeline_activity.py +0 -0
  278. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/processor.py +0 -0
  279. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/progress_bar.py +0 -0
  280. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/record_progress.py +0 -0
  281. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/registry_contract.py +0 -0
  282. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/signal_derivation_config.json +0 -0
  283. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment/source_overrides.py +0 -0
  284. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment_lab/__init__.py +0 -0
  285. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment_lab/bundles.py +0 -0
  286. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment_lab/model_resolve.py +0 -0
  287. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment_lab/schema.py +0 -0
  288. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment_lab/service.py +0 -0
  289. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment_lab/store.py +0 -0
  290. {topos_node-1.3.54 → topos_node-1.3.55}/topos/enrichment_lab/worker.py +0 -0
  291. {topos_node-1.3.54 → topos_node-1.3.55}/topos/evals/__init__.py +0 -0
  292. {topos_node-1.3.54 → topos_node-1.3.55}/topos/evals/enrichment_eval.py +0 -0
  293. {topos_node-1.3.54 → topos_node-1.3.55}/topos/extensions.py +0 -0
  294. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/__init__.py +0 -0
  295. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/canonical.py +0 -0
  296. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/engine.py +0 -0
  297. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/entropy.py +0 -0
  298. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/focus.py +0 -0
  299. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/graph_metrics.py +0 -0
  300. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/influence.py +0 -0
  301. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/projection.py +0 -0
  302. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/snapshots.py +0 -0
  303. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/store.py +0 -0
  304. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/topic_merge.py +0 -0
  305. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/topics.py +0 -0
  306. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/topics_daily.py +0 -0
  307. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/complexity/volatility.py +0 -0
  308. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/__init__.py +0 -0
  309. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/_scales.yaml +0 -0
  310. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/admin.legal.yaml +0 -0
  311. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/aspirations.goals.yaml +0 -0
  312. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/behavior.habits.yaml +0 -0
  313. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/behavior.preferences.yaml +0 -0
  314. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/beliefs.civic.yaml +0 -0
  315. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/beliefs.spiritual.yaml +0 -0
  316. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/communication.style.yaml +0 -0
  317. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/community.membership.yaml +0 -0
  318. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/craft.tooling.yaml +0 -0
  319. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/expertise.knowledge.yaml +0 -0
  320. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/finances.economics.yaml +0 -0
  321. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/health.lifestyle.yaml +0 -0
  322. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/health.mental.yaml +0 -0
  323. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/health.physical.yaml +0 -0
  324. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/household.pets.yaml +0 -0
  325. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/identity.core.yaml +0 -0
  326. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/interests.taste.yaml +0 -0
  327. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/life.events.yaml +0 -0
  328. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/narrative.self.yaml +0 -0
  329. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/net.capability.yaml +0 -0
  330. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/net.character.yaml +0 -0
  331. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/obligations.commitments.yaml +0 -0
  332. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/personality.traits.yaml +0 -0
  333. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/places.mobility.yaml +0 -0
  334. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/possessions.assets.yaml +0 -0
  335. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/relationships.social.yaml +0 -0
  336. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/values.motivation.yaml +0 -0
  337. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/vocab/dispositions.yaml +0 -0
  338. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/vocab/expertise.yaml +0 -0
  339. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/vocab/habits.yaml +0 -0
  340. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/vocab/interests.yaml +0 -0
  341. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/vocab/preferences.yaml +0 -0
  342. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/vocab/stances.yaml +0 -0
  343. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/vocab/tools.yaml +0 -0
  344. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/vocab/values.yaml +0 -0
  345. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/bundled_packs/work.career.yaml +0 -0
  346. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/candidates.py +0 -0
  347. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/commitments.py +0 -0
  348. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/guard.py +0 -0
  349. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/kernels.py +0 -0
  350. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/net_subject_policy.py +0 -0
  351. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/packs.py +0 -0
  352. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/person_bridge.py +0 -0
  353. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/person_reading.py +0 -0
  354. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/prefilter.py +0 -0
  355. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/registry.py +0 -0
  356. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/report_card.py +0 -0
  357. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/router.py +0 -0
  358. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/social_bench.py +0 -0
  359. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/social_kernels.py +0 -0
  360. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/surfaces.py +0 -0
  361. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/synthesize.py +0 -0
  362. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/template.py +0 -0
  363. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/verify.py +0 -0
  364. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/derivation/writer.py +0 -0
  365. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/__init__.py +0 -0
  366. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/affinity.py +0 -0
  367. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/affinity_owner.py +0 -0
  368. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/affinity_quality.py +0 -0
  369. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/chatgpt_declared.py +0 -0
  370. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/community_names.py +0 -0
  371. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/community_naming.py +0 -0
  372. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/consolidation.py +0 -0
  373. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/context_vectors.py +0 -0
  374. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/cypher.py +0 -0
  375. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/declared_mappings.py +0 -0
  376. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/discourse_graph.py +0 -0
  377. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/dossier.py +0 -0
  378. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/fact_materializer.py +0 -0
  379. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/graph_enrichers.py +0 -0
  380. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/graph_refresh.py +0 -0
  381. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/graph_search.py +0 -0
  382. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/linking.py +0 -0
  383. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/maintenance.py +0 -0
  384. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/owner.py +0 -0
  385. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/rebuild_subprocess.py +0 -0
  386. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/resolver.py +0 -0
  387. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/entities/structured_fields.py +0 -0
  388. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/facts/__init__.py +0 -0
  389. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/facts/extract.py +0 -0
  390. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/facts/llm_extract.py +0 -0
  391. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/facts/reads.py +0 -0
  392. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/facts/store.py +0 -0
  393. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/facts/verdicts.py +0 -0
  394. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/fit/evaluator.py +0 -0
  395. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/fit/opportunity_types.json +0 -0
  396. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/lifecycle/__init__.py +0 -0
  397. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/lifecycle/blackhole.py +0 -0
  398. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/lifecycle/blackhole_guard.py +0 -0
  399. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/lifecycle/blackhole_llm.py +0 -0
  400. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/lifecycle/blackhole_rebuild.py +0 -0
  401. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/lifecycle/derived_scrub.py +0 -0
  402. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/lifecycle/exclusions.py +0 -0
  403. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/lifecycle/gc.py +0 -0
  404. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/provenance/__init__.py +0 -0
  405. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/provenance/posture.py +0 -0
  406. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/provenance/roles.py +0 -0
  407. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/__init__.py +0 -0
  408. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/brief_canonical_loader.py +0 -0
  409. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/brief_ontology.py +0 -0
  410. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/brief_renderer.py +0 -0
  411. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/brief_schemas.py +0 -0
  412. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/chunking.py +0 -0
  413. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/cluster_labels.py +0 -0
  414. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/conversation_context.py +0 -0
  415. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/conversation_windows.py +0 -0
  416. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/data_health.py +0 -0
  417. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/brief_ontologies.json +0 -0
  418. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/intentions.json +0 -0
  419. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/interests.json +0 -0
  420. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/memory.json +0 -0
  421. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/places.json +0 -0
  422. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/profile.json +0 -0
  423. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/relationships.json +0 -0
  424. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/resources.json +0 -0
  425. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/schema/dimension_definition.schema.json +0 -0
  426. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/time.json +0 -0
  427. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/wellbeing.json +0 -0
  428. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/definitions/work.json +0 -0
  429. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/derived_index.py +0 -0
  430. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/derived_spec.py +0 -0
  431. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/dimension_briefs.py +0 -0
  432. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/dimension_definition_loader.py +0 -0
  433. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/dimension_profiles.py +0 -0
  434. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/dimension_registry.py +0 -0
  435. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/embed_context.py +0 -0
  436. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/extraction/artifact_router.py +0 -0
  437. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/extraction/artifact_store.py +0 -0
  438. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/extraction/rule_extractors.py +0 -0
  439. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/graph_sanitize.py +0 -0
  440. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/hybrid_search.py +0 -0
  441. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/incremental_clustering.py +0 -0
  442. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/model_recommendations.py +0 -0
  443. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/query_embed_cache.py +0 -0
  444. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/schemas.py +0 -0
  445. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/service.py +0 -0
  446. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/signal_object_store.py +0 -0
  447. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/source_hydration.py +0 -0
  448. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/structured_signal.py +0 -0
  449. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/tool_index.py +0 -0
  450. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/topic_clustering.py +0 -0
  451. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/typed_stores/aggregates.py +0 -0
  452. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/typed_stores/commitments.py +0 -0
  453. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/typed_stores/rhythm.py +0 -0
  454. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/typed_stores/scope_materializer.py +0 -0
  455. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/vector_codec.py +0 -0
  456. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/vector_math.py +0 -0
  457. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/signal/vector_settings.py +0 -0
  458. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/stats/__init__.py +0 -0
  459. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/stats/definitions.py +0 -0
  460. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/stats/engine.py +0 -0
  461. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/stats/fold.py +0 -0
  462. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/stats/insights.py +0 -0
  463. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/timeline_projection.py +0 -0
  464. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/timeline_rollup.py +0 -0
  465. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/triage/__init__.py +0 -0
  466. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/triage/badges.py +0 -0
  467. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/triage/daily.py +0 -0
  468. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/triage/dashboard.py +0 -0
  469. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/triage/instruments.py +0 -0
  470. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/triage/intents.py +0 -0
  471. {topos_node-1.3.54 → topos_node-1.3.55}/topos/features/triage/readiness.py +0 -0
  472. {topos_node-1.3.54 → topos_node-1.3.55}/topos/filter_lab/__init__.py +0 -0
  473. {topos_node-1.3.54 → topos_node-1.3.55}/topos/filter_lab/bundles.py +0 -0
  474. {topos_node-1.3.54 → topos_node-1.3.55}/topos/filter_lab/schema.py +0 -0
  475. {topos_node-1.3.54 → topos_node-1.3.55}/topos/filter_lab/service.py +0 -0
  476. {topos_node-1.3.54 → topos_node-1.3.55}/topos/filter_lab/store.py +0 -0
  477. {topos_node-1.3.54 → topos_node-1.3.55}/topos/filter_lab/worker.py +0 -0
  478. {topos_node-1.3.54 → topos_node-1.3.55}/topos/home_chat/__init__.py +0 -0
  479. {topos_node-1.3.54 → topos_node-1.3.55}/topos/home_chat/schema.py +0 -0
  480. {topos_node-1.3.54 → topos_node-1.3.55}/topos/home_chat/store.py +0 -0
  481. {topos_node-1.3.54 → topos_node-1.3.55}/topos/hosted_pool_lease.py +0 -0
  482. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/__init__.py +0 -0
  483. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/canonical_pipeline.py +0 -0
  484. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/checkpoints/__init__.py +0 -0
  485. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/checkpoints/checkpoint_store.py +0 -0
  486. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/checkpoints/sqlite_checkpoint_store.py +0 -0
  487. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/inbox_crypto.py +0 -0
  488. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/inbox_drain.py +0 -0
  489. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/ingest_helpers.py +0 -0
  490. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/jobs.py +0 -0
  491. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/journal_location_fanout.py +0 -0
  492. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/journal_time_log_normalize.py +0 -0
  493. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/local_exports.py +0 -0
  494. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/log_preview.py +0 -0
  495. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/manager.py +0 -0
  496. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parser.py +0 -0
  497. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/__init__.py +0 -0
  498. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/base.py +0 -0
  499. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/browser_parser.py +0 -0
  500. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/calendar_parser.py +0 -0
  501. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/chatgpt_conversation_flattener.py +0 -0
  502. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/chatgpt_export.py +0 -0
  503. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/chatgpt_parser.py +0 -0
  504. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/demo_file_parsers.py +0 -0
  505. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/documents_parser.py +0 -0
  506. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/github_activity_parser.py +0 -0
  507. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/google_calendar_parser.py +0 -0
  508. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/grok_parser.py +0 -0
  509. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/messenger_parser.py +0 -0
  510. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/transcript_parser.py +0 -0
  511. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/parsers/voxterm_parser.py +0 -0
  512. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/progress.py +0 -0
  513. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/reprocess.py +0 -0
  514. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/sources/__init__.py +0 -0
  515. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/sources/base.py +0 -0
  516. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/sources/calendar.py +0 -0
  517. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/sources/chatgpt.py +0 -0
  518. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/sources/contact_importers.py +0 -0
  519. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/sources/grok.py +0 -0
  520. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/sources/imessage_reader.py +0 -0
  521. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/sources/signal_export_parser.py +0 -0
  522. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/sources/signal_reader.py +0 -0
  523. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/state_machine.py +0 -0
  524. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/triggers/__init__.py +0 -0
  525. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/triggers/file_trigger.py +0 -0
  526. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/triggers/sqlite_trigger.py +0 -0
  527. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/usage_inbox_dedupe.py +0 -0
  528. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/validation/__init__.py +0 -0
  529. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/validation/base.py +0 -0
  530. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/validation/schema_registry.py +0 -0
  531. {topos_node-1.3.54 → topos_node-1.3.55}/topos/ingestion/validation/schema_validator.py +0 -0
  532. {topos_node-1.3.54 → topos_node-1.3.55}/topos/lineage/__init__.py +0 -0
  533. {topos_node-1.3.54 → topos_node-1.3.55}/topos/lineage/provenance.py +0 -0
  534. {topos_node-1.3.54 → topos_node-1.3.55}/topos/lineage/tracker.py +0 -0
  535. {topos_node-1.3.54 → topos_node-1.3.55}/topos/llm_integrations_storage.py +0 -0
  536. {topos_node-1.3.54 → topos_node-1.3.55}/topos/mcp_clients.py +0 -0
  537. {topos_node-1.3.54 → topos_node-1.3.55}/topos/mcp_stdio_proxy.py +0 -0
  538. {topos_node-1.3.54 → topos_node-1.3.55}/topos/observability/__init__.py +0 -0
  539. {topos_node-1.3.54 → topos_node-1.3.55}/topos/observability/alerts.py +0 -0
  540. {topos_node-1.3.54 → topos_node-1.3.55}/topos/observability/metrics.py +0 -0
  541. {topos_node-1.3.54 → topos_node-1.3.55}/topos/observability/tracing.py +0 -0
  542. {topos_node-1.3.54 → topos_node-1.3.55}/topos/openai_client.py +0 -0
  543. {topos_node-1.3.54 → topos_node-1.3.55}/topos/owner_key.py +0 -0
  544. {topos_node-1.3.54 → topos_node-1.3.55}/topos/pipeline/__init__.py +0 -0
  545. {topos_node-1.3.54 → topos_node-1.3.55}/topos/pipeline/audit.py +0 -0
  546. {topos_node-1.3.54 → topos_node-1.3.55}/topos/pipeline/envelope.py +0 -0
  547. {topos_node-1.3.54 → topos_node-1.3.55}/topos/pipeline/stages.py +0 -0
  548. {topos_node-1.3.54 → topos_node-1.3.55}/topos/pipeline/stub_enqueue.py +0 -0
  549. {topos_node-1.3.54 → topos_node-1.3.55}/topos/principal.py +0 -0
  550. {topos_node-1.3.54 → topos_node-1.3.55}/topos/profiles.py +0 -0
  551. {topos_node-1.3.54 → topos_node-1.3.55}/topos/projections/__init__.py +0 -0
  552. {topos_node-1.3.54 → topos_node-1.3.55}/topos/projections/vector_index/__init__.py +0 -0
  553. {topos_node-1.3.54 → topos_node-1.3.55}/topos/projections/vector_index/base.py +0 -0
  554. {topos_node-1.3.54 → topos_node-1.3.55}/topos/projections/vector_index/builders.py +0 -0
  555. {topos_node-1.3.54 → topos_node-1.3.55}/topos/projections/vector_index/health_checks.py +0 -0
  556. {topos_node-1.3.54 → topos_node-1.3.55}/topos/protocol/__init__.py +0 -0
  557. {topos_node-1.3.54 → topos_node-1.3.55}/topos/protocol/query_field_contract.json +0 -0
  558. {topos_node-1.3.54 → topos_node-1.3.55}/topos/protocol/retrieval_text_contract.json +0 -0
  559. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/__init__.py +0 -0
  560. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/aggregate.py +0 -0
  561. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/audit.py +0 -0
  562. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/closeness.py +0 -0
  563. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/cohort_resolvers.py +0 -0
  564. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/collaborators.py +0 -0
  565. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/ddr.py +0 -0
  566. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/disclosure.py +0 -0
  567. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/entity_window.py +0 -0
  568. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/exclusion.py +0 -0
  569. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/facts_direct.py +0 -0
  570. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/fingerprint.py +0 -0
  571. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/game_layer.py +0 -0
  572. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/grant_cache.py +0 -0
  573. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/graph_lane.py +0 -0
  574. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/intent.py +0 -0
  575. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/manifest.py +0 -0
  576. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/manifest_validation.py +0 -0
  577. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/minimizer.py +0 -0
  578. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/negotiation.py +0 -0
  579. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/overheard.py +0 -0
  580. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/packet_resolution.py +0 -0
  581. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/runtime.py +0 -0
  582. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/scope_arbiter.py +0 -0
  583. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/scope_classifier.py +0 -0
  584. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/scope_head.py +0 -0
  585. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/scope_registry.json +0 -0
  586. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/scope_registry_loader.py +0 -0
  587. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/scope_shadow.py +0 -0
  588. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/session.py +0 -0
  589. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/session_utils.py +0 -0
  590. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/source_generation.py +0 -0
  591. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/truth_facts.py +0 -0
  592. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/truth_prompts.py +0 -0
  593. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/turn_classifier.py +0 -0
  594. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/types.py +0 -0
  595. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/verify.py +0 -0
  596. {topos_node-1.3.54 → topos_node-1.3.55}/topos/query/verify_modes.py +0 -0
  597. {topos_node-1.3.54 → topos_node-1.3.55}/topos/rate_limit.py +0 -0
  598. {topos_node-1.3.54 → topos_node-1.3.55}/topos/relay_stamp.py +0 -0
  599. {topos_node-1.3.54 → topos_node-1.3.55}/topos/routines/__init__.py +0 -0
  600. {topos_node-1.3.54 → topos_node-1.3.55}/topos/routines/schema.py +0 -0
  601. {topos_node-1.3.54 → topos_node-1.3.55}/topos/routines/store.py +0 -0
  602. {topos_node-1.3.54 → topos_node-1.3.55}/topos/runtime_housekeeping.py +0 -0
  603. {topos_node-1.3.54 → topos_node-1.3.55}/topos/runtime_shutdown.py +0 -0
  604. {topos_node-1.3.54 → topos_node-1.3.55}/topos/runtime_update.py +0 -0
  605. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sanitization/__init__.py +0 -0
  606. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sanitization/nsfw_classifier.py +0 -0
  607. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sanitization/ollama_transforms.py +0 -0
  608. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sanitization/prewarm.py +0 -0
  609. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sanitization/privacy_filter.py +0 -0
  610. {topos_node-1.3.54 → topos_node-1.3.55}/topos/scope_resolution.py +0 -0
  611. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/__init__.py +0 -0
  612. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/container.py +0 -0
  613. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/embeddings/__init__.py +0 -0
  614. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/embeddings/base.py +0 -0
  615. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/embeddings/local.py +0 -0
  616. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/embeddings/remote.py +0 -0
  617. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/interfaces.py +0 -0
  618. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/llm/__init__.py +0 -0
  619. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/llm/base.py +0 -0
  620. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/llm/openai.py +0 -0
  621. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/local.py +0 -0
  622. {topos_node-1.3.54 → topos_node-1.3.55}/topos/services/postgres.py +0 -0
  623. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sources/__init__.py +0 -0
  624. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sources/bundled_canonical_triples.py +0 -0
  625. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sources/canonical_signal_defaults.py +0 -0
  626. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sources/declared_field_map_spec.py +0 -0
  627. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sources/definitions.py +0 -0
  628. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sources/install_service.py +0 -0
  629. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sources/registry.py +0 -0
  630. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sources/runtime_install.py +0 -0
  631. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sources/scrub_attribution.py +0 -0
  632. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sources/scrub_service.py +0 -0
  633. {topos_node-1.3.54 → topos_node-1.3.55}/topos/startup_banner.py +0 -0
  634. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/__init__.py +0 -0
  635. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/adapters/__init__.py +0 -0
  636. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/adapters/factory.py +0 -0
  637. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/adapters/fakes.py +0 -0
  638. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/adapters/postgres/stores.py +0 -0
  639. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/adapters/protocols.py +0 -0
  640. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/adapters/sqlite/__init__.py +0 -0
  641. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/adapters/sqlite/stores.py +0 -0
  642. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/adapters/sqlite/vector_search.py +0 -0
  643. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/__init__.py +0 -0
  644. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/activity_tables.py +0 -0
  645. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/ai_chat/__init__.py +0 -0
  646. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/ai_chat/canonicalizer.py +0 -0
  647. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/ai_chat/mapper.py +0 -0
  648. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/ai_chat/model.py +0 -0
  649. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/ai_chat/tables.py +0 -0
  650. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/calendar_contacts_tables.py +0 -0
  651. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/canonical_store.py +0 -0
  652. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/conversations_tables.py +0 -0
  653. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/journal_repair.py +0 -0
  654. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/mapping_store.py +0 -0
  655. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/canonical/postgres.py +0 -0
  656. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/__init__.py +0 -0
  657. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/client.py +0 -0
  658. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/connection_tuning.py +0 -0
  659. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/__init__.py +0 -0
  660. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/activity_events_content_v1.py +0 -0
  661. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/actor_role_v1.py +0 -0
  662. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/affinity_pair_labels_v1.py +0 -0
  663. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/attention_triage_v1.py +0 -0
  664. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/attention_triage_v2.py +0 -0
  665. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/backup.py +0 -0
  666. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/backup_custody.py +0 -0
  667. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/calendar_events_scheduling_v1.py +0 -0
  668. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/canonical_address_book_v1.py +0 -0
  669. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/canonical_disclosure_v1.py +0 -0
  670. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/canonical_nsfw_v1.py +0 -0
  671. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/community_names_v1.py +0 -0
  672. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/complexity_v1.py +0 -0
  673. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/conflict_provenance_v1.py +0 -0
  674. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/conversation_context_v1.py +0 -0
  675. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/derivation_factory_v1.py +0 -0
  676. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/derivation_ledger_v1.py +0 -0
  677. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/derivation_provenance_v1.py +0 -0
  678. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/derived_row_identity_v1.py +0 -0
  679. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/documents_v1.py +0 -0
  680. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/enrichment_record_progress_v1.py +0 -0
  681. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/enrichment_spec_version_v1.py +0 -0
  682. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/entity_affinity_v1.py +0 -0
  683. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/entity_blackhole_v1.py +0 -0
  684. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/entity_context_vectors_v1.py +0 -0
  685. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/entity_context_vectors_v2.py +0 -0
  686. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/entity_edges_validity_v1.py +0 -0
  687. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/entity_mentions_authored_v1.py +0 -0
  688. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/entity_review_candidate_bar_v1.py +0 -0
  689. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/entity_review_dedup_v1.py +0 -0
  690. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/entity_review_provenance_v1.py +0 -0
  691. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/episodes_v1.py +0 -0
  692. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/extraction_artifacts.py +0 -0
  693. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/fact_dimension_by_entity_type_v1.py +0 -0
  694. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/journal_entries_duration_v1.py +0 -0
  695. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/journal_entries_ends_at_v1.py +0 -0
  696. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/journal_entries_people_v1.py +0 -0
  697. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/journal_entries_place_name_v1.py +0 -0
  698. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/journal_entries_starts_at_v1.py +0 -0
  699. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/journal_origin_dimension_v1.py +0 -0
  700. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/mention_table_stamp_backfill_v1.py +0 -0
  701. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/message_emotions_role_backfill_v1.py +0 -0
  702. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/message_emotions_role_v1.py +0 -0
  703. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/net_subject_policy_v1.py +0 -0
  704. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/pack_registry_v1.py +0 -0
  705. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/pipeline_jobs_v1.py +0 -0
  706. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/query_artifacts_duration_ms_v1.py +0 -0
  707. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/registry.py +0 -0
  708. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/registry_checksums.json +0 -0
  709. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/remediation_person_model.py +0 -0
  710. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/retire_url_classification_v1.py +0 -0
  711. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/scope_source_generation.py +0 -0
  712. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/signal_dimension_backfill_v1.py +0 -0
  713. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/signal_dimension_harness.py +0 -0
  714. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/signal_objects.py +0 -0
  715. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/signal_objects_period_v1.py +0 -0
  716. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/signal_objects_updated_by_v1.py +0 -0
  717. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/signal_summaries_drop_v1.py +0 -0
  718. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/stage9_column_renames.py +0 -0
  719. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/transcripts_v1.py +0 -0
  720. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/vector_storage_v1.py +0 -0
  721. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/vector_storage_v2.py +0 -0
  722. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/vector_storage_v3.py +0 -0
  723. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/vector_storage_v4.py +0 -0
  724. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_clusters_v2.py +0 -0
  725. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_entities_v1.py +0 -0
  726. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_entity_review_v2.py +0 -0
  727. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_facts_v1.py +0 -0
  728. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_lifecycle_v1.py +0 -0
  729. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_mvp_phase0.py +0 -0
  730. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_mvp_phase1.py +0 -0
  731. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_mvp_phase4_messages_cutover.py +0 -0
  732. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_mvp_phase5_topic_clusters.py +0 -0
  733. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_mvp_phase6_dimension_briefs.py +0 -0
  734. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_mvp_query_quality.py +0 -0
  735. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_mvp_topic_clusters_coordination.py +0 -0
  736. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_stats_v1.py +0 -0
  737. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/migrations/wiki_timeline_v1.py +0 -0
  738. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/paths.py +0 -0
  739. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/postgres.py +0 -0
  740. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/schema.py +0 -0
  741. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/schema_probe.py +0 -0
  742. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/storage_breakdown.py +0 -0
  743. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/db/write_gate.py +0 -0
  744. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/derived_row_identity.py +0 -0
  745. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/enrichment/__init__.py +0 -0
  746. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/enrichment/canonical_enrichment_store.py +0 -0
  747. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/enrichment/raw_enrichment_store.py +0 -0
  748. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/normalized/__init__.py +0 -0
  749. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/normalized/normalized_store.py +0 -0
  750. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/oplog/__init__.py +0 -0
  751. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/oplog/decision.py +0 -0
  752. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/oplog/oplog_store.py +0 -0
  753. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/oplog/postgres.py +0 -0
  754. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/person/identity_resolver.py +0 -0
  755. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/projections/__init__.py +0 -0
  756. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/projections/index_ops_store.py +0 -0
  757. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/projections/vector_index_store.py +0 -0
  758. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/raw/__init__.py +0 -0
  759. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/raw/browser_flat_tables.py +0 -0
  760. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/raw/file_store.py +0 -0
  761. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/raw/raw_store.py +0 -0
  762. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/raw/raw_tables_manager.py +0 -0
  763. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/raw/sqlite_raw_store.py +0 -0
  764. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/security/encryption.py +0 -0
  765. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/signal_identity.py +0 -0
  766. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/source_settings.py +0 -0
  767. {topos_node-1.3.54 → topos_node-1.3.55}/topos/storage/user_identity.py +0 -0
  768. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sync/__init__.py +0 -0
  769. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sync/client.py +0 -0
  770. {topos_node-1.3.54 → topos_node-1.3.55}/topos/sync_handlers.py +0 -0
  771. {topos_node-1.3.54 → topos_node-1.3.55}/topos/testing/__init__.py +0 -0
  772. {topos_node-1.3.54 → topos_node-1.3.55}/topos/testing/lifespan.py +0 -0
  773. {topos_node-1.3.54 → topos_node-1.3.55}/topos/uds.py +0 -0
  774. {topos_node-1.3.54 → topos_node-1.3.55}/topos/uma_contact_enrichment.py +0 -0
  775. {topos_node-1.3.54 → topos_node-1.3.55}/topos/uma_filters.py +0 -0
  776. {topos_node-1.3.54 → topos_node-1.3.55}/topos/uma_resource_id.py +0 -0
  777. {topos_node-1.3.54 → topos_node-1.3.55}/topos/uma_rpt.py +0 -0
  778. {topos_node-1.3.54 → topos_node-1.3.55}/topos/upgrades/__init__.py +0 -0
  779. {topos_node-1.3.54 → topos_node-1.3.55}/topos/upgrades/runner.py +0 -0
  780. {topos_node-1.3.54 → topos_node-1.3.55}/topos/utils/base_object.py +0 -0
  781. {topos_node-1.3.54 → topos_node-1.3.55}/topos/websocket_client.py +0 -0
  782. {topos_node-1.3.54 → topos_node-1.3.55}/topos_node.egg-info/dependency_links.txt +0 -0
  783. {topos_node-1.3.54 → topos_node-1.3.55}/topos_node.egg-info/entry_points.txt +0 -0
  784. {topos_node-1.3.54 → topos_node-1.3.55}/topos_node.egg-info/top_level.txt +0 -0
@@ -0,0 +1,335 @@
1
+ Metadata-Version: 2.4
2
+ Name: topos-node
3
+ Version: 1.3.55
4
+ Summary: Topos personal AI engine (FastAPI): local data, sync, control plane WebSocket client
5
+ License-Expression: Apache-2.0
6
+ Project-URL: Homepage, https://topos.dialogues.ai
7
+ Project-URL: Source, https://dialogues.ai
8
+ Requires-Python: >=3.10
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Requires-Dist: fastapi~=0.136.0
12
+ Requires-Dist: uvicorn[standard]~=0.44.0
13
+ Requires-Dist: httpx~=0.28.1
14
+ Requires-Dist: pydantic~=2.13.2
15
+ Requires-Dist: pydantic-settings~=2.15.0
16
+ Requires-Dist: websockets<16.1,>=16.0
17
+ Requires-Dist: certifi~=2026.2.25
18
+ Requires-Dist: cryptography~=50.0.1
19
+ Requires-Dist: python-multipart<0.0.33,>=0.0.32
20
+ Requires-Dist: click~=8.4.1
21
+ Requires-Dist: packaging<26.2,>=26.1
22
+ Requires-Dist: mcp~=1.30.0
23
+ Requires-Dist: google-cloud-storage~=3.10.1
24
+ Requires-Dist: google-cloud-run~=0.16.0
25
+ Requires-Dist: asgi-lifespan~=2.1.0
26
+ Requires-Dist: psycopg[binary]~=3.3.3
27
+ Requires-Dist: duckdb~=1.5.2
28
+ Requires-Dist: torch<2.13,>=2.8.0
29
+ Requires-Dist: transformers~=5.10.2
30
+ Requires-Dist: huggingface-hub~=1.18.0
31
+ Requires-Dist: tqdm~=4.67.3
32
+ Requires-Dist: hf-xet~=1.5.1
33
+ Requires-Dist: sentence-transformers~=5.6.0
34
+ Requires-Dist: networkx<3.7,>=3.2.1
35
+ Requires-Dist: python-louvain<0.17,>=0.16
36
+ Requires-Dist: grand-cypher<0.14,>=0.13
37
+ Requires-Dist: numpy<3,>=1.26
38
+ Requires-Dist: scipy<2,>=1.11
39
+ Requires-Dist: scikit-learn<2,>=1.4
40
+ Requires-Dist: sqlite-vec~=0.1.9
41
+ Requires-Dist: pystray~=0.19.5
42
+ Requires-Dist: pillow>=10.0
43
+ Provides-Extra: database
44
+ Requires-Dist: psycopg[binary]~=3.3.3; extra == "database"
45
+ Provides-Extra: engine
46
+ Requires-Dist: duckdb~=1.5.2; extra == "engine"
47
+ Requires-Dist: torch<2.13,>=2.8.0; extra == "engine"
48
+ Requires-Dist: transformers~=5.10.2; extra == "engine"
49
+ Requires-Dist: huggingface-hub~=1.18.0; extra == "engine"
50
+ Requires-Dist: tqdm~=4.67.3; extra == "engine"
51
+ Requires-Dist: hf-xet~=1.5.1; extra == "engine"
52
+ Requires-Dist: sentence-transformers~=5.6.0; extra == "engine"
53
+ Requires-Dist: networkx<3.7,>=3.2.1; extra == "engine"
54
+ Requires-Dist: python-louvain<0.17,>=0.16; extra == "engine"
55
+ Requires-Dist: grand-cypher<0.14,>=0.13; extra == "engine"
56
+ Requires-Dist: numpy<3,>=1.26; extra == "engine"
57
+ Requires-Dist: scipy<2,>=1.11; extra == "engine"
58
+ Requires-Dist: scikit-learn<2,>=1.4; extra == "engine"
59
+ Provides-Extra: local
60
+ Provides-Extra: signal
61
+ Requires-Dist: pysqlcipher3~=1.2.0; extra == "signal"
62
+ Provides-Extra: dev
63
+ Requires-Dist: pytest~=9.0.3; extra == "dev"
64
+ Requires-Dist: pytest-asyncio~=1.3.0; extra == "dev"
65
+ Requires-Dist: httpx~=0.28.1; extra == "dev"
66
+ Dynamic: license-file
67
+
68
+ <div align="center">
69
+
70
+ <picture>
71
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/dialoguesai/topos/main/docs/assets/topos_mark_white.png">
72
+ <img src="https://raw.githubusercontent.com/dialoguesai/topos/main/docs/assets/topos_mark_black.png" alt="Topos" width="120" />
73
+ </picture>
74
+
75
+ # Topos
76
+
77
+ ### A digital twin, built from your own data.
78
+
79
+ **Connect the data you choose, and it takes the shape of you. Keep it private, or give access to your friends, your AIs, or the organizations you belong to — each seeing only what you allow.**
80
+
81
+ [Website](https://topos.dialogues.ai) · [Docs](https://topos.dialogues.ai/docs/welcome) · [Quick start](#quick-start) · [How it works](#how-it-works) · [Discord](https://discord.gg/BSahgm54mD)
82
+
83
+ [![PyPI](https://img.shields.io/pypi/v/topos-node?style=flat-square&color=111111&label=topos-node)](https://pypi.org/project/topos-node/)
84
+ [![Python](https://img.shields.io/pypi/pyversions/topos-node?style=flat-square&color=111111)](https://pypi.org/project/topos-node/)
85
+ [![License](https://img.shields.io/badge/license-Apache%202.0-111111?style=flat-square)](LICENSE)
86
+ [![Discord](https://img.shields.io/badge/discord-join-5865F2?style=flat-square&logo=discord&logoColor=white)](https://discord.gg/BSahgm54mD)
87
+ [![X](https://img.shields.io/badge/@dialoguesai-111111?style=flat-square&logo=x&logoColor=white)](https://x.com/dialoguesai)
88
+
89
+ </div>
90
+
91
+ ---
92
+
93
+ https://github.com/user-attachments/assets/4b63edf7-feff-4296-b9f9-07b3569e0f58
94
+
95
+ ---
96
+
97
+ ## What Topos is
98
+
99
+ Topos is a small program you run on your own computer.
100
+
101
+ You connect the data you already have — messages, mail, calendar, files, notes, browsing history, past AI chats — one source at a time, and only the ones you choose. Whatever you connect lands in one shape, and from that shape Topos builds a working model of you: what you know, who you know, where your attention goes, and how all of it has changed over time. Not a backup of your files — a representation of the person who made them.
102
+
103
+ That model stays on your disk. An engine sits on top of it to answer questions about your life, and a permission layer decides exactly what any app, assistant, or person gets back.
104
+
105
+ So you can ask it the things you would never paste into ChatGPT — and you can carry a slice of yourself to a friend, an AI, or an organization without handing over the rest.
106
+
107
+ ```
108
+ YOUR DATA TOPOS DATABASE TOPOS ENGINE THE ANSWER
109
+ ───────── ────────────── ──────────── ──────────
110
+ mail · chat one SQLite file reads, reasons, scoped
111
+ calendar · files on your disk, enforces your filtered
112
+ notes · browsing ─▶ yours alone ─▶ permissions ─▶ logged
113
+ AI chat history
114
+ ```
115
+
116
+ ### Four things it does
117
+
118
+ | | | |
119
+ | --- | --- | --- |
120
+ | 🔌 | **Connect** | Choose which sources to plug in — mail, chat, calendar, files, notes. Nothing comes in that you didn't connect. |
121
+ | 🧬 | **Shape** | What you connect is formed into a model of you — what you know, who you know, how it has changed. |
122
+ | 💬 | **Ask** | Put the questions to it that you would never send to a cloud assistant. |
123
+ | 🤝 | **Carry** | Bring a slice of yourself to friends, AIs, and the organizations you are part of. Each sees only what you allow. |
124
+
125
+ ---
126
+
127
+ ## Quick start
128
+
129
+ You need a Dialogues account to get a **Topos key** — the credential that pairs the node on your machine with your account. Sign up at **[topos.dialogues.ai](https://topos.dialogues.ai)** and open **Create Topos**; your key is on that screen.
130
+
131
+ ### Option A — macOS app (easiest)
132
+
133
+ 1. On the **Create Topos** screen, click **Download** to get `Topos.dmg` (signed and notarized).
134
+ 2. Mount it, drag **Topos** into Applications, and launch it. A menu-bar icon appears.
135
+ 3. Back in the browser, click **Connect this Mac** and allow the prompt. The app takes a one-time pairing code and stores your key.
136
+ 4. Leave the page open while it prepares: the node downloads its engine (~900 MB) and language models (~2.9 GB). The menu-bar icon shows progress.
137
+
138
+ ### Option B — terminal (macOS, Linux, Windows)
139
+
140
+ Install [uv](https://docs.astral.sh/uv/) if you do not have it:
141
+
142
+ ```bash
143
+ curl -LsSf https://astral.sh/uv/install.sh | sh
144
+ ```
145
+
146
+ Then:
147
+
148
+ ```bash
149
+ uv tool install topos-node
150
+ topos-node --set-topos-key "<YOUR_TOPOS_KEY>"
151
+ topos-node
152
+ ```
153
+
154
+ Your key is written to `~/.topos/.env` with restricted permissions. The node starts on port **8676** and connects out to the control plane.
155
+
156
+ Check that it is up:
157
+
158
+ ```bash
159
+ curl http://localhost:8676/healthcheck
160
+ ```
161
+
162
+ Your Topos now shows as **Connected** in the web app, and you can start adding sources.
163
+
164
+ ---
165
+
166
+ ## What it connects to
167
+
168
+ | Kind | Sources available today |
169
+ | --- | --- |
170
+ | 💬 **Messages** | iMessage, Signal Desktop |
171
+ | 🤖 **AI history** | ChatGPT (export file, and live conversations) |
172
+ | 🗂️ **Work & docs** | GitHub activity, Notion pages, Google Drive |
173
+ | 📅 **Calendar** | Google Calendar |
174
+ | 🌐 **Web** | Browser visits, browser events (highlights, stars) |
175
+ | 🎙️ **Transcripts** | VoxTerm voice transcripts, YouTube transcripts |
176
+ | 👥 **People** | Canonical address book |
177
+ | 🧪 **Demo data** | Ten fixture sets — messenger, email, calendar, journal, resume, finance, browsing, places, contacts — so you can try Topos before connecting anything real |
178
+ | 🔧 **Your own** | Anything not on this list — build a connector for it. Keep it private to your node, or share it to the community catalog for others to install in one click. |
179
+
180
+ Sources are not hardcoded. Connectors are declared at **[sheaf.dialogues.ai](https://sheaf.dialogues.ai)** and installed by your node at runtime — one you build stays private to your node until you choose to share it.
181
+
182
+ ### Connect an assistant
183
+
184
+ Your node speaks [MCP](https://modelcontextprotocol.io), so Claude and ChatGPT can query it — through the control plane, which routes the request to your machine rather than holding your data.
185
+
186
+ - **Claude Desktop** — point the MCP adapter at the control plane's `/mcp` endpoint with your Topos key as the bearer token.
187
+ - **ChatGPT** — add the same URL as a connector and sign in with Dialogues.
188
+
189
+ One node, one key, both assistants. See [Docs → Install Topos](https://topos.dialogues.ai/docs/install-topos).
190
+
191
+ ---
192
+
193
+ ## How it works
194
+
195
+ From the apps you plug in, to the assistant asking a question:
196
+
197
+ ```
198
+ ├─ WHAT YOU PLUG IN
199
+ │ gmail . imessage . calendar . drive . notion . github
200
+ │ browser history . your old chatgpt conversations
201
+ ▼
202
+ ├─ EVERYTHING LANDS IN THE SAME SHAPE
203
+ │ imessage . telegram . signal all become one kind of row
204
+ │ ical . google calendar . outlook become another
205
+ │ chatgpt . claude . grok become another
206
+ ▼
207
+ ├─ TOPOS READS BACK OVER IT
208
+ │ models on your own machine tag it, link it, summarise it
209
+ │ raw records turn into understanding
210
+ ▼
211
+ ├─ AND BUILDS FOUR THINGS
212
+ └──┬──────────────────┬──────────────────┬──────────────────┐
213
+ │ │ │ │
214
+ timeline search dossiers people
215
+ ──────── ────── ──────── ──────
216
+ temporal vector database everything topos social graph
217
+ knowledge graph finds things by knows about a who you know,
218
+ how things what they mean, person, project and how you
219
+ changed over time not exact words or topic relate to them
220
+ │ │ │ │
221
+ └──────────────────┴────────┬─────────┴──────────────────┘
222
+ ▼
223
+ ═══════════════════════════════╧═════════════════════════════════════════════
224
+ THE COGNITIVE FIREWALL
225
+ nothing leaves without crossing this. it checks who is asking,
226
+ what they may see, hands back only that, and logs what it sent.
227
+ ═══════════════════════════════╤═════════════════════════════════════════════
228
+ WHO GETS TO ASK │
229
+ ┌───────────────────────────┼───────────────────────────┐
230
+ ▼ ▼ ▼
231
+ claude and chatgpt the topos app any other app
232
+ the ai apps you use your own view of it you handed a key
233
+ ```
234
+
235
+ Underneath, that is two parts kept deliberately separate.
236
+
237
+ | Part | What it is | What it does |
238
+ | --- | --- | --- |
239
+ | 🗂️ **Topos Database** | Your memory, on your disk | Stores your records, keeps your history, makes your context searchable |
240
+ | 🧠 **Topos Engine** | Your decision layer | Understands the request, runs the AI work, and returns only what your permissions allow |
241
+
242
+ Because they are separate, you can change how your Topos thinks — models, pipelines, enrichment — without touching what it remembers.
243
+
244
+ ### The Cognitive Firewall
245
+
246
+ The engine does not hand out rows. Every request is evaluated against **scopes** — named lanes over your data that you grant, and can revoke.
247
+
248
+ Grant a scheduling agent `schedule:read` and `availability:read`:
249
+
250
+ ```
251
+ ✅ granted schedule:read, availability:read → "free Thursday afternoon"
252
+ ❌ not granted messages:read → never sees a single message
253
+ 🔒 revoked any scope, at any time → the next request comes back empty
254
+ ```
255
+
256
+ Some lanes are owner-only by design and are not offered for sharing at all.
257
+
258
+ Three rules hold across every path:
259
+
260
+ - **Permission-aware** — the grant is checked before data is read, not after.
261
+ - **Precision over data dumps** — the engine is built to answer the question, not to ship your history.
262
+ - **Transparent** — what was asked, what was disclosed, and what was withheld are all legible to you.
263
+
264
+ ### Where your data actually lives
265
+
266
+ - Everything is under **`~/.topos`** — a SQLite database, your key, your logs, your backups.
267
+ - Processing runs on your machine, through **[Ollama](https://ollama.com)** for local models and **[Hugging Face](https://huggingface.co)** for model downloads.
268
+ - Nothing is uploaded to Topos for storage.
269
+
270
+ ### Why there is a control plane
271
+
272
+ Your node sits behind your home network with no open ports. The control plane is
273
+ what makes it reachable anyway: leave your Topos running and online, and you can
274
+ use the web app from anywhere — phone, laptop, someone else's machine — and reach
275
+ your own node. It is a router, not a store.
276
+
277
+ The same layer is what lets nodes coordinate with each other, so sharing and
278
+ networked flows work between people rather than only inside one machine.
279
+
280
+ > The control plane is being prepared to run on confidential compute, so that even
281
+ > the routing tier cannot read what passes through it.
282
+
283
+ ---
284
+
285
+ ## Everyday commands
286
+
287
+ ```bash
288
+ topos-node # start the node
289
+ topos-node --set-topos-key "<KEY>" # save your key and exit
290
+ topos-node --discover # show which database is being served
291
+ topos-node --port 9100 --host 127.0.0.1 # bind somewhere else
292
+ topos-node --app # menu-bar mode; logs to ~/.topos/logs/node.log
293
+ topos-node profile --help # run more than one Topos on this machine
294
+
295
+ uv tool upgrade topos-node # update
296
+ uv tool uninstall topos-node # remove
297
+ ```
298
+
299
+ Keep your `TOPOS_KEY` private, and never commit a real one. `env.example` lists every setting the node reads.
300
+
301
+ ---
302
+
303
+ ## For developers
304
+
305
+ ```bash
306
+ uv sync --extra engine
307
+ just run
308
+ ```
309
+
310
+ Tests:
311
+
312
+ ```bash
313
+ pytest tests -q
314
+ ```
315
+
316
+ The default lane is hermetic — temporary databases only. Lanes that touch your real `~/.topos` or a running node are opt-in by marker.
317
+
318
+ - **[docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)** — local setup, test lanes, engine memory tuning
319
+ - **[docs/PLUGINS.md](docs/PLUGINS.md)** — write a plugin that registers handlers and connectors
320
+ - **[docs/testing/TEST_LANES.md](docs/testing/TEST_LANES.md)** — which tests run when, and why
321
+ - **[CONTRIBUTING.md](CONTRIBUTING.md)** — scope, hooks, and security expectations
322
+
323
+ ---
324
+
325
+ ## Links
326
+
327
+ - **Product** — [topos.dialogues.ai](https://topos.dialogues.ai)
328
+ - **Docs** — [topos.dialogues.ai/docs](https://topos.dialogues.ai/docs/welcome)
329
+ - **Connector creator** — [sheaf.dialogues.ai](https://sheaf.dialogues.ai)
330
+ - **Company** — [dialogues.ai](https://dialogues.ai)
331
+ - **Community** — [Discord](https://discord.gg/BSahgm54mD) · [X](https://x.com/dialoguesai)
332
+
333
+ ## License
334
+
335
+ [Apache 2.0](LICENSE)
@@ -0,0 +1,268 @@
1
+ <div align="center">
2
+
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/dialoguesai/topos/main/docs/assets/topos_mark_white.png">
5
+ <img src="https://raw.githubusercontent.com/dialoguesai/topos/main/docs/assets/topos_mark_black.png" alt="Topos" width="120" />
6
+ </picture>
7
+
8
+ # Topos
9
+
10
+ ### A digital twin, built from your own data.
11
+
12
+ **Connect the data you choose, and it takes the shape of you. Keep it private, or give access to your friends, your AIs, or the organizations you belong to — each seeing only what you allow.**
13
+
14
+ [Website](https://topos.dialogues.ai) · [Docs](https://topos.dialogues.ai/docs/welcome) · [Quick start](#quick-start) · [How it works](#how-it-works) · [Discord](https://discord.gg/BSahgm54mD)
15
+
16
+ [![PyPI](https://img.shields.io/pypi/v/topos-node?style=flat-square&color=111111&label=topos-node)](https://pypi.org/project/topos-node/)
17
+ [![Python](https://img.shields.io/pypi/pyversions/topos-node?style=flat-square&color=111111)](https://pypi.org/project/topos-node/)
18
+ [![License](https://img.shields.io/badge/license-Apache%202.0-111111?style=flat-square)](LICENSE)
19
+ [![Discord](https://img.shields.io/badge/discord-join-5865F2?style=flat-square&logo=discord&logoColor=white)](https://discord.gg/BSahgm54mD)
20
+ [![X](https://img.shields.io/badge/@dialoguesai-111111?style=flat-square&logo=x&logoColor=white)](https://x.com/dialoguesai)
21
+
22
+ </div>
23
+
24
+ ---
25
+
26
+ https://github.com/user-attachments/assets/4b63edf7-feff-4296-b9f9-07b3569e0f58
27
+
28
+ ---
29
+
30
+ ## What Topos is
31
+
32
+ Topos is a small program you run on your own computer.
33
+
34
+ You connect the data you already have — messages, mail, calendar, files, notes, browsing history, past AI chats — one source at a time, and only the ones you choose. Whatever you connect lands in one shape, and from that shape Topos builds a working model of you: what you know, who you know, where your attention goes, and how all of it has changed over time. Not a backup of your files — a representation of the person who made them.
35
+
36
+ That model stays on your disk. An engine sits on top of it to answer questions about your life, and a permission layer decides exactly what any app, assistant, or person gets back.
37
+
38
+ So you can ask it the things you would never paste into ChatGPT — and you can carry a slice of yourself to a friend, an AI, or an organization without handing over the rest.
39
+
40
+ ```
41
+ YOUR DATA TOPOS DATABASE TOPOS ENGINE THE ANSWER
42
+ ───────── ────────────── ──────────── ──────────
43
+ mail · chat one SQLite file reads, reasons, scoped
44
+ calendar · files on your disk, enforces your filtered
45
+ notes · browsing ─▶ yours alone ─▶ permissions ─▶ logged
46
+ AI chat history
47
+ ```
48
+
49
+ ### Four things it does
50
+
51
+ | | | |
52
+ | --- | --- | --- |
53
+ | 🔌 | **Connect** | Choose which sources to plug in — mail, chat, calendar, files, notes. Nothing comes in that you didn't connect. |
54
+ | 🧬 | **Shape** | What you connect is formed into a model of you — what you know, who you know, how it has changed. |
55
+ | 💬 | **Ask** | Put the questions to it that you would never send to a cloud assistant. |
56
+ | 🤝 | **Carry** | Bring a slice of yourself to friends, AIs, and the organizations you are part of. Each sees only what you allow. |
57
+
58
+ ---
59
+
60
+ ## Quick start
61
+
62
+ You need a Dialogues account to get a **Topos key** — the credential that pairs the node on your machine with your account. Sign up at **[topos.dialogues.ai](https://topos.dialogues.ai)** and open **Create Topos**; your key is on that screen.
63
+
64
+ ### Option A — macOS app (easiest)
65
+
66
+ 1. On the **Create Topos** screen, click **Download** to get `Topos.dmg` (signed and notarized).
67
+ 2. Mount it, drag **Topos** into Applications, and launch it. A menu-bar icon appears.
68
+ 3. Back in the browser, click **Connect this Mac** and allow the prompt. The app takes a one-time pairing code and stores your key.
69
+ 4. Leave the page open while it prepares: the node downloads its engine (~900 MB) and language models (~2.9 GB). The menu-bar icon shows progress.
70
+
71
+ ### Option B — terminal (macOS, Linux, Windows)
72
+
73
+ Install [uv](https://docs.astral.sh/uv/) if you do not have it:
74
+
75
+ ```bash
76
+ curl -LsSf https://astral.sh/uv/install.sh | sh
77
+ ```
78
+
79
+ Then:
80
+
81
+ ```bash
82
+ uv tool install topos-node
83
+ topos-node --set-topos-key "<YOUR_TOPOS_KEY>"
84
+ topos-node
85
+ ```
86
+
87
+ Your key is written to `~/.topos/.env` with restricted permissions. The node starts on port **8676** and connects out to the control plane.
88
+
89
+ Check that it is up:
90
+
91
+ ```bash
92
+ curl http://localhost:8676/healthcheck
93
+ ```
94
+
95
+ Your Topos now shows as **Connected** in the web app, and you can start adding sources.
96
+
97
+ ---
98
+
99
+ ## What it connects to
100
+
101
+ | Kind | Sources available today |
102
+ | --- | --- |
103
+ | 💬 **Messages** | iMessage, Signal Desktop |
104
+ | 🤖 **AI history** | ChatGPT (export file, and live conversations) |
105
+ | 🗂️ **Work & docs** | GitHub activity, Notion pages, Google Drive |
106
+ | 📅 **Calendar** | Google Calendar |
107
+ | 🌐 **Web** | Browser visits, browser events (highlights, stars) |
108
+ | 🎙️ **Transcripts** | VoxTerm voice transcripts, YouTube transcripts |
109
+ | 👥 **People** | Canonical address book |
110
+ | 🧪 **Demo data** | Ten fixture sets — messenger, email, calendar, journal, resume, finance, browsing, places, contacts — so you can try Topos before connecting anything real |
111
+ | 🔧 **Your own** | Anything not on this list — build a connector for it. Keep it private to your node, or share it to the community catalog for others to install in one click. |
112
+
113
+ Sources are not hardcoded. Connectors are declared at **[sheaf.dialogues.ai](https://sheaf.dialogues.ai)** and installed by your node at runtime — one you build stays private to your node until you choose to share it.
114
+
115
+ ### Connect an assistant
116
+
117
+ Your node speaks [MCP](https://modelcontextprotocol.io), so Claude and ChatGPT can query it — through the control plane, which routes the request to your machine rather than holding your data.
118
+
119
+ - **Claude Desktop** — point the MCP adapter at the control plane's `/mcp` endpoint with your Topos key as the bearer token.
120
+ - **ChatGPT** — add the same URL as a connector and sign in with Dialogues.
121
+
122
+ One node, one key, both assistants. See [Docs → Install Topos](https://topos.dialogues.ai/docs/install-topos).
123
+
124
+ ---
125
+
126
+ ## How it works
127
+
128
+ From the apps you plug in, to the assistant asking a question:
129
+
130
+ ```
131
+ ├─ WHAT YOU PLUG IN
132
+ │ gmail . imessage . calendar . drive . notion . github
133
+ │ browser history . your old chatgpt conversations
134
+ ▼
135
+ ├─ EVERYTHING LANDS IN THE SAME SHAPE
136
+ │ imessage . telegram . signal all become one kind of row
137
+ │ ical . google calendar . outlook become another
138
+ │ chatgpt . claude . grok become another
139
+ ▼
140
+ ├─ TOPOS READS BACK OVER IT
141
+ │ models on your own machine tag it, link it, summarise it
142
+ │ raw records turn into understanding
143
+ ▼
144
+ ├─ AND BUILDS FOUR THINGS
145
+ └──┬──────────────────┬──────────────────┬──────────────────┐
146
+ │ │ │ │
147
+ timeline search dossiers people
148
+ ──────── ────── ──────── ──────
149
+ temporal vector database everything topos social graph
150
+ knowledge graph finds things by knows about a who you know,
151
+ how things what they mean, person, project and how you
152
+ changed over time not exact words or topic relate to them
153
+ │ │ │ │
154
+ └──────────────────┴────────┬─────────┴──────────────────┘
155
+ ▼
156
+ ═══════════════════════════════╧═════════════════════════════════════════════
157
+ THE COGNITIVE FIREWALL
158
+ nothing leaves without crossing this. it checks who is asking,
159
+ what they may see, hands back only that, and logs what it sent.
160
+ ═══════════════════════════════╤═════════════════════════════════════════════
161
+ WHO GETS TO ASK │
162
+ ┌───────────────────────────┼───────────────────────────┐
163
+ ▼ ▼ ▼
164
+ claude and chatgpt the topos app any other app
165
+ the ai apps you use your own view of it you handed a key
166
+ ```
167
+
168
+ Underneath, that is two parts kept deliberately separate.
169
+
170
+ | Part | What it is | What it does |
171
+ | --- | --- | --- |
172
+ | 🗂️ **Topos Database** | Your memory, on your disk | Stores your records, keeps your history, makes your context searchable |
173
+ | 🧠 **Topos Engine** | Your decision layer | Understands the request, runs the AI work, and returns only what your permissions allow |
174
+
175
+ Because they are separate, you can change how your Topos thinks — models, pipelines, enrichment — without touching what it remembers.
176
+
177
+ ### The Cognitive Firewall
178
+
179
+ The engine does not hand out rows. Every request is evaluated against **scopes** — named lanes over your data that you grant, and can revoke.
180
+
181
+ Grant a scheduling agent `schedule:read` and `availability:read`:
182
+
183
+ ```
184
+ ✅ granted schedule:read, availability:read → "free Thursday afternoon"
185
+ ❌ not granted messages:read → never sees a single message
186
+ 🔒 revoked any scope, at any time → the next request comes back empty
187
+ ```
188
+
189
+ Some lanes are owner-only by design and are not offered for sharing at all.
190
+
191
+ Three rules hold across every path:
192
+
193
+ - **Permission-aware** — the grant is checked before data is read, not after.
194
+ - **Precision over data dumps** — the engine is built to answer the question, not to ship your history.
195
+ - **Transparent** — what was asked, what was disclosed, and what was withheld are all legible to you.
196
+
197
+ ### Where your data actually lives
198
+
199
+ - Everything is under **`~/.topos`** — a SQLite database, your key, your logs, your backups.
200
+ - Processing runs on your machine, through **[Ollama](https://ollama.com)** for local models and **[Hugging Face](https://huggingface.co)** for model downloads.
201
+ - Nothing is uploaded to Topos for storage.
202
+
203
+ ### Why there is a control plane
204
+
205
+ Your node sits behind your home network with no open ports. The control plane is
206
+ what makes it reachable anyway: leave your Topos running and online, and you can
207
+ use the web app from anywhere — phone, laptop, someone else's machine — and reach
208
+ your own node. It is a router, not a store.
209
+
210
+ The same layer is what lets nodes coordinate with each other, so sharing and
211
+ networked flows work between people rather than only inside one machine.
212
+
213
+ > The control plane is being prepared to run on confidential compute, so that even
214
+ > the routing tier cannot read what passes through it.
215
+
216
+ ---
217
+
218
+ ## Everyday commands
219
+
220
+ ```bash
221
+ topos-node # start the node
222
+ topos-node --set-topos-key "<KEY>" # save your key and exit
223
+ topos-node --discover # show which database is being served
224
+ topos-node --port 9100 --host 127.0.0.1 # bind somewhere else
225
+ topos-node --app # menu-bar mode; logs to ~/.topos/logs/node.log
226
+ topos-node profile --help # run more than one Topos on this machine
227
+
228
+ uv tool upgrade topos-node # update
229
+ uv tool uninstall topos-node # remove
230
+ ```
231
+
232
+ Keep your `TOPOS_KEY` private, and never commit a real one. `env.example` lists every setting the node reads.
233
+
234
+ ---
235
+
236
+ ## For developers
237
+
238
+ ```bash
239
+ uv sync --extra engine
240
+ just run
241
+ ```
242
+
243
+ Tests:
244
+
245
+ ```bash
246
+ pytest tests -q
247
+ ```
248
+
249
+ The default lane is hermetic — temporary databases only. Lanes that touch your real `~/.topos` or a running node are opt-in by marker.
250
+
251
+ - **[docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)** — local setup, test lanes, engine memory tuning
252
+ - **[docs/PLUGINS.md](docs/PLUGINS.md)** — write a plugin that registers handlers and connectors
253
+ - **[docs/testing/TEST_LANES.md](docs/testing/TEST_LANES.md)** — which tests run when, and why
254
+ - **[CONTRIBUTING.md](CONTRIBUTING.md)** — scope, hooks, and security expectations
255
+
256
+ ---
257
+
258
+ ## Links
259
+
260
+ - **Product** — [topos.dialogues.ai](https://topos.dialogues.ai)
261
+ - **Docs** — [topos.dialogues.ai/docs](https://topos.dialogues.ai/docs/welcome)
262
+ - **Connector creator** — [sheaf.dialogues.ai](https://sheaf.dialogues.ai)
263
+ - **Company** — [dialogues.ai](https://dialogues.ai)
264
+ - **Community** — [Discord](https://discord.gg/BSahgm54mD) · [X](https://x.com/dialoguesai)
265
+
266
+ ## License
267
+
268
+ [Apache 2.0](LICENSE)
@@ -1,10 +1,15 @@
1
1
  [build-system]
2
- requires = ["setuptools>=61", "wheel"]
2
+ # setuptools>=83: CVE-2026-59890 (GHSA-h35f-9h28-mq5c) is an sdist MANIFEST.in
3
+ # exclusion bypass via NFC/NFD Unicode collision on macOS APFS/HFS+ — a build-time
4
+ # flaw, so the floor belongs here, in the isolated build env, not in uv.lock. The
5
+ # lock's setuptools stays at 81.0.0 because torch 2.11.0 requires setuptools<82,
6
+ # and that copy never builds an sdist.
7
+ requires = ["setuptools>=83", "wheel"]
3
8
  build-backend = "setuptools.build_meta"
4
9
 
5
10
  [project]
6
11
  name = "topos-node"
7
- version = "1.3.54"
12
+ version = "1.3.55"
8
13
  description = "Topos personal AI engine (FastAPI): local data, sync, control plane WebSocket client"
9
14
  readme = "README.md"
10
15
  license = "Apache-2.0"
@@ -14,19 +19,27 @@ dependencies = [
14
19
  "uvicorn[standard]~=0.44.0",
15
20
  "httpx~=0.28.1",
16
21
  "pydantic~=2.13.2",
17
- "pydantic-settings~=2.13.1",
22
+ "pydantic-settings~=2.15.0",
18
23
  "websockets>=16.0,<16.1",
19
24
  "certifi~=2026.2.25",
20
- "cryptography~=46.0.7",
21
- "python-multipart>=0.0.26,<0.0.27",
25
+ "cryptography~=50.0.1",
26
+ "python-multipart>=0.0.32,<0.0.33",
22
27
  "click~=8.4.1",
23
28
  "packaging>=26.1,<26.2",
24
- "mcp~=1.27.0",
29
+ "mcp~=1.30.0",
25
30
  "google-cloud-storage~=3.10.1",
26
31
  "google-cloud-run~=0.16.0",
27
32
  "asgi-lifespan~=2.1.0",
28
33
  "psycopg[binary]~=3.3.3",
29
34
  "duckdb~=1.5.2",
35
+ # <2.13 is load-bearing, not staleness: torch 2.13.0 SIGSEGVs in
36
+ # `mps copy_cast_kernel` when the embedder, privacy filter and NSFW classifier
37
+ # touch MPS concurrently — every fresh Apple-silicon install died on its first
38
+ # chat message (reproduced A/B: exit 139 on 2.13.0, clean on 2.11.0; Release
39
+ # 1.3.5). Dependabot asks for exactly 2.13.0 for CVE-2025-3000, which needs
40
+ # `torch.jit.script` — nothing here calls torch.jit or torch.compile, so the
41
+ # CVE is unreachable and the crash is not. Do not raise without re-testing
42
+ # concurrent MPS first-query load on Apple silicon.
30
43
  "torch>=2.8.0,<2.13",
31
44
  "transformers~=5.10.2",
32
45
  "huggingface-hub~=1.18.0",
@@ -66,6 +79,14 @@ database = [
66
79
  # ML + enrichment runtime (hosted topos-engine Cloud Run image).
67
80
  engine = [
68
81
  "duckdb~=1.5.2",
82
+ # <2.13 is load-bearing, not staleness: torch 2.13.0 SIGSEGVs in
83
+ # `mps copy_cast_kernel` when the embedder, privacy filter and NSFW classifier
84
+ # touch MPS concurrently — every fresh Apple-silicon install died on its first
85
+ # chat message (reproduced A/B: exit 139 on 2.13.0, clean on 2.11.0; Release
86
+ # 1.3.5). Dependabot asks for exactly 2.13.0 for CVE-2025-3000, which needs
87
+ # `torch.jit.script` — nothing here calls torch.jit or torch.compile, so the
88
+ # CVE is unreachable and the crash is not. Do not raise without re-testing
89
+ # concurrent MPS first-query load on Apple silicon.
69
90
  "torch>=2.8.0,<2.13",
70
91
  "transformers~=5.10.2",
71
92
  "huggingface-hub~=1.18.0",