apsimo 1.4.3__tar.gz → 1.4.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1012) hide show
  1. {apsimo-1.4.3 → apsimo-1.4.5}/PKG-INFO +2 -4
  2. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/host.py +9 -35
  3. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/source_projection.py +2 -2
  4. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cli.py +4 -12
  5. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/graph/client.py +3 -3
  6. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/graph/queries.py +10 -0
  7. apsimo-1.4.5/apsimo/memory/__init__.py +1 -0
  8. {apsimo-1.4.3/apsimo/intelligence/graph → apsimo-1.4.5/apsimo/memory}/recall.py +1 -7
  9. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/qualification/memory_cases.py +1 -1
  10. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/server.py +5 -11
  11. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/setup.py +3 -5
  12. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/setup_hermes.py +22 -15
  13. apsimo-1.4.5/apsimo/setup_skills.py +90 -0
  14. apsimo-1.4.5/apsimo/workers/__init__.py +12 -0
  15. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/workers/colony_worker.py +3 -3
  16. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/workers/queue_worker.py +4 -7
  17. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/workers/skills_sync.py +4 -7
  18. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/__init__.py +1 -1
  19. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/config.py +1 -5
  20. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/store.py +14 -81
  21. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo.egg-info/PKG-INFO +2 -4
  22. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo.egg-info/SOURCES.txt +5 -11
  23. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo.egg-info/entry_points.txt +0 -5
  24. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo.egg-info/requires.txt +1 -4
  25. apsimo-1.4.5/apsimo.egg-info/top_level.txt +1 -0
  26. {apsimo-1.4.3 → apsimo-1.4.5}/pyproject.toml +3 -9
  27. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_apsimo_compat.py +10 -20
  28. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_canonical_source_read.py +1 -1
  29. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_causal_falsifiability.py +1 -2
  30. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_causal_query.py +1 -1
  31. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_causal_query_only_guard.py +1 -1
  32. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_current_work_recall_selection.py +1 -1
  33. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_general_governance.py +3 -19
  34. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_media_read_reference_presentation.py +1 -1
  35. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_initiative_work.py +1 -1
  36. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_setup.py +158 -18
  37. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_procedure_source_context.py +1 -1
  38. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_recall_hybrid.py +3 -2
  39. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_recall_request_repetition.py +2 -2
  40. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_recall_source_presentation.py +1 -1
  41. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_recall_unified_context.py +44 -2
  42. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_short_source_context.py +1 -1
  43. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_annotations.py +5 -5
  44. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_audio_claims.py +3 -3
  45. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_claim_projection.py +1 -1
  46. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_event_precision.py +1 -1
  47. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_excerpt_lineage.py +1 -1
  48. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_vectors.py +5 -5
  49. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_p8_server_integration.py +1 -1
  50. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_workers_install.py +34 -55
  51. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_world_entity_reinforcement.py +1 -1
  52. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_world_model_prune.py +1 -13
  53. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_world_observations.py +2 -9
  54. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_world_populator.py +1 -1
  55. apsimo-1.4.5/tests/test_world_store_api.py +49 -0
  56. apsimo-1.4.3/apsimo/compat.py +0 -53
  57. apsimo-1.4.3/apsimo/seed.py +0 -41
  58. apsimo-1.4.3/apsimo/workers/__init__.py +0 -21
  59. apsimo-1.4.3/apsimo/world_model/neo4j/__init__.py +0 -5
  60. apsimo-1.4.3/apsimo/world_model/neo4j/backend.py +0 -654
  61. apsimo-1.4.3/apsimo/world_model/postgres/__init__.py +0 -1
  62. apsimo-1.4.3/apsimo/world_model/postgres/backend.py +0 -683
  63. apsimo-1.4.3/apsimo.egg-info/top_level.txt +0 -2
  64. apsimo-1.4.3/colony_sidecar/__init__.py +0 -4
  65. apsimo-1.4.3/tests/test_neo4j_backend.py +0 -211
  66. apsimo-1.4.3/tests/test_seed_retirement.py +0 -117
  67. {apsimo-1.4.3 → apsimo-1.4.5}/LICENSE +0 -0
  68. {apsimo-1.4.3 → apsimo-1.4.5}/README.md +0 -0
  69. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/__init__.py +0 -0
  70. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/__main__.py +0 -0
  71. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/agent/__init__.py +0 -0
  72. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/agent/client.py +0 -0
  73. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/agent/models.py +0 -0
  74. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/agents/__init__.py +0 -0
  75. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/agents/models.py +0 -0
  76. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/agents/store.py +0 -0
  77. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/agents/websocket.py +0 -0
  78. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/__init__.py +0 -0
  79. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/auth_telemetry.py +0 -0
  80. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/authority.py +0 -0
  81. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/contact_grants.py +0 -0
  82. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/middleware.py +0 -0
  83. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/__init__.py +0 -0
  84. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/commitment_work.py +0 -0
  85. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/context_gate.py +0 -0
  86. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/executions.py +0 -0
  87. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/followup_plans.py +0 -0
  88. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/governed_actions.py +0 -0
  89. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/initiative_work.py +0 -0
  90. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/mining.py +0 -0
  91. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/observations.py +0 -0
  92. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/social_state.py +0 -0
  93. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/task_queue.py +0 -0
  94. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/temporal_followups.py +0 -0
  95. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/transport.py +0 -0
  96. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/routers/transport_ingress_api.py +0 -0
  97. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/schemas/__init__.py +0 -0
  98. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/api/schemas/host.py +0 -0
  99. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/autonomy/cli.py +0 -0
  100. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/autonomy/condition_worker.py +0 -0
  101. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/autonomy/config.py +0 -0
  102. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/autonomy/loop.py +0 -0
  103. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/autonomy/registry.py +0 -0
  104. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/autonomy/scheduler.py +0 -0
  105. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/autonomy/synthesis.py +0 -0
  106. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/backup.py +0 -0
  107. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/__init__.py +0 -0
  108. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/contradictions.py +0 -0
  109. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/decay.py +0 -0
  110. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/engine.py +0 -0
  111. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/models.py +0 -0
  112. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/promotion.py +0 -0
  113. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/resolve.py +0 -0
  114. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/source_claims.py +0 -0
  115. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/source_time.py +0 -0
  116. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/beliefs/store.py +0 -0
  117. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/briefings/aggregators.py +0 -0
  118. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/briefings/composer.py +0 -0
  119. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/briefings/config.py +0 -0
  120. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/briefings/delivery.py +0 -0
  121. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/briefings/engagement.py +0 -0
  122. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/briefings/engine.py +0 -0
  123. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/briefings/enhancer.py +0 -0
  124. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/briefings/models.py +0 -0
  125. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/briefings/scheduler.py +0 -0
  126. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/briefings/store.py +0 -0
  127. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/__init__.py +0 -0
  128. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/block.py +0 -0
  129. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/cli.py +0 -0
  130. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/genesis.py +0 -0
  131. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/identity.py +0 -0
  132. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/keys.py +0 -0
  133. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/local_keys.py +0 -0
  134. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/manager.py +0 -0
  135. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/node.py +0 -0
  136. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/plugin_transactions.py +0 -0
  137. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/protocol.py +0 -0
  138. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/state_machine.py +0 -0
  139. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/storage.py +0 -0
  140. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/transactions.py +0 -0
  141. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/chain/validation.py +0 -0
  142. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/channels/__init__.py +0 -0
  143. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/channels/manifest.py +0 -0
  144. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/channels/migrations/001_channels_schema.sql +0 -0
  145. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/channels/phone_gateways.py +0 -0
  146. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/channels/presence.py +0 -0
  147. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/channels/router.py +0 -0
  148. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/channels/store.py +0 -0
  149. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cognition/__init__.py +0 -0
  150. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cognition/charter.py +0 -0
  151. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cognition/drive_governance.py +0 -0
  152. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cognition/evidence_pipeline.py +0 -0
  153. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cognition/external_events.py +0 -0
  154. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cognition/goal_spine.py +0 -0
  155. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cognition/introspection.py +0 -0
  156. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cognition/prompt.py +0 -0
  157. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cognition/runtime.py +0 -0
  158. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/cognition/trigger.py +0 -0
  159. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/commitments/__init__.py +0 -0
  160. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/commitments/local_work.py +0 -0
  161. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/commitments/store.py +0 -0
  162. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/commitments/work.py +0 -0
  163. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/compression/__init__.py +0 -0
  164. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/connectors/__init__.py +0 -0
  165. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/connectors/base.py +0 -0
  166. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/connectors/caldav_calendar.py +0 -0
  167. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/connectors/fs_documents.py +0 -0
  168. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/connectors/imap_email.py +0 -0
  169. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/connectors/manager.py +0 -0
  170. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/connectors/webhook_pull.py +0 -0
  171. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/__init__.py +0 -0
  172. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/comms.py +0 -0
  173. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/config.py +0 -0
  174. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/exporters/__init__.py +0 -0
  175. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/exporters/vcard.py +0 -0
  176. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/identity_links.py +0 -0
  177. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/importer.py +0 -0
  178. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/importers/__init__.py +0 -0
  179. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/importers/batch.py +0 -0
  180. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/importers/macos_contacts.py +0 -0
  181. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/migrations/001_contacts_schema.sql +0 -0
  182. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/migrations/002_trust_scopes.sql +0 -0
  183. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/migrations/003_open_gateway_enum.sql +0 -0
  184. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/migrations/004_contact_provision_operations.sql +0 -0
  185. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/migrations/005_identity_links.sql +0 -0
  186. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/models.py +0 -0
  187. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/scoring.py +0 -0
  188. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/store.py +0 -0
  189. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/transport_ingress.py +0 -0
  190. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contacts/world_bridge.py +0 -0
  191. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contextgate/__init__.py +0 -0
  192. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contextgate/chunker.py +0 -0
  193. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contextgate/estimate.py +0 -0
  194. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contextgate/gate.py +0 -0
  195. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/contextgate/retrieve.py +0 -0
  196. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/delivery/__init__.py +0 -0
  197. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/delivery/bridge.py +0 -0
  198. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/delivery/channels.py +0 -0
  199. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/delivery/classification.py +0 -0
  200. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/delivery/rate_limiter.py +0 -0
  201. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/delivery/reachout_policy.py +0 -0
  202. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directed/__init__.py +0 -0
  203. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directed/audit.py +0 -0
  204. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directed/intake.py +0 -0
  205. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directed/models.py +0 -0
  206. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directed/service.py +0 -0
  207. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directives/__init__.py +0 -0
  208. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directives/evidence.py +0 -0
  209. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directives/extractor.py +0 -0
  210. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directives/guard.py +0 -0
  211. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directives/models.py +0 -0
  212. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directives/service.py +0 -0
  213. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/directives/store.py +0 -0
  214. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/doctor.py +0 -0
  215. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/environment.py +0 -0
  216. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/events/__init__.py +0 -0
  217. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/events/broadcaster.py +0 -0
  218. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/events/bus.py +0 -0
  219. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/events/journal.py +0 -0
  220. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/events/stream.py +0 -0
  221. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/events/types.py +0 -0
  222. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/execution_results.py +0 -0
  223. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/feedback/__init__.py +0 -0
  224. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/feedback/store.py +0 -0
  225. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/feeds/__init__.py +0 -0
  226. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/feeds/cli.py +0 -0
  227. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/feeds/engine.py +0 -0
  228. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/feeds/example-feed.yaml +0 -0
  229. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/feeds/hermes_cron.py +0 -0
  230. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/feeds/manager.py +0 -0
  231. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/feeds/spec.py +0 -0
  232. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/feeds/template.py +0 -0
  233. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/__init__.py +0 -0
  234. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/audit.py +0 -0
  235. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/communication_policy.py +0 -0
  236. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/config.py +0 -0
  237. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/context_provenance.py +0 -0
  238. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/env_risk.py +0 -0
  239. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/guard_audit.py +0 -0
  240. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/layers/__init__.py +0 -0
  241. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/layers/base.py +0 -0
  242. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/layers/l1_recipient.py +0 -0
  243. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/layers/l2_pii.py +0 -0
  244. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/layers/l3_cross_context.py +0 -0
  245. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/layers/l4_trust_tier.py +0 -0
  246. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/layers/l5_injection.py +0 -0
  247. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/layers/l6_review.py +0 -0
  248. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/layers/l7_delay.py +0 -0
  249. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/layers/tom2_epistemic.py +0 -0
  250. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/models.py +0 -0
  251. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/pending_dispatch.py +0 -0
  252. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/pipeline.py +0 -0
  253. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/rejection.py +0 -0
  254. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/response_guard.py +0 -0
  255. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/rulesets/injection_v1.yaml +0 -0
  256. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/surface_policy.py +0 -0
  257. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/gate/taint.py +0 -0
  258. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/genesis.json +0 -0
  259. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/__init__.py +0 -0
  260. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/config.py +0 -0
  261. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/decomposer.py +0 -0
  262. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/engine.py +0 -0
  263. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/inference.py +0 -0
  264. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/models.py +0 -0
  265. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/priority.py +0 -0
  266. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/queue_bridge.py +0 -0
  267. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/replan.py +0 -0
  268. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/schema.sql +0 -0
  269. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/goals/store.py +0 -0
  270. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/governed_actions.py +0 -0
  271. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/harness_integration/__init__.py +0 -0
  272. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/harness_integration/context.py +0 -0
  273. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/harness_integration/skills.py +0 -0
  274. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity/__init__.py +0 -0
  275. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity/participants.py +0 -0
  276. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity/resolver.py +0 -0
  277. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/__init__.py +0 -0
  278. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/builder.py +0 -0
  279. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/corpus.py +0 -0
  280. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/models.py +0 -0
  281. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/runner.py +0 -0
  282. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/__init__.py +0 -0
  283. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/briefings.py +0 -0
  284. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/chain.py +0 -0
  285. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/goals.py +0 -0
  286. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/memory.py +0 -0
  287. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/neo4j_cognition.py +0 -0
  288. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/relationship.py +0 -0
  289. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/sessions.py +0 -0
  290. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/skills.py +0 -0
  291. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/task_queue.py +0 -0
  292. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/seeders/world_model.py +0 -0
  293. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/self_query.py +0 -0
  294. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/self_reflection.py +0 -0
  295. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/skill.py +0 -0
  296. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/identity_bootstrap/verifier.py +0 -0
  297. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/__init__.py +0 -0
  298. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/action_registry.py +0 -0
  299. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/approval_authority.py +0 -0
  300. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/approval_policy.py +0 -0
  301. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/assignment.py +0 -0
  302. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/backup_evidence.py +0 -0
  303. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/context_freshness.py +0 -0
  304. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/models.py +0 -0
  305. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/native_work.py +0 -0
  306. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/standing_approvals.py +0 -0
  307. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/store.py +0 -0
  308. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/initiatives/temporal_followup.py +0 -0
  309. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/__init__.py +0 -0
  310. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/cognition/__init__.py +0 -0
  311. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/cognition/gap_detector.py +0 -0
  312. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/cognition/metalearner.py +0 -0
  313. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/cognition/metrics_collector.py +0 -0
  314. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/cognition/performance_index.py +0 -0
  315. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/cognition/registry.py +0 -0
  316. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/cognition/strategy_adjuster.py +0 -0
  317. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/cognition/types.py +0 -0
  318. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/components/__init__.py +0 -0
  319. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/components/anomaly_detector.py +0 -0
  320. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/components/initiative_engine.py +0 -0
  321. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/components/preference_learner.py +0 -0
  322. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/components/research_orchestrator.py +0 -0
  323. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/components/self_directed_thinker.py +0 -0
  324. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/components/self_reflector.py +0 -0
  325. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/components/session_continuity.py +0 -0
  326. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/components/task_planner.py +0 -0
  327. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/components/tool_learner.py +0 -0
  328. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/graph/__init__.py +0 -0
  329. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/graph/consolidator.py +0 -0
  330. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/graph/distiller.py +0 -0
  331. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/graph/migrations.py +0 -0
  332. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/graph/reconciler.py +0 -0
  333. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/graph/schema.py +0 -0
  334. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/learning/__init__.py +0 -0
  335. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/learning/continuous_learner.py +0 -0
  336. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/learning/feedback_store.py +0 -0
  337. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/mind_model/__init__.py +0 -0
  338. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/mind_model/graph_baseline.py +0 -0
  339. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/mind_model/signal_collector.py +0 -0
  340. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/relationships/__init__.py +0 -0
  341. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/relationships/profiler.py +0 -0
  342. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/relationships/scorer.py +0 -0
  343. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/relationships/signal_floor.py +0 -0
  344. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/relationships/trust_tiers.py +0 -0
  345. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/synthesis/__init__.py +0 -0
  346. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/synthesis/connection_discoverer.py +0 -0
  347. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/synthesis/cross_domain_analyzer.py +0 -0
  348. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/synthesis/insight_deliverer.py +0 -0
  349. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/synthesis/insight_store.py +0 -0
  350. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/synthesis/insight_validator.py +0 -0
  351. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/synthesis/novelty_scorer.py +0 -0
  352. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/turn_middleware/__init__.py +0 -0
  353. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/intelligence/turn_middleware/memory_sync.py +0 -0
  354. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/mcp/__init__.py +0 -0
  355. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/mcp/__main__.py +0 -0
  356. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/mcp/config.py +0 -0
  357. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/mcp/server.py +0 -0
  358. {apsimo-1.4.3/apsimo/intelligence/graph → apsimo-1.4.5/apsimo/memory}/selection.py +0 -0
  359. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/migrations.py +0 -0
  360. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/mining/__init__.py +0 -0
  361. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/mining/corpus.py +0 -0
  362. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/mining/escalations.py +0 -0
  363. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/mining/models.py +0 -0
  364. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/mining/store.py +0 -0
  365. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/models/__init__.py +0 -0
  366. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/models/memory.py +0 -0
  367. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/models/mesh.py +0 -0
  368. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/models/person.py +0 -0
  369. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/models/signal.py +0 -0
  370. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/observations/__init__.py +0 -0
  371. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/observations/store.py +0 -0
  372. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/patterns/__init__.py +0 -0
  373. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/patterns/extract.py +0 -0
  374. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/patterns/store.py +0 -0
  375. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/persona/__init__.py +0 -0
  376. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/persona/engine.py +0 -0
  377. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/persona/manifest.py +0 -0
  378. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/projects/__init__.py +0 -0
  379. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/projects/engine.py +0 -0
  380. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/projects/event_outbox.py +0 -0
  381. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/projects/models.py +0 -0
  382. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/projects/planner.py +0 -0
  383. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/projects/store.py +0 -0
  384. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/proposals/__init__.py +0 -0
  385. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/proposals/engine.py +0 -0
  386. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/proposals/models.py +0 -0
  387. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/qualification/__init__.py +0 -0
  388. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/qualification/cases.py +0 -0
  389. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/qualification/cli.py +0 -0
  390. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/qualification/records.py +0 -0
  391. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/qualification/report.py +0 -0
  392. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/qualification/runner.py +0 -0
  393. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/qualification/structured_cases.py +0 -0
  394. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/reasoning/__init__.py +0 -0
  395. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/reasoning/executor.py +0 -0
  396. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/reasoning/loop.py +0 -0
  397. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/reasoning/native_tools/__init__.py +0 -0
  398. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/reasoning/native_tools/calculate.py +0 -0
  399. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/reasoning/native_tools/file_ops.py +0 -0
  400. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/reasoning/native_tools/web_search.py +0 -0
  401. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/reasoning/tool_policy.py +0 -0
  402. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/redact/__init__.py +0 -0
  403. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/repos/__init__.py +0 -0
  404. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/repos/mirrors.py +0 -0
  405. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/__init__.py +0 -0
  406. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/artifact.py +0 -0
  407. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/gatherer.py +0 -0
  408. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/pipeline.py +0 -0
  409. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/search/__init__.py +0 -0
  410. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/search/base.py +0 -0
  411. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/search/brave.py +0 -0
  412. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/search/cache.py +0 -0
  413. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/search/duckduckgo.py +0 -0
  414. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/search/orchestrator.py +0 -0
  415. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/search/serpapi.py +0 -0
  416. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/search/tavily.py +0 -0
  417. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/research/synthesizer.py +0 -0
  418. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/router/__init__.py +0 -0
  419. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/router/complexity_scorer.py +0 -0
  420. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/router/endpoints.py +0 -0
  421. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/router/fallback.py +0 -0
  422. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/router/functions.py +0 -0
  423. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/router/native_policy.py +0 -0
  424. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/router/router.py +0 -0
  425. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/router/self_learning.py +0 -0
  426. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/router/tiers.py +0 -0
  427. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/sandbox/__init__.py +0 -0
  428. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/sandbox/backend.py +0 -0
  429. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/sandbox/manager.py +0 -0
  430. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/scope_bounds.py +0 -0
  431. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/secrets/__init__.py +0 -0
  432. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/secrets/backends/__init__.py +0 -0
  433. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/secrets/backends/base.py +0 -0
  434. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/secrets/backends/env.py +0 -0
  435. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/secrets/backends/keyring.py +0 -0
  436. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/secrets/backends/onepassword.py +0 -0
  437. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/secrets/cli.py +0 -0
  438. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/secrets/manager.py +0 -0
  439. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/secrets/migration.py +0 -0
  440. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/secrets/types.py +0 -0
  441. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/__init__.py +0 -0
  442. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/appraisals.py +0 -0
  443. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/benchmark.py +0 -0
  444. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/brief.py +0 -0
  445. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/event_concerns.py +0 -0
  446. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/execution_forecasts.py +0 -0
  447. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/expectations.py +0 -0
  448. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/experiments.py +0 -0
  449. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/journal.py +0 -0
  450. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/judgments.py +0 -0
  451. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/native_outcomes.py +0 -0
  452. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/params.py +0 -0
  453. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/perspective.py +0 -0
  454. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/reconcile.py +0 -0
  455. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/reply_forecasts.py +0 -0
  456. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/runtime_forecasts.py +0 -0
  457. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/runtime_models.py +0 -0
  458. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/settlement.py +0 -0
  459. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/situation.py +0 -0
  460. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/store.py +0 -0
  461. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/supervised.py +0 -0
  462. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/thinker.py +0 -0
  463. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/trust.py +0 -0
  464. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/self_model/workspace.py +0 -0
  465. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/services/__init__.py +0 -0
  466. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/services/agent_bridge.py +0 -0
  467. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/services/initiative_executor.py +0 -0
  468. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/services/instance.py +0 -0
  469. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/sessions/__init__.py +0 -0
  470. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/sessions/config.py +0 -0
  471. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/sessions/context_loader.py +0 -0
  472. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/sessions/federation_session.py +0 -0
  473. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/sessions/isolated_session.py +0 -0
  474. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/sessions/reports.py +0 -0
  475. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/sessions/store.py +0 -0
  476. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/setup_local_work.py +0 -0
  477. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/setup_native_goals.py +0 -0
  478. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/setup_native_reviews.py +0 -0
  479. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/__init__.py +0 -0
  480. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/base.py +0 -0
  481. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/budget.py +0 -0
  482. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/executor.py +0 -0
  483. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/executors/__init__.py +0 -0
  484. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/executors/behavioral_correction.py +0 -0
  485. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/executors/capability_gap.py +0 -0
  486. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/executors/data_quality.py +0 -0
  487. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/executors/knowledge_acquisition.py +0 -0
  488. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/executors/operational_hygiene.py +0 -0
  489. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/executors/subsystem_health.py +0 -0
  490. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/hermes_export.py +0 -0
  491. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/index.py +0 -0
  492. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/learning/__init__.py +0 -0
  493. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/learning/novelty_detector.py +0 -0
  494. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/learning/pattern_extractor.py +0 -0
  495. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/learning/triggers.py +0 -0
  496. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/loader.py +0 -0
  497. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/migrations/002_progressive_loading.sql +0 -0
  498. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/migrations/backfill_triggers.py +0 -0
  499. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/models.py +0 -0
  500. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/packager.py +0 -0
  501. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/protocols.py +0 -0
  502. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/registry.py +0 -0
  503. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/runtime.py +0 -0
  504. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/sandbox_runner.py +0 -0
  505. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/scheduler.py +0 -0
  506. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/schema.py +0 -0
  507. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/security/__init__.py +0 -0
  508. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/security/guards.py +0 -0
  509. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills/security/scanner.py +0 -0
  510. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills_memory/__init__.py +0 -0
  511. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills_memory/distill.py +0 -0
  512. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills_memory/models.py +0 -0
  513. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills_memory/retrieve.py +0 -0
  514. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/skills_memory/store.py +0 -0
  515. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/surprise/__init__.py +0 -0
  516. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/surprise/accumulation.py +0 -0
  517. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/surprise/scorer.py +0 -0
  518. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/surprise/store.py +0 -0
  519. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/__init__.py +0 -0
  520. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/action_receipts.py +0 -0
  521. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/approval_relay_canary.py +0 -0
  522. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/config.py +0 -0
  523. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/contract.py +0 -0
  524. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/events.py +0 -0
  525. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/governor.py +0 -0
  526. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/handlers/__init__.py +0 -0
  527. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/handlers/base.py +0 -0
  528. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/handlers/inference.py +0 -0
  529. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/handlers/monitoring.py +0 -0
  530. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/handlers/registry.py +0 -0
  531. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/handlers/subtask_handler.py +0 -0
  532. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/handlers/system_maintenance.py +0 -0
  533. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/mesh_integration.py +0 -0
  534. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/models.py +0 -0
  535. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/queue_manager.py +0 -0
  536. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/routing.py +0 -0
  537. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/scheduler.py +0 -0
  538. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/schema.sql +0 -0
  539. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/work_control.py +0 -0
  540. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/task_queue/worker.py +0 -0
  541. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/telemetry.py +0 -0
  542. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/__init__.py +0 -0
  543. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/affect.py +0 -0
  544. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/approvals.py +0 -0
  545. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/arcs.py +0 -0
  546. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/asymmetry.py +0 -0
  547. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/eligibility.py +0 -0
  548. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/engagement.py +0 -0
  549. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/exposure.py +0 -0
  550. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/extractor.py +0 -0
  551. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/fact_adapters.py +0 -0
  552. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/facts.py +0 -0
  553. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/integration.py +0 -0
  554. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/leveled.py +0 -0
  555. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/levels.py +0 -0
  556. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/recipient_audit.py +0 -0
  557. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/recipient_simulator.py +0 -0
  558. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/source_lineage.py +0 -0
  559. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/tom2.py +0 -0
  560. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/visibility.py +0 -0
  561. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tom/visibility_store.py +0 -0
  562. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tools/__init__.py +0 -0
  563. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tools/definitions.py +0 -0
  564. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/tools/handlers.py +0 -0
  565. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/toolsmith/__init__.py +0 -0
  566. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/toolsmith/authority.py +0 -0
  567. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/toolsmith/engine.py +0 -0
  568. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/toolsmith/integrity.py +0 -0
  569. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/toolsmith/miner.py +0 -0
  570. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/toolsmith/policy.py +0 -0
  571. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/toolsmith/registry.py +0 -0
  572. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/__init__.py +0 -0
  573. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/audio.py +0 -0
  574. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/documents.py +0 -0
  575. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/executions.py +0 -0
  576. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/hermes_history.py +0 -0
  577. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/hermes_kanban.py +0 -0
  578. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/hermes_work.py +0 -0
  579. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/history_references.py +0 -0
  580. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/idempotency.py +0 -0
  581. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/local_work.py +0 -0
  582. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/media.py +0 -0
  583. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/reported_workers.py +0 -0
  584. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/source_annotations.py +0 -0
  585. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/source_attribution.py +0 -0
  586. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/source_read.py +0 -0
  587. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/source_vectors.py +0 -0
  588. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/tool_observations.py +0 -0
  589. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/turns/video.py +0 -0
  590. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/util/autonomy_preset.py +0 -0
  591. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/util/instance.py +0 -0
  592. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/util/model_output.py +0 -0
  593. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/util/quiet_hours.py +0 -0
  594. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/util/session_safety.py +0 -0
  595. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/util/temporal.py +0 -0
  596. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/__init__.py +0 -0
  597. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/backfill.py +0 -0
  598. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/caption.py +0 -0
  599. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/collections.py +0 -0
  600. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/config.py +0 -0
  601. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/embedder.py +0 -0
  602. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/image_preprocess.py +0 -0
  603. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/image_store.py +0 -0
  604. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/indexes.py +0 -0
  605. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/migrate.py +0 -0
  606. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/multimodal_provider.py +0 -0
  607. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/multimodal_types.py +0 -0
  608. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/openai_provider.py +0 -0
  609. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/query.py +0 -0
  610. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/reranker.py +0 -0
  611. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/safety_image.py +0 -0
  612. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/scanner.py +0 -0
  613. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/setup.py +0 -0
  614. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/store.py +0 -0
  615. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/vector/tiers.py +0 -0
  616. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/work_orders.py +0 -0
  617. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/workers/agent_bridge.py +0 -0
  618. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/causal_maintenance.py +0 -0
  619. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/causal_policy.py +0 -0
  620. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/causal_query.py +0 -0
  621. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/confidence.py +0 -0
  622. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/constants.py +0 -0
  623. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/entities.py +0 -0
  624. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/expectation_resolvers.py +0 -0
  625. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/__init__.py +0 -0
  626. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/base.py +0 -0
  627. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/conversation_extractor.py +0 -0
  628. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/detector.py +0 -0
  629. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/document_extractor.py +0 -0
  630. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/formats/__init__.py +0 -0
  631. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/formats/csv_fmt.py +0 -0
  632. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/formats/html_fmt.py +0 -0
  633. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/formats/json_fmt.py +0 -0
  634. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/formats/pdf.py +0 -0
  635. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/formats/text.py +0 -0
  636. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/llm_extractor.py +0 -0
  637. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/extraction/pipeline.py +0 -0
  638. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/integrations/__init__.py +0 -0
  639. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/integrations/mind_model_bridge.py +0 -0
  640. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/integrations/social_intel_bridge.py +0 -0
  641. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/jobs/__init__.py +0 -0
  642. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/jobs/extraction_job.py +0 -0
  643. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/llm_extract.py +0 -0
  644. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/observations.py +0 -0
  645. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/populator.py +0 -0
  646. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/relationships.py +0 -0
  647. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/resolution/__init__.py +0 -0
  648. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/resolution/entity_resolver.py +0 -0
  649. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/resolution/merge_audit.py +0 -0
  650. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/resolution/merge_workflow.py +0 -0
  651. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/source_reports.py +0 -0
  652. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/sqlite/__init__.py +0 -0
  653. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/sqlite/backend.py +0 -0
  654. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo/world_model/sqlite/schema.sql +0 -0
  655. {apsimo-1.4.3 → apsimo-1.4.5}/apsimo.egg-info/dependency_links.txt +0 -0
  656. {apsimo-1.4.3 → apsimo-1.4.5}/setup.cfg +0 -0
  657. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_accepted_local_work.py +0 -0
  658. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_adaptive_params.py +0 -0
  659. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_affect.py +0 -0
  660. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_agent_action_routing.py +0 -0
  661. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_agent_api.py +0 -0
  662. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_agent_bridge.py +0 -0
  663. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_agent_bridge_service.py +0 -0
  664. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_agent_sdk.py +0 -0
  665. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_agent_sensor_loop.py +0 -0
  666. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_agent_snapshot.py +0 -0
  667. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_agent_store.py +0 -0
  668. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_annotated_recall_reinforcement.py +0 -0
  669. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_answer_source_lineage.py +0 -0
  670. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_appraisal_incident_decisions.py +0 -0
  671. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_approval_gate.py +0 -0
  672. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_approval_relay_canary.py +0 -0
  673. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_apsimo_harness_guidance.py +0 -0
  674. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_assignment_engine.py +0 -0
  675. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_audit_cleanup.py +0 -0
  676. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_auth_coverage.py +0 -0
  677. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_auth_migration_readiness.py +0 -0
  678. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_authz_scope_api.py +0 -0
  679. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_autonomy_preset.py +0 -0
  680. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_backup.py +0 -0
  681. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_backup_receipt_evidence.py +0 -0
  682. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_beliefs.py +0 -0
  683. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_bind_auth_guard.py +0 -0
  684. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_boundary_fail_closed.py +0 -0
  685. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_bounded_approval_authority.py +0 -0
  686. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_briefing_aggregators.py +0 -0
  687. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_canonical_scoped_context.py +0 -0
  688. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_causal_extract.py +0 -0
  689. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_causal_maintenance.py +0 -0
  690. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_causal_policy.py +0 -0
  691. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_chain_keys.py +0 -0
  692. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_channel_preferences.py +0 -0
  693. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_channel_registry.py +0 -0
  694. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_channel_store.py +0 -0
  695. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition.py +0 -0
  696. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_evidence_pipeline.py +0 -0
  697. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_evidence_server_wiring.py +0 -0
  698. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_goal_spine.py +0 -0
  699. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_observability.py +0 -0
  700. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_p4_controlled_learning.py +0 -0
  701. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_p4_server_integration.py +0 -0
  702. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_p6_p7_server_wiring.py +0 -0
  703. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_p7_drive_governance.py +0 -0
  704. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_phase_b_runtime.py +0 -0
  705. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_phase_c_scheduler.py +0 -0
  706. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_cognition_server_wiring.py +0 -0
  707. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_colony_memory_provider.py +0 -0
  708. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_commitment_resolution.py +0 -0
  709. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_commitment_resolution_downgrade.py +0 -0
  710. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_commitment_resolution_schema.py +0 -0
  711. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_commitment_work.py +0 -0
  712. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_commitments.py +0 -0
  713. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_comms_source_erasure.py +0 -0
  714. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_competence_reconciliation.py +0 -0
  715. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_compression.py +0 -0
  716. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_concern_resolution_receipts.py +0 -0
  717. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_condition_producer.py +0 -0
  718. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_connectors.py +0 -0
  719. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_contact_fact_recall.py +0 -0
  720. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_contact_policy_projection.py +0 -0
  721. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_contact_provisioning.py +0 -0
  722. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_contact_timezone.py +0 -0
  723. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_contacts_intro.py +0 -0
  724. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_contacts_persistence.py +0 -0
  725. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_context_gate.py +0 -0
  726. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_context_phase1.py +0 -0
  727. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_context_provenance.py +0 -0
  728. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_context_skill_ownership.py +0 -0
  729. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_conversation_presence.py +0 -0
  730. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_conversation_turn_concerns.py +0 -0
  731. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_delivery_bridge_503.py +0 -0
  732. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_delivery_gateway_identity.py +0 -0
  733. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_delivery_reachout_routing.py +0 -0
  734. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_directed.py +0 -0
  735. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_directed_envelope.py +0 -0
  736. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_directed_reports.py +0 -0
  737. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_directed_trust.py +0 -0
  738. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_directive_sources.py +0 -0
  739. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_directives.py +0 -0
  740. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_distill.py +0 -0
  741. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_doctor.py +0 -0
  742. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_document_memory_guard.py +0 -0
  743. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_duckduckgo_provider.py +0 -0
  744. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_embedding_generations.py +0 -0
  745. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_enrolled_sender_turns.py +0 -0
  746. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_ensure_channel_id.py +0 -0
  747. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_env_risk.py +0 -0
  748. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_event_broadcasts.py +0 -0
  749. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_event_bus_types.py +0 -0
  750. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_event_concerns.py +0 -0
  751. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_event_stream_reliability.py +0 -0
  752. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_execution_forecasts.py +0 -0
  753. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_execution_input_purpose.py +0 -0
  754. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_execution_registry.py +0 -0
  755. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_expectations.py +0 -0
  756. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_expectations_v2.py +0 -0
  757. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_experiments.py +0 -0
  758. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_external_cognition_events.py +0 -0
  759. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_external_event_concerns.py +0 -0
  760. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_facts_backfill.py +0 -0
  761. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_feedback.py +0 -0
  762. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_followup_plans.py +0 -0
  763. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_forecast_learning.py +0 -0
  764. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_function_routing.py +0 -0
  765. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_gap_generators.py +0 -0
  766. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_genesis_manifest.py +0 -0
  767. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_global_pause.py +0 -0
  768. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_goal_dispatch_availability.py +0 -0
  769. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_goal_inference_provenance.py +0 -0
  770. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_goal_reader_imports.py +0 -0
  771. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_governed_actions.py +0 -0
  772. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_governed_research_handoff.py +0 -0
  773. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_graduated_approvals.py +0 -0
  774. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_grant_envelope.py +0 -0
  775. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_graph_reindex_metadata.py +0 -0
  776. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_guard_audit.py +0 -0
  777. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_guard_chat_mode.py +0 -0
  778. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_guard_derive_context.py +0 -0
  779. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_guard_enforce_policy.py +0 -0
  780. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_export.py +0 -0
  781. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_history_import.py +0 -0
  782. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_native_tool_authority.py +0 -0
  783. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_plugin_contract.py +0 -0
  784. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_plugin_event_lifecycle.py +0 -0
  785. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_plugin_event_replay.py +0 -0
  786. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_plugin_guard_shadow.py +0 -0
  787. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_plugin_signals.py +0 -0
  788. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_plugin_turn_id.py +0 -0
  789. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_queue_stats_projection.py +0 -0
  790. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_setup.py +0 -0
  791. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_turn_outbox.py +0 -0
  792. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hermes_work_projection.py +0 -0
  793. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_host_input_provenance.py +0 -0
  794. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_hostworker_agreement.py +0 -0
  795. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_identity_continuity.py +0 -0
  796. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_identity_corrections.py +0 -0
  797. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_inference_context_gate.py +0 -0
  798. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_initiative_engine.py +0 -0
  799. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_initiative_evidence.py +0 -0
  800. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_initiative_executor.py +0 -0
  801. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_initiative_feedback.py +0 -0
  802. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_initiative_pipeline_v016.py +0 -0
  803. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_initiative_retry.py +0 -0
  804. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_initiative_store.py +0 -0
  805. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_input_source_lineage.py +0 -0
  806. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_insight_store.py +0 -0
  807. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_instance_service.py +0 -0
  808. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_instance_service_live.py +0 -0
  809. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_intelligence_components.py +0 -0
  810. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_intelligence_synthesis.py +0 -0
  811. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_introduction_initiatives.py +0 -0
  812. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_job_writeback.py +0 -0
  813. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_journal.py +0 -0
  814. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_legacy_fact_context.py +0 -0
  815. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_local_work_context.py +0 -0
  816. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_loop_stats_accuracy.py +0 -0
  817. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_mcp_config.py +0 -0
  818. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_mcp_server.py +0 -0
  819. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_memory_decay.py +0 -0
  820. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_memory_formation.py +0 -0
  821. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_memory_governance.py +0 -0
  822. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_memory_promotion.py +0 -0
  823. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_memory_prune.py +0 -0
  824. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_memory_read_hydration.py +0 -0
  825. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_memory_response_schemas.py +0 -0
  826. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_migrations.py +0 -0
  827. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_mining.py +0 -0
  828. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_model_qualification_cli.py +0 -0
  829. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_model_qualification_memory.py +0 -0
  830. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_model_qualification_runner.py +0 -0
  831. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_model_qualification_structured.py +0 -0
  832. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_accepted_local_work.py +0 -0
  833. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_history_references.py +0 -0
  834. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_input_carrier.py +0 -0
  835. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_outcome_judgments.py +0 -0
  836. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_request_erasure.py +0 -0
  837. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_review_recurrence.py +0 -0
  838. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_source_image_read.py +0 -0
  839. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_source_read.py +0 -0
  840. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_source_video_read.py +0 -0
  841. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_native_tool_observations.py +0 -0
  842. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_operator_deck_read_truth.py +0 -0
  843. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_ordinary_context_briefings.py +0 -0
  844. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_owner_preferences.py +0 -0
  845. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_p2_wirings.py +0 -0
  846. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_partial_work_rendering.py +0 -0
  847. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_patterns.py +0 -0
  848. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_pending_work_coverage.py +0 -0
  849. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_persona.py +0 -0
  850. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_persona_setup_result.py +0 -0
  851. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_phase_capability_check.py +0 -0
  852. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_preset_loop_coupling.py +0 -0
  853. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_project_event_outbox.py +0 -0
  854. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_project_result_reconciliation_phase.py +0 -0
  855. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_projects.py +0 -0
  856. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_prompt_evals.py +0 -0
  857. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_proposals.py +0 -0
  858. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_provenance_population.py +0 -0
  859. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_pseudo_agi_production_chain.py +0 -0
  860. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_queue_completed_filter.py +0 -0
  861. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_queue_contract.py +0 -0
  862. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_quiet_hours_and_reload.py +0 -0
  863. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_reachout_policy.py +0 -0
  864. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_recall_person_boost.py +0 -0
  865. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_recall_ranking.py +0 -0
  866. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_recall_rerank.py +0 -0
  867. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_recency.py +0 -0
  868. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_reflection_task_routing.py +0 -0
  869. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_rejection_loop.py +0 -0
  870. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_relationship_calendar_aggregators.py +0 -0
  871. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_relationship_score_refresh.py +0 -0
  872. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_relationship_signal_floor.py +0 -0
  873. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_relationships.py +0 -0
  874. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_reply_forecast_callback_order.py +0 -0
  875. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_reply_forecast_stops.py +0 -0
  876. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_reply_forecasts.py +0 -0
  877. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_repo_tools.py +0 -0
  878. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_reported_worker_status.py +0 -0
  879. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_request_capabilities.py +0 -0
  880. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_request_work_context.py +0 -0
  881. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_reranker_remote.py +0 -0
  882. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_research_orchestrator.py +0 -0
  883. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_resolve_messaging_handle.py +0 -0
  884. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_response_guard.py +0 -0
  885. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_response_guard_communication_policy.py +0 -0
  886. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_response_guard_endpoint.py +0 -0
  887. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_response_guard_surface_policy.py +0 -0
  888. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_router_tiers.py +0 -0
  889. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_runtime_model_observations.py +0 -0
  890. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_sandbox.py +0 -0
  891. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_scoped_api_authority.py +0 -0
  892. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_scoped_contact_resolution.py +0 -0
  893. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_secondary_review_contract.py +0 -0
  894. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_selected_autonomy.py +0 -0
  895. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_self_directed_thinker.py +0 -0
  896. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_self_initiatives.py +0 -0
  897. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_self_judgment_opt_in.py +0 -0
  898. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_self_judgment_premises.py +0 -0
  899. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_self_judgments.py +0 -0
  900. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_self_model.py +0 -0
  901. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_self_perspective.py +0 -0
  902. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_selfhood_benchmark.py +0 -0
  903. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_session_reports.py +0 -0
  904. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_shared_facts.py +0 -0
  905. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_shared_local_undertaking.py +0 -0
  906. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_sidecar.py +0 -0
  907. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_signals_attribution.py +0 -0
  908. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_situation_spine.py +0 -0
  909. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_skill_approval.py +0 -0
  910. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_skill_attribution.py +0 -0
  911. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_skill_sandbox.py +0 -0
  912. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_skill_synthesis.py +0 -0
  913. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_skill_synthesis_wiring.py +0 -0
  914. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_skills_memory.py +0 -0
  915. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_social_context_flow.py +0 -0
  916. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_social_transport.py +0 -0
  917. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_annotation_claim_survivors.py +0 -0
  918. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_appraisals.py +0 -0
  919. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_attribution.py +0 -0
  920. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_audio.py +0 -0
  921. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_claim_budget.py +0 -0
  922. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_claim_diagnostics.py +0 -0
  923. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_claim_media_eligibility.py +0 -0
  924. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_claim_review.py +0 -0
  925. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_claim_subject_basis.py +0 -0
  926. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_document_read.py +0 -0
  927. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_documents.py +0 -0
  928. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_episode_admission.py +0 -0
  929. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_episode_memory.py +0 -0
  930. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_episode_revisions.py +0 -0
  931. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_image_read.py +0 -0
  932. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_media.py +0 -0
  933. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_memory_backup.py +0 -0
  934. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_time_query.py +0 -0
  935. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_source_video.py +0 -0
  936. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_sqlite_connection_ownership.py +0 -0
  937. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_supervised_rung.py +0 -0
  938. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_surprise.py +0 -0
  939. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_sweep_fixes.py +0 -0
  940. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_synthesis.py +0 -0
  941. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_telemetry_staleness.py +0 -0
  942. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_temporal.py +0 -0
  943. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_temporal_followups.py +0 -0
  944. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_temporal_index.py +0 -0
  945. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_test_environment_isolation.py +0 -0
  946. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_thinking_phase.py +0 -0
  947. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_thought_function_routing.py +0 -0
  948. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tick_phase_budget.py +0 -0
  949. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tier_endpoints.py +0 -0
  950. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_timeline.py +0 -0
  951. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_approvals.py +0 -0
  952. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_asymmetry.py +0 -0
  953. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_context.py +0 -0
  954. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_cross_gate.py +0 -0
  955. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_eligibility.py +0 -0
  956. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_epistemic_guard.py +0 -0
  957. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_exposure.py +0 -0
  958. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_kill_switch.py +0 -0
  959. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_level_coherence.py +0 -0
  960. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_leveled.py +0 -0
  961. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_levels.py +0 -0
  962. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_source_corrections.py +0 -0
  963. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_store.py +0 -0
  964. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_taint.py +0 -0
  965. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom2_wiring.py +0 -0
  966. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_event_lineage.py +0 -0
  967. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_extractor.py +0 -0
  968. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_p8_arcs.py +0 -0
  969. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_p8_boundary_corpus.py +0 -0
  970. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_p8_fact_adapters.py +0 -0
  971. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_p8_outbound_integration.py +0 -0
  972. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_p8_recipient_audit.py +0 -0
  973. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_p8_recipient_simulator.py +0 -0
  974. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_p8_visibility.py +0 -0
  975. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_p8_visibility_store.py +0 -0
  976. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tom_source_lineage.py +0 -0
  977. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tool_handlers_graph.py +0 -0
  978. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tool_observation_reader.py +0 -0
  979. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tool_provenance.py +0 -0
  980. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_tool_surface.py +0 -0
  981. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_toolsmith.py +0 -0
  982. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_transport_ingress.py +0 -0
  983. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_transport_ingress_api.py +0 -0
  984. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_trust_configure.py +0 -0
  985. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_trust_scopes.py +0 -0
  986. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_trust_scopes_p2.py +0 -0
  987. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_turn_idempotency_ledger.py +0 -0
  988. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_turn_idempotency_v2.py +0 -0
  989. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_turn_ner_entities.py +0 -0
  990. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_turn_source_erasure.py +0 -0
  991. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_turn_source_evidence.py +0 -0
  992. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_turn_survivor_delivery.py +0 -0
  993. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_validation_sweep_fixes.py +0 -0
  994. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_vector_vacuum.py +0 -0
  995. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_wizard_autonomy.py +0 -0
  996. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_work_ancestry_projection.py +0 -0
  997. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_work_control_production_blockers.py +0 -0
  998. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_work_control_v1.py +0 -0
  999. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_work_orders.py +0 -0
  1000. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_work_read_surface_authority.py +0 -0
  1001. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_work_source_coverage.py +0 -0
  1002. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_worker_handler_boundaries.py +0 -0
  1003. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_worker_heartbeat_truth.py +0 -0
  1004. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_worker_http_authority.py +0 -0
  1005. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_worker_integration.py +0 -0
  1006. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_worker_lifecycle_durability.py +0 -0
  1007. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_workers_governor.py +0 -0
  1008. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_workspace.py +0 -0
  1009. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_world_context_query.py +0 -0
  1010. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_world_llm_extract.py +0 -0
  1011. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_world_quality.py +0 -0
  1012. {apsimo-1.4.3 → apsimo-1.4.5}/tests/test_world_supervised.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apsimo
3
- Version: 1.4.3
3
+ Version: 1.4.5
4
4
  Summary: Persistent identity, memory and autonomy for AI agents
5
5
  License-Expression: MIT
6
6
  Requires-Python: >=3.11
@@ -28,15 +28,13 @@ Requires-Dist: pandas>=2.0; extra == "vectors"
28
28
  Requires-Dist: pyarrow>=15.0; extra == "vectors"
29
29
  Requires-Dist: lancedb>=0.10; extra == "vectors"
30
30
  Provides-Extra: hermes
31
- Requires-Dist: apsimo-hermes<2,>=1.4.3; extra == "hermes"
31
+ Requires-Dist: apsimo-hermes<2,>=1.4.5; extra == "hermes"
32
32
  Provides-Extra: mcp
33
33
  Requires-Dist: mcp[cli]<2,>=1.0; extra == "mcp"
34
34
  Provides-Extra: lancedb
35
35
  Requires-Dist: lancedb>=0.6; extra == "lancedb"
36
36
  Requires-Dist: pyarrow>=14.0; extra == "lancedb"
37
37
  Requires-Dist: pandas>=2.0; extra == "lancedb"
38
- Provides-Extra: postgres
39
- Requires-Dist: asyncpg>=0.29; extra == "postgres"
40
38
  Provides-Extra: extraction
41
39
  Requires-Dist: PyMuPDF>=1.24; extra == "extraction"
42
40
  Requires-Dist: beautifulsoup4>=4.12; extra == "extraction"
@@ -485,8 +485,6 @@ def supported_capabilities() -> List[str]:
485
485
  if _world_store is not None:
486
486
  caps.append("context")
487
487
  caps.append("world_model_api")
488
- if _world_store is not None and hasattr(_world_store, '_config') and _world_store._config.backend == "neo4j":
489
- caps.append("neo4j_backend")
490
488
  caps.append("event_journal")
491
489
  if _external_event_intake is not None:
492
490
  caps.append("external_cognition_events")
@@ -820,8 +818,6 @@ async def health() -> HostHealthResponse:
820
818
  if _world_store is not None and hasattr(_world_store, '_backend') and _world_store._backend is not None:
821
819
  backend_type = type(_world_store._backend).__name__
822
820
  notes["world_model_backend"] = f"{backend_type} connected"
823
- if _world_store is not None and hasattr(_world_store, '_config') and _world_store._config.backend == "neo4j":
824
- notes["neo4j"] = "Neo4j backend selected"
825
821
 
826
822
  health_status = "ok"
827
823
  if model_mismatch or embed_degraded or memory_backend_down:
@@ -2520,7 +2516,7 @@ async def context_assemble(
2520
2516
 
2521
2517
  # --- Memory: authorized candidates, one selection and one budget ---
2522
2518
  if _canonical_person_allowed and query_text:
2523
- from apsimo.intelligence.graph.recall import source_candidates
2519
+ from apsimo.memory.recall import source_candidates
2524
2520
  beliefs, quotations, source_hits, semantic_media = [], [], [], []
2525
2521
  source_ledger = None
2526
2522
  if not _canonical_only and _graph is not None:
@@ -2585,7 +2581,7 @@ async def context_assemble(
2585
2581
  contact_tz, body.context.timezone or ("UTC" if _canonical_only else None)))
2586
2582
  if source_ledger is not None:
2587
2583
  from apsimo.beliefs.source_projection import SourceClaimProjection
2588
- from apsimo.intelligence.graph.selection import current_work_query
2584
+ from apsimo.memory.selection import current_work_query
2589
2585
  beliefs, quotations = SourceClaimProjection(source_ledger).prepare_context(
2590
2586
  beliefs, source_hits, contact_id=body.context.contact_id,
2591
2587
  session_id=body.context.session_id, time_query=time_query,
@@ -2602,7 +2598,7 @@ async def context_assemble(
2602
2598
  # The projected view preserves envelope and current-source
2603
2599
  # checks. A fact needs query overlap before any fail-open
2604
2600
  # reranker path; confidence alone never makes it relevant.
2605
- from apsimo.intelligence.graph.recall import contact_fact_candidates
2601
+ from apsimo.memory.recall import contact_fact_candidates
2606
2602
  fact_result = _tom_context_facts.list_facts(
2607
2603
  contact_id=body.context.contact_id, limit=512)
2608
2604
  facts = fact_result if isinstance(fact_result, list) else fact_result.get('facts', [])
@@ -2627,7 +2623,7 @@ async def context_assemble(
2627
2623
  from apsimo.turns.source_annotations import current_candidates
2628
2624
  retained = current_candidates(source_ledger, selected, **annotation_scope)
2629
2625
  if len(retained) != len(selected):
2630
- from apsimo.intelligence.graph.recall import pack_memory_context
2626
+ from apsimo.memory.recall import pack_memory_context
2631
2627
  selected, body_text = pack_memory_context(retained, limit=5,
2632
2628
  max_chars=max(0, min(max_chars, 24000)))
2633
2629
  if body_text:
@@ -11288,7 +11284,7 @@ async def enriched_context(
11288
11284
  and (_p8_runtime is None or _enriched_p8_viewer is not None):
11289
11285
  async def _shared_facts():
11290
11286
  try:
11291
- from apsimo.intelligence.graph.recall import contact_fact_candidates, pack_memory_context
11287
+ from apsimo.memory.recall import contact_fact_candidates, pack_memory_context
11292
11288
  from apsimo.turns.source_annotations import expand, current_candidates
11293
11289
  store = _p8_runtime.facts_store if _p8_runtime is not None else _facts_store
11294
11290
  view = (_p8_runtime.projected_facts_view(_enriched_p8_viewer,
@@ -11729,8 +11725,8 @@ def _memory_context_selector():
11729
11725
  """Keep one selector per active reranker, also usable without graph storage."""
11730
11726
  global _context_recall_selector
11731
11727
  if _context_recall_selector is None or _context_recall_selector[0] is not _reranker:
11732
- from apsimo.intelligence.graph.selection import RecallSelector
11733
- from apsimo.intelligence.graph.recall import provider_calibration_metadata
11728
+ from apsimo.memory.selection import RecallSelector
11729
+ from apsimo.memory.recall import provider_calibration_metadata
11734
11730
  provider = _reranker
11735
11731
  selector = RecallSelector(
11736
11732
  provider.rerank if provider is not None else None,
@@ -12032,20 +12028,6 @@ async def executor_status() -> dict:
12032
12028
  }
12033
12029
 
12034
12030
 
12035
- # ---------------------------------------------------------------------------
12036
- # Self-Knowledge Seeding
12037
- # ---------------------------------------------------------------------------
12038
-
12039
-
12040
- class SeedResponse(BaseModel):
12041
- memories: int = 0
12042
- entities: int = 0
12043
- skills: int = 0
12044
- insights: int = 0
12045
- errors: list[str] = []
12046
- skipped: list[str] = [] # Machine-readable dispositions, including retirement
12047
-
12048
-
12049
12031
  # ---------------------------------------------------------------------------
12050
12032
  # Commitment Tracking
12051
12033
  # ---------------------------------------------------------------------------
@@ -13043,14 +13025,6 @@ async def extract_tom(
13043
13025
  )
13044
13026
 
13045
13027
 
13046
- @router.post("/seed", response_model=SeedResponse)
13047
- async def seed_self_knowledge_endpoint(force: bool = Query(False, description="Compatibility flag; built-in seeding remains retired")) -> SeedResponse:
13048
- """Return the retired built-in seeding disposition without opening stores."""
13049
- from apsimo.seed import seed_self_knowledge
13050
-
13051
- return SeedResponse(**await seed_self_knowledge(force=force))
13052
-
13053
-
13054
13028
  # ============================================================================
13055
13029
  # World Model — Entity CRUD
13056
13030
  # ============================================================================
@@ -13062,7 +13036,7 @@ async def create_world_entity(body: WorldEntityCreateRequest) -> WorldEntityDeta
13062
13036
  raise HTTPException(status_code=501, detail="World model not initialized")
13063
13037
  try:
13064
13038
  from apsimo.world_model.entities import BaseEntity, ENTITY_CLASS_MAP
13065
- from apsimo.world_model.neo4j.backend import _generate_id
13039
+ from apsimo.world_model.sqlite.backend import _generate_id
13066
13040
  cls = ENTITY_CLASS_MAP.get(body.entity_type, BaseEntity)
13067
13041
  import dataclasses
13068
13042
  valid = {f.name for f in dataclasses.fields(cls)}
@@ -13155,7 +13129,7 @@ async def create_world_relationship(body: WorldRelationshipCreateRequest) -> Wor
13155
13129
  raise HTTPException(status_code=501, detail="World model not initialized")
13156
13130
  try:
13157
13131
  from apsimo.world_model.relationships import WorldRelationship
13158
- from apsimo.world_model.neo4j.backend import _generate_id
13132
+ from apsimo.world_model.sqlite.backend import _generate_id
13159
13133
  now = datetime.now(timezone.utc).isoformat()
13160
13134
  rel = WorldRelationship(
13161
13135
  id=_generate_id("wr"),
@@ -470,7 +470,7 @@ class SourceClaimProjection:
470
470
  Unknown, corrected, changed, multiple-input and cross-scope provenance
471
471
  remains recallable. This transient hint never changes stored history.
472
472
  """
473
- from apsimo.intelligence.graph.selection import current_work_query
473
+ from apsimo.memory.selection import current_work_query
474
474
  from apsimo.turns.idempotency import canonical_turn_digest, source_message_hash
475
475
  if message.get('role') != 'assistant' or source['scope'] != 'person':
476
476
  return False
@@ -521,7 +521,7 @@ class SourceClaimProjection:
521
521
  """
522
522
  from apsimo.turns.idempotency import source_message_hash
523
523
  from apsimo.turns.audio import source_text
524
- from apsimo.intelligence.graph.recall import source_candidates
524
+ from apsimo.memory.recall import source_candidates
525
525
  turn_ids = list(dict.fromkeys(
526
526
  [row["turn_id"] for row in source_hits] + [str(row["source_uri"])[5:] for row in beliefs
527
527
  if str(row.get("source_uri") or "").startswith("turn:")]))
@@ -43,6 +43,7 @@ def main() -> None:
43
43
  init_p.add_argument("--quiet-hours", help="Optional local follow-up quiet window, HH:MM-HH:MM; grants no outreach permission")
44
44
  init_p.add_argument("--whatsapp-read-receipts", choices=["on", "off"], help="Set this Hermes profile's read receipts for accepted WhatsApp messages; omission preserves its setting")
45
45
  init_p.add_argument("--preferences-only", action="store_true", help="Update only an existing Hermes config preference; skip instance and model setup")
46
+ init_p.add_argument("--skills-only", action="store_true", help="Install or explicitly refresh owned bundled skills in one Hermes profile; no instance or model setup")
46
47
  init_p.add_argument("--preview", action="store_true", help="With --preferences-only, show changed preference paths without writing")
47
48
  init_p.add_argument("--model-url", help="One local OpenAI-compatible API root")
48
49
  init_p.add_argument("--model", help="Model identifier at that endpoint")
@@ -105,11 +106,6 @@ def main() -> None:
105
106
  # --- generate-types ---
106
107
  sub.add_parser("generate-types", help="Export OpenAPI spec (for TypeScript generation)")
107
108
 
108
- # --- seed ---
109
- seed_p = sub.add_parser("seed", help="Show the retired built-in seeding disposition")
110
- seed_p.add_argument("--verify", action="store_true", help="Compatibility flag; show the retirement disposition")
111
- seed_p.add_argument("--force", action="store_true", help="Compatibility flag; built-in seeding remains retired")
112
-
113
109
  # --- backfill ---
114
110
  backfill_p = sub.add_parser("backfill", help="Re-embed all vectors with current model")
115
111
  backfill_p.add_argument("--collection", default=None, help="Specific collection to backfill (default: all)")
@@ -318,7 +314,7 @@ def main() -> None:
318
314
  code = run_init(root_dir=args.dir, args=args)
319
315
  if code != 0:
320
316
  sys.exit(code)
321
- if args.preferences_only:
317
+ if args.preferences_only or args.skills_only:
322
318
  return
323
319
 
324
320
  # Initialize Apsimo identity if not already done
@@ -441,10 +437,6 @@ def main() -> None:
441
437
  p = len(spec.get("paths", {}))
442
438
  print(f"✅ OpenAPI spec written to {out} ({n} schemas, {p} paths)")
443
439
 
444
- elif args.command == "seed":
445
- from apsimo.seed import seed_self_knowledge_summary
446
- print(seed_self_knowledge_summary())
447
-
448
440
  elif args.command == "backfill":
449
441
  _load_dotenv()
450
442
  import httpx
@@ -2398,8 +2390,8 @@ def _cmd_validate(args) -> None:
2398
2390
  if llm_ok and len(found) >= 2:
2399
2391
  print(" ✅ Full sidecar pipeline working — context assembly + LLM router live")
2400
2392
  elif llm_ok:
2401
- print(" ⚠️ LLM live but cognitive context sections are thin — seed data "
2402
- "or run a few turns, then re-validate")
2393
+ print(" ⚠️ LLM live but cognitive context sections are thin — run a few "
2394
+ "ordinary turns and check their retained evidence")
2403
2395
  else:
2404
2396
  print(" ⚪ LLM not verified — context pipeline validated, reasoning not")
2405
2397
 
@@ -1260,7 +1260,7 @@ class ColonyGraph:
1260
1260
  memories.append(mem)
1261
1261
 
1262
1262
  if hybrid:
1263
- from .recall import fuse_candidates
1263
+ from apsimo.memory.recall import fuse_candidates
1264
1264
  candidate_limit = min(max(limit * 5, limit), max(100, limit))
1265
1265
  lexical = await self._recall_lexical(
1266
1266
  query, candidate_limit, min_strength, min_confidence,
@@ -1394,7 +1394,7 @@ class ColonyGraph:
1394
1394
  content reaches Python/reranking. A missing/populating index degrades
1395
1395
  to the existing vector/keyword path.
1396
1396
  """
1397
- from .recall import FULLTEXT_INDEX, lexical_query
1397
+ from .queries import FULLTEXT_INDEX, lexical_query
1398
1398
  search_text = lexical_query(query)
1399
1399
  if not search_text:
1400
1400
  return []
@@ -1468,7 +1468,7 @@ class ColonyGraph:
1468
1468
  self, query, memories, limit, *, strength_ranking=False,
1469
1469
  ):
1470
1470
  # The same selector is used for mixed source/belief turn context.
1471
- from .selection import RecallSelector
1471
+ from apsimo.memory.selection import RecallSelector
1472
1472
  selector = getattr(self, "_recall_selector", None)
1473
1473
  if selector is None:
1474
1474
  selector = self._recall_selector = RecallSelector(
@@ -7,6 +7,16 @@ and makes it easy to test / review / optimise in one place.
7
7
  Parameters are referenced with ``$param`` syntax for Neo4j driver binding.
8
8
  """
9
9
 
10
+ FULLTEXT_INDEX = "memory_content_fulltext"
11
+
12
+
13
+ def lexical_query(text: str, max_terms: int = 16) -> str:
14
+ """Literal words/identifiers, not caller-supplied Lucene operators."""
15
+ from apsimo.memory.recall import lexical_terms
16
+
17
+ return " OR ".join(f'"{word}"' for word in lexical_terms(text, max_terms))
18
+
19
+
10
20
  # ──────────────────────────────────────────────────────────────────────
11
21
  # Memory operations
12
22
  # ──────────────────────────────────────────────────────────────────────
@@ -0,0 +1 @@
1
+ """Shared evidence selection and rendering for Apsimo memory."""
@@ -1,4 +1,4 @@
1
- """Small retrieval helpers shared by the existing graph/vector recall path."""
1
+ """Shared source candidates, rank fusion and bounded memory rendering."""
2
2
  from __future__ import annotations
3
3
 
4
4
  import re
@@ -7,7 +7,6 @@ import json
7
7
  import os
8
8
  from typing import Any
9
9
 
10
- FULLTEXT_INDEX = "memory_content_fulltext"
11
10
  _WORDS = re.compile(r"[^\W_]+(?:[-.][^\W_]+)*", re.UNICODE)
12
11
  _STOP = frozenset("a an and are as at be by do does for from how i in is it me of on or that the this to was what when where which who with you".split())
13
12
 
@@ -209,11 +208,6 @@ def lexical_terms(text: str, max_terms: int = 16) -> list[str]:
209
208
  return list(words)[:max_terms]
210
209
 
211
210
 
212
- def lexical_query(text: str, max_terms: int = 16) -> str:
213
- """Literal words/identifiers, not caller-supplied Lucene operators."""
214
- return " OR ".join(f'"{word}"' for word in lexical_terms(text, max_terms))
215
-
216
-
217
211
  def contact_fact_candidates(query: str, facts: list[dict[str, Any]], *, limit: int = 25) -> list[dict[str, Any]]:
218
212
  """Lexical candidates from an authorized, current source-linked fact view.
219
213
 
@@ -13,7 +13,7 @@ from .records import CaseSpec
13
13
 
14
14
  def _recollect(projection, query, *, contact, session, now, max_chars):
15
15
  from apsimo.beliefs.source_time import interpret_time_query
16
- from apsimo.intelligence.graph.recall import pack_memory_context
16
+ from apsimo.memory.recall import pack_memory_context
17
17
  from apsimo.turns.source_annotations import expand, current_candidates
18
18
  ledger = projection.ledger
19
19
  hits = ledger.search_sources(query, contact_id=contact, session_id=session, limit=10)
@@ -1861,7 +1861,7 @@ async def lifespan(app: FastAPI):
1861
1861
  # set_embed_fn wiring above). Registration alone changes
1862
1862
  # nothing: use is gated by COLONY_RECALL_RERANK (default off).
1863
1863
  if graph is not None and hasattr(graph, "set_rerank_fn"):
1864
- from apsimo.intelligence.graph.recall import provider_calibration_metadata
1864
+ from apsimo.memory.recall import provider_calibration_metadata
1865
1865
  def recall_calibration_metadata():
1866
1866
  return provider_calibration_metadata(reranker_provider)
1867
1867
  graph.set_rerank_fn(
@@ -2592,11 +2592,10 @@ async def lifespan(app: FastAPI):
2592
2592
  try:
2593
2593
  from apsimo.world_model.store import WorldModelStore
2594
2594
  from apsimo.world_model.config import WorldModelConfig
2595
- _wm_backend = os.environ.get("WORLD_MODEL_BACKEND", "sqlite")
2596
- world_store = WorldModelStore(WorldModelConfig(backend=_wm_backend))
2595
+ world_store = WorldModelStore(WorldModelConfig())
2597
2596
  await world_store.connect()
2598
2597
  set_world_store(world_store)
2599
- logger.info("WorldModelStore initialized and connected (backend=%s)", _wm_backend)
2598
+ logger.info("WorldModelStore connected to SQLite")
2600
2599
 
2601
2600
  # World-model population from conversation (shadow-first). Boundary-checked
2602
2601
  # via the directive manager. Mode from COLONY_WORLD_POPULATE_MODE
@@ -2687,13 +2686,8 @@ async def lifespan(app: FastAPI):
2687
2686
  logger.warning("Extraction pipeline init skipped: %s", eexc)
2688
2687
  except Exception as exc:
2689
2688
  logger.warning("WorldModelStore init failed: %s", exc)
2690
- # Try without connect() — some operations work without it
2691
- try:
2692
- world_store = WorldModelStore(WorldModelConfig(backend=_wm_backend))
2693
- set_world_store(world_store)
2694
- logger.info("WorldModelStore initialized (without connect)")
2695
- except Exception as exc2:
2696
- logger.error("WorldModelStore fallback init also failed: %s", exc2)
2689
+ world_store = None
2690
+ set_world_store(None)
2697
2691
 
2698
2692
  # --- 11. Cognition (CognitionPipeline) ---
2699
2693
  cognition_pipeline = None
@@ -9,7 +9,6 @@ Guides the user through first-time configuration:
9
9
  6. Write .env
10
10
  7. Database setup
11
11
  8. Autonomy & approvals (owner contact, approval policy, gates, home channel)
12
- 9. Self-knowledge seeding
13
12
  10. Start sidecar + verify (10e: schedule agent workers via crontab)
14
13
  11. Summary
15
14
  12. Health check (colony doctor)
@@ -1685,14 +1684,14 @@ def run_autonomy_step(
1685
1684
  #: (for the `python -m` fallback) and cron schedule.
1686
1685
  WORKER_SPECS = (
1687
1686
  {
1688
- "name": "colony-queue-worker",
1687
+ "name": "apsimo-queue-worker",
1689
1688
  "module": "apsimo.workers.queue_worker",
1690
1689
  "schedule": "*/5 * * * *",
1691
1690
  "blurb": "claims approved agent_action jobs every 5 minutes and hands "
1692
1691
  "them to your agent (without it, auto-approved jobs sit QUEUED forever)",
1693
1692
  },
1694
1693
  {
1695
- "name": "colony-skills-sync",
1694
+ "name": "apsimo-skills-sync",
1696
1695
  "module": "apsimo.workers.skills_sync",
1697
1696
  "schedule": "0 9 * * *",
1698
1697
  "blurb": "reports your agent's installed skill index to Apsimo once a "
@@ -1947,7 +1946,7 @@ def run_init(root_dir: str | None = None, args=None) -> int:
1947
1946
  root_dir: Root directory for config files
1948
1947
  args: Parsed argparse Namespace for non-interactive mode
1949
1948
  """
1950
- if (getattr(args, 'owner_handle', None) or getattr(args, 'preferences_only', False) or getattr(args, 'preview', False)
1949
+ if (getattr(args, 'owner_handle', None) or getattr(args, 'preferences_only', False) or getattr(args, 'skills_only', False) or getattr(args, 'preview', False)
1951
1950
  or getattr(args, 'whatsapp_read_receipts', None) is not None):
1952
1951
  if (getattr(args, 'no_harness', False) or getattr(args, 'mcp_harnesses', None)
1953
1952
  or getattr(args, 'host_framework', None) not in (None, 'hermes')):
@@ -2378,7 +2377,6 @@ def run_init(root_dir: str | None = None, args=None) -> int:
2378
2377
  "NEO4J_USER": existing.get("NEO4J_USER", "neo4j"),
2379
2378
  "NEO4J_PASSWORD": neo4j_password or existing.get("NEO4J_PASSWORD", ""),
2380
2379
  "NEO4J_DATABASE": existing.get("NEO4J_DATABASE", "neo4j"),
2381
- "WORLD_MODEL_BACKEND": existing.get("WORLD_MODEL_BACKEND", "neo4j" if neo4j_password else "sqlite"),
2382
2380
  "COLONY_API_KEY": existing.get("COLONY_API_KEY", secrets.token_urlsafe(32)),
2383
2381
  "COLONY_CONTACTS_DB": existing.get("COLONY_CONTACTS_DB", str(colony_home / "data" / "contacts.db")),
2384
2382
  "COLONY_EMBED_PROVIDER": embed_provider,
@@ -282,7 +282,7 @@ def _select_home(args, ask):
282
282
 
283
283
 
284
284
  def _adapter_resources(wheel=None):
285
- packages = ('apsimo_hermes/', 'apsimo_memory/', 'colony_hermes/', 'colony_memory/')
285
+ packages = ('apsimo_hermes/', 'apsimo_memory/')
286
286
  if wheel:
287
287
  with zipfile.ZipFile(wheel) as archive:
288
288
  resources = {name: archive.read(name) for name in archive.namelist()
@@ -344,13 +344,6 @@ import hashlib, importlib.metadata, importlib.util, json, sys
344
344
  from pathlib import Path
345
345
  expected = json.load(sys.stdin)
346
346
  entries = importlib.metadata.entry_points()
347
- aliases = []
348
- for group, name, target in [('hermes_agent.plugins', 'colony', 'apsimo_hermes'),
349
- ('hermes_agent.memory_providers', 'colony-memory', 'apsimo_memory')]:
350
- matches = [ep for ep in entries.select(group=group) if ep.name == name]
351
- if len(matches) > 1 or any(ep.value != target for ep in matches):
352
- raise ValueError('Conflicting legacy adapter distribution or target')
353
- aliases.extend(matches)
354
347
  selected = []
355
348
  for group, name, module in [('hermes_agent.plugins', 'apsimo', 'apsimo_hermes'),
356
349
  ('hermes_agent.memory_providers', 'apsimo-memory', 'apsimo_memory')]:
@@ -358,14 +351,14 @@ for group, name, module in [('hermes_agent.plugins', 'apsimo', 'apsimo_hermes'),
358
351
  if len(matches) > 1 or (matches and matches[0].value != module):
359
352
  raise ValueError('Conflicting Apsimo entry point')
360
353
  selected.append(matches[0] if matches else None)
361
- if not any(selected) and not aliases:
354
+ if not any(selected):
362
355
  print(json.dumps({'mode': 'private-directory'}))
363
356
  sys.exit(0)
364
357
  if not all(selected):
365
358
  raise ValueError('Both canonical native Apsimo entry points are required')
366
- identities = {(ep.dist.metadata['Name'].lower().replace('_', '-'), ep.dist.version) for ep in [*selected, *aliases]}
359
+ identities = {(ep.dist.metadata['Name'].lower().replace('_', '-'), ep.dist.version) for ep in selected}
367
360
  if len(identities) != 1:
368
- raise ValueError('Canonical and legacy adapter registrations come from different distributions')
361
+ raise ValueError('Canonical adapter registrations come from different distributions')
369
362
  sources, external_modules, versions = {}, {}, set()
370
363
  for ep in selected:
371
364
  module = ep.value
@@ -473,14 +466,14 @@ def refresh_adapter(state, args):
473
466
  raise ValueError('Expected one managed adapter directory; reconcile duplicate or missing bindings')
474
467
  directory = directories[0]
475
468
  forwarder = directory/'__init__.py'
476
- modules = ('apsimo_memory','colony_memory') if memory else ('apsimo_hermes','colony_hermes')
469
+ modules = ('apsimo_memory',) if memory else ('apsimo_hermes',)
477
470
  matches = [module for module in modules if not forwarder.is_symlink()
478
471
  and forwarder.read_text() == _forwarder(adapter, module, memory)]
479
472
  if len(matches) != 1:
480
473
  raise ValueError('The selected profile adapter forwarder changed; reconcile it before refreshing')
481
474
  module = matches[0]
482
475
  if module+'/__init__.py' not in resources:
483
- raise ValueError('New adapter lacks the compatibility module required by this forwarder')
476
+ raise ValueError('New adapter lacks the canonical module required by this forwarder')
484
477
  target = directory/'plugin.yaml'
485
478
  if target.is_symlink() or target.read_bytes() != old_resources[module+'/plugin.yaml']:
486
479
  raise ValueError('The selected profile adapter manifest changed; reconcile it before refreshing')
@@ -576,14 +569,25 @@ def run(root_dir=None, args=None):
576
569
  try:
577
570
  receipt_choice = getattr(args, 'whatsapp_read_receipts', None)
578
571
  preferences_only = bool(getattr(args, 'preferences_only', False))
572
+ skills_only = bool(getattr(args, 'skills_only', False))
579
573
  preview = bool(getattr(args, 'preview', False))
580
- if preferences_only:
574
+ if preferences_only or skills_only:
581
575
  home = setup._resolve_hermes_home(getattr(args, 'hermes_home', None))
582
576
  selected_python = None
583
577
  else:
584
578
  home, selected_python = _select_home(args, ask)
585
579
  if preview and not preferences_only:
586
580
  raise ValueError('--preview requires --preferences-only')
581
+ if skills_only:
582
+ if root_dir or receipt_choice or any(getattr(args, name, None) for name in (
583
+ 'preferences_only', 'preview', 'start', 'refresh_adapter', 'replace_memory_provider',
584
+ 'local_work', 'native_goals', 'native_reviews', 'model_url', 'model', 'agent_name',
585
+ 'agent_values', 'timezone', 'quiet_hours', 'contact_name', 'owner_handle', 'encrypt',
586
+ 'passphrase', 'claim_genesis', 'mcp_harnesses', 'no_harness')):
587
+ raise ValueError('--skills-only cannot be combined with instance or preference changes')
588
+ from .setup_skills import prepare, install
589
+ install(prepare(home, _adapter_resources(getattr(args, 'adapter_wheel', None)), refresh=True))
590
+ return 0
587
591
  if preferences_only:
588
592
  if receipt_choice is None:
589
593
  raise ValueError('--preferences-only requires --whatsapp-read-receipts on or off')
@@ -680,6 +684,8 @@ def run(root_dir=None, args=None):
680
684
  resources = _adapter_resources(getattr(args, 'adapter_wheel', None))
681
685
  _preflight_outbox(home, resources)
682
686
  binding = _adapter_binding(python, resources)
687
+ from .setup_skills import prepare as prepare_skills, install as install_skills
688
+ skill_updates = prepare_skills(home, resources)
683
689
  owner_name = ask('Your name', getattr(args, 'contact_name', None) or os.environ.get('USER', 'Owner'), True)
684
690
  owner_handles, owner_platforms = _owner_handles(args, ask, noninteractive)
685
691
  agent_name = ask('Agent name', getattr(args, 'agent_name', None) or 'Assistant', True)
@@ -771,7 +777,7 @@ def run(root_dir=None, args=None):
771
777
  'COLONY_PERSONA_NAME': agent_name, 'COLONY_CONTACTS_DB': str(state/'contacts.db'),
772
778
  'COLONY_API_KEYRING_PATH': str(state/'api-keyring.json'), 'COLONY_API_KEY': '',
773
779
  'COLONY_CLIENT_API_KEY': key, 'COLONY_GRAPH_ENABLED': 'false',
774
- 'COLONY_EMBED_PROVIDER': 'skip', 'WORLD_MODEL_BACKEND': 'sqlite',
780
+ 'COLONY_EMBED_PROVIDER': 'skip',
775
781
  'COLONY_AUTONOMY_PRESET': 'passive', 'COLONY_EMBEDDED_WORKER_ENABLED': 'false',
776
782
  'COLONY_SOURCE_CLAIMS': 'on'}
777
783
  values.update({
@@ -865,6 +871,7 @@ def run(root_dir=None, args=None):
865
871
  guiding = ('Guiding values: ' + ', '.join(agent_preferences['values']) + '.\n'
866
872
  if agent_preferences['values'] else '')
867
873
  create(home/'SOUL.md', f'# {agent_name}\n\nYou are {agent_name}, the personal assistant of {owner_name}.\n{guiding}Use retained evidence with its provenance; ask about uncertainty.\nYour opinions are revisable interpretations; distinguish them from facts and permissions.\nOwner consent is required for consequential external actions; an existing task-scoped consent covers only its stated scope.\n')
874
+ install_skills(skill_updates)
868
875
  except Exception:
869
876
  # Undo only this installation's exact bytes. Concurrent edits stay
870
877
  # intact, with original files still retained in the private state.
@@ -0,0 +1,90 @@
1
+ """Install owned bundled skills into one native Hermes catalog."""
2
+ from __future__ import annotations
3
+
4
+ import hashlib
5
+ import json
6
+ from pathlib import Path
7
+ import re
8
+
9
+
10
+ SKILL_NAME = 'apsimo-deep-research'
11
+ BUNDLE_PREFIX = 'apsimo_hermes/bundled_skills/'
12
+ SKILL_RESOURCE = f'{BUNDLE_PREFIX}{SKILL_NAME}/SKILL.md'
13
+
14
+
15
+ def _read_owned_path(path):
16
+ for parent in (path, *path.parents):
17
+ if parent.is_symlink():
18
+ raise ValueError('Bundled skill destination is symlinked; existing files were preserved')
19
+ return path.read_bytes() if path.exists() else None
20
+
21
+
22
+ def prepare(home, resources, *, refresh=False):
23
+ """Validate all packaged skill preimages before any setup writes/probe."""
24
+ updates = []
25
+ for path, content in sorted(resources.items()):
26
+ if not path.startswith(BUNDLE_PREFIX) or not path.endswith('/SKILL.md'):
27
+ continue
28
+ name = path[len(BUNDLE_PREFIX):-len('/SKILL.md')]
29
+ if not re.fullmatch(r'apsimo-[a-z0-9-]{1,56}', name):
30
+ raise ValueError('Bundled skill must have a canonical apsimo- name')
31
+ updates.extend(_prepare_skill(home, name, content, refresh=refresh))
32
+ if not updates:
33
+ raise ValueError('Selected adapter has no bundled skills')
34
+ return updates
35
+
36
+
37
+ def _prepare_skill(home, name, content, *, refresh):
38
+ if not content:
39
+ raise ValueError('Selected adapter has an empty bundled skill')
40
+ directory = Path(home)/'skills'/name
41
+ skill, marker = directory/'SKILL.md', directory/'.apsimo-owned.json'
42
+ previous, recorded = _read_owned_path(skill), _read_owned_path(marker)
43
+ digest = hashlib.sha256(content).hexdigest()
44
+ if recorded is None:
45
+ if directory.exists():
46
+ raise ValueError('Unowned bundled skill destination was preserved; choose another profile or move your copy')
47
+ else:
48
+ try:
49
+ record = json.loads(recorded)
50
+ owned = (record['owner'] == 'apsimo-hermes' and record['version'] == 1
51
+ and previous is not None
52
+ and record['sha256'] == hashlib.sha256(previous).hexdigest())
53
+ except (ValueError, KeyError, TypeError):
54
+ owned = False
55
+ if not owned:
56
+ raise ValueError('Locally modified bundled skill was preserved; keep your copy or reconcile it before refreshing')
57
+ if previous != content and not refresh:
58
+ raise ValueError('Bundled skill update requires explicit apsimo init --skills-only')
59
+ after = (json.dumps({'owner': 'apsimo-hermes', 'version': 1, 'sha256': digest},
60
+ sort_keys=True, indent=2)+'\n').encode()
61
+ return [(skill, previous, content), (marker, recorded, after)]
62
+
63
+
64
+ def install(updates):
65
+ """Replace only previously verified owned bytes; retain local edits on conflict."""
66
+ from .setup import _atomic_hermes_config_write
67
+ for path, before, _ in updates:
68
+ if _read_owned_path(path) != before:
69
+ raise ValueError('Bundled skill changed during installation; current files were preserved')
70
+ completed = []
71
+ try:
72
+ for path, before, after in updates:
73
+ if before != after:
74
+ path.parent.mkdir(parents=True, exist_ok=True, mode=0o700)
75
+ _atomic_hermes_config_write(path, before, after)
76
+ completed.append((path, before, after))
77
+ except Exception:
78
+ for path, before, after in reversed(completed):
79
+ if _read_owned_path(path) == after:
80
+ if before is None:
81
+ path.unlink()
82
+ else:
83
+ _atomic_hermes_config_write(path, after, before)
84
+ # A failed first installation leaves no false ownership claim.
85
+ for directory in {path.parent for path, _, _ in updates}:
86
+ if directory.is_dir() and not any(directory.iterdir()):
87
+ directory.rmdir()
88
+ raise
89
+ names = sorted({path.parent.name for path, _, _ in updates})
90
+ print('Bundled skills available: '+', '.join(names)+'. With this Apsimo adapter version active, ongoing conversations refresh skill discovery on their next request.')
@@ -0,0 +1,12 @@
1
+ """Schedulable agent-side workers, available as installed console commands.
2
+
3
+ - ``apsimo-agent-bridge`` (:mod:`apsimo.workers.agent_bridge`) runs
4
+ initiative polling, job dispatch, skills sync and circuit health checks.
5
+ - ``apsimo-queue-worker`` (:mod:`apsimo.workers.queue_worker`) claims
6
+ approved ``agent_action`` jobs and hands them to the agent.
7
+ - ``apsimo-skills-sync`` (:mod:`apsimo.workers.skills_sync`) reports
8
+ the agent's installed skill index to Apsimo.
9
+
10
+ These modules are stdlib-only so the workers can run without the full
11
+ sidecar dependency stack. Do not import heavy dependencies here.
12
+ """
@@ -332,7 +332,7 @@ def run_cycle(cfg: Dict[str, Any]) -> int:
332
332
 
333
333
 
334
334
  def run_forever(cfg: Dict[str, Any]) -> None:
335
- print(f"colony-worker {cfg['node_id']} polling {cfg['colony_url']} "
335
+ print(f"apsimo-worker {cfg['node_id']} polling {cfg['colony_url']} "
336
336
  f"every {cfg['poll_secs']}s (caps={cfg['capabilities']}, "
337
337
  f"types={cfg['job_types']})")
338
338
  while True:
@@ -354,7 +354,7 @@ def main(argv: Optional[list] = None) -> int:
354
354
  except Exception:
355
355
  pass
356
356
  parser = argparse.ArgumentParser(
357
- prog="colony-worker",
357
+ prog="apsimo-worker",
358
358
  description="Claim typed Colony jobs and execute them read/analyse-only.")
359
359
  parser.add_argument("--dry-run", action="store_true",
360
360
  help="print resolved config and exit (no network)")
@@ -367,7 +367,7 @@ def main(argv: Optional[list] = None) -> int:
367
367
  safe = dict(cfg)
368
368
  safe["api_key"] = "***" if cfg["api_key"] else ""
369
369
  safe["llm_api_key"] = "***" if cfg["llm_api_key"] else ""
370
- print("colony-worker (dry run -- no network calls):")
370
+ print("apsimo-worker (dry run -- no network calls):")
371
371
  for k, v in safe.items():
372
372
  print(f" {k}: {v}")
373
373
  return 0