colonymind 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1327) hide show
  1. colonymind-1.0.0/LICENSE +21 -0
  2. colonymind-1.0.0/PKG-INFO +110 -0
  3. colonymind-1.0.0/README.md +57 -0
  4. colonymind-1.0.0/colonymind/__init__.py +40 -0
  5. colonymind-1.0.0/colonymind/__main__.py +6 -0
  6. colonymind-1.0.0/colonymind/agent_mailbox.py +411 -0
  7. colonymind-1.0.0/colonymind/api/__init__.py +1 -0
  8. colonymind-1.0.0/colonymind/api/archive_queue.py +30 -0
  9. colonymind-1.0.0/colonymind/api/auth.py +466 -0
  10. colonymind-1.0.0/colonymind/api/credentials.py +788 -0
  11. colonymind-1.0.0/colonymind/api/errors.py +108 -0
  12. colonymind-1.0.0/colonymind/api/legacy_scopes.py +324 -0
  13. colonymind-1.0.0/colonymind/api/mcp.py +536 -0
  14. colonymind-1.0.0/colonymind/api/middleware.py +391 -0
  15. colonymind-1.0.0/colonymind/api/owner_location.py +70 -0
  16. colonymind-1.0.0/colonymind/api/public_spec.py +308 -0
  17. colonymind-1.0.0/colonymind/api/retired_routes.py +6 -0
  18. colonymind-1.0.0/colonymind/api/routers/__init__.py +1 -0
  19. colonymind-1.0.0/colonymind/api/routers/activity.py +54 -0
  20. colonymind-1.0.0/colonymind/api/routers/agent_mailbox.py +94 -0
  21. colonymind-1.0.0/colonymind/api/routers/branches.py +191 -0
  22. colonymind-1.0.0/colonymind/api/routers/claims.py +120 -0
  23. colonymind-1.0.0/colonymind/api/routers/context_card.py +34 -0
  24. colonymind-1.0.0/colonymind/api/routers/curated_memory.py +186 -0
  25. colonymind-1.0.0/colonymind/api/routers/devices.py +105 -0
  26. colonymind-1.0.0/colonymind/api/routers/executions.py +80 -0
  27. colonymind-1.0.0/colonymind/api/routers/hands.py +307 -0
  28. colonymind-1.0.0/colonymind/api/routers/host.py +6807 -0
  29. colonymind-1.0.0/colonymind/api/routers/instinct.py +154 -0
  30. colonymind-1.0.0/colonymind/api/routers/inventory.py +113 -0
  31. colonymind-1.0.0/colonymind/api/routers/mind.py +1599 -0
  32. colonymind-1.0.0/colonymind/api/routers/opinions.py +139 -0
  33. colonymind-1.0.0/colonymind/api/routers/owner_goals.py +208 -0
  34. colonymind-1.0.0/colonymind/api/routers/people.py +689 -0
  35. colonymind-1.0.0/colonymind/api/routers/secrets.py +414 -0
  36. colonymind-1.0.0/colonymind/api/routers/social_state.py +256 -0
  37. colonymind-1.0.0/colonymind/api/routers/temporal_followups.py +150 -0
  38. colonymind-1.0.0/colonymind/api/routers/transport.py +110 -0
  39. colonymind-1.0.0/colonymind/api/routers/transport_ingress_api.py +333 -0
  40. colonymind-1.0.0/colonymind/api/routers/watch.py +24 -0
  41. colonymind-1.0.0/colonymind/api/routers/work.py +267 -0
  42. colonymind-1.0.0/colonymind/api/schemas/__init__.py +1 -0
  43. colonymind-1.0.0/colonymind/api/schemas/approval_history.py +92 -0
  44. colonymind-1.0.0/colonymind/api/schemas/context_card.py +16 -0
  45. colonymind-1.0.0/colonymind/api/schemas/host.py +1233 -0
  46. colonymind-1.0.0/colonymind/api/viewer.py +15 -0
  47. colonymind-1.0.0/colonymind/atlas/__init__.py +10 -0
  48. colonymind-1.0.0/colonymind/atlas/cli.py +78 -0
  49. colonymind-1.0.0/colonymind/atlas/render.py +527 -0
  50. colonymind-1.0.0/colonymind/atlas/site.py +444 -0
  51. colonymind-1.0.0/colonymind/atlas/snapshot.py +271 -0
  52. colonymind-1.0.0/colonymind/backup.py +1053 -0
  53. colonymind-1.0.0/colonymind/beliefs/__init__.py +20 -0
  54. colonymind-1.0.0/colonymind/beliefs/promotion.py +45 -0
  55. colonymind-1.0.0/colonymind/beliefs/reextract.py +1334 -0
  56. colonymind-1.0.0/colonymind/beliefs/reextract_cli.py +223 -0
  57. colonymind-1.0.0/colonymind/beliefs/source_claims.py +1068 -0
  58. colonymind-1.0.0/colonymind/beliefs/source_projection.py +2536 -0
  59. colonymind-1.0.0/colonymind/beliefs/source_time.py +652 -0
  60. colonymind-1.0.0/colonymind/beliefs/value_revision.py +124 -0
  61. colonymind-1.0.0/colonymind/build_stamp.json +5 -0
  62. colonymind-1.0.0/colonymind/build_stamp.py +41 -0
  63. colonymind-1.0.0/colonymind/cli.py +1389 -0
  64. colonymind-1.0.0/colonymind/commitments/__init__.py +18 -0
  65. colonymind-1.0.0/colonymind/commitments/extract.py +1692 -0
  66. colonymind-1.0.0/colonymind/commitments/parties.py +65 -0
  67. colonymind-1.0.0/colonymind/commitments/store.py +1304 -0
  68. colonymind-1.0.0/colonymind/commitments/work.py +96 -0
  69. colonymind-1.0.0/colonymind/config.py +1245 -0
  70. colonymind-1.0.0/colonymind/console/__init__.py +10 -0
  71. colonymind-1.0.0/colonymind/console/app.py +269 -0
  72. colonymind-1.0.0/colonymind/console/cli.py +53 -0
  73. colonymind-1.0.0/colonymind/console/pages.py +487 -0
  74. colonymind-1.0.0/colonymind/console/server.py +92 -0
  75. colonymind-1.0.0/colonymind/console/source.py +203 -0
  76. colonymind-1.0.0/colonymind/contacts/__init__.py +30 -0
  77. colonymind-1.0.0/colonymind/contacts/affect.py +513 -0
  78. colonymind-1.0.0/colonymind/contacts/affect_writer.py +95 -0
  79. colonymind-1.0.0/colonymind/contacts/changes.py +164 -0
  80. colonymind-1.0.0/colonymind/contacts/cli.py +105 -0
  81. colonymind-1.0.0/colonymind/contacts/comms.py +756 -0
  82. colonymind-1.0.0/colonymind/contacts/config.py +43 -0
  83. colonymind-1.0.0/colonymind/contacts/continuity.py +70 -0
  84. colonymind-1.0.0/colonymind/contacts/digest.py +238 -0
  85. colonymind-1.0.0/colonymind/contacts/identity_links.py +313 -0
  86. colonymind-1.0.0/colonymind/contacts/migrations/001_contacts_schema.sql +101 -0
  87. colonymind-1.0.0/colonymind/contacts/migrations/002_trust_scopes.sql +36 -0
  88. colonymind-1.0.0/colonymind/contacts/migrations/003_open_gateway_enum.sql +32 -0
  89. colonymind-1.0.0/colonymind/contacts/migrations/004_contact_provision_operations.sql +4 -0
  90. colonymind-1.0.0/colonymind/contacts/migrations/005_identity_links.sql +27 -0
  91. colonymind-1.0.0/colonymind/contacts/migrations/006_may_contact.sql +14 -0
  92. colonymind-1.0.0/colonymind/contacts/migrations/007_digest_lineage.sql +16 -0
  93. colonymind-1.0.0/colonymind/contacts/migrations/008_location_report.sql +5 -0
  94. colonymind-1.0.0/colonymind/contacts/models.py +337 -0
  95. colonymind-1.0.0/colonymind/contacts/optout.py +78 -0
  96. colonymind-1.0.0/colonymind/contacts/refresh.py +130 -0
  97. colonymind-1.0.0/colonymind/contacts/source_lineage.py +112 -0
  98. colonymind-1.0.0/colonymind/contacts/store.py +1873 -0
  99. colonymind-1.0.0/colonymind/contacts/transport_ingress.py +475 -0
  100. colonymind-1.0.0/colonymind/context_card/__init__.py +1 -0
  101. colonymind-1.0.0/colonymind/context_card/builder.py +139 -0
  102. colonymind-1.0.0/colonymind/context_card/inputs.py +209 -0
  103. colonymind-1.0.0/colonymind/context_card/lifecycle.py +37 -0
  104. colonymind-1.0.0/colonymind/context_card/measure.py +130 -0
  105. colonymind-1.0.0/colonymind/context_card/refresh.py +207 -0
  106. colonymind-1.0.0/colonymind/context_card/store.py +144 -0
  107. colonymind-1.0.0/colonymind/credentials_cli.py +257 -0
  108. colonymind-1.0.0/colonymind/demo.py +579 -0
  109. colonymind-1.0.0/colonymind/devices.py +330 -0
  110. colonymind-1.0.0/colonymind/devtools/__init__.py +7 -0
  111. colonymind-1.0.0/colonymind/devtools/fake_model.py +313 -0
  112. colonymind-1.0.0/colonymind/devtools/mind_loop_probe.py +637 -0
  113. colonymind-1.0.0/colonymind/doctor.py +1248 -0
  114. colonymind-1.0.0/colonymind/events/__init__.py +5 -0
  115. colonymind-1.0.0/colonymind/events/activity.py +219 -0
  116. colonymind-1.0.0/colonymind/events/broadcaster.py +105 -0
  117. colonymind-1.0.0/colonymind/events/journal.py +848 -0
  118. colonymind-1.0.0/colonymind/events/stream.py +131 -0
  119. colonymind-1.0.0/colonymind/feedback/__init__.py +5 -0
  120. colonymind-1.0.0/colonymind/feedback/store.py +145 -0
  121. colonymind-1.0.0/colonymind/feeds/__init__.py +19 -0
  122. colonymind-1.0.0/colonymind/feeds/cli.py +84 -0
  123. colonymind-1.0.0/colonymind/feeds/engine.py +438 -0
  124. colonymind-1.0.0/colonymind/feeds/example-feed.yaml +77 -0
  125. colonymind-1.0.0/colonymind/feeds/hermes_cron.py +126 -0
  126. colonymind-1.0.0/colonymind/feeds/manager.py +235 -0
  127. colonymind-1.0.0/colonymind/feeds/spec.py +250 -0
  128. colonymind-1.0.0/colonymind/feeds/template.py +202 -0
  129. colonymind-1.0.0/colonymind/hands/__init__.py +5 -0
  130. colonymind-1.0.0/colonymind/hands/admission.py +68 -0
  131. colonymind-1.0.0/colonymind/hands/approvals.py +335 -0
  132. colonymind-1.0.0/colonymind/hands/brief.py +134 -0
  133. colonymind-1.0.0/colonymind/hands/budgets.py +66 -0
  134. colonymind-1.0.0/colonymind/hands/cascade.py +34 -0
  135. colonymind-1.0.0/colonymind/hands/cli.py +80 -0
  136. colonymind-1.0.0/colonymind/hands/contracts.py +56 -0
  137. colonymind-1.0.0/colonymind/hands/controller.py +1111 -0
  138. colonymind-1.0.0/colonymind/hands/definition_queue.py +110 -0
  139. colonymind-1.0.0/colonymind/hands/definitions.py +409 -0
  140. colonymind-1.0.0/colonymind/hands/definitions_schema.py +129 -0
  141. colonymind-1.0.0/colonymind/hands/digest.py +80 -0
  142. colonymind-1.0.0/colonymind/hands/effects.py +63 -0
  143. colonymind-1.0.0/colonymind/hands/evidence.py +208 -0
  144. colonymind-1.0.0/colonymind/hands/health.py +91 -0
  145. colonymind-1.0.0/colonymind/hands/locks.py +38 -0
  146. colonymind-1.0.0/colonymind/hands/matrix.py +17 -0
  147. colonymind-1.0.0/colonymind/hands/notices.py +110 -0
  148. colonymind-1.0.0/colonymind/hands/obligations.py +114 -0
  149. colonymind-1.0.0/colonymind/hands/provenance.py +495 -0
  150. colonymind-1.0.0/colonymind/hands/retention.py +110 -0
  151. colonymind-1.0.0/colonymind/hands/runtime.py +118 -0
  152. colonymind-1.0.0/colonymind/hands/sessions.py +136 -0
  153. colonymind-1.0.0/colonymind/hands/settings.py +28 -0
  154. colonymind-1.0.0/colonymind/hands/store.py +415 -0
  155. colonymind-1.0.0/colonymind/hands/types.py +405 -0
  156. colonymind-1.0.0/colonymind/hands/wire.py +456 -0
  157. colonymind-1.0.0/colonymind/health_counters.py +26 -0
  158. colonymind-1.0.0/colonymind/identity/__init__.py +15 -0
  159. colonymind-1.0.0/colonymind/identity/participants.py +237 -0
  160. colonymind-1.0.0/colonymind/identity/policy.py +45 -0
  161. colonymind-1.0.0/colonymind/identity/resolver.py +64 -0
  162. colonymind-1.0.0/colonymind/inference_pool/__init__.py +5 -0
  163. colonymind-1.0.0/colonymind/inference_pool/config.py +300 -0
  164. colonymind-1.0.0/colonymind/inference_pool/scheduler.py +323 -0
  165. colonymind-1.0.0/colonymind/inference_pool/server.py +603 -0
  166. colonymind-1.0.0/colonymind/init.py +3454 -0
  167. colonymind-1.0.0/colonymind/initiatives/__init__.py +16 -0
  168. colonymind-1.0.0/colonymind/initiatives/context_freshness.py +42 -0
  169. colonymind-1.0.0/colonymind/initiatives/models.py +372 -0
  170. colonymind-1.0.0/colonymind/initiatives/store.py +1455 -0
  171. colonymind-1.0.0/colonymind/initiatives/temporal_followup.py +362 -0
  172. colonymind-1.0.0/colonymind/instance.py +102 -0
  173. colonymind-1.0.0/colonymind/instinct/__init__.py +119 -0
  174. colonymind-1.0.0/colonymind/instinct/calibration.py +236 -0
  175. colonymind-1.0.0/colonymind/instinct/cli.py +319 -0
  176. colonymind-1.0.0/colonymind/instinct/deliberate.py +184 -0
  177. colonymind-1.0.0/colonymind/instinct/external.py +425 -0
  178. colonymind-1.0.0/colonymind/instinct/fit.py +868 -0
  179. colonymind-1.0.0/colonymind/instinct/log.py +690 -0
  180. colonymind-1.0.0/colonymind/instinct/outcomes.py +1517 -0
  181. colonymind-1.0.0/colonymind/instinct/points.py +347 -0
  182. colonymind-1.0.0/colonymind/instinct/providers/__init__.py +78 -0
  183. colonymind-1.0.0/colonymind/instinct/providers/local_decision.py +180 -0
  184. colonymind-1.0.0/colonymind/instinct/providers/logits.py +342 -0
  185. colonymind-1.0.0/colonymind/instinct/records/__init__.py +120 -0
  186. colonymind-1.0.0/colonymind/instinct/records/local-decision-opt-out.json +58 -0
  187. colonymind-1.0.0/colonymind/instinct/registry.py +232 -0
  188. colonymind-1.0.0/colonymind/instinct/settings.py +254 -0
  189. colonymind-1.0.0/colonymind/instinct/state.py +588 -0
  190. colonymind-1.0.0/colonymind/instinct/tiers.py +658 -0
  191. colonymind-1.0.0/colonymind/intelligence/__init__.py +1 -0
  192. colonymind-1.0.0/colonymind/intelligence/components/__init__.py +9 -0
  193. colonymind-1.0.0/colonymind/intelligence/components/preference_learner.py +496 -0
  194. colonymind-1.0.0/colonymind/jobwatch/__init__.py +1 -0
  195. colonymind-1.0.0/colonymind/jobwatch/activity.py +192 -0
  196. colonymind-1.0.0/colonymind/jobwatch/cli.py +37 -0
  197. colonymind-1.0.0/colonymind/jobwatch/network.py +22 -0
  198. colonymind-1.0.0/colonymind/jobwatch/runner.py +480 -0
  199. colonymind-1.0.0/colonymind/jobwatch/settings.py +69 -0
  200. colonymind-1.0.0/colonymind/jobwatch/store.py +74 -0
  201. colonymind-1.0.0/colonymind/loop_lag.py +78 -0
  202. colonymind-1.0.0/colonymind/memory/__init__.py +1 -0
  203. colonymind-1.0.0/colonymind/memory/blocks.py +423 -0
  204. colonymind-1.0.0/colonymind/memory/branches.py +640 -0
  205. colonymind-1.0.0/colonymind/memory/compass.py +840 -0
  206. colonymind-1.0.0/colonymind/memory/curated.py +1463 -0
  207. colonymind-1.0.0/colonymind/memory/curated_health.py +118 -0
  208. colonymind-1.0.0/colonymind/memory/inventory.py +647 -0
  209. colonymind-1.0.0/colonymind/memory/learning.py +661 -0
  210. colonymind-1.0.0/colonymind/memory/live_recall.py +60 -0
  211. colonymind-1.0.0/colonymind/memory/notice.py +206 -0
  212. colonymind-1.0.0/colonymind/memory/producers.py +285 -0
  213. colonymind-1.0.0/colonymind/memory/recall.py +661 -0
  214. colonymind-1.0.0/colonymind/memory/recall_exit.py +188 -0
  215. colonymind-1.0.0/colonymind/memory/recall_stats.py +98 -0
  216. colonymind-1.0.0/colonymind/memory/recent.py +235 -0
  217. colonymind-1.0.0/colonymind/memory/rerank_gate.py +155 -0
  218. colonymind-1.0.0/colonymind/memory/search.py +412 -0
  219. colonymind-1.0.0/colonymind/memory/selection.py +559 -0
  220. colonymind-1.0.0/colonymind/memory/time_lane.py +462 -0
  221. colonymind-1.0.0/colonymind/memory/trace.py +509 -0
  222. colonymind-1.0.0/colonymind/memory/turn_budget.py +253 -0
  223. colonymind-1.0.0/colonymind/memory/voice_affect.py +86 -0
  224. colonymind-1.0.0/colonymind/memory/voice_recall.py +619 -0
  225. colonymind-1.0.0/colonymind/memory_cli.py +154 -0
  226. colonymind-1.0.0/colonymind/migrations.py +369 -0
  227. colonymind-1.0.0/colonymind/mind/__init__.py +29 -0
  228. colonymind-1.0.0/colonymind/mind/affect.py +979 -0
  229. colonymind-1.0.0/colonymind/mind/affect_rules.py +44 -0
  230. colonymind-1.0.0/colonymind/mind/allows.py +449 -0
  231. colonymind-1.0.0/colonymind/mind/answer_turns.py +188 -0
  232. colonymind-1.0.0/colonymind/mind/answers.py +976 -0
  233. colonymind-1.0.0/colonymind/mind/approval_history.py +250 -0
  234. colonymind-1.0.0/colonymind/mind/ask_origin.py +100 -0
  235. colonymind-1.0.0/colonymind/mind/asks_report.py +362 -0
  236. colonymind-1.0.0/colonymind/mind/audit.py +311 -0
  237. colonymind-1.0.0/colonymind/mind/authority.py +1054 -0
  238. colonymind-1.0.0/colonymind/mind/cli.py +603 -0
  239. colonymind-1.0.0/colonymind/mind/compose.py +152 -0
  240. colonymind-1.0.0/colonymind/mind/concerns.py +418 -0
  241. colonymind-1.0.0/colonymind/mind/consolidate.py +1861 -0
  242. colonymind-1.0.0/colonymind/mind/contradiction_keys.py +333 -0
  243. colonymind-1.0.0/colonymind/mind/contradiction_keys_bounds.json +341 -0
  244. colonymind-1.0.0/colonymind/mind/contradiction_keys_dev.json +66 -0
  245. colonymind-1.0.0/colonymind/mind/deliberate.py +429 -0
  246. colonymind-1.0.0/colonymind/mind/digest.py +102 -0
  247. colonymind-1.0.0/colonymind/mind/drift.py +1201 -0
  248. colonymind-1.0.0/colonymind/mind/drives.py +874 -0
  249. colonymind-1.0.0/colonymind/mind/factory.py +79 -0
  250. colonymind-1.0.0/colonymind/mind/gate.py +858 -0
  251. colonymind-1.0.0/colonymind/mind/goals.py +271 -0
  252. colonymind-1.0.0/colonymind/mind/idea_assets/calendar-planning-v1.svg +1 -0
  253. colonymind-1.0.0/colonymind/mind/idea_assets/document-paperwork-v1.svg +1 -0
  254. colonymind-1.0.0/colonymind/mind/idea_assets/packet-money-v1.svg +1 -0
  255. colonymind-1.0.0/colonymind/mind/idea_assets/renewal-subscriptions-v1.svg +1 -0
  256. colonymind-1.0.0/colonymind/mind/ideas.py +724 -0
  257. colonymind-1.0.0/colonymind/mind/ideas_association.py +81 -0
  258. colonymind-1.0.0/colonymind/mind/ideas_build.py +188 -0
  259. colonymind-1.0.0/colonymind/mind/ideas_copy.py +205 -0
  260. colonymind-1.0.0/colonymind/mind/ideas_presentation.py +31 -0
  261. colonymind-1.0.0/colonymind/mind/learned.py +251 -0
  262. colonymind-1.0.0/colonymind/mind/lesson_match.py +500 -0
  263. colonymind-1.0.0/colonymind/mind/lesson_match_bounds.json +919 -0
  264. colonymind-1.0.0/colonymind/mind/lesson_match_dev.json +87 -0
  265. colonymind-1.0.0/colonymind/mind/lessons.py +1869 -0
  266. colonymind-1.0.0/colonymind/mind/observations.py +415 -0
  267. colonymind-1.0.0/colonymind/mind/opinions.py +808 -0
  268. colonymind-1.0.0/colonymind/mind/outbox.py +978 -0
  269. colonymind-1.0.0/colonymind/mind/outcomes.py +615 -0
  270. colonymind-1.0.0/colonymind/mind/outreach.py +941 -0
  271. colonymind-1.0.0/colonymind/mind/owner_actions.py +100 -0
  272. colonymind-1.0.0/colonymind/mind/permit_asks.py +326 -0
  273. colonymind-1.0.0/colonymind/mind/plain.py +419 -0
  274. colonymind-1.0.0/colonymind/mind/questions.py +656 -0
  275. colonymind-1.0.0/colonymind/mind/rank.py +229 -0
  276. colonymind-1.0.0/colonymind/mind/reactions.py +703 -0
  277. colonymind-1.0.0/colonymind/mind/skills.py +181 -0
  278. colonymind-1.0.0/colonymind/mind/status.py +324 -0
  279. colonymind-1.0.0/colonymind/mind/tick.py +6699 -0
  280. colonymind-1.0.0/colonymind/mind/tool_origins.py +76 -0
  281. colonymind-1.0.0/colonymind/mind/wishes.py +1219 -0
  282. colonymind-1.0.0/colonymind/owner_goals/__init__.py +1 -0
  283. colonymind-1.0.0/colonymind/owner_goals/artifacts.py +133 -0
  284. colonymind-1.0.0/colonymind/owner_goals/authority.py +85 -0
  285. colonymind-1.0.0/colonymind/owner_goals/hub.py +75 -0
  286. colonymind-1.0.0/colonymind/owner_goals/reads.py +398 -0
  287. colonymind-1.0.0/colonymind/owner_goals/schema.py +165 -0
  288. colonymind-1.0.0/colonymind/owner_goals/sealing.py +197 -0
  289. colonymind-1.0.0/colonymind/owner_goals/store.py +649 -0
  290. colonymind-1.0.0/colonymind/owner_goals/validation.py +239 -0
  291. colonymind-1.0.0/colonymind/plasticity/__init__.py +24 -0
  292. colonymind-1.0.0/colonymind/plasticity/_io.py +139 -0
  293. colonymind-1.0.0/colonymind/plasticity/admission.py +358 -0
  294. colonymind-1.0.0/colonymind/plasticity/audience.py +111 -0
  295. colonymind-1.0.0/colonymind/plasticity/budgets.py +122 -0
  296. colonymind-1.0.0/colonymind/plasticity/builds.py +211 -0
  297. colonymind-1.0.0/colonymind/plasticity/certificates.py +56 -0
  298. colonymind-1.0.0/colonymind/plasticity/cli.py +84 -0
  299. colonymind-1.0.0/colonymind/plasticity/compaction.py +62 -0
  300. colonymind-1.0.0/colonymind/plasticity/comparator.py +433 -0
  301. colonymind-1.0.0/colonymind/plasticity/erasure.py +488 -0
  302. colonymind-1.0.0/colonymind/plasticity/forced.py +49 -0
  303. colonymind-1.0.0/colonymind/plasticity/gates.py +407 -0
  304. colonymind-1.0.0/colonymind/plasticity/learners/__init__.py +11 -0
  305. colonymind-1.0.0/colonymind/plasticity/learners/action_success.py +586 -0
  306. colonymind-1.0.0/colonymind/plasticity/learners/behaviour.py +617 -0
  307. colonymind-1.0.0/colonymind/plasticity/learners/contact_reply_timing.py +539 -0
  308. colonymind-1.0.0/colonymind/plasticity/learners/query_adapter.py +642 -0
  309. colonymind-1.0.0/colonymind/plasticity/learners/reply_timing.py +599 -0
  310. colonymind-1.0.0/colonymind/plasticity/learners/salience.py +899 -0
  311. colonymind-1.0.0/colonymind/plasticity/learners/service_health.py +564 -0
  312. colonymind-1.0.0/colonymind/plasticity/lineage.py +159 -0
  313. colonymind-1.0.0/colonymind/plasticity/locking.py +94 -0
  314. colonymind-1.0.0/colonymind/plasticity/manifests.py +196 -0
  315. colonymind-1.0.0/colonymind/plasticity/nightly.py +1170 -0
  316. colonymind-1.0.0/colonymind/plasticity/numeric.py +490 -0
  317. colonymind-1.0.0/colonymind/plasticity/numeric_comparator.py +254 -0
  318. colonymind-1.0.0/colonymind/plasticity/objectives.py +220 -0
  319. colonymind-1.0.0/colonymind/plasticity/periods.py +123 -0
  320. colonymind-1.0.0/colonymind/plasticity/query_adapter.py +421 -0
  321. colonymind-1.0.0/colonymind/plasticity/query_log.py +235 -0
  322. colonymind-1.0.0/colonymind/plasticity/recall_qualify.py +408 -0
  323. colonymind-1.0.0/colonymind/plasticity/registration.py +144 -0
  324. colonymind-1.0.0/colonymind/plasticity/revisions.py +443 -0
  325. colonymind-1.0.0/colonymind/plasticity/rows.py +32 -0
  326. colonymind-1.0.0/colonymind/plasticity/states.py +267 -0
  327. colonymind-1.0.0/colonymind/plasticity/store.py +242 -0
  328. colonymind-1.0.0/colonymind/plasticity/synthetic.py +383 -0
  329. colonymind-1.0.0/colonymind/plasticity/teachers.py +144 -0
  330. colonymind-1.0.0/colonymind/qualification/__init__.py +1 -0
  331. colonymind-1.0.0/colonymind/qualification/benchmark.py +274 -0
  332. colonymind-1.0.0/colonymind/qualification/benchmark_cases.py +143 -0
  333. colonymind-1.0.0/colonymind/qualification/cases.py +90 -0
  334. colonymind-1.0.0/colonymind/qualification/cli.py +93 -0
  335. colonymind-1.0.0/colonymind/qualification/coding.py +207 -0
  336. colonymind-1.0.0/colonymind/qualification/coding_sandbox.py +202 -0
  337. colonymind-1.0.0/colonymind/qualification/coding_verify_worker.py +36 -0
  338. colonymind-1.0.0/colonymind/qualification/coding_worker.py +98 -0
  339. colonymind-1.0.0/colonymind/qualification/evidence_cases.py +185 -0
  340. colonymind-1.0.0/colonymind/qualification/fixtures/coding-development.json +542 -0
  341. colonymind-1.0.0/colonymind/qualification/fixtures/decision-role-screen-1/manifest.json +65 -0
  342. colonymind-1.0.0/colonymind/qualification/fixtures/decision-role-screen-1/scenarios.json +2134 -0
  343. colonymind-1.0.0/colonymind/qualification/fixtures/interaction-frame-a.png +0 -0
  344. colonymind-1.0.0/colonymind/qualification/fixtures/interaction-frame-b.png +0 -0
  345. colonymind-1.0.0/colonymind/qualification/fixtures/paired-agent-reviewed-2/manifest.json +44 -0
  346. colonymind-1.0.0/colonymind/qualification/fixtures/paired-agent-reviewed-2/scenarios.json +3419 -0
  347. colonymind-1.0.0/colonymind/qualification/fixtures/paired-agent-workflows-1/manifest.json +61 -0
  348. colonymind-1.0.0/colonymind/qualification/fixtures/paired-agent-workflows-1/scenarios.json +4852 -0
  349. colonymind-1.0.0/colonymind/qualification/fixtures/vision-arrangement.png +0 -0
  350. colonymind-1.0.0/colonymind/qualification/fixtures/vision-covered-label.png +0 -0
  351. colonymind-1.0.0/colonymind/qualification/fixtures/vision-labels.png +0 -0
  352. colonymind-1.0.0/colonymind/qualification/formation_extended.py +213 -0
  353. colonymind-1.0.0/colonymind/qualification/interaction_evidence.py +83 -0
  354. colonymind-1.0.0/colonymind/qualification/memory_cases.py +222 -0
  355. colonymind-1.0.0/colonymind/qualification/native.py +222 -0
  356. colonymind-1.0.0/colonymind/qualification/native_authority.py +113 -0
  357. colonymind-1.0.0/colonymind/qualification/native_authority_cases.py +62 -0
  358. colonymind-1.0.0/colonymind/qualification/native_authority_worker.py +115 -0
  359. colonymind-1.0.0/colonymind/qualification/native_coding.py +54 -0
  360. colonymind-1.0.0/colonymind/qualification/native_contact_identity.py +113 -0
  361. colonymind-1.0.0/colonymind/qualification/native_identity.py +51 -0
  362. colonymind-1.0.0/colonymind/qualification/native_identity_cases.py +60 -0
  363. colonymind-1.0.0/colonymind/qualification/native_identity_worker.py +127 -0
  364. colonymind-1.0.0/colonymind/qualification/native_interactive.py +102 -0
  365. colonymind-1.0.0/colonymind/qualification/native_interactive_cases.py +96 -0
  366. colonymind-1.0.0/colonymind/qualification/native_interactive_worker.py +282 -0
  367. colonymind-1.0.0/colonymind/qualification/native_memory.py +155 -0
  368. colonymind-1.0.0/colonymind/qualification/native_memory_batch.py +136 -0
  369. colonymind-1.0.0/colonymind/qualification/native_memory_cases.py +79 -0
  370. colonymind-1.0.0/colonymind/qualification/native_memory_identity.py +31 -0
  371. colonymind-1.0.0/colonymind/qualification/native_memory_worker.py +671 -0
  372. colonymind-1.0.0/colonymind/qualification/native_perspective.py +155 -0
  373. colonymind-1.0.0/colonymind/qualification/native_perspective_cases.py +49 -0
  374. colonymind-1.0.0/colonymind/qualification/native_perspective_worker.py +69 -0
  375. colonymind-1.0.0/colonymind/qualification/native_reasoning.py +36 -0
  376. colonymind-1.0.0/colonymind/qualification/native_recovery.py +69 -0
  377. colonymind-1.0.0/colonymind/qualification/native_recovery_worker.py +87 -0
  378. colonymind-1.0.0/colonymind/qualification/native_semantic_recall.py +84 -0
  379. colonymind-1.0.0/colonymind/qualification/native_semantic_worker.py +30 -0
  380. colonymind-1.0.0/colonymind/qualification/native_unified.py +128 -0
  381. colonymind-1.0.0/colonymind/qualification/native_unified_base_worker.py +75 -0
  382. colonymind-1.0.0/colonymind/qualification/native_unified_cases.py +57 -0
  383. colonymind-1.0.0/colonymind/qualification/native_unified_host.py +73 -0
  384. colonymind-1.0.0/colonymind/qualification/native_unified_worker.py +157 -0
  385. colonymind-1.0.0/colonymind/qualification/native_worker.py +136 -0
  386. colonymind-1.0.0/colonymind/qualification/pack_batch.py +314 -0
  387. colonymind-1.0.0/colonymind/qualification/pack_registry.py +61 -0
  388. colonymind-1.0.0/colonymind/qualification/paired.py +787 -0
  389. colonymind-1.0.0/colonymind/qualification/paired_arms.py +198 -0
  390. colonymind-1.0.0/colonymind/qualification/paired_body.py +349 -0
  391. colonymind-1.0.0/colonymind/qualification/paired_body_grading.py +488 -0
  392. colonymind-1.0.0/colonymind/qualification/paired_cases.py +730 -0
  393. colonymind-1.0.0/colonymind/qualification/paired_container.py +252 -0
  394. colonymind-1.0.0/colonymind/qualification/paired_history.py +262 -0
  395. colonymind-1.0.0/colonymind/qualification/paired_public.py +270 -0
  396. colonymind-1.0.0/colonymind/qualification/paired_report.py +1350 -0
  397. colonymind-1.0.0/colonymind/qualification/paired_statistics.py +195 -0
  398. colonymind-1.0.0/colonymind/qualification/paired_suite.py +361 -0
  399. colonymind-1.0.0/colonymind/qualification/paired_trace.py +70 -0
  400. colonymind-1.0.0/colonymind/qualification/paired_transport.py +256 -0
  401. colonymind-1.0.0/colonymind/qualification/paired_worker.py +1489 -0
  402. colonymind-1.0.0/colonymind/qualification/paired_workflow_grading.py +93 -0
  403. colonymind-1.0.0/colonymind/qualification/paired_workflow_runtime.py +454 -0
  404. colonymind-1.0.0/colonymind/qualification/planning_effects.py +48 -0
  405. colonymind-1.0.0/colonymind/qualification/public_export.py +392 -0
  406. colonymind-1.0.0/colonymind/qualification/recall_capture.py +142 -0
  407. colonymind-1.0.0/colonymind/qualification/records.py +111 -0
  408. colonymind-1.0.0/colonymind/qualification/recovery_cases.py +51 -0
  409. colonymind-1.0.0/colonymind/qualification/recovery_fixture.py +87 -0
  410. colonymind-1.0.0/colonymind/qualification/report.py +153 -0
  411. colonymind-1.0.0/colonymind/qualification/router_recovery.py +174 -0
  412. colonymind-1.0.0/colonymind/qualification/router_recovery_proxy.py +81 -0
  413. colonymind-1.0.0/colonymind/qualification/runner.py +394 -0
  414. colonymind-1.0.0/colonymind/qualification/schema_cases.py +105 -0
  415. colonymind-1.0.0/colonymind/qualification/screen_contracts.py +151 -0
  416. colonymind-1.0.0/colonymind/qualification/semantic_recall_cases.py +100 -0
  417. colonymind-1.0.0/colonymind/qualification/semantic_recall_host.py +186 -0
  418. colonymind-1.0.0/colonymind/qualification/structured_cases.py +131 -0
  419. colonymind-1.0.0/colonymind/qualification/vision_cases.py +70 -0
  420. colonymind-1.0.0/colonymind/recall_cli.py +321 -0
  421. colonymind-1.0.0/colonymind/redact/__init__.py +179 -0
  422. colonymind-1.0.0/colonymind/removed_settings.py +112 -0
  423. colonymind-1.0.0/colonymind/reports/__init__.py +7 -0
  424. colonymind-1.0.0/colonymind/reports/arms.py +229 -0
  425. colonymind-1.0.0/colonymind/reports/bench.py +454 -0
  426. colonymind-1.0.0/colonymind/reports/claims.py +175 -0
  427. colonymind-1.0.0/colonymind/reports/cli.py +187 -0
  428. colonymind-1.0.0/colonymind/reports/faculties.py +1070 -0
  429. colonymind-1.0.0/colonymind/reports/hands.py +51 -0
  430. colonymind-1.0.0/colonymind/reports/instance.py +331 -0
  431. colonymind-1.0.0/colonymind/reports/instinct.py +356 -0
  432. colonymind-1.0.0/colonymind/reports/plasticity.py +319 -0
  433. colonymind-1.0.0/colonymind/reports/registry.py +122 -0
  434. colonymind-1.0.0/colonymind/reports/senses.py +68 -0
  435. colonymind-1.0.0/colonymind/reports/text.py +152 -0
  436. colonymind-1.0.0/colonymind/reports/usage.py +170 -0
  437. colonymind-1.0.0/colonymind/reports/work.py +38 -0
  438. colonymind-1.0.0/colonymind/reports/working_memory.py +114 -0
  439. colonymind-1.0.0/colonymind/resources.py +44 -0
  440. colonymind-1.0.0/colonymind/router/__init__.py +17 -0
  441. colonymind-1.0.0/colonymind/router/complexity_scorer.py +137 -0
  442. colonymind-1.0.0/colonymind/router/endpoints.py +156 -0
  443. colonymind-1.0.0/colonymind/router/fallback.py +58 -0
  444. colonymind-1.0.0/colonymind/router/functions.py +320 -0
  445. colonymind-1.0.0/colonymind/router/router.py +840 -0
  446. colonymind-1.0.0/colonymind/router/tiers.py +677 -0
  447. colonymind-1.0.0/colonymind/router/tokens.py +45 -0
  448. colonymind-1.0.0/colonymind/runtime_logging.py +195 -0
  449. colonymind-1.0.0/colonymind/scope_bounds.py +7 -0
  450. colonymind-1.0.0/colonymind/secrets/__init__.py +17 -0
  451. colonymind-1.0.0/colonymind/secrets/claims.py +139 -0
  452. colonymind-1.0.0/colonymind/secrets/cli.py +185 -0
  453. colonymind-1.0.0/colonymind/secrets/config.py +133 -0
  454. colonymind-1.0.0/colonymind/secrets/detect.py +21 -0
  455. colonymind-1.0.0/colonymind/secrets/migrate.py +635 -0
  456. colonymind-1.0.0/colonymind/secrets/refs.py +59 -0
  457. colonymind-1.0.0/colonymind/secrets/saved_login.py +80 -0
  458. colonymind-1.0.0/colonymind/secrets/seal.py +448 -0
  459. colonymind-1.0.0/colonymind/secrets/vault.py +482 -0
  460. colonymind-1.0.0/colonymind/self_model/__init__.py +10 -0
  461. colonymind-1.0.0/colonymind/self_model/appraisals.py +1019 -0
  462. colonymind-1.0.0/colonymind/self_model/brief.py +36 -0
  463. colonymind-1.0.0/colonymind/self_model/expectations.py +1457 -0
  464. colonymind-1.0.0/colonymind/self_model/journal.py +119 -0
  465. colonymind-1.0.0/colonymind/self_model/judgments.py +1253 -0
  466. colonymind-1.0.0/colonymind/self_model/perspective.py +200 -0
  467. colonymind-1.0.0/colonymind/self_model/reply_forecasts.py +449 -0
  468. colonymind-1.0.0/colonymind/self_model/runtime_forecasts.py +35 -0
  469. colonymind-1.0.0/colonymind/self_model/store.py +618 -0
  470. colonymind-1.0.0/colonymind/self_model/task_assessments.py +14 -0
  471. colonymind-1.0.0/colonymind/server.py +744 -0
  472. colonymind-1.0.0/colonymind/services/__init__.py +1 -0
  473. colonymind-1.0.0/colonymind/services/instance.py +487 -0
  474. colonymind-1.0.0/colonymind/session_archive/__init__.py +1 -0
  475. colonymind-1.0.0/colonymind/session_archive/reparent.py +424 -0
  476. colonymind-1.0.0/colonymind/session_archive/store.py +547 -0
  477. colonymind-1.0.0/colonymind/setup.py +181 -0
  478. colonymind-1.0.0/colonymind/telemetry.py +150 -0
  479. colonymind-1.0.0/colonymind/turns/__init__.py +17 -0
  480. colonymind-1.0.0/colonymind/turns/audio.py +156 -0
  481. colonymind-1.0.0/colonymind/turns/board_observations.py +73 -0
  482. colonymind-1.0.0/colonymind/turns/claim_keys.py +170 -0
  483. colonymind-1.0.0/colonymind/turns/documents.py +239 -0
  484. colonymind-1.0.0/colonymind/turns/erasure_hooks.py +28 -0
  485. colonymind-1.0.0/colonymind/turns/executions.py +265 -0
  486. colonymind-1.0.0/colonymind/turns/hermes_history.py +248 -0
  487. colonymind-1.0.0/colonymind/turns/hermes_work.py +95 -0
  488. colonymind-1.0.0/colonymind/turns/history_references.py +51 -0
  489. colonymind-1.0.0/colonymind/turns/idempotency.py +1387 -0
  490. colonymind-1.0.0/colonymind/turns/keywords.py +216 -0
  491. colonymind-1.0.0/colonymind/turns/media.py +671 -0
  492. colonymind-1.0.0/colonymind/turns/media_names.py +30 -0
  493. colonymind-1.0.0/colonymind/turns/observed.py +415 -0
  494. colonymind-1.0.0/colonymind/turns/projection_backlog.py +117 -0
  495. colonymind-1.0.0/colonymind/turns/reported_workers.py +196 -0
  496. colonymind-1.0.0/colonymind/turns/source_annotations.py +365 -0
  497. colonymind-1.0.0/colonymind/turns/source_attribution.py +170 -0
  498. colonymind-1.0.0/colonymind/turns/source_channels.py +88 -0
  499. colonymind-1.0.0/colonymind/turns/source_read.py +406 -0
  500. colonymind-1.0.0/colonymind/turns/source_replies.py +132 -0
  501. colonymind-1.0.0/colonymind/turns/source_vectors.py +506 -0
  502. colonymind-1.0.0/colonymind/turns/video.py +210 -0
  503. colonymind-1.0.0/colonymind/twin/__init__.py +7 -0
  504. colonymind-1.0.0/colonymind/twin/cli.py +231 -0
  505. colonymind-1.0.0/colonymind/twin/config.py +164 -0
  506. colonymind-1.0.0/colonymind/twin/primary.py +553 -0
  507. colonymind-1.0.0/colonymind/twin/segment.py +127 -0
  508. colonymind-1.0.0/colonymind/twin/source.py +361 -0
  509. colonymind-1.0.0/colonymind/twin/standby.py +587 -0
  510. colonymind-1.0.0/colonymind/twin/transport.py +152 -0
  511. colonymind-1.0.0/colonymind/twin/trees.py +258 -0
  512. colonymind-1.0.0/colonymind/twin/wal.py +136 -0
  513. colonymind-1.0.0/colonymind/usage.py +647 -0
  514. colonymind-1.0.0/colonymind/util/instance.py +39 -0
  515. colonymind-1.0.0/colonymind/util/model_output.py +25 -0
  516. colonymind-1.0.0/colonymind/util/session_safety.py +38 -0
  517. colonymind-1.0.0/colonymind/util/state_access.py +41 -0
  518. colonymind-1.0.0/colonymind/util/temporal.py +446 -0
  519. colonymind-1.0.0/colonymind/vector/__init__.py +64 -0
  520. colonymind-1.0.0/colonymind/vector/backfill.py +171 -0
  521. colonymind-1.0.0/colonymind/vector/caption.py +114 -0
  522. colonymind-1.0.0/colonymind/vector/collections.py +51 -0
  523. colonymind-1.0.0/colonymind/vector/compaction.py +276 -0
  524. colonymind-1.0.0/colonymind/vector/config.py +88 -0
  525. colonymind-1.0.0/colonymind/vector/embedder.py +662 -0
  526. colonymind-1.0.0/colonymind/vector/http_client.py +152 -0
  527. colonymind-1.0.0/colonymind/vector/image_preprocess.py +459 -0
  528. colonymind-1.0.0/colonymind/vector/image_store.py +271 -0
  529. colonymind-1.0.0/colonymind/vector/indexes.py +219 -0
  530. colonymind-1.0.0/colonymind/vector/local_embedder.py +331 -0
  531. colonymind-1.0.0/colonymind/vector/migrate.py +308 -0
  532. colonymind-1.0.0/colonymind/vector/multimodal_provider.py +393 -0
  533. colonymind-1.0.0/colonymind/vector/multimodal_types.py +59 -0
  534. colonymind-1.0.0/colonymind/vector/openai_provider.py +159 -0
  535. colonymind-1.0.0/colonymind/vector/query.py +26 -0
  536. colonymind-1.0.0/colonymind/vector/reranker.py +443 -0
  537. colonymind-1.0.0/colonymind/vector/safety_image.py +159 -0
  538. colonymind-1.0.0/colonymind/vector/scanner.py +197 -0
  539. colonymind-1.0.0/colonymind/vector/store.py +796 -0
  540. colonymind-1.0.0/colonymind/vector/tiers.py +263 -0
  541. colonymind-1.0.0/colonymind/work/__init__.py +72 -0
  542. colonymind-1.0.0/colonymind/work/__main__.py +5 -0
  543. colonymind-1.0.0/colonymind/work/digest.py +13 -0
  544. colonymind-1.0.0/colonymind/work/hands.py +49 -0
  545. colonymind-1.0.0/colonymind/work/hermes_jobs.py +237 -0
  546. colonymind-1.0.0/colonymind/work/ledger.py +229 -0
  547. colonymind-1.0.0/colonymind/work/models.py +134 -0
  548. colonymind-1.0.0/colonymind/work/night.py +107 -0
  549. colonymind-1.0.0/colonymind/work/schema/work-envelope.json +560 -0
  550. colonymind-1.0.0/colonymind/work/schema/work-event.json +602 -0
  551. colonymind-1.0.0/colonymind/work/schema/work-status.json +35 -0
  552. colonymind-1.0.0/colonymind/work/schema/work-titles.json +44 -0
  553. colonymind-1.0.0/colonymind/work/store.py +714 -0
  554. colonymind-1.0.0/colonymind/work/verdicts.py +209 -0
  555. colonymind-1.0.0/colonymind/work/verification.py +87 -0
  556. colonymind-1.0.0/colonymind.egg-info/PKG-INFO +110 -0
  557. colonymind-1.0.0/colonymind.egg-info/SOURCES.txt +1325 -0
  558. colonymind-1.0.0/colonymind.egg-info/dependency_links.txt +1 -0
  559. colonymind-1.0.0/colonymind.egg-info/entry_points.txt +3 -0
  560. colonymind-1.0.0/colonymind.egg-info/requires.txt +42 -0
  561. colonymind-1.0.0/colonymind.egg-info/top_level.txt +3 -0
  562. colonymind-1.0.0/colonymind_hand_context/__init__.py +20 -0
  563. colonymind-1.0.0/colonymind_shared/__init__.py +1 -0
  564. colonymind-1.0.0/colonymind_shared/effects.py +490 -0
  565. colonymind-1.0.0/colonymind_shared/host_owner.py +102 -0
  566. colonymind-1.0.0/colonymind_shared/midturn.py +193 -0
  567. colonymind-1.0.0/colonymind_shared/secret_detection.py +285 -0
  568. colonymind-1.0.0/colonymind_shared/turn_bindings.py +84 -0
  569. colonymind-1.0.0/colonymind_shared/write_origin.py +18 -0
  570. colonymind-1.0.0/pyproject.toml +78 -0
  571. colonymind-1.0.0/setup.cfg +4 -0
  572. colonymind-1.0.0/tests/test_affect.py +246 -0
  573. colonymind-1.0.0/tests/test_agent_activity.py +351 -0
  574. colonymind-1.0.0/tests/test_agent_clock_line.py +102 -0
  575. colonymind-1.0.0/tests/test_agent_mailbox.py +610 -0
  576. colonymind-1.0.0/tests/test_agent_snapshot.py +162 -0
  577. colonymind-1.0.0/tests/test_allow_proposals.py +140 -0
  578. colonymind-1.0.0/tests/test_anchor_sycon.py +151 -0
  579. colonymind-1.0.0/tests/test_answer_credential.py +176 -0
  580. colonymind-1.0.0/tests/test_answer_source_lineage.py +198 -0
  581. colonymind-1.0.0/tests/test_answer_tripwire.py +128 -0
  582. colonymind-1.0.0/tests/test_appraisal_incident_decisions.py +203 -0
  583. colonymind-1.0.0/tests/test_appraisal_outcomes.py +474 -0
  584. colonymind-1.0.0/tests/test_appraisal_revision_routing.py +140 -0
  585. colonymind-1.0.0/tests/test_approval_history.py +403 -0
  586. colonymind-1.0.0/tests/test_approval_history_hands.py +156 -0
  587. colonymind-1.0.0/tests/test_approve_required.py +320 -0
  588. colonymind-1.0.0/tests/test_ask_answer_recovery.py +182 -0
  589. colonymind-1.0.0/tests/test_ask_answer_words.py +119 -0
  590. colonymind-1.0.0/tests/test_ask_answers_binding.py +701 -0
  591. colonymind-1.0.0/tests/test_ask_answers_reader.py +514 -0
  592. colonymind-1.0.0/tests/test_ask_answers_threats.py +226 -0
  593. colonymind-1.0.0/tests/test_ask_messages.py +566 -0
  594. colonymind-1.0.0/tests/test_ask_pause.py +388 -0
  595. colonymind-1.0.0/tests/test_ask_pause_replay.py +79 -0
  596. colonymind-1.0.0/tests/test_ask_show_words.py +41 -0
  597. colonymind-1.0.0/tests/test_ask_verdicts.py +374 -0
  598. colonymind-1.0.0/tests/test_asks_report.py +370 -0
  599. colonymind-1.0.0/tests/test_atlas.py +627 -0
  600. colonymind-1.0.0/tests/test_audit_cleanup.py +132 -0
  601. colonymind-1.0.0/tests/test_auth.py +182 -0
  602. colonymind-1.0.0/tests/test_auth_coverage.py +61 -0
  603. colonymind-1.0.0/tests/test_authz_scope_api.py +96 -0
  604. colonymind-1.0.0/tests/test_backup.py +322 -0
  605. colonymind-1.0.0/tests/test_behaviour_learner.py +667 -0
  606. colonymind-1.0.0/tests/test_behaviour_measurement.py +383 -0
  607. colonymind-1.0.0/tests/test_bind_auth_guard.py +52 -0
  608. colonymind-1.0.0/tests/test_board_observations.py +43 -0
  609. colonymind-1.0.0/tests/test_build_stamp.py +565 -0
  610. colonymind-1.0.0/tests/test_build_workflow.py +184 -0
  611. colonymind-1.0.0/tests/test_cadence_words.py +242 -0
  612. colonymind-1.0.0/tests/test_cancelled_poll.py +52 -0
  613. colonymind-1.0.0/tests/test_canonical_memory_recent.py +399 -0
  614. colonymind-1.0.0/tests/test_canonical_memory_search.py +290 -0
  615. colonymind-1.0.0/tests/test_canonical_scoped_context.py +175 -0
  616. colonymind-1.0.0/tests/test_canonical_source_read.py +206 -0
  617. colonymind-1.0.0/tests/test_capture_backlog.py +51 -0
  618. colonymind-1.0.0/tests/test_ci_lint_scope.py +30 -0
  619. colonymind-1.0.0/tests/test_ci_skips.py +263 -0
  620. colonymind-1.0.0/tests/test_ci_version_tests.py +28 -0
  621. colonymind-1.0.0/tests/test_cleanup_regressions.py +42 -0
  622. colonymind-1.0.0/tests/test_cleanup_small_duplicates.py +256 -0
  623. colonymind-1.0.0/tests/test_colonymind_compat.py +60 -0
  624. colonymind-1.0.0/tests/test_colonymind_memory_checkpoint_participant.py +176 -0
  625. colonymind-1.0.0/tests/test_colonymind_memory_provider.py +1565 -0
  626. colonymind-1.0.0/tests/test_colonymind_memory_unchanged_sections.py +97 -0
  627. colonymind-1.0.0/tests/test_commitment_between_others.py +193 -0
  628. colonymind-1.0.0/tests/test_commitment_cadence_cancel.py +221 -0
  629. colonymind-1.0.0/tests/test_commitment_capture_budget.py +148 -0
  630. colonymind-1.0.0/tests/test_commitment_capture_safety.py +926 -0
  631. colonymind-1.0.0/tests/test_commitment_due_phrase.py +74 -0
  632. colonymind-1.0.0/tests/test_commitment_first_mention_hold.py +96 -0
  633. colonymind-1.0.0/tests/test_commitment_message_request.py +510 -0
  634. colonymind-1.0.0/tests/test_commitment_one_matter.py +684 -0
  635. colonymind-1.0.0/tests/test_commitment_patch_offloop.py +95 -0
  636. colonymind-1.0.0/tests/test_commitment_resolution.py +356 -0
  637. colonymind-1.0.0/tests/test_commitment_resolution_capture.py +601 -0
  638. colonymind-1.0.0/tests/test_commitment_resolution_downgrade.py +106 -0
  639. colonymind-1.0.0/tests/test_commitment_resolution_schema.py +472 -0
  640. colonymind-1.0.0/tests/test_commitment_work.py +97 -0
  641. colonymind-1.0.0/tests/test_commitments.py +272 -0
  642. colonymind-1.0.0/tests/test_comms_curated_fence.py +168 -0
  643. colonymind-1.0.0/tests/test_comms_erasure_snapshot.py +117 -0
  644. colonymind-1.0.0/tests/test_comms_metadata_composed.py +109 -0
  645. colonymind-1.0.0/tests/test_comms_recent_snapshot.py +137 -0
  646. colonymind-1.0.0/tests/test_comms_source_erasure.py +257 -0
  647. colonymind-1.0.0/tests/test_compound_claim_corrections.py +152 -0
  648. colonymind-1.0.0/tests/test_config.py +451 -0
  649. colonymind-1.0.0/tests/test_configured_names.py +76 -0
  650. colonymind-1.0.0/tests/test_contact_digest.py +110 -0
  651. colonymind-1.0.0/tests/test_contact_refresh.py +276 -0
  652. colonymind-1.0.0/tests/test_contact_timezone.py +63 -0
  653. colonymind-1.0.0/tests/test_contact_turn_owner_items.py +69 -0
  654. colonymind-1.0.0/tests/test_contacts_intro.py +135 -0
  655. colonymind-1.0.0/tests/test_contacts_persistence.py +96 -0
  656. colonymind-1.0.0/tests/test_container_quickstart.py +1077 -0
  657. colonymind-1.0.0/tests/test_context_caps.py +170 -0
  658. colonymind-1.0.0/tests/test_context_card.py +632 -0
  659. colonymind-1.0.0/tests/test_context_card_review.py +460 -0
  660. colonymind-1.0.0/tests/test_context_compass.py +1037 -0
  661. colonymind-1.0.0/tests/test_context_packet.py +313 -0
  662. colonymind-1.0.0/tests/test_contradiction_keys.py +410 -0
  663. colonymind-1.0.0/tests/test_conversation_source_context.py +280 -0
  664. colonymind-1.0.0/tests/test_credential_attribution.py +391 -0
  665. colonymind-1.0.0/tests/test_credential_grants.py +407 -0
  666. colonymind-1.0.0/tests/test_credential_incident.py +195 -0
  667. colonymind-1.0.0/tests/test_credential_migration.py +247 -0
  668. colonymind-1.0.0/tests/test_credential_terminal_owner.py +69 -0
  669. colonymind-1.0.0/tests/test_credential_upgrade_110.py +153 -0
  670. colonymind-1.0.0/tests/test_curated_erasure_feed.py +186 -0
  671. colonymind-1.0.0/tests/test_curated_fence_batch.py +100 -0
  672. colonymind-1.0.0/tests/test_curated_memory.py +401 -0
  673. colonymind-1.0.0/tests/test_curated_memory_loud_fail_open.py +243 -0
  674. colonymind-1.0.0/tests/test_curated_memory_review.py +385 -0
  675. colonymind-1.0.0/tests/test_curated_read_races.py +198 -0
  676. colonymind-1.0.0/tests/test_curated_reader_audit.py +194 -0
  677. colonymind-1.0.0/tests/test_curated_source_forget.py +245 -0
  678. colonymind-1.0.0/tests/test_current_work_recall_selection.py +235 -0
  679. colonymind-1.0.0/tests/test_daemon_lifecycle.py +79 -0
  680. colonymind-1.0.0/tests/test_decision_role_fixture.py +95 -0
  681. colonymind-1.0.0/tests/test_decisions.py +260 -0
  682. colonymind-1.0.0/tests/test_decisions_wiring.py +431 -0
  683. colonymind-1.0.0/tests/test_demo.py +373 -0
  684. colonymind-1.0.0/tests/test_dependencies.py +80 -0
  685. colonymind-1.0.0/tests/test_dev_mode_loopback.py +130 -0
  686. colonymind-1.0.0/tests/test_device_boundary.py +256 -0
  687. colonymind-1.0.0/tests/test_device_capabilities.py +461 -0
  688. colonymind-1.0.0/tests/test_devtools.py +331 -0
  689. colonymind-1.0.0/tests/test_digest_clock.py +113 -0
  690. colonymind-1.0.0/tests/test_digest_grounding.py +553 -0
  691. colonymind-1.0.0/tests/test_digest_ux.py +506 -0
  692. colonymind-1.0.0/tests/test_digest_ux_r2.py +453 -0
  693. colonymind-1.0.0/tests/test_digest_ux_r3.py +159 -0
  694. colonymind-1.0.0/tests/test_digest_ux_r4.py +173 -0
  695. colonymind-1.0.0/tests/test_doc_links.py +227 -0
  696. colonymind-1.0.0/tests/test_docs_approvals.py +643 -0
  697. colonymind-1.0.0/tests/test_docs_structure.py +365 -0
  698. colonymind-1.0.0/tests/test_doctor.py +327 -0
  699. colonymind-1.0.0/tests/test_doctor_dependencies.py +44 -0
  700. colonymind-1.0.0/tests/test_doctor_guest_lanes.py +95 -0
  701. colonymind-1.0.0/tests/test_doctor_owner_lanes.py +161 -0
  702. colonymind-1.0.0/tests/test_document_memory_guard.py +254 -0
  703. colonymind-1.0.0/tests/test_embedding_generations.py +481 -0
  704. colonymind-1.0.0/tests/test_embedding_identity_split.py +75 -0
  705. colonymind-1.0.0/tests/test_embedding_query_path.py +227 -0
  706. colonymind-1.0.0/tests/test_ensure_channel_id.py +128 -0
  707. colonymind-1.0.0/tests/test_environment_names.py +29 -0
  708. colonymind-1.0.0/tests/test_erasure_closure_cost.py +95 -0
  709. colonymind-1.0.0/tests/test_event_broadcasts.py +50 -0
  710. colonymind-1.0.0/tests/test_event_stream_reliability.py +200 -0
  711. colonymind-1.0.0/tests/test_evidence_chart.py +114 -0
  712. colonymind-1.0.0/tests/test_examples.py +23 -0
  713. colonymind-1.0.0/tests/test_execution_retirement.py +84 -0
  714. colonymind-1.0.0/tests/test_expectations.py +376 -0
  715. colonymind-1.0.0/tests/test_expectations_v2.py +359 -0
  716. colonymind-1.0.0/tests/test_faculty_defaults.py +49 -0
  717. colonymind-1.0.0/tests/test_feed_idea_association.py +272 -0
  718. colonymind-1.0.0/tests/test_feedback.py +131 -0
  719. colonymind-1.0.0/tests/test_fidelity_context_suite.py +353 -0
  720. colonymind-1.0.0/tests/test_fidelity_suites.py +363 -0
  721. colonymind-1.0.0/tests/test_followup_plans.py +39 -0
  722. colonymind-1.0.0/tests/test_forecast_learning.py +145 -0
  723. colonymind-1.0.0/tests/test_forget_fix10.py +178 -0
  724. colonymind-1.0.0/tests/test_forget_fix11.py +305 -0
  725. colonymind-1.0.0/tests/test_forget_fix11b.py +269 -0
  726. colonymind-1.0.0/tests/test_forget_fix6.py +276 -0
  727. colonymind-1.0.0/tests/test_forget_fix7.py +156 -0
  728. colonymind-1.0.0/tests/test_forget_fix8.py +529 -0
  729. colonymind-1.0.0/tests/test_forget_fix9.py +214 -0
  730. colonymind-1.0.0/tests/test_front_pages.py +479 -0
  731. colonymind-1.0.0/tests/test_front_pages_init.py +77 -0
  732. colonymind-1.0.0/tests/test_function_routing.py +865 -0
  733. colonymind-1.0.0/tests/test_function_usage_charged.py +142 -0
  734. colonymind-1.0.0/tests/test_genericity_publication.py +70 -0
  735. colonymind-1.0.0/tests/test_genericity_scan.py +139 -0
  736. colonymind-1.0.0/tests/test_grounded_ideas.py +580 -0
  737. colonymind-1.0.0/tests/test_grounded_ideas_commitments.py +881 -0
  738. colonymind-1.0.0/tests/test_hand_ask_origin.py +102 -0
  739. colonymind-1.0.0/tests/test_hand_ask_origin_failures.py +65 -0
  740. colonymind-1.0.0/tests/test_hand_ask_origin_retention.py +73 -0
  741. colonymind-1.0.0/tests/test_hands_admission.py +43 -0
  742. colonymind-1.0.0/tests/test_hands_answer_resume.py +130 -0
  743. colonymind-1.0.0/tests/test_hands_ask_deadline.py +41 -0
  744. colonymind-1.0.0/tests/test_hands_authority_integrator.py +60 -0
  745. colonymind-1.0.0/tests/test_hands_authority_plugin.py +493 -0
  746. colonymind-1.0.0/tests/test_hands_authority_sessions.py +78 -0
  747. colonymind-1.0.0/tests/test_hands_auto_resume_effect.py +258 -0
  748. colonymind-1.0.0/tests/test_hands_brief.py +121 -0
  749. colonymind-1.0.0/tests/test_hands_brief_boundaries.py +211 -0
  750. colonymind-1.0.0/tests/test_hands_cleanup_limits.py +316 -0
  751. colonymind-1.0.0/tests/test_hands_companion_contract.py +272 -0
  752. colonymind-1.0.0/tests/test_hands_controller.py +438 -0
  753. colonymind-1.0.0/tests/test_hands_definition_queue.py +145 -0
  754. colonymind-1.0.0/tests/test_hands_definitions.py +351 -0
  755. colonymind-1.0.0/tests/test_hands_empty_poll.py +67 -0
  756. colonymind-1.0.0/tests/test_hands_evidence.py +49 -0
  757. colonymind-1.0.0/tests/test_hands_evidence_bindings.py +110 -0
  758. colonymind-1.0.0/tests/test_hands_evidence_regressions.py +59 -0
  759. colonymind-1.0.0/tests/test_hands_evidence_runner.py +107 -0
  760. colonymind-1.0.0/tests/test_hands_faculty_reload.py +60 -0
  761. colonymind-1.0.0/tests/test_hands_front_routes.py +127 -0
  762. colonymind-1.0.0/tests/test_hands_held_permits.py +123 -0
  763. colonymind-1.0.0/tests/test_hands_hold_replacement.py +136 -0
  764. colonymind-1.0.0/tests/test_hands_limits_upgrade_fixes.py +167 -0
  765. colonymind-1.0.0/tests/test_hands_notices.py +39 -0
  766. colonymind-1.0.0/tests/test_hands_obligations.py +59 -0
  767. colonymind-1.0.0/tests/test_hands_permit_answers.py +818 -0
  768. colonymind-1.0.0/tests/test_hands_permits.py +452 -0
  769. colonymind-1.0.0/tests/test_hands_plan_refusal.py +32 -0
  770. colonymind-1.0.0/tests/test_hands_provenance.py +337 -0
  771. colonymind-1.0.0/tests/test_hands_provenance_capture.py +150 -0
  772. colonymind-1.0.0/tests/test_hands_provenance_lifecycle.py +100 -0
  773. colonymind-1.0.0/tests/test_hands_queue_eligibility.py +76 -0
  774. colonymind-1.0.0/tests/test_hands_review_regressions.py +86 -0
  775. colonymind-1.0.0/tests/test_hands_seam.py +666 -0
  776. colonymind-1.0.0/tests/test_hands_wave1_wiring.py +269 -0
  777. colonymind-1.0.0/tests/test_health_build_note.py +121 -0
  778. colonymind-1.0.0/tests/test_health_problems.py +56 -0
  779. colonymind-1.0.0/tests/test_held_back_retirement.py +61 -0
  780. colonymind-1.0.0/tests/test_hermes_history_import.py +163 -0
  781. colonymind-1.0.0/tests/test_hermes_plugin_contract.py +86 -0
  782. colonymind-1.0.0/tests/test_hermes_versions.py +181 -0
  783. colonymind-1.0.0/tests/test_hermes_work_projection.py +90 -0
  784. colonymind-1.0.0/tests/test_host_identity_capture.py +131 -0
  785. colonymind-1.0.0/tests/test_host_identity_parity.py +184 -0
  786. colonymind-1.0.0/tests/test_host_identity_policy.py +245 -0
  787. colonymind-1.0.0/tests/test_host_journal_offloop.py +193 -0
  788. colonymind-1.0.0/tests/test_host_owner_turn.py +300 -0
  789. colonymind-1.0.0/tests/test_host_stances.py +115 -0
  790. colonymind-1.0.0/tests/test_ideas_contract.py +317 -0
  791. colonymind-1.0.0/tests/test_ideas_review_3.py +191 -0
  792. colonymind-1.0.0/tests/test_identity_constitution.py +246 -0
  793. colonymind-1.0.0/tests/test_identity_continuity.py +73 -0
  794. colonymind-1.0.0/tests/test_identity_corrections.py +172 -0
  795. colonymind-1.0.0/tests/test_image_source_loading.py +195 -0
  796. colonymind-1.0.0/tests/test_inference_pool_config.py +92 -0
  797. colonymind-1.0.0/tests/test_inference_pool_scheduler.py +364 -0
  798. colonymind-1.0.0/tests/test_inference_pool_server.py +758 -0
  799. colonymind-1.0.0/tests/test_init.py +512 -0
  800. colonymind-1.0.0/tests/test_init_honest.py +621 -0
  801. colonymind-1.0.0/tests/test_init_local_embedder.py +316 -0
  802. colonymind-1.0.0/tests/test_initial_work_context.py +87 -0
  803. colonymind-1.0.0/tests/test_initiative_feedback.py +170 -0
  804. colonymind-1.0.0/tests/test_initiative_ideas.py +529 -0
  805. colonymind-1.0.0/tests/test_initiative_integration.py +133 -0
  806. colonymind-1.0.0/tests/test_initiative_responses.py +109 -0
  807. colonymind-1.0.0/tests/test_initiative_retry.py +75 -0
  808. colonymind-1.0.0/tests/test_initiative_store.py +469 -0
  809. colonymind-1.0.0/tests/test_input_json_depth.py +41 -0
  810. colonymind-1.0.0/tests/test_input_source_lineage.py +113 -0
  811. colonymind-1.0.0/tests/test_installer_discovery.py +204 -0
  812. colonymind-1.0.0/tests/test_installer_scripts.py +41 -0
  813. colonymind-1.0.0/tests/test_instance_http_readiness.py +44 -0
  814. colonymind-1.0.0/tests/test_instance_service.py +314 -0
  815. colonymind-1.0.0/tests/test_instance_service_live.py +118 -0
  816. colonymind-1.0.0/tests/test_instinct_ask_answer.py +921 -0
  817. colonymind-1.0.0/tests/test_instinct_bakeoff.py +1224 -0
  818. colonymind-1.0.0/tests/test_instinct_compare.py +257 -0
  819. colonymind-1.0.0/tests/test_instinct_core.py +741 -0
  820. colonymind-1.0.0/tests/test_instinct_cutover.py +493 -0
  821. colonymind-1.0.0/tests/test_instinct_external.py +169 -0
  822. colonymind-1.0.0/tests/test_instinct_fit.py +1243 -0
  823. colonymind-1.0.0/tests/test_instinct_gates_route.py +355 -0
  824. colonymind-1.0.0/tests/test_instinct_letter_readout.py +285 -0
  825. colonymind-1.0.0/tests/test_instinct_lineage.py +541 -0
  826. colonymind-1.0.0/tests/test_instinct_loaders_w3.py +361 -0
  827. colonymind-1.0.0/tests/test_instinct_logits.py +578 -0
  828. colonymind-1.0.0/tests/test_instinct_outcomes.py +978 -0
  829. colonymind-1.0.0/tests/test_instinct_points.py +730 -0
  830. colonymind-1.0.0/tests/test_instinct_reader_chat.py +159 -0
  831. colonymind-1.0.0/tests/test_instinct_surfaces.py +186 -0
  832. colonymind-1.0.0/tests/test_intelligence_components.py +144 -0
  833. colonymind-1.0.0/tests/test_job_watch_io.py +223 -0
  834. colonymind-1.0.0/tests/test_jobwatch.py +795 -0
  835. colonymind-1.0.0/tests/test_jobwatch_activity.py +258 -0
  836. colonymind-1.0.0/tests/test_jobwatch_delivery.py +269 -0
  837. colonymind-1.0.0/tests/test_jobwatch_delivery_order.py +242 -0
  838. colonymind-1.0.0/tests/test_jobwatch_fetch_live.py +125 -0
  839. colonymind-1.0.0/tests/test_jobwatch_notice_cleanup.py +152 -0
  840. colonymind-1.0.0/tests/test_jobwatch_residual_fixes.py +137 -0
  841. colonymind-1.0.0/tests/test_jobwatch_review_fixes.py +126 -0
  842. colonymind-1.0.0/tests/test_journal.py +306 -0
  843. colonymind-1.0.0/tests/test_keyword_index_merge.py +136 -0
  844. colonymind-1.0.0/tests/test_knowledge_update_set.py +364 -0
  845. colonymind-1.0.0/tests/test_learning_lessons.py +446 -0
  846. colonymind-1.0.0/tests/test_learning_rules.py +691 -0
  847. colonymind-1.0.0/tests/test_ledger_read_snapshots.py +184 -0
  848. colonymind-1.0.0/tests/test_ledger_reader_lifetime.py +46 -0
  849. colonymind-1.0.0/tests/test_ledger_reader_regressions.py +138 -0
  850. colonymind-1.0.0/tests/test_lesson_match.py +723 -0
  851. colonymind-1.0.0/tests/test_local_embedder.py +605 -0
  852. colonymind-1.0.0/tests/test_local_first_import.py +63 -0
  853. colonymind-1.0.0/tests/test_longmemeval_anchor_release_a.py +164 -0
  854. colonymind-1.0.0/tests/test_loop_lag.py +74 -0
  855. colonymind-1.0.0/tests/test_m8_arm_contrasts.py +333 -0
  856. colonymind-1.0.0/tests/test_mcp_endpoint.py +570 -0
  857. colonymind-1.0.0/tests/test_meaning_faculties.py +198 -0
  858. colonymind-1.0.0/tests/test_media_read_reference_presentation.py +75 -0
  859. colonymind-1.0.0/tests/test_memory_cli.py +274 -0
  860. colonymind-1.0.0/tests/test_memory_formation.py +96 -0
  861. colonymind-1.0.0/tests/test_memory_host_predicate.py +48 -0
  862. colonymind-1.0.0/tests/test_memory_identity_acceptance.py +277 -0
  863. colonymind-1.0.0/tests/test_memory_inventory.py +878 -0
  864. colonymind-1.0.0/tests/test_memory_promotion.py +50 -0
  865. colonymind-1.0.0/tests/test_memory_read_hydration.py +39 -0
  866. colonymind-1.0.0/tests/test_memory_response_schemas.py +161 -0
  867. colonymind-1.0.0/tests/test_migration_190.py +227 -0
  868. colonymind-1.0.0/tests/test_migrations.py +175 -0
  869. colonymind-1.0.0/tests/test_mind_affect.py +970 -0
  870. colonymind-1.0.0/tests/test_mind_affect_loop.py +858 -0
  871. colonymind-1.0.0/tests/test_mind_affect_rules.py +125 -0
  872. colonymind-1.0.0/tests/test_mind_allows.py +546 -0
  873. colonymind-1.0.0/tests/test_mind_authority.py +333 -0
  874. colonymind-1.0.0/tests/test_mind_cadence.py +295 -0
  875. colonymind-1.0.0/tests/test_mind_cli.py +195 -0
  876. colonymind-1.0.0/tests/test_mind_compose.py +189 -0
  877. colonymind-1.0.0/tests/test_mind_consolidate.py +1434 -0
  878. colonymind-1.0.0/tests/test_mind_consolidate_thinking.py +147 -0
  879. colonymind-1.0.0/tests/test_mind_contradiction_candidates.py +457 -0
  880. colonymind-1.0.0/tests/test_mind_drift.py +915 -0
  881. colonymind-1.0.0/tests/test_mind_drives.py +469 -0
  882. colonymind-1.0.0/tests/test_mind_drives_loop.py +777 -0
  883. colonymind-1.0.0/tests/test_mind_effects.py +1002 -0
  884. colonymind-1.0.0/tests/test_mind_factory.py +99 -0
  885. colonymind-1.0.0/tests/test_mind_goals_recurring.py +138 -0
  886. colonymind-1.0.0/tests/test_mind_grants.py +480 -0
  887. colonymind-1.0.0/tests/test_mind_heartbeat.py +49 -0
  888. colonymind-1.0.0/tests/test_mind_interest_settled.py +152 -0
  889. colonymind-1.0.0/tests/test_mind_lessons.py +534 -0
  890. colonymind-1.0.0/tests/test_mind_lessons_loop.py +95 -0
  891. colonymind-1.0.0/tests/test_mind_lessons_night.py +775 -0
  892. colonymind-1.0.0/tests/test_mind_lessons_relayed.py +325 -0
  893. colonymind-1.0.0/tests/test_mind_loop.py +1463 -0
  894. colonymind-1.0.0/tests/test_mind_notice.py +698 -0
  895. colonymind-1.0.0/tests/test_mind_observations_api.py +53 -0
  896. colonymind-1.0.0/tests/test_mind_observations_percepts.py +154 -0
  897. colonymind-1.0.0/tests/test_mind_observations_report.py +167 -0
  898. colonymind-1.0.0/tests/test_mind_observations_sources.py +240 -0
  899. colonymind-1.0.0/tests/test_mind_open_questions.py +57 -0
  900. colonymind-1.0.0/tests/test_mind_opinions.py +282 -0
  901. colonymind-1.0.0/tests/test_mind_outreach.py +497 -0
  902. colonymind-1.0.0/tests/test_mind_outreach_lessons.py +95 -0
  903. colonymind-1.0.0/tests/test_mind_outreach_loop.py +603 -0
  904. colonymind-1.0.0/tests/test_mind_outreach_plumbing.py +164 -0
  905. colonymind-1.0.0/tests/test_mind_outreach_reactions.py +1137 -0
  906. colonymind-1.0.0/tests/test_mind_owner_cadence.py +449 -0
  907. colonymind-1.0.0/tests/test_mind_owner_view.py +175 -0
  908. colonymind-1.0.0/tests/test_mind_reactions.py +403 -0
  909. colonymind-1.0.0/tests/test_mind_reflector.py +218 -0
  910. colonymind-1.0.0/tests/test_mind_router_identity.py +223 -0
  911. colonymind-1.0.0/tests/test_mind_skills.py +197 -0
  912. colonymind-1.0.0/tests/test_mind_social.py +744 -0
  913. colonymind-1.0.0/tests/test_mind_task_budgets.py +201 -0
  914. colonymind-1.0.0/tests/test_mind_typed_decisions.py +293 -0
  915. colonymind-1.0.0/tests/test_mind_verification.py +104 -0
  916. colonymind-1.0.0/tests/test_mind_wish_grant.py +781 -0
  917. colonymind-1.0.0/tests/test_mind_wishes.py +890 -0
  918. colonymind-1.0.0/tests/test_mind_wishes_work.py +346 -0
  919. colonymind-1.0.0/tests/test_model_http_keepalive.py +252 -0
  920. colonymind-1.0.0/tests/test_model_qualification_budgets.py +240 -0
  921. colonymind-1.0.0/tests/test_model_qualification_cli.py +125 -0
  922. colonymind-1.0.0/tests/test_model_qualification_memory.py +298 -0
  923. colonymind-1.0.0/tests/test_model_qualification_runner.py +388 -0
  924. colonymind-1.0.0/tests/test_model_qualification_structured.py +153 -0
  925. colonymind-1.0.0/tests/test_model_qualification_vision.py +177 -0
  926. colonymind-1.0.0/tests/test_model_reply_depth.py +76 -0
  927. colonymind-1.0.0/tests/test_model_usage.py +1004 -0
  928. colonymind-1.0.0/tests/test_named_media_locators.py +192 -0
  929. colonymind-1.0.0/tests/test_native_contact_identity.py +15 -0
  930. colonymind-1.0.0/tests/test_native_history_references.py +53 -0
  931. colonymind-1.0.0/tests/test_native_process_work.py +253 -0
  932. colonymind-1.0.0/tests/test_native_request_erasure.py +48 -0
  933. colonymind-1.0.0/tests/test_night_length_retry.py +138 -0
  934. colonymind-1.0.0/tests/test_night_source_language.py +217 -0
  935. colonymind-1.0.0/tests/test_obligation_effects.py +351 -0
  936. colonymind-1.0.0/tests/test_observe_credential.py +373 -0
  937. colonymind-1.0.0/tests/test_observed_conversations.py +596 -0
  938. colonymind-1.0.0/tests/test_operator_test_turns.py +151 -0
  939. colonymind-1.0.0/tests/test_opinion_pass.py +785 -0
  940. colonymind-1.0.0/tests/test_opinions_acceptance.py +412 -0
  941. colonymind-1.0.0/tests/test_opinions_router.py +209 -0
  942. colonymind-1.0.0/tests/test_optout.py +129 -0
  943. colonymind-1.0.0/tests/test_outbox_masking.py +161 -0
  944. colonymind-1.0.0/tests/test_outreach_family_walk.py +388 -0
  945. colonymind-1.0.0/tests/test_owner_actions.py +104 -0
  946. colonymind-1.0.0/tests/test_owner_cadence_authority_expiry.py +115 -0
  947. colonymind-1.0.0/tests/test_owner_cadence_recovery.py +224 -0
  948. colonymind-1.0.0/tests/test_owner_clock_privacy.py +179 -0
  949. colonymind-1.0.0/tests/test_owner_console.py +892 -0
  950. colonymind-1.0.0/tests/test_owner_continuity.py +259 -0
  951. colonymind-1.0.0/tests/test_owner_continuity_review.py +189 -0
  952. colonymind-1.0.0/tests/test_owner_gate.py +514 -0
  953. colonymind-1.0.0/tests/test_owner_gate_measure.py +31 -0
  954. colonymind-1.0.0/tests/test_owner_gate_mind.py +401 -0
  955. colonymind-1.0.0/tests/test_owner_goal_hub_gate.py +258 -0
  956. colonymind-1.0.0/tests/test_owner_goal_reads.py +430 -0
  957. colonymind-1.0.0/tests/test_owner_goals.py +1887 -0
  958. colonymind-1.0.0/tests/test_owner_location.py +257 -0
  959. colonymind-1.0.0/tests/test_owner_preferences.py +138 -0
  960. colonymind-1.0.0/tests/test_owner_sms.py +150 -0
  961. colonymind-1.0.0/tests/test_p2_wirings.py +43 -0
  962. colonymind-1.0.0/tests/test_paired_history_replay.py +343 -0
  963. colonymind-1.0.0/tests/test_paired_meaning_arms.py +170 -0
  964. colonymind-1.0.0/tests/test_paired_memory_gold.py +226 -0
  965. colonymind-1.0.0/tests/test_paired_people_instrument.py +474 -0
  966. colonymind-1.0.0/tests/test_paired_priors_by_meaning.py +208 -0
  967. colonymind-1.0.0/tests/test_paired_provider_authority.py +140 -0
  968. colonymind-1.0.0/tests/test_paired_rerank_config.py +150 -0
  969. colonymind-1.0.0/tests/test_paired_rescore_citations.py +263 -0
  970. colonymind-1.0.0/tests/test_paired_trace_source_refs.py +78 -0
  971. colonymind-1.0.0/tests/test_partial_work_rendering.py +55 -0
  972. colonymind-1.0.0/tests/test_people_acceptance.py +126 -0
  973. colonymind-1.0.0/tests/test_people_approve_required.py +77 -0
  974. colonymind-1.0.0/tests/test_people_changes.py +539 -0
  975. colonymind-1.0.0/tests/test_people_cli.py +120 -0
  976. colonymind-1.0.0/tests/test_people_family_walk.py +430 -0
  977. colonymind-1.0.0/tests/test_people_router.py +437 -0
  978. colonymind-1.0.0/tests/test_people_store.py +869 -0
  979. colonymind-1.0.0/tests/test_percept_attend.py +113 -0
  980. colonymind-1.0.0/tests/test_plain_scripts.py +166 -0
  981. colonymind-1.0.0/tests/test_plasticity_action_success.py +495 -0
  982. colonymind-1.0.0/tests/test_plasticity_admission.py +399 -0
  983. colonymind-1.0.0/tests/test_plasticity_audience.py +131 -0
  984. colonymind-1.0.0/tests/test_plasticity_builds.py +187 -0
  985. colonymind-1.0.0/tests/test_plasticity_comparator.py +198 -0
  986. colonymind-1.0.0/tests/test_plasticity_contact_reply_timing.py +372 -0
  987. colonymind-1.0.0/tests/test_plasticity_contact_reply_timing_callbacks.py +171 -0
  988. colonymind-1.0.0/tests/test_plasticity_contact_reply_timing_live.py +185 -0
  989. colonymind-1.0.0/tests/test_plasticity_end_to_end.py +110 -0
  990. colonymind-1.0.0/tests/test_plasticity_erasure.py +482 -0
  991. colonymind-1.0.0/tests/test_plasticity_forced.py +43 -0
  992. colonymind-1.0.0/tests/test_plasticity_gates.py +324 -0
  993. colonymind-1.0.0/tests/test_plasticity_ledgers.py +90 -0
  994. colonymind-1.0.0/tests/test_plasticity_lineage.py +114 -0
  995. colonymind-1.0.0/tests/test_plasticity_lock_contention.py +397 -0
  996. colonymind-1.0.0/tests/test_plasticity_loop_responsiveness.py +60 -0
  997. colonymind-1.0.0/tests/test_plasticity_numeric_comparator.py +121 -0
  998. colonymind-1.0.0/tests/test_plasticity_numeric_core.py +154 -0
  999. colonymind-1.0.0/tests/test_plasticity_objectives.py +185 -0
  1000. colonymind-1.0.0/tests/test_plasticity_package.py +41 -0
  1001. colonymind-1.0.0/tests/test_plasticity_query_adapter_driver.py +286 -0
  1002. colonymind-1.0.0/tests/test_plasticity_query_adapter_log.py +175 -0
  1003. colonymind-1.0.0/tests/test_plasticity_query_adapter_math.py +238 -0
  1004. colonymind-1.0.0/tests/test_plasticity_recall_qualify.py +316 -0
  1005. colonymind-1.0.0/tests/test_plasticity_recall_qualify_gates.py +195 -0
  1006. colonymind-1.0.0/tests/test_plasticity_recall_qualify_provider.py +115 -0
  1007. colonymind-1.0.0/tests/test_plasticity_registration.py +141 -0
  1008. colonymind-1.0.0/tests/test_plasticity_reply_timing.py +321 -0
  1009. colonymind-1.0.0/tests/test_plasticity_reply_timing_certificates.py +233 -0
  1010. colonymind-1.0.0/tests/test_plasticity_reply_timing_erasure.py +330 -0
  1011. colonymind-1.0.0/tests/test_plasticity_reply_timing_fixes.py +65 -0
  1012. colonymind-1.0.0/tests/test_plasticity_revisions.py +283 -0
  1013. colonymind-1.0.0/tests/test_plasticity_salience_live.py +488 -0
  1014. colonymind-1.0.0/tests/test_plasticity_salience_numeric.py +239 -0
  1015. colonymind-1.0.0/tests/test_plasticity_salience_runtime.py +234 -0
  1016. colonymind-1.0.0/tests/test_plasticity_salience_seams.py +67 -0
  1017. colonymind-1.0.0/tests/test_plasticity_service_health.py +268 -0
  1018. colonymind-1.0.0/tests/test_plasticity_service_health_nightly.py +75 -0
  1019. colonymind-1.0.0/tests/test_plasticity_service_health_stall.py +299 -0
  1020. colonymind-1.0.0/tests/test_plasticity_sparse_idle.py +505 -0
  1021. colonymind-1.0.0/tests/test_plasticity_states.py +288 -0
  1022. colonymind-1.0.0/tests/test_plasticity_wiring_carry.py +61 -0
  1023. colonymind-1.0.0/tests/test_plasticity_wiring_compaction.py +102 -0
  1024. colonymind-1.0.0/tests/test_plasticity_wiring_live.py +86 -0
  1025. colonymind-1.0.0/tests/test_plasticity_wiring_registration.py +35 -0
  1026. colonymind-1.0.0/tests/test_plasticity_wiring_runtime.py +419 -0
  1027. colonymind-1.0.0/tests/test_plasticity_wiring_seams.py +296 -0
  1028. colonymind-1.0.0/tests/test_plasticity_wiring_shutdown.py +122 -0
  1029. colonymind-1.0.0/tests/test_plasticity_wiring_surfaces.py +140 -0
  1030. colonymind-1.0.0/tests/test_plasticity_withdrawn_rederive.py +375 -0
  1031. colonymind-1.0.0/tests/test_pr_fu_a_confirm.py +134 -0
  1032. colonymind-1.0.0/tests/test_pr_fu_a_digits.py +80 -0
  1033. colonymind-1.0.0/tests/test_pr_fu_a_exact.py +205 -0
  1034. colonymind-1.0.0/tests/test_pr_fu_a_lookup.py +94 -0
  1035. colonymind-1.0.0/tests/test_pr_fu_a_yaml.py +214 -0
  1036. colonymind-1.0.0/tests/test_pr_mind_a1.py +115 -0
  1037. colonymind-1.0.0/tests/test_pr_mind_a3.py +94 -0
  1038. colonymind-1.0.0/tests/test_pr_mind_a4.py +61 -0
  1039. colonymind-1.0.0/tests/test_pr_mind_a5.py +56 -0
  1040. colonymind-1.0.0/tests/test_pr_mind_a6.py +101 -0
  1041. colonymind-1.0.0/tests/test_pr_mind_a8.py +17 -0
  1042. colonymind-1.0.0/tests/test_pr_mind_a9.py +25 -0
  1043. colonymind-1.0.0/tests/test_pr_mind_a9_rows.py +10 -0
  1044. colonymind-1.0.0/tests/test_pr_mind_episode_order.py +42 -0
  1045. colonymind-1.0.0/tests/test_pr_mind_episode_reads.py +83 -0
  1046. colonymind-1.0.0/tests/test_pr_mind_episodes.py +153 -0
  1047. colonymind-1.0.0/tests/test_pr_mind_fallback_admission.py +54 -0
  1048. colonymind-1.0.0/tests/test_pr_mind_fixture_rules.py +17 -0
  1049. colonymind-1.0.0/tests/test_pr_mind_lookup_cost.py +195 -0
  1050. colonymind-1.0.0/tests/test_pr_mind_stage_order.py +73 -0
  1051. colonymind-1.0.0/tests/test_pr_mind_stage_write.py +36 -0
  1052. colonymind-1.0.0/tests/test_pr_mind_summary_order.py +138 -0
  1053. colonymind-1.0.0/tests/test_pr_shell_a1_plain_handlers.py +210 -0
  1054. colonymind-1.0.0/tests/test_pr_shell_a1_turn_sync_offloop.py +402 -0
  1055. colonymind-1.0.0/tests/test_pr_stores_backup.py +768 -0
  1056. colonymind-1.0.0/tests/test_pr_stores_contacts.py +499 -0
  1057. colonymind-1.0.0/tests/test_pr_stores_doctor.py +85 -0
  1058. colonymind-1.0.0/tests/test_pr_stores_forget.py +265 -0
  1059. colonymind-1.0.0/tests/test_pr_stores_provider.py +33 -0
  1060. colonymind-1.0.0/tests/test_procedure_source_context.py +211 -0
  1061. colonymind-1.0.0/tests/test_projection_backlog.py +368 -0
  1062. colonymind-1.0.0/tests/test_provider_clock_line.py +227 -0
  1063. colonymind-1.0.0/tests/test_public_api.py +714 -0
  1064. colonymind-1.0.0/tests/test_public_memory_baselines.py +251 -0
  1065. colonymind-1.0.0/tests/test_public_memory_calibration.py +120 -0
  1066. colonymind-1.0.0/tests/test_public_memory_datasets.py +734 -0
  1067. colonymind-1.0.0/tests/test_public_memory_export.py +746 -0
  1068. colonymind-1.0.0/tests/test_public_memory_judge.py +518 -0
  1069. colonymind-1.0.0/tests/test_public_memory_labels.py +211 -0
  1070. colonymind-1.0.0/tests/test_public_memory_page.py +122 -0
  1071. colonymind-1.0.0/tests/test_public_memory_pipeline.py +108 -0
  1072. colonymind-1.0.0/tests/test_public_memory_reader.py +275 -0
  1073. colonymind-1.0.0/tests/test_public_memory_replay.py +719 -0
  1074. colonymind-1.0.0/tests/test_public_memory_rescore.py +642 -0
  1075. colonymind-1.0.0/tests/test_public_memory_scoring.py +257 -0
  1076. colonymind-1.0.0/tests/test_public_memory_storage.py +239 -0
  1077. colonymind-1.0.0/tests/test_qualification_arm_registry.py +271 -0
  1078. colonymind-1.0.0/tests/test_qualification_authority_incomplete.py +14 -0
  1079. colonymind-1.0.0/tests/test_qualification_benchmark.py +219 -0
  1080. colonymind-1.0.0/tests/test_qualification_body_arms.py +175 -0
  1081. colonymind-1.0.0/tests/test_qualification_body_events.py +465 -0
  1082. colonymind-1.0.0/tests/test_qualification_body_grading.py +437 -0
  1083. colonymind-1.0.0/tests/test_qualification_body_tick.py +187 -0
  1084. colonymind-1.0.0/tests/test_qualification_coding_container.py +120 -0
  1085. colonymind-1.0.0/tests/test_qualification_coding_effects.py +177 -0
  1086. colonymind-1.0.0/tests/test_qualification_evidence_cases.py +38 -0
  1087. colonymind-1.0.0/tests/test_qualification_faculty_arms.py +178 -0
  1088. colonymind-1.0.0/tests/test_qualification_formation_extended.py +140 -0
  1089. colonymind-1.0.0/tests/test_qualification_heartbeat_comparator.py +242 -0
  1090. colonymind-1.0.0/tests/test_qualification_improve_family.py +307 -0
  1091. colonymind-1.0.0/tests/test_qualification_initiative_family.py +190 -0
  1092. colonymind-1.0.0/tests/test_qualification_interaction_evidence.py +57 -0
  1093. colonymind-1.0.0/tests/test_qualification_memory_hard_family.py +298 -0
  1094. colonymind-1.0.0/tests/test_qualification_mind_arm.py +666 -0
  1095. colonymind-1.0.0/tests/test_qualification_native_incomplete.py +44 -0
  1096. colonymind-1.0.0/tests/test_qualification_native_interactive.py +180 -0
  1097. colonymind-1.0.0/tests/test_qualification_native_recovery.py +127 -0
  1098. colonymind-1.0.0/tests/test_qualification_native_unified.py +34 -0
  1099. colonymind-1.0.0/tests/test_qualification_opinions_family.py +380 -0
  1100. colonymind-1.0.0/tests/test_qualification_outreach_family.py +287 -0
  1101. colonymind-1.0.0/tests/test_qualification_pack_batch.py +291 -0
  1102. colonymind-1.0.0/tests/test_qualification_paired_affect_family.py +235 -0
  1103. colonymind-1.0.0/tests/test_qualification_paired_baseline.py +82 -0
  1104. colonymind-1.0.0/tests/test_qualification_paired_campaign.py +534 -0
  1105. colonymind-1.0.0/tests/test_qualification_paired_cases.py +253 -0
  1106. colonymind-1.0.0/tests/test_qualification_paired_comparators.py +200 -0
  1107. colonymind-1.0.0/tests/test_qualification_paired_container.py +513 -0
  1108. colonymind-1.0.0/tests/test_qualification_paired_drives.py +389 -0
  1109. colonymind-1.0.0/tests/test_qualification_paired_generators.py +373 -0
  1110. colonymind-1.0.0/tests/test_qualification_paired_memory_self.py +662 -0
  1111. colonymind-1.0.0/tests/test_qualification_paired_projection.py +138 -0
  1112. colonymind-1.0.0/tests/test_qualification_paired_public.py +146 -0
  1113. colonymind-1.0.0/tests/test_qualification_paired_resources.py +300 -0
  1114. colonymind-1.0.0/tests/test_qualification_paired_reviewed.py +157 -0
  1115. colonymind-1.0.0/tests/test_qualification_paired_runner.py +563 -0
  1116. colonymind-1.0.0/tests/test_qualification_paired_statistics.py +168 -0
  1117. colonymind-1.0.0/tests/test_qualification_paired_suite.py +265 -0
  1118. colonymind-1.0.0/tests/test_qualification_paired_trace.py +208 -0
  1119. colonymind-1.0.0/tests/test_qualification_paired_workflows.py +216 -0
  1120. colonymind-1.0.0/tests/test_qualification_people_family.py +349 -0
  1121. colonymind-1.0.0/tests/test_qualification_planning_effects.py +43 -0
  1122. colonymind-1.0.0/tests/test_qualification_plasticity_arms.py +96 -0
  1123. colonymind-1.0.0/tests/test_qualification_plugin_tools.py +66 -0
  1124. colonymind-1.0.0/tests/test_qualification_public_export.py +209 -0
  1125. colonymind-1.0.0/tests/test_qualification_recurring_family.py +1021 -0
  1126. colonymind-1.0.0/tests/test_qualification_release_arms.py +177 -0
  1127. colonymind-1.0.0/tests/test_qualification_reply_depth.py +61 -0
  1128. colonymind-1.0.0/tests/test_qualification_router_recovery.py +55 -0
  1129. colonymind-1.0.0/tests/test_qualification_schema_cases.py +42 -0
  1130. colonymind-1.0.0/tests/test_qualification_screen_contracts.py +159 -0
  1131. colonymind-1.0.0/tests/test_qualification_semantic_incomplete.py +15 -0
  1132. colonymind-1.0.0/tests/test_qualification_tick_output.py +67 -0
  1133. colonymind-1.0.0/tests/test_qualification_unified_oracles.py +79 -0
  1134. colonymind-1.0.0/tests/test_qualification_worker_attribution.py +90 -0
  1135. colonymind-1.0.0/tests/test_qualification_workflow_review.py +141 -0
  1136. colonymind-1.0.0/tests/test_qualification_workflow_runtime.py +592 -0
  1137. colonymind-1.0.0/tests/test_quoted_memory_applicability.py +243 -0
  1138. colonymind-1.0.0/tests/test_recall_by_evidence.py +55 -0
  1139. colonymind-1.0.0/tests/test_recall_calibration_format.py +103 -0
  1140. colonymind-1.0.0/tests/test_recall_checkpoint_copies.py +458 -0
  1141. colonymind-1.0.0/tests/test_recall_claim_keys.py +487 -0
  1142. colonymind-1.0.0/tests/test_recall_conversation_replies.py +464 -0
  1143. colonymind-1.0.0/tests/test_recall_exit_counter.py +1192 -0
  1144. colonymind-1.0.0/tests/test_recall_fingerprint_adapter.py +26 -0
  1145. colonymind-1.0.0/tests/test_recall_fresh_lexical_fallback.py +154 -0
  1146. colonymind-1.0.0/tests/test_recall_keyword_lanes.py +555 -0
  1147. colonymind-1.0.0/tests/test_recall_missed_deadline.py +219 -0
  1148. colonymind-1.0.0/tests/test_recall_notice_details.py +226 -0
  1149. colonymind-1.0.0/tests/test_recall_owner_first.py +91 -0
  1150. colonymind-1.0.0/tests/test_recall_packing.py +585 -0
  1151. colonymind-1.0.0/tests/test_recall_query_adapter_cutoff.py +181 -0
  1152. colonymind-1.0.0/tests/test_recall_query_adapter_live.py +229 -0
  1153. colonymind-1.0.0/tests/test_recall_request_repetition.py +140 -0
  1154. colonymind-1.0.0/tests/test_recall_rerank_input_bounds.py +69 -0
  1155. colonymind-1.0.0/tests/test_recall_source_presentation.py +190 -0
  1156. colonymind-1.0.0/tests/test_recall_tie_order.py +165 -0
  1157. colonymind-1.0.0/tests/test_recall_time.py +654 -0
  1158. colonymind-1.0.0/tests/test_recall_trace.py +639 -0
  1159. colonymind-1.0.0/tests/test_recall_unified_context.py +276 -0
  1160. colonymind-1.0.0/tests/test_reflection_task_routing.py +74 -0
  1161. colonymind-1.0.0/tests/test_reply_forecast_callback_order.py +94 -0
  1162. colonymind-1.0.0/tests/test_reply_forecast_coverage_throttle.py +105 -0
  1163. colonymind-1.0.0/tests/test_reply_forecast_settlement.py +85 -0
  1164. colonymind-1.0.0/tests/test_reply_forecast_stops.py +63 -0
  1165. colonymind-1.0.0/tests/test_reply_forecasts.py +412 -0
  1166. colonymind-1.0.0/tests/test_report_plasticity_command.py +35 -0
  1167. colonymind-1.0.0/tests/test_reported_worker_status.py +129 -0
  1168. colonymind-1.0.0/tests/test_reports_bench.py +260 -0
  1169. colonymind-1.0.0/tests/test_reports_claims.py +118 -0
  1170. colonymind-1.0.0/tests/test_reports_faculties.py +560 -0
  1171. colonymind-1.0.0/tests/test_repository_signals.py +449 -0
  1172. colonymind-1.0.0/tests/test_request_refusals.py +60 -0
  1173. colonymind-1.0.0/tests/test_request_work_context.py +55 -0
  1174. colonymind-1.0.0/tests/test_rerank_single_flight.py +318 -0
  1175. colonymind-1.0.0/tests/test_reranker_remote.py +108 -0
  1176. colonymind-1.0.0/tests/test_resident_blocks.py +690 -0
  1177. colonymind-1.0.0/tests/test_resolve_messaging_handle.py +71 -0
  1178. colonymind-1.0.0/tests/test_resources.py +45 -0
  1179. colonymind-1.0.0/tests/test_restore_offline.py +90 -0
  1180. colonymind-1.0.0/tests/test_retired_modules.py +271 -0
  1181. colonymind-1.0.0/tests/test_retired_modules_m9.py +148 -0
  1182. colonymind-1.0.0/tests/test_retired_modules_prune.py +491 -0
  1183. colonymind-1.0.0/tests/test_role_time_limits.py +254 -0
  1184. colonymind-1.0.0/tests/test_router_reasoning_allowance.py +385 -0
  1185. colonymind-1.0.0/tests/test_router_tiers.py +249 -0
  1186. colonymind-1.0.0/tests/test_router_tokens.py +31 -0
  1187. colonymind-1.0.0/tests/test_runtime_logging.py +116 -0
  1188. colonymind-1.0.0/tests/test_scoped_matches.py +99 -0
  1189. colonymind-1.0.0/tests/test_secret_reveal.py +387 -0
  1190. colonymind-1.0.0/tests/test_secrets_asks.py +120 -0
  1191. colonymind-1.0.0/tests/test_secrets_capture.py +364 -0
  1192. colonymind-1.0.0/tests/test_secrets_detect.py +214 -0
  1193. colonymind-1.0.0/tests/test_secrets_migration.py +304 -0
  1194. colonymind-1.0.0/tests/test_secrets_vault.py +262 -0
  1195. colonymind-1.0.0/tests/test_self_judgment_premises.py +125 -0
  1196. colonymind-1.0.0/tests/test_self_judgments.py +828 -0
  1197. colonymind-1.0.0/tests/test_self_model.py +110 -0
  1198. colonymind-1.0.0/tests/test_self_perspective.py +156 -0
  1199. colonymind-1.0.0/tests/test_server_shutdown_singletons.py +70 -0
  1200. colonymind-1.0.0/tests/test_session_archive.py +419 -0
  1201. colonymind-1.0.0/tests/test_session_archive_pull.py +234 -0
  1202. colonymind-1.0.0/tests/test_session_reparent.py +908 -0
  1203. colonymind-1.0.0/tests/test_sessionless_turns.py +99 -0
  1204. colonymind-1.0.0/tests/test_short_source_context.py +143 -0
  1205. colonymind-1.0.0/tests/test_sidecar.py +261 -0
  1206. colonymind-1.0.0/tests/test_social_context_flow.py +67 -0
  1207. colonymind-1.0.0/tests/test_social_transport.py +19 -0
  1208. colonymind-1.0.0/tests/test_source_annotation_claim_survivors.py +99 -0
  1209. colonymind-1.0.0/tests/test_source_annotations.py +397 -0
  1210. colonymind-1.0.0/tests/test_source_appraisals.py +667 -0
  1211. colonymind-1.0.0/tests/test_source_attribution.py +96 -0
  1212. colonymind-1.0.0/tests/test_source_audio.py +114 -0
  1213. colonymind-1.0.0/tests/test_source_audio_claims.py +360 -0
  1214. colonymind-1.0.0/tests/test_source_claim_budget.py +188 -0
  1215. colonymind-1.0.0/tests/test_source_claim_diagnostics.py +158 -0
  1216. colonymind-1.0.0/tests/test_source_claim_dry_run.py +413 -0
  1217. colonymind-1.0.0/tests/test_source_claim_earlier_subjects.py +729 -0
  1218. colonymind-1.0.0/tests/test_source_claim_known_keys.py +71 -0
  1219. colonymind-1.0.0/tests/test_source_claim_media_eligibility.py +56 -0
  1220. colonymind-1.0.0/tests/test_source_claim_periods.py +230 -0
  1221. colonymind-1.0.0/tests/test_source_claim_priors.py +249 -0
  1222. colonymind-1.0.0/tests/test_source_claim_projection.py +515 -0
  1223. colonymind-1.0.0/tests/test_source_claim_reextract.py +1049 -0
  1224. colonymind-1.0.0/tests/test_source_claim_reextract_cli.py +148 -0
  1225. colonymind-1.0.0/tests/test_source_claim_review.py +291 -0
  1226. colonymind-1.0.0/tests/test_source_claim_subject_basis.py +350 -0
  1227. colonymind-1.0.0/tests/test_source_claim_version.py +24 -0
  1228. colonymind-1.0.0/tests/test_source_correction_evidence.py +146 -0
  1229. colonymind-1.0.0/tests/test_source_deadline.py +345 -0
  1230. colonymind-1.0.0/tests/test_source_document_read.py +209 -0
  1231. colonymind-1.0.0/tests/test_source_documents.py +298 -0
  1232. colonymind-1.0.0/tests/test_source_episode_admission.py +164 -0
  1233. colonymind-1.0.0/tests/test_source_episode_memory.py +106 -0
  1234. colonymind-1.0.0/tests/test_source_episode_revisions.py +385 -0
  1235. colonymind-1.0.0/tests/test_source_erasure_request_progress.py +62 -0
  1236. colonymind-1.0.0/tests/test_source_event_precision.py +100 -0
  1237. colonymind-1.0.0/tests/test_source_evidence_references.py +217 -0
  1238. colonymind-1.0.0/tests/test_source_excerpt_lineage.py +185 -0
  1239. colonymind-1.0.0/tests/test_source_forget_parity.py +70 -0
  1240. colonymind-1.0.0/tests/test_source_image_read.py +142 -0
  1241. colonymind-1.0.0/tests/test_source_media.py +261 -0
  1242. colonymind-1.0.0/tests/test_source_memory_backup.py +292 -0
  1243. colonymind-1.0.0/tests/test_source_numeric_offsets.py +70 -0
  1244. colonymind-1.0.0/tests/test_source_quoted_preferences.py +290 -0
  1245. colonymind-1.0.0/tests/test_source_time_query.py +152 -0
  1246. colonymind-1.0.0/tests/test_source_tombstone_readers.py +383 -0
  1247. colonymind-1.0.0/tests/test_source_vectors.py +481 -0
  1248. colonymind-1.0.0/tests/test_source_vectors_yield.py +133 -0
  1249. colonymind-1.0.0/tests/test_source_video.py +310 -0
  1250. colonymind-1.0.0/tests/test_source_worker_lanes.py +178 -0
  1251. colonymind-1.0.0/tests/test_status_block.py +829 -0
  1252. colonymind-1.0.0/tests/test_step0_platform_probe.py +70 -0
  1253. colonymind-1.0.0/tests/test_suite_home.py +60 -0
  1254. colonymind-1.0.0/tests/test_sweep_fixes.py +74 -0
  1255. colonymind-1.0.0/tests/test_sync_context_producers.py +337 -0
  1256. colonymind-1.0.0/tests/test_sync_context_review.py +612 -0
  1257. colonymind-1.0.0/tests/test_telemetry_staleness.py +239 -0
  1258. colonymind-1.0.0/tests/test_temporal.py +233 -0
  1259. colonymind-1.0.0/tests/test_temporal_followups.py +154 -0
  1260. colonymind-1.0.0/tests/test_temporal_index.py +68 -0
  1261. colonymind-1.0.0/tests/test_test_environment_isolation.py +12 -0
  1262. colonymind-1.0.0/tests/test_thinking_deadlines.py +54 -0
  1263. colonymind-1.0.0/tests/test_tier_endpoints.py +181 -0
  1264. colonymind-1.0.0/tests/test_timeline.py +159 -0
  1265. colonymind-1.0.0/tests/test_tool_observation_reader.py +37 -0
  1266. colonymind-1.0.0/tests/test_tool_origins.py +139 -0
  1267. colonymind-1.0.0/tests/test_transport_ingress.py +307 -0
  1268. colonymind-1.0.0/tests/test_transport_ingress_api.py +270 -0
  1269. colonymind-1.0.0/tests/test_transport_ingress_earlier_layout.py +105 -0
  1270. colonymind-1.0.0/tests/test_transport_ingress_settlement.py +188 -0
  1271. colonymind-1.0.0/tests/test_transport_ingress_settlement_erasures.py +92 -0
  1272. colonymind-1.0.0/tests/test_transport_receipt_binding.py +33 -0
  1273. colonymind-1.0.0/tests/test_transport_receipts_worker.py +98 -0
  1274. colonymind-1.0.0/tests/test_trust_configure.py +56 -0
  1275. colonymind-1.0.0/tests/test_trust_scopes.py +80 -0
  1276. colonymind-1.0.0/tests/test_trust_scopes_p2.py +96 -0
  1277. colonymind-1.0.0/tests/test_turn_answer_evidence.py +202 -0
  1278. colonymind-1.0.0/tests/test_turn_budget.py +212 -0
  1279. colonymind-1.0.0/tests/test_turn_idempotency_ledger.py +261 -0
  1280. colonymind-1.0.0/tests/test_turn_idempotency_v2.py +267 -0
  1281. colonymind-1.0.0/tests/test_turn_source_erasure.py +89 -0
  1282. colonymind-1.0.0/tests/test_turn_source_evidence.py +215 -0
  1283. colonymind-1.0.0/tests/test_twin_cli.py +135 -0
  1284. colonymind-1.0.0/tests/test_twin_replication.py +961 -0
  1285. colonymind-1.0.0/tests/test_twin_wal_source.py +361 -0
  1286. colonymind-1.0.0/tests/test_upgrade.py +327 -0
  1287. colonymind-1.0.0/tests/test_upgrade_hands_settings.py +72 -0
  1288. colonymind-1.0.0/tests/test_upgrade_retirement.py +772 -0
  1289. colonymind-1.0.0/tests/test_upgrade_service_conversion.py +435 -0
  1290. colonymind-1.0.0/tests/test_validation_sweep_fixes.py +68 -0
  1291. colonymind-1.0.0/tests/test_vault_permit_payload.py +111 -0
  1292. colonymind-1.0.0/tests/test_vault_tool_reading.py +246 -0
  1293. colonymind-1.0.0/tests/test_voice_affect.py +440 -0
  1294. colonymind-1.0.0/tests/test_voice_affect_gate.py +131 -0
  1295. colonymind-1.0.0/tests/test_voice_affect_readonly.py +232 -0
  1296. colonymind-1.0.0/tests/test_voice_recall.py +285 -0
  1297. colonymind-1.0.0/tests/test_voice_recall_gate.py +129 -0
  1298. colonymind-1.0.0/tests/test_voice_recall_inline_reads.py +99 -0
  1299. colonymind-1.0.0/tests/test_voice_recall_review.py +303 -0
  1300. colonymind-1.0.0/tests/test_voice_recall_speculation.py +267 -0
  1301. colonymind-1.0.0/tests/test_voice_recall_t2.py +300 -0
  1302. colonymind-1.0.0/tests/test_w4_seams.py +431 -0
  1303. colonymind-1.0.0/tests/test_wizard_autonomy.py +222 -0
  1304. colonymind-1.0.0/tests/test_wm_branches_api.py +304 -0
  1305. colonymind-1.0.0/tests/test_wm_branches_benchmark.py +120 -0
  1306. colonymind-1.0.0/tests/test_wm_branches_core.py +387 -0
  1307. colonymind-1.0.0/tests/test_wm_branches_wiring.py +258 -0
  1308. colonymind-1.0.0/tests/test_wm_handback.py +649 -0
  1309. colonymind-1.0.0/tests/test_wm_prize.py +529 -0
  1310. colonymind-1.0.0/tests/test_work_ancestry_projection.py +90 -0
  1311. colonymind-1.0.0/tests/test_work_api.py +384 -0
  1312. colonymind-1.0.0/tests/test_work_attribution.py +54 -0
  1313. colonymind-1.0.0/tests/test_work_contract.py +189 -0
  1314. colonymind-1.0.0/tests/test_work_digest.py +89 -0
  1315. colonymind-1.0.0/tests/test_work_faculty.py +112 -0
  1316. colonymind-1.0.0/tests/test_work_hands_refresh.py +73 -0
  1317. colonymind-1.0.0/tests/test_work_ingestion.py +300 -0
  1318. colonymind-1.0.0/tests/test_work_night.py +136 -0
  1319. colonymind-1.0.0/tests/test_work_overlay_migration.py +43 -0
  1320. colonymind-1.0.0/tests/test_work_projection.py +346 -0
  1321. colonymind-1.0.0/tests/test_work_review_regressions.py +123 -0
  1322. colonymind-1.0.0/tests/test_work_scaling.py +275 -0
  1323. colonymind-1.0.0/tests/test_work_source_coverage.py +103 -0
  1324. colonymind-1.0.0/tests/test_work_title_provenance.py +159 -0
  1325. colonymind-1.0.0/tests/test_work_verdicts.py +351 -0
  1326. colonymind-1.0.0/tests/test_worker_profile_model.py +197 -0
  1327. colonymind-1.0.0/tests/test_worker_request_cap.py +110 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Aevonix
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,110 @@
1
+ Metadata-Version: 2.4
2
+ Name: colonymind
3
+ Version: 1.0.0
4
+ Summary: A mind for Hermes agents: persistent memory, commitments, initiative and measured autonomy
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://aevonix.com/colonymind
7
+ Project-URL: Repository, https://github.com/Aevonix/ColonyMind
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3 :: Only
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Requires-Python: <3.14,>=3.11
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE
16
+ Requires-Dist: fastapi>=0.110
17
+ Requires-Dist: uvicorn[standard]>=0.29
18
+ Requires-Dist: litellm>=1.40
19
+ Requires-Dist: pydantic>=2.6
20
+ Requires-Dist: PyYAML>=6.0
21
+ Requires-Dist: aiosqlite>=0.19
22
+ Requires-Dist: httpx>=0.27
23
+ Requires-Dist: websockets>=12.0
24
+ Requires-Dist: Pillow>=10.0
25
+ Requires-Dist: cryptography>=42.0
26
+ Requires-Dist: pypdf<7,>=6.18.0
27
+ Requires-Dist: psutil<8,>=7.2.2; sys_platform == "darwin"
28
+ Requires-Dist: lancedb>=0.30.2
29
+ Requires-Dist: pyarrow>=15.0
30
+ Requires-Dist: pandas>=2.0
31
+ Provides-Extra: vectors
32
+ Requires-Dist: sentence-transformers>=3.0; extra == "vectors"
33
+ Requires-Dist: transformers>=4.51.0; extra == "vectors"
34
+ Provides-Extra: hermes
35
+ Requires-Dist: colonymind-hermes<2,>=1.0.0; extra == "hermes"
36
+ Provides-Extra: video
37
+ Requires-Dist: av==18.1.0; extra == "video"
38
+ Provides-Extra: dev
39
+ Requires-Dist: av==18.1.0; extra == "dev"
40
+ Requires-Dist: psutil<8,>=7.2.2; extra == "dev"
41
+ Requires-Dist: sentence-transformers>=3.0; extra == "dev"
42
+ Requires-Dist: transformers>=4.51.0; extra == "dev"
43
+ Requires-Dist: pandas>=2.0; extra == "dev"
44
+ Requires-Dist: pyarrow>=15.0; extra == "dev"
45
+ Requires-Dist: lancedb>=0.30.2; extra == "dev"
46
+ Requires-Dist: pytest>=8.0; extra == "dev"
47
+ Requires-Dist: pytest-timeout>=2.3; extra == "dev"
48
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
49
+ Requires-Dist: hypothesis>=6.100; extra == "dev"
50
+ Requires-Dist: httpx>=0.27; extra == "dev"
51
+ Requires-Dist: jsonschema>=4.21; extra == "dev"
52
+ Dynamic: license-file
53
+
54
+ # ColonyMind
55
+
56
+ **A mind for Hermes agents: persistent memory, commitments, initiative and measured autonomy.**
57
+
58
+ Not just remember: keep promises and take the next step, within limits the owner sets. ColonyMind gives a personal
59
+ [Hermes](https://github.com/NousResearch/hermes-agent) agent memory across sessions and channels in people's own
60
+ words, commitments it keeps, people it knows, and a small mind that acts on its own inside an autonomy level, budgets
61
+ and quiet hours the owner sets. Asks reach the owner as plain messages, answered with a plain yes, a reply or a
62
+ thumbs-up; the model can never approve anything.
63
+
64
+ This package is the ColonyMind sidecar and its `colonymind` command. It attaches to stock Hermes through the companion
65
+ `colonymind-hermes` adapter, which `colonymind init` installs into Hermes' own environment; the sidecar runs in an
66
+ environment of its own. No fork, no patches, no graph database, no extra key.
67
+
68
+ ## Install
69
+
70
+ You need Python 3.11 to 3.13 (3.12 recommended), a stock Hermes install (`hermes-agent >=0.21.3,<0.24`) whose
71
+ `hermes` executable is on `PATH`, and one OpenAI-compatible chat endpoint, which Hermes already has.
72
+
73
+ ```bash
74
+ uv tool install --python 3.12 colonymind
75
+ colonymind init
76
+ hermes gateway restart
77
+ ```
78
+
79
+ pipx works too (`pipx install --python python3.12 colonymind`). ColonyMind becomes Hermes' memory provider: `init`
80
+ names the provider it replaces, and `colonymind init --uninstall` puts it back. `colonymind doctor` checks the install,
81
+ and `colonymind demo` shows the loop with no model, no keys and no network: a fact recalled across sessions, a
82
+ promise followed up on its own, and an ask the person answers in plain words.
83
+
84
+ One container runs stock Hermes and ColonyMind together: `ghcr.io/aevonix/colonymind`, stock Hermes' own published
85
+ image pinned by digest and patched nowhere
86
+ ([the container guide](https://github.com/Aevonix/ColonyMind/blob/main/docs/INSTALL.md#container)).
87
+
88
+ The vector store (LanceDB) is part of every install: semantic recall needs only an OpenAI-compatible embeddings
89
+ endpoint (`colonymind init --embed-url auto` looks for one on the model endpoint). Where the endpoint has none, the
90
+ `vectors` extra lets the sidecar run a pinned embedding model itself
91
+ (`uv tool install --force --python 3.12 'colonymind[vectors]'`, which brings PyTorch, then
92
+ `colonymind init --embed-url local`, which downloads the model once into the instance directory).
93
+
94
+ To update: `uv tool upgrade colonymind` (or `pipx upgrade colonymind`), `colonymind upgrade`, `hermes gateway restart`.
95
+
96
+ ## Learn more
97
+
98
+ - [Project README](https://github.com/Aevonix/ColonyMind/blob/main/README.md): what works, the evidence against stock
99
+ Hermes, and what is not yet demonstrated.
100
+ - What memory holds about a person, with each claim's history:
101
+ [the memory inventory](https://github.com/Aevonix/ColonyMind/blob/main/docs/SOURCE-ANNOTATIONS.md#the-memory-inventory);
102
+ what the model calls cost:
103
+ [usage by lane](https://github.com/Aevonix/ColonyMind/blob/main/docs/FUNCTION-ROUTING.md#usage-model-calls-by-lane).
104
+ - [Install and update](https://github.com/Aevonix/ColonyMind/blob/main/docs/INSTALL.md): what `colonymind init`
105
+ changes, configuration, the sidecar service, updating and uninstalling.
106
+ - [Documentation index](https://github.com/Aevonix/ColonyMind/blob/main/docs/README.md),
107
+ [troubleshooting](https://github.com/Aevonix/ColonyMind/blob/main/docs/TROUBLESHOOTING.md) and the
108
+ [changelog](https://github.com/Aevonix/ColonyMind/blob/main/CHANGELOG.md).
109
+
110
+ Licensed under the included MIT license. Optional dependencies retain their own licenses.
@@ -0,0 +1,57 @@
1
+ # ColonyMind
2
+
3
+ **A mind for Hermes agents: persistent memory, commitments, initiative and measured autonomy.**
4
+
5
+ Not just remember: keep promises and take the next step, within limits the owner sets. ColonyMind gives a personal
6
+ [Hermes](https://github.com/NousResearch/hermes-agent) agent memory across sessions and channels in people's own
7
+ words, commitments it keeps, people it knows, and a small mind that acts on its own inside an autonomy level, budgets
8
+ and quiet hours the owner sets. Asks reach the owner as plain messages, answered with a plain yes, a reply or a
9
+ thumbs-up; the model can never approve anything.
10
+
11
+ This package is the ColonyMind sidecar and its `colonymind` command. It attaches to stock Hermes through the companion
12
+ `colonymind-hermes` adapter, which `colonymind init` installs into Hermes' own environment; the sidecar runs in an
13
+ environment of its own. No fork, no patches, no graph database, no extra key.
14
+
15
+ ## Install
16
+
17
+ You need Python 3.11 to 3.13 (3.12 recommended), a stock Hermes install (`hermes-agent >=0.21.3,<0.24`) whose
18
+ `hermes` executable is on `PATH`, and one OpenAI-compatible chat endpoint, which Hermes already has.
19
+
20
+ ```bash
21
+ uv tool install --python 3.12 colonymind
22
+ colonymind init
23
+ hermes gateway restart
24
+ ```
25
+
26
+ pipx works too (`pipx install --python python3.12 colonymind`). ColonyMind becomes Hermes' memory provider: `init`
27
+ names the provider it replaces, and `colonymind init --uninstall` puts it back. `colonymind doctor` checks the install,
28
+ and `colonymind demo` shows the loop with no model, no keys and no network: a fact recalled across sessions, a
29
+ promise followed up on its own, and an ask the person answers in plain words.
30
+
31
+ One container runs stock Hermes and ColonyMind together: `ghcr.io/aevonix/colonymind`, stock Hermes' own published
32
+ image pinned by digest and patched nowhere
33
+ ([the container guide](https://github.com/Aevonix/ColonyMind/blob/main/docs/INSTALL.md#container)).
34
+
35
+ The vector store (LanceDB) is part of every install: semantic recall needs only an OpenAI-compatible embeddings
36
+ endpoint (`colonymind init --embed-url auto` looks for one on the model endpoint). Where the endpoint has none, the
37
+ `vectors` extra lets the sidecar run a pinned embedding model itself
38
+ (`uv tool install --force --python 3.12 'colonymind[vectors]'`, which brings PyTorch, then
39
+ `colonymind init --embed-url local`, which downloads the model once into the instance directory).
40
+
41
+ To update: `uv tool upgrade colonymind` (or `pipx upgrade colonymind`), `colonymind upgrade`, `hermes gateway restart`.
42
+
43
+ ## Learn more
44
+
45
+ - [Project README](https://github.com/Aevonix/ColonyMind/blob/main/README.md): what works, the evidence against stock
46
+ Hermes, and what is not yet demonstrated.
47
+ - What memory holds about a person, with each claim's history:
48
+ [the memory inventory](https://github.com/Aevonix/ColonyMind/blob/main/docs/SOURCE-ANNOTATIONS.md#the-memory-inventory);
49
+ what the model calls cost:
50
+ [usage by lane](https://github.com/Aevonix/ColonyMind/blob/main/docs/FUNCTION-ROUTING.md#usage-model-calls-by-lane).
51
+ - [Install and update](https://github.com/Aevonix/ColonyMind/blob/main/docs/INSTALL.md): what `colonymind init`
52
+ changes, configuration, the sidecar service, updating and uninstalling.
53
+ - [Documentation index](https://github.com/Aevonix/ColonyMind/blob/main/docs/README.md),
54
+ [troubleshooting](https://github.com/Aevonix/ColonyMind/blob/main/docs/TROUBLESHOOTING.md) and the
55
+ [changelog](https://github.com/Aevonix/ColonyMind/blob/main/CHANGELOG.md).
56
+
57
+ Licensed under the included MIT license. Optional dependencies retain their own licenses.
@@ -0,0 +1,40 @@
1
+ """ColonyMind cognition server for agent runtimes.
2
+
3
+ A standalone FastAPI server that agent hosts (Hermes plugin, MCP harnesses,
4
+ REST integrations) mount via the ``/v1/host`` API surface.
5
+ """
6
+
7
+ from pathlib import Path
8
+ import os
9
+
10
+ # Local first: LiteLLM, which routes model requests, downloads its model price list from the internet when it is
11
+ # imported unless told to use the copy it ships. ColonyMind never reads prices from it, so the flag is set here,
12
+ # before anything of ColonyMind can import the library, and starting the sidecar makes no network request. An
13
+ # operator who sets it explicitly (to false, for the downloaded list) keeps that choice.
14
+ os.environ.setdefault("LITELLM_LOCAL_MODEL_COST_MAP", "True")
15
+
16
+ try: # single source of truth: the installed package metadata (pyproject)
17
+ from importlib.metadata import version as _pkg_version
18
+ __version__ = _pkg_version("colonymind")
19
+ except Exception: # editable/unbuilt checkouts without installed metadata
20
+ __version__ = "0.0.0+unknown"
21
+
22
+
23
+ def get_state_dir() -> Path:
24
+ """Return the selected state directory without moving existing state.
25
+
26
+ The instance directory (``$COLONYMIND_HOME``, default ``~/.colonymind``)
27
+ holds the state once ``colonymind init`` has written ``colonymind.yaml``.
28
+ Unconfigured library use defaults to ``~/.colonymind/data``.
29
+
30
+ Creates the directory if it does not exist.
31
+ """
32
+ explicit = os.environ.get("COLONYMIND_STATE_DIR") or os.environ.get("COLONYMIND_HOME")
33
+ if explicit:
34
+ path = Path(explicit).expanduser()
35
+ elif (Path.home() / ".colonymind" / "colonymind.yaml").is_file():
36
+ path = Path.home() / ".colonymind"
37
+ else:
38
+ path = Path.home() / ".colonymind" / "data"
39
+ path.mkdir(parents=True, exist_ok=True)
40
+ return path
@@ -0,0 +1,6 @@
1
+ """Run the same CLI used by the installed ``colonymind`` command."""
2
+ from colonymind.cli import main
3
+
4
+
5
+ if __name__ == "__main__":
6
+ main()
@@ -0,0 +1,411 @@
1
+ """Provider-neutral retained mail. Content is data; nothing here invokes a model.
2
+
3
+ SQLite WAL transactions retain identity, content and replay tombstones together.
4
+ Each operation owns a connection; SQLite serializes writers across processes.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ import base64
9
+ from contextlib import closing, contextmanager, nullcontext
10
+ from datetime import datetime, timezone
11
+ import hashlib
12
+ import json
13
+ import os
14
+ from pathlib import Path
15
+ import sqlite3
16
+ import threading
17
+ from typing import Literal
18
+ from uuid import uuid4
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, field_validator
21
+
22
+ from colonymind.util.temporal import now_utc
23
+
24
+
25
+ class MailboxError(ValueError):
26
+ def __init__(self, code: str, status: int = 422):
27
+ super().__init__(code)
28
+ self.code = code
29
+ self.status = status
30
+
31
+
32
+ class LocalIdentity(BaseModel):
33
+ model_config = ConfigDict(extra="forbid", strict=True)
34
+ local_part: str = Field(pattern=r"^[a-z0-9][a-z0-9-]{1,30}[a-z0-9]$", max_length=32)
35
+ display_name: str = Field(min_length=1, max_length=128)
36
+
37
+ @field_validator("display_name")
38
+ @classmethod
39
+ def name_present(cls, value):
40
+ if not value.strip() or any(ord(c) < 32 for c in value):
41
+ raise ValueError("invalid_display_name")
42
+ return value
43
+
44
+
45
+ class IdentityUpdate(BaseModel):
46
+ model_config = ConfigDict(extra="forbid", strict=True)
47
+ display_name: str | None = Field(default=None, min_length=1, max_length=128)
48
+ status: Literal["unprovisioned", "active", "disabled"] | None = None
49
+
50
+ @field_validator("display_name")
51
+ @classmethod
52
+ def name_present(cls, value):
53
+ return LocalIdentity.name_present(value) if value is not None else value
54
+
55
+
56
+ class InboundMessage(BaseModel):
57
+ """Trusted adapter's envelope. Sender and all text remain untrusted."""
58
+ model_config = ConfigDict(extra="forbid")
59
+ delivery_id: str = Field(min_length=1, max_length=256)
60
+ thread_id: str = Field(pattern=r"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$", max_length=128)
61
+ sender: str = Field(min_length=1, max_length=320)
62
+ recipients: list[str] = Field(min_length=1, max_length=100)
63
+ subject: str = Field(default="", max_length=998)
64
+ text: str = Field(default="", max_length=262144)
65
+ occurred_at: datetime
66
+ in_reply_to: str | None = Field(default=None, max_length=256)
67
+
68
+ @field_validator("occurred_at")
69
+ @classmethod
70
+ def aware_time(cls, value):
71
+ if value.utcoffset() is None:
72
+ raise ValueError("timezone_required")
73
+ return value.astimezone(timezone.utc)
74
+
75
+ @field_validator("recipients")
76
+ @classmethod
77
+ def bounded_addresses(cls, value):
78
+ if any(not address or len(address) > 320 for address in value):
79
+ raise ValueError("invalid_recipients")
80
+ return value
81
+
82
+
83
+ def _json(value):
84
+ return json.dumps(value, ensure_ascii=True, sort_keys=True, separators=(",", ":"))
85
+
86
+
87
+ class MailboxStore:
88
+ def __init__(self, path: Path):
89
+ self.path = Path(path)
90
+ self._init_lock = threading.Lock()
91
+ self._write_lock = threading.Lock()
92
+ self._initialized = False
93
+
94
+ def _connect(self):
95
+ self.path.parent.mkdir(mode=0o700, parents=True, exist_ok=True)
96
+ # Create privately before SQLite also creates its WAL/shared-memory files.
97
+ fd = os.open(self.path, os.O_CREAT | os.O_RDWR, 0o600)
98
+ try:
99
+ os.fchmod(fd, 0o600)
100
+ finally:
101
+ os.close(fd)
102
+ conn = sqlite3.connect(self.path, check_same_thread=False)
103
+ try:
104
+ conn.row_factory = sqlite3.Row
105
+ conn.execute("PRAGMA busy_timeout=5000")
106
+ conn.execute("PRAGMA synchronous=NORMAL")
107
+ conn.execute("PRAGMA foreign_keys=ON")
108
+ conn.execute("PRAGMA secure_delete=ON")
109
+ except BaseException:
110
+ conn.close()
111
+ raise
112
+ return conn
113
+
114
+ @staticmethod
115
+ def _create_tables(conn):
116
+ """Initialize/migrate once, serialized with other store openers."""
117
+ version = conn.execute("PRAGMA user_version").fetchone()[0]
118
+ if version > 1:
119
+ raise sqlite3.DatabaseError("unsupported mailbox schema version")
120
+ if version == 1:
121
+ return
122
+ for statement in (
123
+ """CREATE TABLE IF NOT EXISTS mailboxes (
124
+ mailbox_id TEXT PRIMARY KEY,
125
+ address TEXT NOT NULL UNIQUE,
126
+ display_name TEXT NOT NULL,
127
+ status TEXT NOT NULL CHECK(status IN ('unprovisioned', 'active', 'disabled'))
128
+ )""",
129
+ """CREATE TABLE IF NOT EXISTS messages (
130
+ sequence INTEGER PRIMARY KEY AUTOINCREMENT,
131
+ mailbox_id TEXT NOT NULL REFERENCES mailboxes(mailbox_id),
132
+ message_id TEXT NOT NULL UNIQUE,
133
+ delivery_id TEXT NOT NULL,
134
+ thread_id TEXT NOT NULL,
135
+ sender TEXT NOT NULL,
136
+ recipients TEXT NOT NULL,
137
+ subject TEXT NOT NULL,
138
+ text TEXT NOT NULL,
139
+ occurred_at TEXT NOT NULL,
140
+ in_reply_to TEXT,
141
+ received_at TEXT NOT NULL,
142
+ read INTEGER NOT NULL DEFAULT 0 CHECK(read IN (0, 1)),
143
+ UNIQUE(mailbox_id, delivery_id)
144
+ )""",
145
+ """CREATE TABLE IF NOT EXISTS deliveries (
146
+ mailbox_id TEXT NOT NULL REFERENCES mailboxes(mailbox_id),
147
+ delivery_id TEXT NOT NULL,
148
+ message_id TEXT NOT NULL UNIQUE,
149
+ digest TEXT NOT NULL,
150
+ deleted INTEGER NOT NULL DEFAULT 0 CHECK(deleted IN (0, 1)),
151
+ PRIMARY KEY(mailbox_id, delivery_id)
152
+ )""",
153
+ """CREATE TABLE IF NOT EXISTS deleted_threads (
154
+ mailbox_id TEXT NOT NULL REFERENCES mailboxes(mailbox_id),
155
+ thread_id TEXT NOT NULL,
156
+ PRIMARY KEY(mailbox_id, thread_id)
157
+ )""",
158
+ "CREATE INDEX IF NOT EXISTS idx_messages_thread ON messages(mailbox_id, thread_id, sequence)",
159
+ "CREATE INDEX IF NOT EXISTS idx_messages_unread ON messages(mailbox_id, read, thread_id)",
160
+ ):
161
+ conn.execute(statement)
162
+ conn.execute("PRAGMA user_version=1")
163
+
164
+ def _initialize(self, conn):
165
+ if self._initialized:
166
+ return
167
+ with self._init_lock:
168
+ if self._initialized:
169
+ return
170
+ version = conn.execute("PRAGMA user_version").fetchone()[0]
171
+ if version > 1:
172
+ raise sqlite3.DatabaseError("unsupported mailbox schema version")
173
+ if version < 1:
174
+ conn.execute("PRAGMA journal_mode=WAL")
175
+ with conn:
176
+ conn.execute("BEGIN IMMEDIATE")
177
+ self._create_tables(conn)
178
+ self._initialized = True
179
+
180
+ @contextmanager
181
+ def _transaction(self, *, write=False, purge=False):
182
+ # Readers use their own WAL snapshots, without reserving a writer slot
183
+ # or waiting behind an in-process writer. Only initialization is shared.
184
+ with closing(self._connect()) as conn:
185
+ self._initialize(conn)
186
+ with self._write_lock if write else nullcontext():
187
+ with conn:
188
+ conn.execute("BEGIN IMMEDIATE" if write else "BEGIN")
189
+ yield conn
190
+ if purge:
191
+ # secure_delete overwrites deleted pages, but old WAL frames
192
+ # retain plaintext until a successful truncating checkpoint.
193
+ if conn.execute("PRAGMA wal_checkpoint(TRUNCATE)").fetchone()[0]:
194
+ raise MailboxError("mailbox_busy", 503)
195
+
196
+ @staticmethod
197
+ def _mailbox(conn, mailbox_id):
198
+ mailbox = conn.execute("SELECT * FROM mailboxes WHERE mailbox_id=?", (mailbox_id,)).fetchone()
199
+ if mailbox is None:
200
+ raise MailboxError("mailbox_not_found", 404)
201
+ return {key: mailbox[key] for key in sorted(mailbox.keys())}
202
+
203
+ @staticmethod
204
+ def _messages(conn, mailbox_id, thread_id, snapshot, position, limit):
205
+ rows = conn.execute(
206
+ "SELECT sequence, mailbox_id, message_id, thread_id, sender, recipients, subject, text, "
207
+ "occurred_at, in_reply_to, received_at, read FROM messages "
208
+ "WHERE mailbox_id=? AND thread_id=? AND sequence<=? AND sequence>? "
209
+ "ORDER BY sequence LIMIT ?",
210
+ (mailbox_id, thread_id, snapshot, position or 0, limit)).fetchall()
211
+ messages = []
212
+ for row in rows:
213
+ # Preserve the existing JSON projection's field order and value types.
214
+ message = {key: row[key] for key in sorted(row.keys())}
215
+ message["recipients"] = json.loads(message["recipients"])
216
+ message["read"] = bool(message["read"])
217
+ messages.append(message)
218
+ return messages
219
+
220
+ @staticmethod
221
+ def _counts(conn, mailbox_id):
222
+ return dict(conn.execute(
223
+ "SELECT COUNT(*) AS unread_count, COUNT(DISTINCT thread_id) AS unread_thread_count "
224
+ "FROM messages WHERE mailbox_id=? AND read=0", (mailbox_id,)).fetchone())
225
+
226
+ def identities(self):
227
+ with self._transaction() as conn:
228
+ return {"mailboxes": [{key: row[key] for key in sorted(row.keys())}
229
+ for row in conn.execute("SELECT * FROM mailboxes ORDER BY mailbox_id")]}
230
+
231
+ def create(self, body: LocalIdentity):
232
+ # The mail domain is the deployment's own value: no default, and no identity without it.
233
+ domain = os.environ.get("COLONYMIND_AGENT_MAIL_DOMAIN", "").strip().lower()
234
+ if not domain:
235
+ raise MailboxError("mail_domain_not_configured", 501)
236
+ address = body.local_part + "@" + domain
237
+ with self._transaction(write=True) as conn:
238
+ if conn.execute("SELECT 1 FROM mailboxes WHERE address=?", (address,)).fetchone():
239
+ raise MailboxError("address_already_registered", 409)
240
+ mailbox = {"mailbox_id": str(uuid4()), "address": address,
241
+ "display_name": body.display_name, "status": "unprovisioned"}
242
+ conn.execute("INSERT INTO mailboxes (mailbox_id, address, display_name, status) VALUES (?, ?, ?, ?)",
243
+ tuple(mailbox.values()))
244
+ return mailbox
245
+
246
+ def identity(self, mailbox_id):
247
+ with self._transaction() as conn:
248
+ return {**self._mailbox(conn, mailbox_id), **self._counts(conn, mailbox_id)}
249
+
250
+ def update(self, mailbox_id, body: IdentityUpdate):
251
+ with self._transaction(write=True) as conn:
252
+ mailbox = self._mailbox(conn, mailbox_id)
253
+ mailbox.update(body.model_dump(exclude_none=True))
254
+ conn.execute("UPDATE mailboxes SET display_name=?, status=? WHERE mailbox_id=?",
255
+ (mailbox["display_name"], mailbox["status"], mailbox_id))
256
+ return mailbox
257
+
258
+ def receive(self, mailbox_id: str, message: InboundMessage):
259
+ """Persist an adapter-authenticated delivery; never execute or trust its text."""
260
+ payload = message.model_dump(mode="json")
261
+ digest = hashlib.sha256(_json(payload).encode()).hexdigest()
262
+ with self._transaction(write=True) as conn:
263
+ mailbox = self._mailbox(conn, mailbox_id)
264
+ previous = conn.execute("SELECT * FROM deliveries WHERE mailbox_id=? AND delivery_id=?",
265
+ (mailbox_id, message.delivery_id)).fetchone()
266
+ if previous:
267
+ if previous["digest"] != digest:
268
+ raise MailboxError("delivery_conflict", 409)
269
+ return {"message_id": previous["message_id"], "thread_id": message.thread_id,
270
+ "duplicate": True, "deleted": bool(previous["deleted"])}
271
+ if mailbox["status"] != "active":
272
+ raise MailboxError("mailbox_inactive", 409)
273
+ if mailbox["address"] not in {a.lower() for a in message.recipients}:
274
+ raise MailboxError("recipient_mismatch")
275
+ conn.execute("DELETE FROM deleted_threads WHERE mailbox_id=? AND thread_id=?",
276
+ (mailbox_id, message.thread_id))
277
+ ident = str(uuid4())
278
+ conn.execute(
279
+ "INSERT INTO messages (mailbox_id, message_id, delivery_id, thread_id, sender, recipients, "
280
+ "subject, text, occurred_at, in_reply_to, received_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
281
+ (mailbox_id, ident, message.delivery_id, message.thread_id, message.sender,
282
+ _json(message.recipients), message.subject, message.text, payload["occurred_at"],
283
+ message.in_reply_to, now_utc().isoformat()))
284
+ conn.execute("INSERT INTO deliveries (mailbox_id, delivery_id, message_id, digest) VALUES (?, ?, ?, ?)",
285
+ (mailbox_id, message.delivery_id, ident, digest))
286
+ return {"message_id": ident, "thread_id": message.thread_id,
287
+ "duplicate": False, "deleted": False}
288
+
289
+ @staticmethod
290
+ def _page(conn, mailbox_id, thread_id, limit, cursor):
291
+ if not 1 <= limit <= 100:
292
+ raise MailboxError("invalid_limit")
293
+ row = conn.execute("SELECT seq FROM sqlite_sequence WHERE name='messages'").fetchone()
294
+ sequence = row[0] if row else 0
295
+ snapshot, position = sequence, None
296
+ if cursor is not None:
297
+ try:
298
+ if not cursor or len(cursor) > 1024:
299
+ raise ValueError
300
+ raw = base64.b64decode(cursor + "=" * (-len(cursor) % 4), altchars=b"-_", validate=True)
301
+ resource, snapshot, position = json.loads(raw)
302
+ if (resource != [mailbox_id, thread_id] or type(snapshot) is not int
303
+ or type(position) is not int or not 0 < position <= snapshot <= sequence):
304
+ raise ValueError
305
+ except (ValueError, TypeError, UnicodeError):
306
+ raise MailboxError("invalid_cursor") from None
307
+ return snapshot, position
308
+
309
+ @staticmethod
310
+ def _continuation(mailbox_id, thread_id, snapshot, position, has_more):
311
+ cursor = None
312
+ if has_more:
313
+ cursor = base64.urlsafe_b64encode(_json([[mailbox_id, thread_id], snapshot, position]).encode()).decode().rstrip("=")
314
+ return {"has_more": has_more, "next_cursor": cursor}
315
+
316
+ @staticmethod
317
+ def _thread(row):
318
+ unread = row["unread_count"]
319
+ return {"thread_id": row["thread_id"], "subject": row["subject"], "sender": row["sender"],
320
+ "summary": (row["summary"] or b"").decode("utf-8", errors="ignore")[:240],
321
+ "message_count": row["message_count"],
322
+ "received_at": row["received_at"], "unread_count": unread,
323
+ "unread": bool(unread), "content_trust": "untrusted"}
324
+
325
+ @staticmethod
326
+ def _thread_rows(conn, mailbox_id, snapshot, *, thread_id=None, position=None, limit=1):
327
+ parameters = [mailbox_id, snapshot]
328
+ predicate = "mailbox_id=? AND sequence<=?"
329
+ if thread_id is not None:
330
+ predicate += " AND thread_id=?"
331
+ parameters.append(thread_id)
332
+ continuation = ""
333
+ if position is not None:
334
+ continuation = "HAVING MAX(sequence)<?"
335
+ parameters.append(position)
336
+ parameters.append(limit)
337
+ # Aggregate metadata before joining the bounded page to its latest mail.
338
+ # A UTF-8 excerpt needs at most 4 bytes per character; BLOB substr also
339
+ # preserves embedded NULs that SQLite's TEXT substr would cut short.
340
+ return conn.execute(
341
+ f"""WITH page AS (
342
+ SELECT thread_id, MAX(sequence) AS sequence, COUNT(*) AS message_count
343
+ FROM messages WHERE {predicate} GROUP BY thread_id {continuation}
344
+ ORDER BY sequence DESC LIMIT ?
345
+ )
346
+ SELECT page.sequence, latest.thread_id, latest.subject, latest.sender,
347
+ substr(CAST(latest.text AS BLOB), 1, 960) AS summary,
348
+ page.message_count, latest.received_at,
349
+ (SELECT COUNT(*) FROM messages AS unread
350
+ WHERE unread.mailbox_id=latest.mailbox_id AND unread.thread_id=latest.thread_id
351
+ AND unread.read=0) AS unread_count
352
+ FROM page JOIN messages AS latest ON latest.sequence=page.sequence
353
+ ORDER BY page.sequence DESC""", parameters).fetchall()
354
+
355
+ def threads(self, mailbox_id, *, limit=50, cursor=None):
356
+ with self._transaction() as conn:
357
+ self._mailbox(conn, mailbox_id)
358
+ snapshot, position = self._page(conn, mailbox_id, None, limit, cursor)
359
+ rows = self._thread_rows(conn, mailbox_id, snapshot, position=position, limit=limit + 1)
360
+ page = rows[:limit]
361
+ return {"threads": [self._thread(row) for row in page], **self._counts(conn, mailbox_id),
362
+ **self._continuation(mailbox_id, None, snapshot,
363
+ page[-1]["sequence"] if page else 0, len(rows) > limit)}
364
+
365
+ def thread(self, mailbox_id, thread_id, *, limit=50, cursor=None):
366
+ with self._transaction() as conn:
367
+ self._mailbox(conn, mailbox_id)
368
+ snapshot, position = self._page(conn, mailbox_id, thread_id, limit, cursor)
369
+ rows = self._thread_rows(conn, mailbox_id, snapshot, thread_id=thread_id)
370
+ if not rows:
371
+ raise MailboxError("thread_not_found", 404)
372
+ page = self._messages(conn, mailbox_id, thread_id, snapshot, position, limit)
373
+ last = page[-1]["sequence"] if page else position or 0
374
+ has_more = bool(conn.execute(
375
+ "SELECT EXISTS(SELECT 1 FROM messages WHERE mailbox_id=? AND thread_id=? "
376
+ "AND sequence>? AND sequence<=?)", (mailbox_id, thread_id, last, snapshot)).fetchone()[0])
377
+ return {"thread": self._thread(rows[0]), "messages": [
378
+ {**{key: value for key, value in row.items() if key not in ("sequence", "delivery_id")},
379
+ "content_trust": "untrusted"} for row in page],
380
+ **self._continuation(mailbox_id, thread_id, snapshot, last, has_more)}
381
+
382
+ def read(self, mailbox_id, thread_id, through_message_id):
383
+ with self._transaction(write=True) as conn:
384
+ self._mailbox(conn, mailbox_id)
385
+ if not conn.execute("SELECT 1 FROM messages WHERE mailbox_id=? AND thread_id=?",
386
+ (mailbox_id, thread_id)).fetchone():
387
+ raise MailboxError("thread_not_found", 404)
388
+ marker = conn.execute(
389
+ "SELECT sequence FROM messages WHERE mailbox_id=? AND thread_id=? AND message_id=?",
390
+ (mailbox_id, thread_id, through_message_id)).fetchone()
391
+ if marker is None:
392
+ raise MailboxError("invalid_read_marker")
393
+ changed = conn.execute(
394
+ "UPDATE messages SET read=1 WHERE mailbox_id=? AND thread_id=? AND sequence<=? AND read=0",
395
+ (mailbox_id, thread_id, marker["sequence"])).rowcount
396
+ return {"thread_id": thread_id, "read_count": changed, **self._counts(conn, mailbox_id)}
397
+
398
+ def delete(self, mailbox_id, thread_id):
399
+ with self._transaction(write=True, purge=True) as conn:
400
+ self._mailbox(conn, mailbox_id)
401
+ parameters = (mailbox_id, thread_id)
402
+ present = conn.execute("SELECT 1 FROM messages WHERE mailbox_id=? AND thread_id=?", parameters).fetchone()
403
+ deleted = conn.execute("SELECT 1 FROM deleted_threads WHERE mailbox_id=? AND thread_id=?", parameters).fetchone()
404
+ if not present and not deleted:
405
+ raise MailboxError("thread_not_found", 404)
406
+ conn.execute("UPDATE deliveries SET deleted=1 WHERE mailbox_id=? AND message_id IN "
407
+ "(SELECT message_id FROM messages WHERE mailbox_id=? AND thread_id=?)",
408
+ (mailbox_id, mailbox_id, thread_id))
409
+ conn.execute("DELETE FROM messages WHERE mailbox_id=? AND thread_id=?", parameters)
410
+ conn.execute("INSERT OR IGNORE INTO deleted_threads (mailbox_id, thread_id) VALUES (?, ?)", parameters)
411
+ return {"thread_id": thread_id, "deleted": True, **self._counts(conn, mailbox_id)}
@@ -0,0 +1 @@
1
+ # api