evarness 0.2.0__tar.gz → 0.2.2__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 (973) hide show
  1. evarness-0.2.2/PKG-INFO +267 -0
  2. evarness-0.2.2/README.md +196 -0
  3. {evarness-0.2.0 → evarness-0.2.2}/pyproject.toml +1 -1
  4. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/__init__.py +1 -1
  5. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/demo/run.py +3 -2
  6. evarness-0.2.0/PKG-INFO +0 -409
  7. evarness-0.2.0/README.md +0 -338
  8. {evarness-0.2.0 → evarness-0.2.2}/LICENSE +0 -0
  9. {evarness-0.2.0 → evarness-0.2.2}/config/behaviors/reminders.default.md +0 -0
  10. {evarness-0.2.0 → evarness-0.2.2}/config/channels.yaml +0 -0
  11. {evarness-0.2.0 → evarness-0.2.2}/config/cron/audit-compact.cron +0 -0
  12. {evarness-0.2.0 → evarness-0.2.2}/config/digest.yaml +0 -0
  13. {evarness-0.2.0 → evarness-0.2.2}/config/docs_search.yaml +0 -0
  14. {evarness-0.2.0 → evarness-0.2.2}/config/doctor.yaml +0 -0
  15. {evarness-0.2.0 → evarness-0.2.2}/config/escalation.yaml +0 -0
  16. {evarness-0.2.0 → evarness-0.2.2}/config/governance/egress.yaml +0 -0
  17. {evarness-0.2.0 → evarness-0.2.2}/config/governance/identity.yaml +0 -0
  18. {evarness-0.2.0 → evarness-0.2.2}/config/governance/mcp-serve.yaml +0 -0
  19. {evarness-0.2.0 → evarness-0.2.2}/config/governance/mcp-signing.yaml +0 -0
  20. {evarness-0.2.0 → evarness-0.2.2}/config/governance/mcp-trust.yaml +0 -0
  21. {evarness-0.2.0 → evarness-0.2.2}/config/governance/sandbox.yaml +0 -0
  22. {evarness-0.2.0 → evarness-0.2.2}/config/governance/taint-policy.yaml +0 -0
  23. {evarness-0.2.0 → evarness-0.2.2}/config/governance/threat-detection.yaml +0 -0
  24. {evarness-0.2.0 → evarness-0.2.2}/config/governance/tool-access.yaml +0 -0
  25. {evarness-0.2.0 → evarness-0.2.2}/config/governor/policy.yaml +0 -0
  26. {evarness-0.2.0 → evarness-0.2.2}/config/health_watch.yaml +0 -0
  27. {evarness-0.2.0 → evarness-0.2.2}/config/heartbeats.yaml +0 -0
  28. {evarness-0.2.0 → evarness-0.2.2}/config/identity/active.default.md +0 -0
  29. {evarness-0.2.0 → evarness-0.2.2}/config/identity/episodic.default.md +0 -0
  30. {evarness-0.2.0 → evarness-0.2.2}/config/identity/soul.default.md +0 -0
  31. {evarness-0.2.0 → evarness-0.2.2}/config/identity/soul_layers.yaml +0 -0
  32. {evarness-0.2.0 → evarness-0.2.2}/config/intent_anchors.yaml +0 -0
  33. {evarness-0.2.0 → evarness-0.2.2}/config/intent_keywords.yaml +0 -0
  34. {evarness-0.2.0 → evarness-0.2.2}/config/intercepts.yaml +0 -0
  35. {evarness-0.2.0 → evarness-0.2.2}/config/knowledge/wiki_schema.yaml +0 -0
  36. {evarness-0.2.0 → evarness-0.2.2}/config/learning/strategies.yaml +0 -0
  37. {evarness-0.2.0 → evarness-0.2.2}/config/llm_tiers.yaml +0 -0
  38. {evarness-0.2.0 → evarness-0.2.2}/config/memory/entity_aliases.yaml +0 -0
  39. {evarness-0.2.0 → evarness-0.2.2}/config/memory/extraction.yaml +0 -0
  40. {evarness-0.2.0 → evarness-0.2.2}/config/memory/learning.yaml +0 -0
  41. {evarness-0.2.0 → evarness-0.2.2}/config/memory/mappings.yaml +0 -0
  42. {evarness-0.2.0 → evarness-0.2.2}/config/memory/ontology.yaml +0 -0
  43. {evarness-0.2.0 → evarness-0.2.2}/config/memory/recall.yaml +0 -0
  44. {evarness-0.2.0 → evarness-0.2.2}/config/memory/retention.yaml +0 -0
  45. {evarness-0.2.0 → evarness-0.2.2}/config/memory/shapes.yaml +0 -0
  46. {evarness-0.2.0 → evarness-0.2.2}/config/memory/summary.yaml +0 -0
  47. {evarness-0.2.0 → evarness-0.2.2}/config/multi_step.yaml +0 -0
  48. {evarness-0.2.0 → evarness-0.2.2}/config/notifications.yaml +0 -0
  49. {evarness-0.2.0 → evarness-0.2.2}/config/outcomes.yaml +0 -0
  50. {evarness-0.2.0 → evarness-0.2.2}/config/playground/README.md +0 -0
  51. {evarness-0.2.0 → evarness-0.2.2}/config/playground/core-deterministic.yaml +0 -0
  52. {evarness-0.2.0 → evarness-0.2.2}/config/playground/injection-pressure.yaml +0 -0
  53. {evarness-0.2.0 → evarness-0.2.2}/config/playground/intercepts-live.yaml.example +0 -0
  54. {evarness-0.2.0 → evarness-0.2.2}/config/playground/memory-continuity.yaml +0 -0
  55. {evarness-0.2.0 → evarness-0.2.2}/config/playground/memory-graph.yaml +0 -0
  56. {evarness-0.2.0 → evarness-0.2.2}/config/playground/routing-breadth.yaml +0 -0
  57. {evarness-0.2.0 → evarness-0.2.2}/config/profiles/default.yaml +0 -0
  58. {evarness-0.2.0 → evarness-0.2.2}/config/profiles/email.yaml +0 -0
  59. {evarness-0.2.0 → evarness-0.2.2}/config/profiles/minimal.yaml +0 -0
  60. {evarness-0.2.0 → evarness-0.2.2}/config/search_providers.yaml +0 -0
  61. {evarness-0.2.0 → evarness-0.2.2}/config/skills/builtin/daily-repo-brief/manifest.yaml +0 -0
  62. {evarness-0.2.0 → evarness-0.2.2}/config/skills/builtin/harness-core/manifest.yaml +0 -0
  63. {evarness-0.2.0 → evarness-0.2.2}/config/skills/builtin/harness-core/tools.py +0 -0
  64. {evarness-0.2.0 → evarness-0.2.2}/config/skills/builtin/harness-tasks/manifest.yaml +0 -0
  65. {evarness-0.2.0 → evarness-0.2.2}/config/skills/builtin/harness-tasks/tools.py +0 -0
  66. {evarness-0.2.0 → evarness-0.2.2}/config/skills/builtin/morning-briefing/manifest.yaml +0 -0
  67. {evarness-0.2.0 → evarness-0.2.2}/config/skills/builtin/sample-brief/manifest.yaml +0 -0
  68. {evarness-0.2.0 → evarness-0.2.2}/config/skills/builtin/web-fetch/manifest.yaml +0 -0
  69. {evarness-0.2.0 → evarness-0.2.2}/config/skills/builtin/web-fetch/tools.py +0 -0
  70. {evarness-0.2.0 → evarness-0.2.2}/config/skills/email/email-followup/agent.md +0 -0
  71. {evarness-0.2.0 → evarness-0.2.2}/config/skills/email/email-followup/manifest.yaml +0 -0
  72. {evarness-0.2.0 → evarness-0.2.2}/config/skills/email/email-followup/tools.py +0 -0
  73. {evarness-0.2.0 → evarness-0.2.2}/config/skills/email/email-triage/agent.md +0 -0
  74. {evarness-0.2.0 → evarness-0.2.2}/config/skills/email/email-triage/manifest.yaml +0 -0
  75. {evarness-0.2.0 → evarness-0.2.2}/config/skills/email/email-triage/tools.py +0 -0
  76. {evarness-0.2.0 → evarness-0.2.2}/config/skills/email/gmail-inbox/agent.md +0 -0
  77. {evarness-0.2.0 → evarness-0.2.2}/config/skills/email/gmail-inbox/manifest.yaml +0 -0
  78. {evarness-0.2.0 → evarness-0.2.2}/config/skills/email/gmail-inbox/tools.py +0 -0
  79. {evarness-0.2.0 → evarness-0.2.2}/config/skills/rag/docs-search/agent.md +0 -0
  80. {evarness-0.2.0 → evarness-0.2.2}/config/skills/rag/docs-search/manifest.yaml +0 -0
  81. {evarness-0.2.0 → evarness-0.2.2}/config/skills/rag/docs-search/tools.py +0 -0
  82. {evarness-0.2.0 → evarness-0.2.2}/config/skills/system/system-status/agent.md +0 -0
  83. {evarness-0.2.0 → evarness-0.2.2}/config/skills/system/system-status/manifest.yaml +0 -0
  84. {evarness-0.2.0 → evarness-0.2.2}/config/skills/system/system-status/tools.py +0 -0
  85. {evarness-0.2.0 → evarness-0.2.2}/config/webui/nav.yaml +0 -0
  86. {evarness-0.2.0 → evarness-0.2.2}/config/welcome.yaml +0 -0
  87. {evarness-0.2.0 → evarness-0.2.2}/config/write_claims.yaml +0 -0
  88. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/__init__.py +0 -0
  89. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/agent_executor.py +0 -0
  90. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/agent_metadata.py +0 -0
  91. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/agentic_core.py +0 -0
  92. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/answer_guard.py +0 -0
  93. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/context_budget.py +0 -0
  94. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/context_health.py +0 -0
  95. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/dateparse.py +0 -0
  96. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/escalation.py +0 -0
  97. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/heartbeat.py +0 -0
  98. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/intent_router.py +0 -0
  99. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/outcomes.py +0 -0
  100. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/provenance.py +0 -0
  101. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/response_curator.py +0 -0
  102. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/run_review.py +0 -0
  103. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/task_planner.py +0 -0
  104. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/task_spec.py +0 -0
  105. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/agent/tool_runner.py +0 -0
  106. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/__init__.py +0 -0
  107. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/api_client.py +0 -0
  108. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/approvals.py +0 -0
  109. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/behaviors.py +0 -0
  110. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/commands.py +0 -0
  111. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/context_health.py +0 -0
  112. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/device.py +0 -0
  113. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/docs.py +0 -0
  114. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/doctor.py +0 -0
  115. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/facts.py +0 -0
  116. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/governance.py +0 -0
  117. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/health.py +0 -0
  118. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/intentions.py +0 -0
  119. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/interactive.py +0 -0
  120. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/learning.py +0 -0
  121. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/logs.py +0 -0
  122. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/mcp.py +0 -0
  123. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/memory.py +0 -0
  124. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/mission.py +0 -0
  125. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/modes.py +0 -0
  126. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/ontology.py +0 -0
  127. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/playground.py +0 -0
  128. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/plugin_scaffold.py +0 -0
  129. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/plugins.py +0 -0
  130. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/push.py +0 -0
  131. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/queue.py +0 -0
  132. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/render.py +0 -0
  133. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/repl.py +0 -0
  134. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/run_inspect.py +0 -0
  135. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/serve.py +0 -0
  136. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/session.py +0 -0
  137. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/setup.py +0 -0
  138. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/signals.py +0 -0
  139. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/_common/pyproject.toml.tmpl +0 -0
  140. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/_common/src/__tmpl_package/__init__.py +0 -0
  141. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/_common/tests/test_stable_tier.py +0 -0
  142. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/channel/README.md +0 -0
  143. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/channel/src/__tmpl_package/manifest.yaml +0 -0
  144. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/channel/src/__tmpl_package/plugin.py +0 -0
  145. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/channel/tests/test_plugin.py +0 -0
  146. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/kinds.yaml +0 -0
  147. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/mail-provider/README.md +0 -0
  148. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/mail-provider/src/__tmpl_package/manifest.yaml +0 -0
  149. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/mail-provider/src/__tmpl_package/plugin.py +0 -0
  150. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/mail-provider/tests/test_plugin.py +0 -0
  151. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/research-provider/README.md +0 -0
  152. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/research-provider/src/__tmpl_package/manifest.yaml +0 -0
  153. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/research-provider/src/__tmpl_package/plugin.py +0 -0
  154. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/research-provider/tests/model_script.yaml +0 -0
  155. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/research-provider/tests/test_plugin.py +0 -0
  156. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/skill/README.md +0 -0
  157. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/skill/src/__tmpl_package/functions.py +0 -0
  158. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/skill/src/__tmpl_package/manifest.yaml +0 -0
  159. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/skill/tests/model_script.yaml +0 -0
  160. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/skill/tests/test_plugin.py +0 -0
  161. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/tool/README.md +0 -0
  162. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/tool/src/__tmpl_package/manifest.yaml +0 -0
  163. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/tool/src/__tmpl_package/plugin.py +0 -0
  164. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/tool/tests/model_script.yaml +0 -0
  165. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/templates/plugin/tool/tests/test_plugin.py +0 -0
  166. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/web_commands.py +0 -0
  167. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/cli/welcome.py +0 -0
  168. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/__init__.py +0 -0
  169. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/activity.py +0 -0
  170. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/auth.py +0 -0
  171. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/capabilities.py +0 -0
  172. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/capability_fields.py +0 -0
  173. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/clock.py +0 -0
  174. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/console.py +0 -0
  175. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/data/__init__.py +0 -0
  176. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/data/dues_vocabulary.py +0 -0
  177. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/env.py +0 -0
  178. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/eventbus/__init__.py +0 -0
  179. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/eventbus/bus.py +0 -0
  180. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/eventbus/topics.py +0 -0
  181. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/file_lock.py +0 -0
  182. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/ids.py +0 -0
  183. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/legacy.py +0 -0
  184. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/logsafe.py +0 -0
  185. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/observability/__init__.py +0 -0
  186. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/observability/audit_view.py +0 -0
  187. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/observability/host_pressure.py +0 -0
  188. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/observability/instruments.py +0 -0
  189. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/observability/logging_setup.py +0 -0
  190. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/observability/metrics_summary.py +0 -0
  191. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/observability/otlp_setup.py +0 -0
  192. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/observability/session_log.py +0 -0
  193. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/observability/trace_builder.py +0 -0
  194. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/observability/tracer.py +0 -0
  195. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/paths.py +0 -0
  196. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/persistence/__init__.py +0 -0
  197. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/persistence/embedding.py +0 -0
  198. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/persistence/sqlite.py +0 -0
  199. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/plugin_dirs.py +0 -0
  200. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/process_state.py +0 -0
  201. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/public_url.py +0 -0
  202. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/settings/__init__.py +0 -0
  203. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/settings/catalog.py +0 -0
  204. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/settings/catalog.yaml +0 -0
  205. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/settings/env_overrides.py +0 -0
  206. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/settings/restart.py +0 -0
  207. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/foundation/settings/store.py +0 -0
  208. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/AGENTS.md +0 -0
  209. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/__init__.py +0 -0
  210. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/__init__.py +0 -0
  211. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/__init__.py +0 -0
  212. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/channels/__init__.py +0 -0
  213. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/channels/base.py +0 -0
  214. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/channels/cli_channel.py +0 -0
  215. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/channels/web_channel.py +0 -0
  216. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/events.py +0 -0
  217. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/gate.py +0 -0
  218. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/queue.py +0 -0
  219. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/router.py +0 -0
  220. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/schema.sql +0 -0
  221. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/service.py +0 -0
  222. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/approvals/store.py +0 -0
  223. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/__init__.py +0 -0
  224. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/archive/__init__.py +0 -0
  225. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/archive/compact.py +0 -0
  226. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/archive/markers.py +0 -0
  227. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/archive/query.py +0 -0
  228. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/archive/writer.py +0 -0
  229. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/digest.py +0 -0
  230. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/log.py +0 -0
  231. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/proof_bundle.py +0 -0
  232. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/proof_bundle.schema.json +0 -0
  233. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/replay.py +0 -0
  234. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/sequence.py +0 -0
  235. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/spool.py +0 -0
  236. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/view.py +0 -0
  237. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/audit/write_health.py +0 -0
  238. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/call_context.py +0 -0
  239. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/caller_policy.py +0 -0
  240. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/cost/__init__.py +0 -0
  241. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/cost/pricing.py +0 -0
  242. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/cost/store.py +0 -0
  243. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/cost/summary.py +0 -0
  244. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/devices/__init__.py +0 -0
  245. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/devices/schema.sql +0 -0
  246. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/devices/service.py +0 -0
  247. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/devices/store.py +0 -0
  248. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/devices/throttle.py +0 -0
  249. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/disclosure.py +0 -0
  250. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/display_mask.py +0 -0
  251. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/egress_policy.py +0 -0
  252. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/__init__.py +0 -0
  253. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/client.py +0 -0
  254. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/drift_exemptions.py +0 -0
  255. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/embeddings.py +0 -0
  256. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/flagged_runs.py +0 -0
  257. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/hook.py +0 -0
  258. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/judge.py +0 -0
  259. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/judge_template.py +0 -0
  260. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/registry.py +0 -0
  261. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/signals/__init__.py +0 -0
  262. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/signals/action_repeat.py +0 -0
  263. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/signals/classification_violation.py +0 -0
  264. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/signals/cost_budget.py +0 -0
  265. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/signals/goal_drift.py +0 -0
  266. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/signals/loop_detect.py +0 -0
  267. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/signals/step_cap.py +0 -0
  268. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/signals/tool_failure_streak.py +0 -0
  269. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/evaluator/types.py +0 -0
  270. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/external_content.py +0 -0
  271. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/external_content_allow.py +0 -0
  272. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/file_scan.py +0 -0
  273. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/hooks/__init__.py +0 -0
  274. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/hooks/response_payload.py +0 -0
  275. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/hooks/result_text.py +0 -0
  276. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/hooks/tool_payload.py +0 -0
  277. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/hooks/types.py +0 -0
  278. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/identity_config.py +0 -0
  279. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/identity_redaction.py +0 -0
  280. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/kernel.py +0 -0
  281. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/mcp_clients.py +0 -0
  282. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/mcp_signing/__init__.py +0 -0
  283. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/mcp_signing/config.py +0 -0
  284. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/mcp_signing/keys.py +0 -0
  285. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/mcp_signing/launcher.py +0 -0
  286. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/mcp_signing/spec.py +0 -0
  287. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/mcp_signing/trust.py +0 -0
  288. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/mcp_signing/verifier.py +0 -0
  289. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/owner_identity.py +0 -0
  290. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/owner_matchers.py +0 -0
  291. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/owner_pii.py +0 -0
  292. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugin_egress.py +0 -0
  293. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/__init__.py +0 -0
  294. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/caller_policy.py +0 -0
  295. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/capability_redaction.py +0 -0
  296. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/classifier.py +0 -0
  297. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/command_sandbox.py +0 -0
  298. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/cost_limiter.py +0 -0
  299. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/credential_broker.py +0 -0
  300. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/destructive_approval.py +0 -0
  301. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/egress_gate.py +0 -0
  302. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/external_content_floor.py +0 -0
  303. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/fs_jail.py +0 -0
  304. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/input_safety.py +0 -0
  305. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/mcp_allowlist.py +0 -0
  306. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/mcp_client_egress.py +0 -0
  307. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/network_egress.py +0 -0
  308. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/output_classifier.py +0 -0
  309. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/owner_pii_shadow.py +0 -0
  310. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/persona_surface.py +0 -0
  311. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/plugin_egress.py +0 -0
  312. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/post_tool_use_ledger.py +0 -0
  313. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/pre_tool_use_ledger.py +0 -0
  314. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/prompt_guard.py +0 -0
  315. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/redaction.py +0 -0
  316. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/regex_packs.py +0 -0
  317. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/response_safety.py +0 -0
  318. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/plugins/tool_policy.py +0 -0
  319. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/public_suffix.py +0 -0
  320. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/public_suffix_icann.dat +0 -0
  321. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/reentry.py +0 -0
  322. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/side_effects/__init__.py +0 -0
  323. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/side_effects/probes.py +0 -0
  324. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/side_effects/schema.sql +0 -0
  325. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/side_effects/store.py +0 -0
  326. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/taint_policy.py +0 -0
  327. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/threat/__init__.py +0 -0
  328. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/threat/availability.py +0 -0
  329. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/threat/backends.py +0 -0
  330. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/threat/battery.py +0 -0
  331. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/threat/config.py +0 -0
  332. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/threat/detector.py +0 -0
  333. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/threat/types.py +0 -0
  334. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/turn_label.py +0 -0
  335. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/unmask_grants.py +0 -0
  336. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/vault/__init__.py +0 -0
  337. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/vault/credentials.py +0 -0
  338. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/vault/handle.py +0 -0
  339. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/vault/keys.py +0 -0
  340. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/vault/secret_store.py +0 -0
  341. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/vault/store.py +0 -0
  342. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governance/wiring.py +0 -0
  343. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governor/__init__.py +0 -0
  344. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governor/audit.py +0 -0
  345. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governor/exceptions.py +0 -0
  346. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governor/models.py +0 -0
  347. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governor/policy.py +0 -0
  348. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governor/rate_limiter.py +0 -0
  349. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/kernel/governor/service.py +0 -0
  350. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/__init__.py +0 -0
  351. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/arbiter.py +0 -0
  352. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/budget.py +0 -0
  353. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/client.py +0 -0
  354. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/copilot_auth.py +0 -0
  355. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/egress.py +0 -0
  356. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/embeddings.py +0 -0
  357. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/errors.py +0 -0
  358. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/fake.py +0 -0
  359. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/locality.py +0 -0
  360. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/model_metadata.py +0 -0
  361. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/narrate.py +0 -0
  362. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/providers.py +0 -0
  363. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/tier_edits.py +0 -0
  364. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/llm/tier_router.py +0 -0
  365. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/main.py +0 -0
  366. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/__init__.py +0 -0
  367. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/coherence.py +0 -0
  368. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/compactor.py +0 -0
  369. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/coordinator.py +0 -0
  370. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/export.py +0 -0
  371. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/fact_extractor.py +0 -0
  372. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/fact_keys.py +0 -0
  373. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/fact_statements.py +0 -0
  374. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/fact_validation.py +0 -0
  375. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/gate_audit.py +0 -0
  376. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/gate_audit_corpus.py +0 -0
  377. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/graph.py +0 -0
  378. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/graph_context.py +0 -0
  379. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/identity/__init__.py +0 -0
  380. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/identity/loader.py +0 -0
  381. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/knowledge/__init__.py +0 -0
  382. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/knowledge/connectors/__init__.py +0 -0
  383. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/knowledge/connectors/base.py +0 -0
  384. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/knowledge/connectors/obsidian.py +0 -0
  385. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/knowledge/entity_extractor.py +0 -0
  386. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/knowledge/event_subscribers.py +0 -0
  387. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/knowledge/models.py +0 -0
  388. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/knowledge/page_manager.py +0 -0
  389. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/knowledge/wiki_engine.py +0 -0
  390. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/knowledge/wiki_index.py +0 -0
  391. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/lessons.py +0 -0
  392. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/log_archive.py +0 -0
  393. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/map_exclusions.py +0 -0
  394. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/ontology.py +0 -0
  395. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/profile.py +0 -0
  396. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/profile_recall.py +0 -0
  397. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/removal.py +0 -0
  398. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/resolution.py +0 -0
  399. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/retention.py +0 -0
  400. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/retriever.py +0 -0
  401. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/semantic_index.py +0 -0
  402. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/standing_instructions.py +0 -0
  403. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/state/__init__.py +0 -0
  404. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/state/chat.py +0 -0
  405. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/state/continuations.py +0 -0
  406. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/state/store.py +0 -0
  407. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/statement_migration.py +0 -0
  408. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/store.py +0 -0
  409. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/triage.py +0 -0
  410. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/memory/vocabulary.py +0 -0
  411. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/playground/__init__.py +0 -0
  412. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/playground/assertions.py +0 -0
  413. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/playground/baseline.py +0 -0
  414. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/playground/drift.py +0 -0
  415. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/playground/loader.py +0 -0
  416. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/playground/models.py +0 -0
  417. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/playground/runner.py +0 -0
  418. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/playground/service.py +0 -0
  419. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/AGENTS.md +0 -0
  420. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/__init__.py +0 -0
  421. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/code_exec/__init__.py +0 -0
  422. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/code_exec/handler.py +0 -0
  423. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/code_exec/manifest.yaml +0 -0
  424. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/code_exec/plugin.py +0 -0
  425. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/graphiti_import/__init__.py +0 -0
  426. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/graphiti_import/cli.py +0 -0
  427. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/graphiti_import/graphiti.yaml +0 -0
  428. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/graphiti_import/manifest.yaml +0 -0
  429. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/graphiti_import/mappings.yaml +0 -0
  430. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/graphiti_import/plugin.py +0 -0
  431. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/graphiti_import/reader.py +0 -0
  432. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/__init__.py +0 -0
  433. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/cache.py +0 -0
  434. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/engine.py +0 -0
  435. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/extract.py +0 -0
  436. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/guard.py +0 -0
  437. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/language.py +0 -0
  438. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/manifest.yaml +0 -0
  439. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/models.py +0 -0
  440. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/news_policy.py +0 -0
  441. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/news_sources.yaml +0 -0
  442. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/plugin.py +0 -0
  443. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/privacy.py +0 -0
  444. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/providers/__init__.py +0 -0
  445. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/providers/base.py +0 -0
  446. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/providers/brave.py +0 -0
  447. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/providers/duckduckgo.py +0 -0
  448. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/providers/exa.py +0 -0
  449. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/providers/searxng.py +0 -0
  450. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/providers/tavily.py +0 -0
  451. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/rank.py +0 -0
  452. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/rerank.py +0 -0
  453. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/tool.py +0 -0
  454. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/research/tools.py +0 -0
  455. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/system/__init__.py +0 -0
  456. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/system/manifest.yaml +0 -0
  457. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/system/plugin.py +0 -0
  458. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/telegram_channel/__init__.py +0 -0
  459. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/telegram_channel/manifest.yaml +0 -0
  460. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/telegram_channel/plugin.py +0 -0
  461. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/web_channel/__init__.py +0 -0
  462. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/web_channel/connector.py +0 -0
  463. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/web_channel/manifest.yaml +0 -0
  464. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/web_channel/plugin.py +0 -0
  465. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/web_push_channel/__init__.py +0 -0
  466. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/web_push_channel/manifest.yaml +0 -0
  467. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/plugins_builtin/web_push_channel/plugin.py +0 -0
  468. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/py.typed +0 -0
  469. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/__init__.py +0 -0
  470. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/action_center.py +0 -0
  471. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/activity_notices.py +0 -0
  472. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/agent_console.py +0 -0
  473. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/agent_panels.py +0 -0
  474. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/agent_settings_store.py +0 -0
  475. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/api_routes.py +0 -0
  476. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/bootstrap.py +0 -0
  477. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/brief_tools.py +0 -0
  478. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/capabilities.py +0 -0
  479. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/channel_wiring.py +0 -0
  480. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/classifiers.py +0 -0
  481. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/client_config.py +0 -0
  482. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/confirmations.py +0 -0
  483. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/continuations.py +0 -0
  484. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/egress_access.py +0 -0
  485. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/egress_transport.py +0 -0
  486. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/escalation_actions.py +0 -0
  487. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/eval_runtime.py +0 -0
  488. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/external_text.py +0 -0
  489. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/external_tools.py +0 -0
  490. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/facade.py +0 -0
  491. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/governance_judge.py +0 -0
  492. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/governed_http.py +0 -0
  493. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/__init__.py +0 -0
  494. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/brief_formats.py +0 -0
  495. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/brief_prefs.py +0 -0
  496. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/general.py +0 -0
  497. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/general_invoke.py +0 -0
  498. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/general_support.py +0 -0
  499. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/general_tools.py +0 -0
  500. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/local_skills.py +0 -0
  501. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/react.py +0 -0
  502. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/skill_brief.py +0 -0
  503. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/handlers/ticks.py +0 -0
  504. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/harness_services.py +0 -0
  505. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/identity_redaction.py +0 -0
  506. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/intercept_dispatch.py +0 -0
  507. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/intercepts.py +0 -0
  508. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/judges.py +0 -0
  509. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/learning_builders.py +0 -0
  510. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/learning_controls.py +0 -0
  511. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/mcp_serve.py +0 -0
  512. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/mission_proposals.py +0 -0
  513. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/nlu_parsing.py +0 -0
  514. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/__init__.py +0 -0
  515. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/api.py +0 -0
  516. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/declarative.py +0 -0
  517. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/dump.py +0 -0
  518. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/harness_topics.py +0 -0
  519. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/inventory.py +0 -0
  520. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/loader.py +0 -0
  521. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/manifest.py +0 -0
  522. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/mcp_host.py +0 -0
  523. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/nav.py +0 -0
  524. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/profile.py +0 -0
  525. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/plugin_host/registry.py +0 -0
  526. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/react_tools.py +0 -0
  527. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/replies.py +0 -0
  528. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/rollout_flags.py +0 -0
  529. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/router_audit.py +0 -0
  530. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/routine_authoring.py +0 -0
  531. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/self_learning_loop.py +0 -0
  532. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/session_memory.py +0 -0
  533. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/settings_catalog.py +0 -0
  534. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/shadow.py +0 -0
  535. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/skill_matching.py +0 -0
  536. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/skill_tool_specs.py +0 -0
  537. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/tool_access.py +0 -0
  538. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/tool_call_parsing.py +0 -0
  539. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/tool_service.py +0 -0
  540. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/__init__.py +0 -0
  541. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/host.py +0 -0
  542. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/pipeline.py +0 -0
  543. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/__init__.py +0 -0
  544. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/classify.py +0 -0
  545. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/curate.py +0 -0
  546. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/execute.py +0 -0
  547. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/guard.py +0 -0
  548. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/intercept.py +0 -0
  549. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/notice.py +0 -0
  550. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/opener.py +0 -0
  551. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/plan.py +0 -0
  552. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/record.py +0 -0
  553. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/resolve.py +0 -0
  554. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/route.py +0 -0
  555. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/stages/screen.py +0 -0
  556. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn/state.py +0 -0
  557. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn_capture.py +0 -0
  558. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/turn_context.py +0 -0
  559. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/types.py +0 -0
  560. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/runtime/welcome.py +0 -0
  561. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/AGENTS.md +0 -0
  562. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/__init__.py +0 -0
  563. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/activities.py +0 -0
  564. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/activity.py +0 -0
  565. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/approvals.py +0 -0
  566. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/audit.py +0 -0
  567. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/capabilities.py +0 -0
  568. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/channels.py +0 -0
  569. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/cli.py +0 -0
  570. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/config.py +0 -0
  571. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/content.py +0 -0
  572. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/digest.py +0 -0
  573. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/docs.py +0 -0
  574. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/events.py +0 -0
  575. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/health.py +0 -0
  576. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/heartbeat.py +0 -0
  577. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/http.py +0 -0
  578. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/identity.py +0 -0
  579. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/learning.py +0 -0
  580. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/llm.py +0 -0
  581. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/logging.py +0 -0
  582. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/mcp.py +0 -0
  583. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/memory.py +0 -0
  584. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/parsing.py +0 -0
  585. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/pending_actions.py +0 -0
  586. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/persistence.py +0 -0
  587. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/process_state.py +0 -0
  588. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/rag.py +0 -0
  589. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/reminders.py +0 -0
  590. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/research.py +0 -0
  591. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/sandbox.py +0 -0
  592. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/services.py +0 -0
  593. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/stable_tier.yaml +0 -0
  594. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/tasks.py +0 -0
  595. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/time.py +0 -0
  596. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/tools.py +0 -0
  597. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/types.py +0 -0
  598. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/sdk/vault.py +0 -0
  599. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/__init__.py +0 -0
  600. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/auth.py +0 -0
  601. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/channel_gateway/__init__.py +0 -0
  602. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/channel_gateway/main.py +0 -0
  603. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/channel_gateway/main_types.py +0 -0
  604. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/channel_gateway/telegram.py +0 -0
  605. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/evaluator/__init__.py +0 -0
  606. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/evaluator/main.py +0 -0
  607. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/governor/__init__.py +0 -0
  608. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/governor/main.py +0 -0
  609. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/__init__.py +0 -0
  610. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/action_center_routes.py +0 -0
  611. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/agent_routes.py +0 -0
  612. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/chat_routes.py +0 -0
  613. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/detached_turns.py +0 -0
  614. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/device_routes.py +0 -0
  615. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/digest_feedback_routes.py +0 -0
  616. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/digest_routes.py +0 -0
  617. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/governance_routes.py +0 -0
  618. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/health_routes.py +0 -0
  619. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/learning_routes.py +0 -0
  620. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/main.py +0 -0
  621. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/mcp_server.py +0 -0
  622. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/memory_routes.py +0 -0
  623. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/ops_routes.py +0 -0
  624. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/playground_routes.py +0 -0
  625. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/push_routes.py +0 -0
  626. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/routines_routes.py +0 -0
  627. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/runtime_access.py +0 -0
  628. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/session_routes.py +0 -0
  629. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/settings_routes.py +0 -0
  630. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/static_ui.py +0 -0
  631. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/apple-touch-icon.png +0 -0
  632. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/ActionCenter-DPme58BE.js +0 -0
  633. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/ActivityFeed-Nm_RwwAz.js +0 -0
  634. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/AgentDashboard-Dojfdzf7.js +0 -0
  635. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Agents-Dq0I6VuX.js +0 -0
  636. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/CallTrace-D3vtSjfn.js +0 -0
  637. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Card-CXQcUgWe.js +0 -0
  638. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Chat-Bvcg3Bl-.js +0 -0
  639. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/ConfirmDialog-cQm1i1sw.js +0 -0
  640. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/CopyBlock-B9Rb1MjP.js +0 -0
  641. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Devices-BQf0mwTM.js +0 -0
  642. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Digest-DJTcX1sk.js +0 -0
  643. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/DigitalTwin-BnDh4-mJ.js +0 -0
  644. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Governance-B0IndDdb.js +0 -0
  645. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Health-CVZaordF.js +0 -0
  646. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Heartbeats-li6F-3b8.js +0 -0
  647. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Inbox-C2i3gjPa.js +0 -0
  648. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Knowledge-DH_1HKQr.js +0 -0
  649. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Learning-DfGC54J2.js +0 -0
  650. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Markdown-j0pwcwK-.js +0 -0
  651. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Memory-Zxz0DoSW.js +0 -0
  652. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/More-BgCWK7Nx.js +0 -0
  653. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Onboarding-Dnsw2VLB.js +0 -0
  654. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Overview-CTa_iRzh.js +0 -0
  655. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Pair-DlnVXM2M.js +0 -0
  656. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Playground-CVikP4hH.js +0 -0
  657. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/PluginDetail-Cm4lwuyQ.js +0 -0
  658. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Portfolio-DkvcQom8.js +0 -0
  659. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Rag-CH3QNZm0.js +0 -0
  660. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/ReconnectSheet-BjnZlyy-.js +0 -0
  661. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Reminder-CSFxYBCa.js +0 -0
  662. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Routines-CY3M7E32.js +0 -0
  663. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Sessions-CTrqPfxf.js +0 -0
  664. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Settings-C6ywirYS.js +0 -0
  665. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Setup-C6cEFSk8.js +0 -0
  666. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/Switch-BH9PZxoY.js +0 -0
  667. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/SystemCheck-Cn9RsJui.js +0 -0
  668. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/breakpoint-CLJTHGon.js +0 -0
  669. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/check-D0NYL5pb.js +0 -0
  670. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/dagre-B_OITo6c.js +0 -0
  671. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/dagre-DLioOiRN.css +0 -0
  672. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/dialog-C6T5mW7y.js +0 -0
  673. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/es2015-BjHWtMgl.js +0 -0
  674. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/http-BUcIPk9n.js +0 -0
  675. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/index-Cv_Iyn0z.css +0 -0
  676. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/index-WB9vDf9y.js +0 -0
  677. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/input-Cbj0uKBG.js +0 -0
  678. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/layout-WFL9FQeY.js +0 -0
  679. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/nodeMeta-D76FxGpn.js +0 -0
  680. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/parts-B0DqHYDY.js +0 -0
  681. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/parts-BJHhvYsv.js +0 -0
  682. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/thumbs-down-DaIvDjt_.js +0 -0
  683. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/assets/useQuery-CXR1pn6x.js +0 -0
  684. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/icon-192.png +0 -0
  685. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/icon-512-maskable.png +0 -0
  686. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/icon-512.png +0 -0
  687. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/index.html +0 -0
  688. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/manifest.webmanifest +0 -0
  689. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/offline.html +0 -0
  690. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/webui_dist/sw.js +0 -0
  691. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/server/harness_api/write_guard.py +0 -0
  692. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/__init__.py +0 -0
  693. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/activities/__init__.py +0 -0
  694. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/activities/events.py +0 -0
  695. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/activities/models.py +0 -0
  696. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/activities/runner.py +0 -0
  697. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/activities/store.py +0 -0
  698. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/__init__.py +0 -0
  699. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/approval_commands.py +0 -0
  700. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/approval_delivery.py +0 -0
  701. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/channel_config.py +0 -0
  702. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/connectors/__init__.py +0 -0
  703. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/connectors/console.py +0 -0
  704. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/connectors/telegram.py +0 -0
  705. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/connectors/telegram_poller.py +0 -0
  706. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/connectors/ws_client.py +0 -0
  707. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/gateway.py +0 -0
  708. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/models.py +0 -0
  709. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/protocol.py +0 -0
  710. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/reminder_commands.py +0 -0
  711. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/web_push/__init__.py +0 -0
  712. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/web_push/connector.py +0 -0
  713. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/web_push/encryption.py +0 -0
  714. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/web_push/keys.py +0 -0
  715. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/web_push/store.py +0 -0
  716. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/channels/web_push/vapid.py +0 -0
  717. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/digest/__init__.py +0 -0
  718. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/digest/edits.py +0 -0
  719. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/digest/expiry.py +0 -0
  720. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/digest/footer.py +0 -0
  721. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/digest/learned.py +0 -0
  722. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/digest/run_first.py +0 -0
  723. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/digest/settings.py +0 -0
  724. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/digests/__init__.py +0 -0
  725. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/digests/store.py +0 -0
  726. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/docs_search/__init__.py +0 -0
  727. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/docs_search/corpus.py +0 -0
  728. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/docs_search/search.py +0 -0
  729. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/__init__.py +0 -0
  730. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/checks.py +0 -0
  731. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/credentials.py +0 -0
  732. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/governance.py +0 -0
  733. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/heartbeat.py +0 -0
  734. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/incidents.py +0 -0
  735. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/jobs.py +0 -0
  736. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/models.py +0 -0
  737. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/pending_actions.py +0 -0
  738. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/repair.py +0 -0
  739. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/service.py +0 -0
  740. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/skills.py +0 -0
  741. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/watch.py +0 -0
  742. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/health/watch_edits.py +0 -0
  743. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/heartbeat/__init__.py +0 -0
  744. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/heartbeat/config.py +0 -0
  745. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/heartbeat/diagnostics.py +0 -0
  746. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/heartbeat/models.py +0 -0
  747. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/heartbeat/run_store.py +0 -0
  748. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/heartbeat/schedule_text.py +0 -0
  749. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/heartbeat/scheduler.py +0 -0
  750. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/heartbeat/slots.py +0 -0
  751. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/__init__.py +0 -0
  752. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/analyst.py +0 -0
  753. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/behavior_miner.py +0 -0
  754. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/crystallizer.py +0 -0
  755. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/dedup.py +0 -0
  756. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/engine.py +0 -0
  757. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/escalation_priors.py +0 -0
  758. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/eval_adapter.py +0 -0
  759. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/eval_docker.py +0 -0
  760. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/eval_harness.py +0 -0
  761. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/eval_preflight.py +0 -0
  762. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/eval_replay_cli.py +0 -0
  763. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/eval_runtime.py +0 -0
  764. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/eval_workload.py +0 -0
  765. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/experiment_loop.py +0 -0
  766. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/intelligence.py +0 -0
  767. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/intention_rollup.py +0 -0
  768. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/lesson_capture.py +0 -0
  769. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/metrics.py +0 -0
  770. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/models.py +0 -0
  771. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/preflight.py +0 -0
  772. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/promote.py +0 -0
  773. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/proposal_quality.py +0 -0
  774. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/retriever.py +0 -0
  775. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/signals.py +0 -0
  776. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/store.py +0 -0
  777. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/strategies.py +0 -0
  778. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/learning/suppression.py +0 -0
  779. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/missions/__init__.py +0 -0
  780. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/missions/engine.py +0 -0
  781. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/missions/handlers.py +0 -0
  782. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/missions/models.py +0 -0
  783. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/missions/proposer.py +0 -0
  784. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/missions/store.py +0 -0
  785. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/notifications/__init__.py +0 -0
  786. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/notifications/bills.py +0 -0
  787. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/notifications/channels.py +0 -0
  788. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/notifications/events.py +0 -0
  789. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/notifications/health.py +0 -0
  790. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/notifications/models.py +0 -0
  791. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/notifications/recurrence.py +0 -0
  792. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/notifications/snooze.py +0 -0
  793. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/notifications/store.py +0 -0
  794. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/notifications/targets.py +0 -0
  795. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/__init__.py +0 -0
  796. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/chunker.py +0 -0
  797. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/documents.py +0 -0
  798. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/index.py +0 -0
  799. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/ingest.py +0 -0
  800. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/ingest_gate.py +0 -0
  801. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/ingest_source.py +0 -0
  802. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/loaders.py +0 -0
  803. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/models.py +0 -0
  804. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/obsidian.py +0 -0
  805. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/ocr.py +0 -0
  806. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/qa.py +0 -0
  807. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/retrieve.py +0 -0
  808. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/sensitivity.py +0 -0
  809. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/rag/store.py +0 -0
  810. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/research/__init__.py +0 -0
  811. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/research/providers.py +0 -0
  812. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/routines/__init__.py +0 -0
  813. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/routines/authoring.py +0 -0
  814. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/routines/models.py +0 -0
  815. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/routines/reflection.py +0 -0
  816. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/routines/seeded.py +0 -0
  817. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/routines/store.py +0 -0
  818. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/system/__init__.py +0 -0
  819. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/system/doctor.py +0 -0
  820. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/system/inventory.py +0 -0
  821. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/system/setup_state.py +0 -0
  822. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/system/status.py +0 -0
  823. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/system/telegram_pairing.py +0 -0
  824. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/tasks/__init__.py +0 -0
  825. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/tasks/brief_view.py +0 -0
  826. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/tasks/events.py +0 -0
  827. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/tasks/models.py +0 -0
  828. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/tasks/pending_actions.py +0 -0
  829. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/services/tasks/store.py +0 -0
  830. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/testing/__init__.py +0 -0
  831. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/testing/conformance.py +0 -0
  832. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/testing/harness.py +0 -0
  833. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/testing/network_imports.py +0 -0
  834. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/testing/proof_bundle.py +0 -0
  835. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/testing/stable.py +0 -0
  836. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/__init__.py +0 -0
  837. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/mcp/__init__.py +0 -0
  838. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/mcp/server.py +0 -0
  839. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/mcp_bridge.py +0 -0
  840. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/propose_skill_from_sandbox.py +0 -0
  841. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/Dockerfile +0 -0
  842. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/Dockerfile.eval +0 -0
  843. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/__init__.py +0 -0
  844. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/config.py +0 -0
  845. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/docker_sandbox.py +0 -0
  846. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/egress.py +0 -0
  847. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/egress_proxy.py +0 -0
  848. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/exceptions.py +0 -0
  849. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/models.py +0 -0
  850. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/runtime.py +0 -0
  851. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox/workspace.py +0 -0
  852. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/sandbox_tools.py +0 -0
  853. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/skills/__init__.py +0 -0
  854. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/skills/hot_reload.py +0 -0
  855. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/skills/loader.py +0 -0
  856. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/skills/models.py +0 -0
  857. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/skills/registry.py +0 -0
  858. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/skills/semantic_router.py +0 -0
  859. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/skills/skill_synthesizer.py +0 -0
  860. {evarness-0.2.0 → evarness-0.2.2}/src/evarness/tools/stock_quote.py +0 -0
  861. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/__init__.py +0 -0
  862. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/connections/__init__.py +0 -0
  863. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/connections/google.py +0 -0
  864. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/connections/google_routes.py +0 -0
  865. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/__init__.py +0 -0
  866. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/accounts.py +0 -0
  867. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/agent_tools.py +0 -0
  868. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/analysis.py +0 -0
  869. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/categories.py +0 -0
  870. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/category_store.py +0 -0
  871. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/contracts.py +0 -0
  872. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/digest.py +0 -0
  873. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/events.py +0 -0
  874. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/feedback_keys.py +0 -0
  875. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/provider_api.py +0 -0
  876. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/providers.py +0 -0
  877. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/semantic_index.py +0 -0
  878. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/send_tools.py +0 -0
  879. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/store.py +0 -0
  880. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/sweep.py +0 -0
  881. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/sweep_gate.py +0 -0
  882. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/trash_tools.py +0 -0
  883. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/email/write_approvals.py +0 -0
  884. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/__init__.py +0 -0
  885. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/__init__.py +0 -0
  886. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/agent.py +0 -0
  887. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/cli.py +0 -0
  888. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/cli_setup.py +0 -0
  889. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/cli_writes.py +0 -0
  890. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/demo/__init__.py +0 -0
  891. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/demo/corpus.json +0 -0
  892. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/demo/corpus.py +0 -0
  893. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/demo/fake_model.yaml +0 -0
  894. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/demo/home.py +0 -0
  895. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/demo/provider.py +0 -0
  896. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/digest_focus.py +0 -0
  897. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/discovery.py +0 -0
  898. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/first_digest.py +0 -0
  899. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/followup.py +0 -0
  900. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/holdout.py +0 -0
  901. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/inbox_mix.py +0 -0
  902. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/job_watch.py +0 -0
  903. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/job_watch.yaml +0 -0
  904. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge.py +0 -0
  905. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge.yaml +0 -0
  906. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_api.py +0 -0
  907. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_cards.py +0 -0
  908. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_chat.py +0 -0
  909. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_config.py +0 -0
  910. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_corrections.py +0 -0
  911. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_digest.py +0 -0
  912. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_labels.py +0 -0
  913. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_surfaces.py +0 -0
  914. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_view.py +0 -0
  915. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_wiring.py +0 -0
  916. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judge_words.py +0 -0
  917. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/judgments.py +0 -0
  918. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/knn_gate.py +0 -0
  919. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/manifest.yaml +0 -0
  920. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/map_exclusions.py +0 -0
  921. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/memory_map.yaml +0 -0
  922. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/onboarding.py +0 -0
  923. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/onboarding.yaml +0 -0
  924. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/onboarding_api.py +0 -0
  925. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/plugin.py +0 -0
  926. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/semantic_heartbeat.py +0 -0
  927. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/sweep_health.py +0 -0
  928. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/tools.py +0 -0
  929. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/triage.py +0 -0
  930. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/wiki_ingestion.py +0 -0
  931. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/email_workflows/writes_health.py +0 -0
  932. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/gmail/__init__.py +0 -0
  933. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/gmail/cli.py +0 -0
  934. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/gmail/gmail_attachments.py +0 -0
  935. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/gmail/gmail_fetch.py +0 -0
  936. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/gmail/gmail_oauth.py +0 -0
  937. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/gmail/manifest.yaml +0 -0
  938. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/gmail/plugin.py +0 -0
  939. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/gmail/provider.py +0 -0
  940. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/gmail/vendor_categories.py +0 -0
  941. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/gmail/vendor_categories.yaml +0 -0
  942. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/__init__.py +0 -0
  943. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/account.py +0 -0
  944. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/cli.py +0 -0
  945. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/connection.py +0 -0
  946. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/health.py +0 -0
  947. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/keywords.py +0 -0
  948. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/manifest.yaml +0 -0
  949. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/mime.py +0 -0
  950. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/plugin.py +0 -0
  951. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/provider.py +0 -0
  952. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/plugins/imap/state.py +0 -0
  953. {evarness-0.2.0 → evarness-0.2.2}/src/evarness_personal/py.typed +0 -0
  954. {evarness-0.2.0 → evarness-0.2.2}/src/iris_harness/__init__.py +0 -0
  955. {evarness-0.2.0 → evarness-0.2.2}/src/iris_personal/__init__.py +0 -0
  956. {evarness-0.2.0 → evarness-0.2.2}/src/memris/__init__.py +0 -0
  957. {evarness-0.2.0 → evarness-0.2.2}/src/memris/graph.py +0 -0
  958. {evarness-0.2.0 → evarness-0.2.2}/src/memris/interchange/__init__.py +0 -0
  959. {evarness-0.2.0 → evarness-0.2.2}/src/memris/interchange/__main__.py +0 -0
  960. {evarness-0.2.0 → evarness-0.2.2}/src/memris/interchange/jsonld.py +0 -0
  961. {evarness-0.2.0 → evarness-0.2.2}/src/memris/interchange/mapping.py +0 -0
  962. {evarness-0.2.0 → evarness-0.2.2}/src/memris/learn.py +0 -0
  963. {evarness-0.2.0 → evarness-0.2.2}/src/memris/model/__init__.py +0 -0
  964. {evarness-0.2.0 → evarness-0.2.2}/src/memris/ontology/__init__.py +0 -0
  965. {evarness-0.2.0 → evarness-0.2.2}/src/memris/ontology/__main__.py +0 -0
  966. {evarness-0.2.0 → evarness-0.2.2}/src/memris/ontology/compiler.py +0 -0
  967. {evarness-0.2.0 → evarness-0.2.2}/src/memris/ontology/learned.py +0 -0
  968. {evarness-0.2.0 → evarness-0.2.2}/src/memris/ontology/loader.py +0 -0
  969. {evarness-0.2.0 → evarness-0.2.2}/src/memris/ontology/spec.py +0 -0
  970. {evarness-0.2.0 → evarness-0.2.2}/src/memris/resolve.py +0 -0
  971. {evarness-0.2.0 → evarness-0.2.2}/src/memris/store/__init__.py +0 -0
  972. {evarness-0.2.0 → evarness-0.2.2}/src/memris/store/memory.py +0 -0
  973. {evarness-0.2.0 → evarness-0.2.2}/src/memris/store/sqlite.py +0 -0
@@ -0,0 +1,267 @@
1
+ Metadata-Version: 2.4
2
+ Name: evarness
3
+ Version: 0.2.2
4
+ Summary: The governed agent harness for small local models. It proves what it did.
5
+ License: Apache-2.0
6
+ License-File: LICENSE
7
+ Keywords: ai,llm,agent,harness,governance,privacy,ollama,local-first,mcp,plugins
8
+ Author: Evarness contributors
9
+ Requires-Python: >=3.12,<3.14
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
12
+ Classifier: Environment :: Web Environment
13
+ Classifier: Intended Audience :: End Users/Desktop
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Communications :: Email
20
+ Classifier: Topic :: Office/Business :: Scheduling
21
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
+ Provides-Extra: all
23
+ Provides-Extra: email
24
+ Provides-Extra: ml
25
+ Requires-Dist: apscheduler (>=3.10.0,<4.0.0)
26
+ Requires-Dist: beautifulsoup4 (>=4.12,<5.0)
27
+ Requires-Dist: chromadb (>=0.5.0)
28
+ Requires-Dist: cryptography (>=43,<51)
29
+ Requires-Dist: ddgs (>=9.14,<10.0)
30
+ Requires-Dist: duckdb (>=1.1,<2)
31
+ Requires-Dist: fastapi (>=0.109,<1)
32
+ Requires-Dist: google-api-python-client (>=2.0,<3.0) ; extra == "email" or extra == "all"
33
+ Requires-Dist: google-auth (>=2.0,<3.0) ; extra == "email" or extra == "all"
34
+ Requires-Dist: google-auth-oauthlib (>=1.0,<2.0) ; extra == "email" or extra == "all"
35
+ Requires-Dist: httpcore (>=1,<2)
36
+ Requires-Dist: httpx (>=0.27,<1)
37
+ Requires-Dist: keyring (>=25.0.0,<26.0.0)
38
+ Requires-Dist: langchain-core (>=1.6,<2.0)
39
+ Requires-Dist: langchain-ollama (>=1.1,<2.0)
40
+ Requires-Dist: langchain-openai (>=1.6,<2.0)
41
+ Requires-Dist: numpy (>=1.26)
42
+ Requires-Dist: openinference-instrumentation-langchain (>=0.1.0)
43
+ Requires-Dist: opentelemetry-api (>=1.20.0)
44
+ Requires-Dist: opentelemetry-exporter-otlp (>=1.20.0)
45
+ Requires-Dist: opentelemetry-instrumentation-httpx (>=0.62b1)
46
+ Requires-Dist: opentelemetry-sdk (>=1.20.0)
47
+ Requires-Dist: pillow (>=12.1.0,<13.0.0)
48
+ Requires-Dist: prompt_toolkit (>=3.0)
49
+ Requires-Dist: psutil (>=6.0.0,<7.0.0)
50
+ Requires-Dist: pyarrow (>=15.0)
51
+ Requires-Dist: pydantic (>=2.0,<3.0)
52
+ Requires-Dist: pyjwt (>=2.13,<3.0)
53
+ Requires-Dist: pypdfium2 (>=5.9.0,<6.0.0)
54
+ Requires-Dist: pytesseract (>=0.3.13,<0.4.0)
55
+ Requires-Dist: python-dotenv (>=1.2.1,<2.0.0)
56
+ Requires-Dist: python-multipart (>=0.0.31)
57
+ Requires-Dist: pyyaml (>=6.0,<7.0)
58
+ Requires-Dist: scikit-learn (>=1.3) ; extra == "email" or extra == "all"
59
+ Requires-Dist: sentence-transformers (>=5.5.1,<6.0.0) ; extra == "ml" or extra == "all"
60
+ Requires-Dist: starlette (>=1.3.1,<2)
61
+ Requires-Dist: trafilatura (>=2.1.0,<3.0.0)
62
+ Requires-Dist: uvicorn (>=0.27,<1)
63
+ Requires-Dist: watchdog (>=4.0.0,<5.0.0)
64
+ Project-URL: Bug Tracker, https://github.com/evarness-ai/evarness/issues
65
+ Project-URL: Changelog, https://github.com/evarness-ai/evarness/blob/main/CHANGELOG.md
66
+ Project-URL: Documentation, https://github.com/evarness-ai/evarness/blob/main/README.md
67
+ Project-URL: Homepage, https://github.com/evarness-ai/evarness
68
+ Project-URL: Repository, https://github.com/evarness-ai/evarness
69
+ Description-Content-Type: text/markdown
70
+
71
+ # Evarness
72
+
73
+ **The governed agent harness for small local models.**
74
+ Local by default. Deterministic where it can be. Governed before action. Learns in the open.
75
+
76
+ [![PyPI](https://img.shields.io/pypi/v/evarness?label=PyPI)](https://pypi.org/project/evarness/)
77
+ [![Python](https://img.shields.io/pypi/pyversions/evarness?label=Python)](https://pypi.org/project/evarness/)
78
+ [![CI](https://github.com/evarness-ai/evarness/actions/workflows/ci.yml/badge.svg)](https://github.com/evarness-ai/evarness/actions/workflows/ci.yml)
79
+ [![Docs](https://img.shields.io/badge/docs-evarness--ai.github.io-blue)](https://evarness-ai.github.io/evarness/)
80
+ [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
81
+ [![Discussions](https://img.shields.io/badge/discussions-ask%20and%20share-green)](https://github.com/evarness-ai/evarness/discussions)
82
+
83
+ Evarness runs an agent loop (classify, plan, act with tools, curate the answer) on models
84
+ that fit on a laptop, through Ollama, LM Studio or any OpenAI-compatible server. Every model
85
+ call and every tool call passes through a governance kernel you cannot unplug. A turn that
86
+ can be answered exactly is answered with no model at all. The harness measures its own
87
+ routing and tool use and proposes changes with evidence; it applies none of them until you
88
+ say so. Everything outside the loop and the kernel is a plugin on a small, stable SDK.
89
+
90
+ The proof is the email assistant that ships with it: a private inbox assistant that reads,
91
+ sorts and labels your mail on a local model, writes nothing until you approve it, and leaves
92
+ an audit row for every call. The email assistant is not the product. It is the first proof
93
+ that the harness works.
94
+
95
+ Documentation: **https://evarness-ai.github.io/evarness/**. Say it "ev-AR-ness".
96
+
97
+ ## Why I built it
98
+
99
+ I started Evarness as a private experiment: a personal assistant that runs on my own
100
+ machines, on small local models, and helps with real work without sending my mail to
101
+ someone else's cloud. As I added tools, routing, memory and email, the model turned out to
102
+ be the smaller problem. A bigger model did not give me reliable tool calls, a local model did
103
+ not give me permission boundaries, a system prompt was not a security boundary, and I did
104
+ not want "self-learning" to mean the system quietly rewriting itself. Those became the
105
+ harness's responsibilities, and Evarness is the result. Models provide cognition.
106
+ Deterministic paths provide reliability. Plugins provide capability. Learning provides
107
+ adaptation. Governance provides authority.
108
+
109
+ ## Try it in three minutes
110
+
111
+ You need [uv](https://docs.astral.sh/uv/) or [pipx](https://pipx.pypa.io/)
112
+ ([install notes](https://evarness-ai.github.io/evarness/getting-started/install/)). On
113
+ Windows, one script sets everything up in Docker Desktop; see the
114
+ [Windows guide](https://evarness-ai.github.io/evarness/guides/windows/).
115
+
116
+ ```bash
117
+ uv tool install "evarness[email]" # or: pipx install "evarness[email]"
118
+ evarness doctor # can Evarness run here, and what to fix
119
+ evarness email demo # a synthetic mailbox, a scripted model, no network
120
+ ```
121
+
122
+ The demo needs no account, no credentials and no model server. It fetches a 200-message
123
+ synthetic mailbox, sorts it, previews and writes labels, prints a first digest, and ends with
124
+ what it did, audit rows included. The demo keeps its own home, `~/.evarness-demo`, and never
125
+ touches yours. Export that home's proof bundle, ledger and session logs both, and verify it
126
+ offline:
127
+
128
+ ```bash
129
+ evarness governance proof-bundle export --db ~/.evarness-demo/governance/audit.db \
130
+ --session-logs ~/.evarness-demo/logs --out bundle.json
131
+ evarness governance proof-bundle verify bundle.json # exit 0 verified, 1 a violation
132
+ ```
133
+
134
+ <img alt="A terminal recording: evarness email demo runs to its summary, then the proof bundle is exported and verified." src="https://github.com/evarness-ai/evarness/raw/main/docs/assets/recording/launch.gif" width="800">
135
+
136
+ For your own mail you need [Ollama](https://ollama.com/download) and 8 GB of RAM for the
137
+ `lite` model set, 16 GB for `standard`. Connect an account, let `evarness doctor --fix` pull
138
+ the models your machine fits, then run `evarness email setup`; it asks before any write.
139
+ [Connect your mailbox](https://evarness-ai.github.io/evarness/getting-started/connect-your-mailbox/)
140
+ has the provider notes, and [setup gotchas](https://evarness-ai.github.io/evarness/guides/setup-gotchas/)
141
+ the known snags.
142
+
143
+ ## How it works
144
+
145
+ <img alt="How a turn is governed: the input screen, then either a deterministic handler answers with no model call or the agent loop runs; both paths pass the governance kernel (classify, egress gate, tool policy and approvals, audit ledger) before model tiers or plugins are reached." src="https://github.com/evarness-ai/evarness/raw/main/docs/assets/how-a-turn-is-governed.png" width="800">
146
+
147
+ The kernel is a passage, not a filter: it runs at
148
+ [nine fixed hook points](https://evarness-ai.github.io/evarness/concepts/governance/#hook-points)
149
+ in every turn, and plugins cannot add, remove or reorder them. The stage-by-stage view is in
150
+ [Architecture](https://evarness-ai.github.io/evarness/concepts/architecture/); the editable
151
+ source of the drawing is
152
+ [`docs/architecture/how-a-turn-is-governed.excalidraw`](docs/architecture/how-a-turn-is-governed.excalidraw).
153
+
154
+ ## Three things a bigger model would not give you
155
+
156
+ **Deterministic where it can be.** On one grounded action, a 7B model called the right tool
157
+ 25% of the time and a 35B model 0%; a deterministic handler did it 100% of the time
158
+ ([the measurement](https://evarness-ai.github.io/evarness/concepts/deterministic-handlers/)).
159
+ A plugin can claim the turns it can answer exactly, and those answers pass the same
160
+ model-free guards and leave an audit row marked `deterministic`.
161
+
162
+ **Governed before action.** Data is classified before it moves; personal and secret data
163
+ stays on local models even when a cloud tier is on. Secrets reach tools as vault handles,
164
+ never as prompt text. Writes ask once; destructive actions wait for your approval, per call.
165
+ The [proof bundle](https://evarness-ai.github.io/evarness/reference/proof-bundle/) checks
166
+ three invariants offline: no personal data to a cloud model, no mailbox write without an
167
+ approval, every call and answer audited. The demo's bundle exercises the first two; the third
168
+ is observed from chat sessions, which a scripted demo does not record.
169
+
170
+ **Learns in the open.** Four scheduled jobs read the signals real turns leave behind (intent
171
+ confidence, tool failures, your corrections, task outcomes), propose experiments, recommend a
172
+ start tier per intent, and write recurring successes as quarantined skill proposals. Each is
173
+ recorded, none is applied, until you turn its flag on; the lifecycle is measure, propose,
174
+ review, promote. The jobs, the signals and
175
+ [every flag](https://evarness-ai.github.io/evarness/concepts/learning/#what-is-off-until-you-turn-it-on)
176
+ are in [Learning](https://evarness-ai.github.io/evarness/concepts/learning/).
177
+
178
+ ## See every decision
179
+
180
+ The web console shows the ledger. Governance has the kernel's posture and the proof bundle's
181
+ invariants, checked against the audit rows; Call trace has each turn as a graph, with the
182
+ governance decision at every hook. Both are from `evarness email demo`:
183
+
184
+ <picture>
185
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/evarness-ai/evarness/raw/main/docs/assets/screenshots/governance-dark.webp">
186
+ <img alt="The Governance screen after the email demo: the kernel's protections, mostly on, over the run's audit entries, and the proof bundle verified, with no-private-to-cloud and mailbox-write-approved holding." src="https://github.com/evarness-ai/evarness/raw/main/docs/assets/screenshots/governance-light.webp" width="800">
187
+ </picture>
188
+
189
+ <picture>
190
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/evarness-ai/evarness/raw/main/docs/assets/screenshots/call-trace-dark.webp">
191
+ <img alt="The Call trace of the first-chat welcome turn: four steps, no model call, with the pre_response guard's allow decision open in the detail panel." src="https://github.com/evarness-ai/evarness/raw/main/docs/assets/screenshots/call-trace-light.webp" width="800">
192
+ </picture>
193
+
194
+ ## Build on it
195
+
196
+ A plugin is a package with a `manifest.yaml` and a `setup(api)`. It can answer a turn with a
197
+ deterministic handler, add tools to the governed pool, run on a schedule and deliver to a
198
+ channel, extend the console and the API, feed memory and search, and reach out through the
199
+ governed HTTP client. Everything it registers lands on the same hooks the core uses.
200
+
201
+ ```bash
202
+ evarness plugins new weather-now --kind tool # or channel, mail-provider, research-provider, skill
203
+ cd weather-now && pip install -e ".[test]" && pytest
204
+ ```
205
+
206
+ `evarness.testing` runs your plugin inside a real governed Evarness on a scripted model and
207
+ lets you assert on the audit ledger. Nine runnable examples, each tested in CI, are in
208
+ [`examples/`](https://github.com/evarness-ai/evarness/tree/main/examples); what a plugin may
209
+ import, and the deprecation rule that protects it, is the
210
+ [stable API](https://evarness-ai.github.io/evarness/reference/stable-api/). Plugins can also
211
+ arrive as MCP servers, signed and verified before launch.
212
+
213
+ ## Where it is today (0.2.0)
214
+
215
+ 1. **Learning proposes, it does not apply.** Priors, crystallized skills and experiment
216
+ variants are recorded and quarantined; each has a documented flag to turn application on.
217
+ 2. **Brief and digest slots run their skill tools in-process:** a redaction pass, but no
218
+ per-call hook, approval check or audit row. Tracked in
219
+ [#199](https://github.com/evarness-ai/evarness/issues/199), help wanted.
220
+ 3. **MCP launch signing defaults to shadow:** every call is verified and the verdict is on
221
+ the ledger rows; nothing is blocked until you set `enforce`.
222
+ 4. **The audit ledger is append-only, not tamper-evident.** The hash chain is designed and
223
+ deferred ([#231](https://github.com/evarness-ai/evarness/issues/231)).
224
+ 5. **Outlook and Microsoft 365 are not supported over IMAP.** iCloud, Fastmail, Yahoo and
225
+ Gmail are. A provider over the Graph API is the first project on the help-wanted list.
226
+ 6. **The MCP bridge is experimental and off by default.** Known gaps in
227
+ [#111](https://github.com/evarness-ai/evarness/issues/111) to
228
+ [#114](https://github.com/evarness-ai/evarness/issues/114).
229
+ 7. **Docker with the bundled CPU-only Ollama needs more than 8 GB for the 7B model,** and
230
+ the lite set has not been tried inside Docker. Native Ollama with `make up-host` works.
231
+ 8. **Evarness has one maintainer.** Response times follow from that; contributions are how
232
+ it changes.
233
+
234
+ Evarness runs on macOS (Apple Silicon) and Linux; on Windows, use Docker Desktop or WSL2. It
235
+ collects no telemetry. It is pre-1.0: the stable API changes only after a deprecation cycle,
236
+ and everything else may change in any release. Until 0.2.0 the project was called IRIS; the
237
+ old package, environment variable and directory names keep working for one release and warn
238
+ once (see the [changelog](CHANGELOG.md)). To run the scheduled jobs and the console as a
239
+ service, see [Run with Docker](https://evarness-ai.github.io/evarness/guides/docker/).
240
+
241
+ ## Contributing
242
+
243
+ Outside review is the contribution this project needs most. Run the demo from a clean
244
+ machine and report friction. Try to find a path around the governance kernel; what counts is
245
+ in [SECURITY.md](SECURITY.md), which also says how to report it privately. Build a plugin
246
+ outside this repository and say where the SDK gets in your way. Run it on hardware the
247
+ maintainer does not have. Tell us which abstraction does not belong in the core. A
248
+ well-reasoned challenge to an architectural decision is a contribution too; the reasons
249
+ behind the design are in the [decision log](docs/adr/index.md).
250
+
251
+ ```bash
252
+ git clone https://github.com/evarness-ai/evarness.git && cd evarness
253
+ poetry install --with dev --extras email
254
+ poetry run evarness email demo # the whole stack from source: no account, no model server
255
+ scripts/ci_local.sh --fast # ruff, black, mypy, import contracts, the tests for what changed
256
+ ```
257
+
258
+ [CONTRIBUTING.md](CONTRIBUTING.md) has the governance rules every change keeps, the DCO
259
+ sign-off, the stable-tier rule and **where help is wanted**. Read the
260
+ [code of conduct](CODE_OF_CONDUCT.md). Coding agents: [AGENTS.md](AGENTS.md). Questions and
261
+ ideas go to [Discussions](https://github.com/evarness-ai/evarness/discussions); bugs to
262
+ Issues. Changes are listed in [CHANGELOG.md](CHANGELOG.md).
263
+
264
+ ## License
265
+
266
+ Apache License 2.0; see [LICENSE](LICENSE). Evarness is, and will remain, Apache-2.0.
267
+
@@ -0,0 +1,196 @@
1
+ # Evarness
2
+
3
+ **The governed agent harness for small local models.**
4
+ Local by default. Deterministic where it can be. Governed before action. Learns in the open.
5
+
6
+ [![PyPI](https://img.shields.io/pypi/v/evarness?label=PyPI)](https://pypi.org/project/evarness/)
7
+ [![Python](https://img.shields.io/pypi/pyversions/evarness?label=Python)](https://pypi.org/project/evarness/)
8
+ [![CI](https://github.com/evarness-ai/evarness/actions/workflows/ci.yml/badge.svg)](https://github.com/evarness-ai/evarness/actions/workflows/ci.yml)
9
+ [![Docs](https://img.shields.io/badge/docs-evarness--ai.github.io-blue)](https://evarness-ai.github.io/evarness/)
10
+ [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
11
+ [![Discussions](https://img.shields.io/badge/discussions-ask%20and%20share-green)](https://github.com/evarness-ai/evarness/discussions)
12
+
13
+ Evarness runs an agent loop (classify, plan, act with tools, curate the answer) on models
14
+ that fit on a laptop, through Ollama, LM Studio or any OpenAI-compatible server. Every model
15
+ call and every tool call passes through a governance kernel you cannot unplug. A turn that
16
+ can be answered exactly is answered with no model at all. The harness measures its own
17
+ routing and tool use and proposes changes with evidence; it applies none of them until you
18
+ say so. Everything outside the loop and the kernel is a plugin on a small, stable SDK.
19
+
20
+ The proof is the email assistant that ships with it: a private inbox assistant that reads,
21
+ sorts and labels your mail on a local model, writes nothing until you approve it, and leaves
22
+ an audit row for every call. The email assistant is not the product. It is the first proof
23
+ that the harness works.
24
+
25
+ Documentation: **https://evarness-ai.github.io/evarness/**. Say it "ev-AR-ness".
26
+
27
+ ## Why I built it
28
+
29
+ I started Evarness as a private experiment: a personal assistant that runs on my own
30
+ machines, on small local models, and helps with real work without sending my mail to
31
+ someone else's cloud. As I added tools, routing, memory and email, the model turned out to
32
+ be the smaller problem. A bigger model did not give me reliable tool calls, a local model did
33
+ not give me permission boundaries, a system prompt was not a security boundary, and I did
34
+ not want "self-learning" to mean the system quietly rewriting itself. Those became the
35
+ harness's responsibilities, and Evarness is the result. Models provide cognition.
36
+ Deterministic paths provide reliability. Plugins provide capability. Learning provides
37
+ adaptation. Governance provides authority.
38
+
39
+ ## Try it in three minutes
40
+
41
+ You need [uv](https://docs.astral.sh/uv/) or [pipx](https://pipx.pypa.io/)
42
+ ([install notes](https://evarness-ai.github.io/evarness/getting-started/install/)). On
43
+ Windows, one script sets everything up in Docker Desktop; see the
44
+ [Windows guide](https://evarness-ai.github.io/evarness/guides/windows/).
45
+
46
+ ```bash
47
+ uv tool install "evarness[email]" # or: pipx install "evarness[email]"
48
+ evarness doctor # can Evarness run here, and what to fix
49
+ evarness email demo # a synthetic mailbox, a scripted model, no network
50
+ ```
51
+
52
+ The demo needs no account, no credentials and no model server. It fetches a 200-message
53
+ synthetic mailbox, sorts it, previews and writes labels, prints a first digest, and ends with
54
+ what it did, audit rows included. The demo keeps its own home, `~/.evarness-demo`, and never
55
+ touches yours. Export that home's proof bundle, ledger and session logs both, and verify it
56
+ offline:
57
+
58
+ ```bash
59
+ evarness governance proof-bundle export --db ~/.evarness-demo/governance/audit.db \
60
+ --session-logs ~/.evarness-demo/logs --out bundle.json
61
+ evarness governance proof-bundle verify bundle.json # exit 0 verified, 1 a violation
62
+ ```
63
+
64
+ <img alt="A terminal recording: evarness email demo runs to its summary, then the proof bundle is exported and verified." src="https://github.com/evarness-ai/evarness/raw/main/docs/assets/recording/launch.gif" width="800">
65
+
66
+ For your own mail you need [Ollama](https://ollama.com/download) and 8 GB of RAM for the
67
+ `lite` model set, 16 GB for `standard`. Connect an account, let `evarness doctor --fix` pull
68
+ the models your machine fits, then run `evarness email setup`; it asks before any write.
69
+ [Connect your mailbox](https://evarness-ai.github.io/evarness/getting-started/connect-your-mailbox/)
70
+ has the provider notes, and [setup gotchas](https://evarness-ai.github.io/evarness/guides/setup-gotchas/)
71
+ the known snags.
72
+
73
+ ## How it works
74
+
75
+ <img alt="How a turn is governed: the input screen, then either a deterministic handler answers with no model call or the agent loop runs; both paths pass the governance kernel (classify, egress gate, tool policy and approvals, audit ledger) before model tiers or plugins are reached." src="https://github.com/evarness-ai/evarness/raw/main/docs/assets/how-a-turn-is-governed.png" width="800">
76
+
77
+ The kernel is a passage, not a filter: it runs at
78
+ [nine fixed hook points](https://evarness-ai.github.io/evarness/concepts/governance/#hook-points)
79
+ in every turn, and plugins cannot add, remove or reorder them. The stage-by-stage view is in
80
+ [Architecture](https://evarness-ai.github.io/evarness/concepts/architecture/); the editable
81
+ source of the drawing is
82
+ [`docs/architecture/how-a-turn-is-governed.excalidraw`](docs/architecture/how-a-turn-is-governed.excalidraw).
83
+
84
+ ## Three things a bigger model would not give you
85
+
86
+ **Deterministic where it can be.** On one grounded action, a 7B model called the right tool
87
+ 25% of the time and a 35B model 0%; a deterministic handler did it 100% of the time
88
+ ([the measurement](https://evarness-ai.github.io/evarness/concepts/deterministic-handlers/)).
89
+ A plugin can claim the turns it can answer exactly, and those answers pass the same
90
+ model-free guards and leave an audit row marked `deterministic`.
91
+
92
+ **Governed before action.** Data is classified before it moves; personal and secret data
93
+ stays on local models even when a cloud tier is on. Secrets reach tools as vault handles,
94
+ never as prompt text. Writes ask once; destructive actions wait for your approval, per call.
95
+ The [proof bundle](https://evarness-ai.github.io/evarness/reference/proof-bundle/) checks
96
+ three invariants offline: no personal data to a cloud model, no mailbox write without an
97
+ approval, every call and answer audited. The demo's bundle exercises the first two; the third
98
+ is observed from chat sessions, which a scripted demo does not record.
99
+
100
+ **Learns in the open.** Four scheduled jobs read the signals real turns leave behind (intent
101
+ confidence, tool failures, your corrections, task outcomes), propose experiments, recommend a
102
+ start tier per intent, and write recurring successes as quarantined skill proposals. Each is
103
+ recorded, none is applied, until you turn its flag on; the lifecycle is measure, propose,
104
+ review, promote. The jobs, the signals and
105
+ [every flag](https://evarness-ai.github.io/evarness/concepts/learning/#what-is-off-until-you-turn-it-on)
106
+ are in [Learning](https://evarness-ai.github.io/evarness/concepts/learning/).
107
+
108
+ ## See every decision
109
+
110
+ The web console shows the ledger. Governance has the kernel's posture and the proof bundle's
111
+ invariants, checked against the audit rows; Call trace has each turn as a graph, with the
112
+ governance decision at every hook. Both are from `evarness email demo`:
113
+
114
+ <picture>
115
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/evarness-ai/evarness/raw/main/docs/assets/screenshots/governance-dark.webp">
116
+ <img alt="The Governance screen after the email demo: the kernel's protections, mostly on, over the run's audit entries, and the proof bundle verified, with no-private-to-cloud and mailbox-write-approved holding." src="https://github.com/evarness-ai/evarness/raw/main/docs/assets/screenshots/governance-light.webp" width="800">
117
+ </picture>
118
+
119
+ <picture>
120
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/evarness-ai/evarness/raw/main/docs/assets/screenshots/call-trace-dark.webp">
121
+ <img alt="The Call trace of the first-chat welcome turn: four steps, no model call, with the pre_response guard's allow decision open in the detail panel." src="https://github.com/evarness-ai/evarness/raw/main/docs/assets/screenshots/call-trace-light.webp" width="800">
122
+ </picture>
123
+
124
+ ## Build on it
125
+
126
+ A plugin is a package with a `manifest.yaml` and a `setup(api)`. It can answer a turn with a
127
+ deterministic handler, add tools to the governed pool, run on a schedule and deliver to a
128
+ channel, extend the console and the API, feed memory and search, and reach out through the
129
+ governed HTTP client. Everything it registers lands on the same hooks the core uses.
130
+
131
+ ```bash
132
+ evarness plugins new weather-now --kind tool # or channel, mail-provider, research-provider, skill
133
+ cd weather-now && pip install -e ".[test]" && pytest
134
+ ```
135
+
136
+ `evarness.testing` runs your plugin inside a real governed Evarness on a scripted model and
137
+ lets you assert on the audit ledger. Nine runnable examples, each tested in CI, are in
138
+ [`examples/`](https://github.com/evarness-ai/evarness/tree/main/examples); what a plugin may
139
+ import, and the deprecation rule that protects it, is the
140
+ [stable API](https://evarness-ai.github.io/evarness/reference/stable-api/). Plugins can also
141
+ arrive as MCP servers, signed and verified before launch.
142
+
143
+ ## Where it is today (0.2.0)
144
+
145
+ 1. **Learning proposes, it does not apply.** Priors, crystallized skills and experiment
146
+ variants are recorded and quarantined; each has a documented flag to turn application on.
147
+ 2. **Brief and digest slots run their skill tools in-process:** a redaction pass, but no
148
+ per-call hook, approval check or audit row. Tracked in
149
+ [#199](https://github.com/evarness-ai/evarness/issues/199), help wanted.
150
+ 3. **MCP launch signing defaults to shadow:** every call is verified and the verdict is on
151
+ the ledger rows; nothing is blocked until you set `enforce`.
152
+ 4. **The audit ledger is append-only, not tamper-evident.** The hash chain is designed and
153
+ deferred ([#231](https://github.com/evarness-ai/evarness/issues/231)).
154
+ 5. **Outlook and Microsoft 365 are not supported over IMAP.** iCloud, Fastmail, Yahoo and
155
+ Gmail are. A provider over the Graph API is the first project on the help-wanted list.
156
+ 6. **The MCP bridge is experimental and off by default.** Known gaps in
157
+ [#111](https://github.com/evarness-ai/evarness/issues/111) to
158
+ [#114](https://github.com/evarness-ai/evarness/issues/114).
159
+ 7. **Docker with the bundled CPU-only Ollama needs more than 8 GB for the 7B model,** and
160
+ the lite set has not been tried inside Docker. Native Ollama with `make up-host` works.
161
+ 8. **Evarness has one maintainer.** Response times follow from that; contributions are how
162
+ it changes.
163
+
164
+ Evarness runs on macOS (Apple Silicon) and Linux; on Windows, use Docker Desktop or WSL2. It
165
+ collects no telemetry. It is pre-1.0: the stable API changes only after a deprecation cycle,
166
+ and everything else may change in any release. Until 0.2.0 the project was called IRIS; the
167
+ old package, environment variable and directory names keep working for one release and warn
168
+ once (see the [changelog](CHANGELOG.md)). To run the scheduled jobs and the console as a
169
+ service, see [Run with Docker](https://evarness-ai.github.io/evarness/guides/docker/).
170
+
171
+ ## Contributing
172
+
173
+ Outside review is the contribution this project needs most. Run the demo from a clean
174
+ machine and report friction. Try to find a path around the governance kernel; what counts is
175
+ in [SECURITY.md](SECURITY.md), which also says how to report it privately. Build a plugin
176
+ outside this repository and say where the SDK gets in your way. Run it on hardware the
177
+ maintainer does not have. Tell us which abstraction does not belong in the core. A
178
+ well-reasoned challenge to an architectural decision is a contribution too; the reasons
179
+ behind the design are in the [decision log](docs/adr/index.md).
180
+
181
+ ```bash
182
+ git clone https://github.com/evarness-ai/evarness.git && cd evarness
183
+ poetry install --with dev --extras email
184
+ poetry run evarness email demo # the whole stack from source: no account, no model server
185
+ scripts/ci_local.sh --fast # ruff, black, mypy, import contracts, the tests for what changed
186
+ ```
187
+
188
+ [CONTRIBUTING.md](CONTRIBUTING.md) has the governance rules every change keeps, the DCO
189
+ sign-off, the stable-tier rule and **where help is wanted**. Read the
190
+ [code of conduct](CODE_OF_CONDUCT.md). Coding agents: [AGENTS.md](AGENTS.md). Questions and
191
+ ideas go to [Discussions](https://github.com/evarness-ai/evarness/discussions); bugs to
192
+ Issues. Changes are listed in [CHANGELOG.md](CHANGELOG.md).
193
+
194
+ ## License
195
+
196
+ Apache License 2.0; see [LICENSE](LICENSE). Evarness is, and will remain, Apache-2.0.
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "evarness"
3
- version = "0.2.0"
3
+ version = "0.2.2"
4
4
  description = "The governed agent harness for small local models. It proves what it did."
5
5
  authors = ["Evarness contributors"]
6
6
  readme = "README.md"
@@ -10,6 +10,6 @@ from evarness.foundation.legacy import alias_legacy_environment
10
10
 
11
11
  __all__ = ["__version__"]
12
12
 
13
- __version__ = "0.2.0"
13
+ __version__ = "0.2.2"
14
14
 
15
15
  alias_legacy_environment()
@@ -370,8 +370,9 @@ def render_summary(report: DemoReport) -> str:
370
370
  f"{report.home / 'governance' / 'audit.db'}.",
371
371
  f"- Network connections attempted: {report.network_attempts} (the demo refuses "
372
372
  "them all).",
373
- "- Learning: the signals from this run are recorded for the learning loop, which "
374
- "proposes and never applies on its own (`evarness learning status`).",
373
+ "- Learning: nothing to learn from in a scripted run. On a connected mailbox the loop "
374
+ "learns from your corrections and confirmations, proposes, and never applies on its "
375
+ "own (`evarness learning status`).",
375
376
  "",
376
377
  f"Everything is in {report.home}. Run it again: nothing is fetched or judged twice.",
377
378
  "Connect your own mailbox with `evarness email setup` when you are ready.",