volnix 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (932) hide show
  1. volnix-0.1.0/.env.example +31 -0
  2. volnix-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +64 -0
  3. volnix-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +56 -0
  4. volnix-0.1.0/.github/pull_request_template.md +20 -0
  5. volnix-0.1.0/.github/workflows/ci.yml +76 -0
  6. volnix-0.1.0/.github/workflows/publish.yml +47 -0
  7. volnix-0.1.0/.gitignore +91 -0
  8. volnix-0.1.0/AGENTS.md +171 -0
  9. volnix-0.1.0/CHANGELOG.md +32 -0
  10. volnix-0.1.0/CLAUDE.md +171 -0
  11. volnix-0.1.0/CODE_OF_CONDUCT.md +30 -0
  12. volnix-0.1.0/CONTRIBUTING.md +139 -0
  13. volnix-0.1.0/DESIGN_PRINCIPLES.md +165 -0
  14. volnix-0.1.0/LICENSE +21 -0
  15. volnix-0.1.0/PKG-INFO +616 -0
  16. volnix-0.1.0/README.md +576 -0
  17. volnix-0.1.0/SECURITY.md +46 -0
  18. volnix-0.1.0/docs/agent-integration.md +482 -0
  19. volnix-0.1.0/docs/architecture.md +181 -0
  20. volnix-0.1.0/docs/assets/Dashboard.png +0 -0
  21. volnix-0.1.0/docs/behavior-modes.md +181 -0
  22. volnix-0.1.0/docs/blueprints-reference.md +186 -0
  23. volnix-0.1.0/docs/configuration.md +467 -0
  24. volnix-0.1.0/docs/creating-worlds.md +452 -0
  25. volnix-0.1.0/docs/getting-started.md +177 -0
  26. volnix-0.1.0/docs/internal-agents.md +252 -0
  27. volnix-0.1.0/docs/internal-simulation.md +15 -0
  28. volnix-0.1.0/docs/pending-work.md +96 -0
  29. volnix-0.1.0/docs/service-packs.md +987 -0
  30. volnix-0.1.0/examples/README.md +407 -0
  31. volnix-0.1.0/examples/anthropic-sdk/main.py +108 -0
  32. volnix-0.1.0/examples/autogen/main.py +88 -0
  33. volnix-0.1.0/examples/crewai/crew.py +98 -0
  34. volnix-0.1.0/examples/gemini-sdk/main.py +125 -0
  35. volnix-0.1.0/examples/governance-test/main.py +137 -0
  36. volnix-0.1.0/examples/langgraph/volnix_agent.py +120 -0
  37. volnix-0.1.0/examples/launch-demo/README.md +57 -0
  38. volnix-0.1.0/examples/launch-demo/external/README.md +75 -0
  39. volnix-0.1.0/examples/launch-demo/external/agents.yaml +21 -0
  40. volnix-0.1.0/examples/launch-demo/external/run.py +127 -0
  41. volnix-0.1.0/examples/launch-demo/external/run.sh +44 -0
  42. volnix-0.1.0/examples/launch-demo/internal/README.md +45 -0
  43. volnix-0.1.0/examples/launch-demo/internal/run.sh +27 -0
  44. volnix-0.1.0/examples/mcp/claude_desktop_config.json +8 -0
  45. volnix-0.1.0/examples/mcp/main.py +65 -0
  46. volnix-0.1.0/examples/mcp/stdio_config.json +9 -0
  47. volnix-0.1.0/examples/openai-sdk/main.py +101 -0
  48. volnix-0.1.0/examples/pydanticai/main.py +46 -0
  49. volnix-0.1.0/pyproject.toml +95 -0
  50. volnix-0.1.0/scripts/check-providers.sh +119 -0
  51. volnix-0.1.0/scripts/start-acp.sh +82 -0
  52. volnix-0.1.0/scripts/test-providers.sh +89 -0
  53. volnix-0.1.0/tests/__init__.py +0 -0
  54. volnix-0.1.0/tests/actors/__init__.py +0 -0
  55. volnix-0.1.0/tests/actors/test_actor_state.py +408 -0
  56. volnix-0.1.0/tests/actors/test_definition.py +89 -0
  57. volnix-0.1.0/tests/actors/test_generator.py +141 -0
  58. volnix-0.1.0/tests/actors/test_personality.py +98 -0
  59. volnix-0.1.0/tests/actors/test_registry.py +221 -0
  60. volnix-0.1.0/tests/actors/test_replay.py +179 -0
  61. volnix-0.1.0/tests/actors/test_slot_binding.py +111 -0
  62. volnix-0.1.0/tests/actors/test_trait_extractor.py +115 -0
  63. volnix-0.1.0/tests/architecture/__init__.py +1 -0
  64. volnix-0.1.0/tests/architecture/conftest.py +29 -0
  65. volnix-0.1.0/tests/architecture/helpers.py +168 -0
  66. volnix-0.1.0/tests/architecture/test_contracts.py +158 -0
  67. volnix-0.1.0/tests/architecture/test_protocol_conformance.py +139 -0
  68. volnix-0.1.0/tests/architecture/test_source_guards.py +109 -0
  69. volnix-0.1.0/tests/architecture/test_world_compiler_guards.py +40 -0
  70. volnix-0.1.0/tests/bus/__init__.py +0 -0
  71. volnix-0.1.0/tests/bus/test_bus.py +238 -0
  72. volnix-0.1.0/tests/bus/test_fanout.py +169 -0
  73. volnix-0.1.0/tests/bus/test_integration.py +169 -0
  74. volnix-0.1.0/tests/bus/test_middleware.py +170 -0
  75. volnix-0.1.0/tests/bus/test_persistence.py +129 -0
  76. volnix-0.1.0/tests/bus/test_replay.py +190 -0
  77. volnix-0.1.0/tests/cli/__init__.py +0 -0
  78. volnix-0.1.0/tests/cli/test_cli.py +1086 -0
  79. volnix-0.1.0/tests/cli/test_preset_actors_flags.py +197 -0
  80. volnix-0.1.0/tests/config/__init__.py +0 -0
  81. volnix-0.1.0/tests/config/test_loader.py +155 -0
  82. volnix-0.1.0/tests/config/test_registry.py +88 -0
  83. volnix-0.1.0/tests/config/test_schema.py +120 -0
  84. volnix-0.1.0/tests/config/test_tunable.py +83 -0
  85. volnix-0.1.0/tests/config/test_validation.py +96 -0
  86. volnix-0.1.0/tests/conftest.py +193 -0
  87. volnix-0.1.0/tests/core/__init__.py +0 -0
  88. volnix-0.1.0/tests/core/test_context.py +51 -0
  89. volnix-0.1.0/tests/core/test_engine.py +123 -0
  90. volnix-0.1.0/tests/core/test_envelope.py +165 -0
  91. volnix-0.1.0/tests/core/test_errors.py +50 -0
  92. volnix-0.1.0/tests/core/test_events.py +136 -0
  93. volnix-0.1.0/tests/core/test_protocols.py +57 -0
  94. volnix-0.1.0/tests/core/test_types.py +125 -0
  95. volnix-0.1.0/tests/core/test_world_event_new_fields.py +122 -0
  96. volnix-0.1.0/tests/engines/__init__.py +0 -0
  97. volnix-0.1.0/tests/engines/adapter/__init__.py +0 -0
  98. volnix-0.1.0/tests/engines/adapter/test_acp_server.py +14 -0
  99. volnix-0.1.0/tests/engines/adapter/test_anthropic_compat.py +11 -0
  100. volnix-0.1.0/tests/engines/adapter/test_dashboard_endpoints.py +605 -0
  101. volnix-0.1.0/tests/engines/adapter/test_engine.py +104 -0
  102. volnix-0.1.0/tests/engines/adapter/test_event_enrichment.py +241 -0
  103. volnix-0.1.0/tests/engines/adapter/test_http_rest.py +810 -0
  104. volnix-0.1.0/tests/engines/adapter/test_http_rest_real_path.py +144 -0
  105. volnix-0.1.0/tests/engines/adapter/test_list_actors_endpoint.py +125 -0
  106. volnix-0.1.0/tests/engines/adapter/test_mcp_server.py +147 -0
  107. volnix-0.1.0/tests/engines/adapter/test_openai_compat.py +14 -0
  108. volnix-0.1.0/tests/engines/adapter/test_run_lifecycle.py +160 -0
  109. volnix-0.1.0/tests/engines/adapter/test_tool_manifest.py +125 -0
  110. volnix-0.1.0/tests/engines/agency/__init__.py +0 -0
  111. volnix-0.1.0/tests/engines/agency/test_engine.py +1506 -0
  112. volnix-0.1.0/tests/engines/agency/test_multi_turn.py +591 -0
  113. volnix-0.1.0/tests/engines/agency/test_prompt_builder.py +324 -0
  114. volnix-0.1.0/tests/engines/agency/test_wiring.py +68 -0
  115. volnix-0.1.0/tests/engines/animator/__init__.py +1 -0
  116. volnix-0.1.0/tests/engines/animator/test_context.py +154 -0
  117. volnix-0.1.0/tests/engines/animator/test_engine.py +412 -0
  118. volnix-0.1.0/tests/engines/animator/test_generator.py +215 -0
  119. volnix-0.1.0/tests/engines/budget/__init__.py +0 -0
  120. volnix-0.1.0/tests/engines/budget/test_engine.py +430 -0
  121. volnix-0.1.0/tests/engines/feedback/__init__.py +0 -0
  122. volnix-0.1.0/tests/engines/feedback/conftest.py +251 -0
  123. volnix-0.1.0/tests/engines/feedback/test_annotations.py +73 -0
  124. volnix-0.1.0/tests/engines/feedback/test_capture.py +68 -0
  125. volnix-0.1.0/tests/engines/feedback/test_drift.py +105 -0
  126. volnix-0.1.0/tests/engines/feedback/test_engine.py +135 -0
  127. volnix-0.1.0/tests/engines/feedback/test_engine_g4b.py +84 -0
  128. volnix-0.1.0/tests/engines/feedback/test_pack_compiler.py +61 -0
  129. volnix-0.1.0/tests/engines/feedback/test_pack_verifier.py +70 -0
  130. volnix-0.1.0/tests/engines/feedback/test_promotion.py +195 -0
  131. volnix-0.1.0/tests/engines/feedback/test_proposer.py +90 -0
  132. volnix-0.1.0/tests/engines/feedback/test_signals.py +221 -0
  133. volnix-0.1.0/tests/engines/feedback/test_sync.py +173 -0
  134. volnix-0.1.0/tests/engines/permission/__init__.py +0 -0
  135. volnix-0.1.0/tests/engines/permission/test_engine.py +292 -0
  136. volnix-0.1.0/tests/engines/permission/test_observer.py +126 -0
  137. volnix-0.1.0/tests/engines/permission/test_visibility.py +320 -0
  138. volnix-0.1.0/tests/engines/policy/__init__.py +0 -0
  139. volnix-0.1.0/tests/engines/policy/test_engine.py +459 -0
  140. volnix-0.1.0/tests/engines/policy/test_evaluator.py +165 -0
  141. volnix-0.1.0/tests/engines/reporter/__init__.py +0 -0
  142. volnix-0.1.0/tests/engines/reporter/conftest.py +180 -0
  143. volnix-0.1.0/tests/engines/reporter/test_boundaries.py +94 -0
  144. volnix-0.1.0/tests/engines/reporter/test_causal.py +89 -0
  145. volnix-0.1.0/tests/engines/reporter/test_challenges.py +97 -0
  146. volnix-0.1.0/tests/engines/reporter/test_diff.py +70 -0
  147. volnix-0.1.0/tests/engines/reporter/test_engine.py +96 -0
  148. volnix-0.1.0/tests/engines/reporter/test_gaps.py +98 -0
  149. volnix-0.1.0/tests/engines/reporter/test_governance_report.py +107 -0
  150. volnix-0.1.0/tests/engines/reporter/test_score_registry.py +69 -0
  151. volnix-0.1.0/tests/engines/reporter/test_scorecard.py +436 -0
  152. volnix-0.1.0/tests/engines/reporter/test_scorecard_boundaries.py +105 -0
  153. volnix-0.1.0/tests/engines/reporter/test_scorecard_scores_list.py +61 -0
  154. volnix-0.1.0/tests/engines/state/__init__.py +0 -0
  155. volnix-0.1.0/tests/engines/state/conftest.py +38 -0
  156. volnix-0.1.0/tests/engines/state/test_causal_graph.py +122 -0
  157. volnix-0.1.0/tests/engines/state/test_engine.py +404 -0
  158. volnix-0.1.0/tests/engines/state/test_event_log.py +150 -0
  159. volnix-0.1.0/tests/engines/state/test_integration.py +222 -0
  160. volnix-0.1.0/tests/engines/state/test_store.py +126 -0
  161. volnix-0.1.0/tests/engines/test_animator.py +36 -0
  162. volnix-0.1.0/tests/engines/test_budget.py +23 -0
  163. volnix-0.1.0/tests/engines/test_permission.py +19 -0
  164. volnix-0.1.0/tests/engines/test_policy.py +31 -0
  165. volnix-0.1.0/tests/engines/test_reporter.py +74 -0
  166. volnix-0.1.0/tests/engines/test_reporter_boundaries.py +76 -0
  167. volnix-0.1.0/tests/engines/test_reporter_challenges.py +82 -0
  168. volnix-0.1.0/tests/engines/test_responder.py +21 -0
  169. volnix-0.1.0/tests/engines/test_state.py +2 -0
  170. volnix-0.1.0/tests/engines/test_world_compiler.py +23 -0
  171. volnix-0.1.0/tests/engines/test_world_compiler_bootstrap.py +33 -0
  172. volnix-0.1.0/tests/engines/test_world_compiler_reality.py +27 -0
  173. volnix-0.1.0/tests/engines/world_compiler/__init__.py +0 -0
  174. volnix-0.1.0/tests/engines/world_compiler/conftest.py +95 -0
  175. volnix-0.1.0/tests/engines/world_compiler/test_compiler_validator.py +160 -0
  176. volnix-0.1.0/tests/engines/world_compiler/test_data_generator.py +168 -0
  177. volnix-0.1.0/tests/engines/world_compiler/test_engine.py +211 -0
  178. volnix-0.1.0/tests/engines/world_compiler/test_engine_generate.py +477 -0
  179. volnix-0.1.0/tests/engines/world_compiler/test_nl_parser.py +201 -0
  180. volnix-0.1.0/tests/engines/world_compiler/test_personality_generator.py +131 -0
  181. volnix-0.1.0/tests/engines/world_compiler/test_plan.py +157 -0
  182. volnix-0.1.0/tests/engines/world_compiler/test_plan_reviewer.py +163 -0
  183. volnix-0.1.0/tests/engines/world_compiler/test_policy_compiler.py +320 -0
  184. volnix-0.1.0/tests/engines/world_compiler/test_seed_processor.py +188 -0
  185. volnix-0.1.0/tests/engines/world_compiler/test_service_resolution.py +159 -0
  186. volnix-0.1.0/tests/engines/world_compiler/test_yaml_parser.py +251 -0
  187. volnix-0.1.0/tests/external_agent/__init__.py +0 -0
  188. volnix-0.1.0/tests/external_agent/conftest.py +149 -0
  189. volnix-0.1.0/tests/external_agent/test_cli_world_generation.py +141 -0
  190. volnix-0.1.0/tests/external_agent/test_http_transport.py +379 -0
  191. volnix-0.1.0/tests/external_agent/test_mcp_transport.py +218 -0
  192. volnix-0.1.0/tests/fixtures/__init__.py +0 -0
  193. volnix-0.1.0/tests/fixtures/agent_profiles/support_triage_terrarium.yaml +80 -0
  194. volnix-0.1.0/tests/fixtures/agents/governance_test_agents.yaml +35 -0
  195. volnix-0.1.0/tests/fixtures/agents/marketing_strategists.yaml +38 -0
  196. volnix-0.1.0/tests/fixtures/agents/stock_analysts.yaml +30 -0
  197. volnix-0.1.0/tests/fixtures/events/__init__.py +0 -0
  198. volnix-0.1.0/tests/fixtures/worlds/acme_compiler.yaml +26 -0
  199. volnix-0.1.0/tests/fixtures/worlds/acme_support.yaml +90 -0
  200. volnix-0.1.0/tests/fixtures/worlds/collaboration/campaign_brainstorm.yaml +64 -0
  201. volnix-0.1.0/tests/fixtures/worlds/collaboration/climate_research.yaml +65 -0
  202. volnix-0.1.0/tests/fixtures/worlds/collaboration/feature_decision.yaml +61 -0
  203. volnix-0.1.0/tests/fixtures/worlds/collaboration/market_prediction.yaml +62 -0
  204. volnix-0.1.0/tests/fixtures/worlds/collaboration/security_assessment.yaml +67 -0
  205. volnix-0.1.0/tests/fixtures/worlds/collaboration/support_triage.yaml +63 -0
  206. volnix-0.1.0/tests/fixtures/worlds/external/marketing_strategy.yaml +37 -0
  207. volnix-0.1.0/tests/fixtures/worlds/external/stock_analysis_crew.yaml +31 -0
  208. volnix-0.1.0/tests/fixtures/worlds/minimal_world.yaml +9 -0
  209. volnix-0.1.0/tests/fixtures/worlds/simple_world.yaml +56 -0
  210. volnix-0.1.0/tests/fixtures/worlds/support_triage_world.yaml +40 -0
  211. volnix-0.1.0/tests/gateway/__init__.py +0 -0
  212. volnix-0.1.0/tests/gateway/test_gateway.py +468 -0
  213. volnix-0.1.0/tests/helpers/__init__.py +1 -0
  214. volnix-0.1.0/tests/helpers/guardrails.py +10 -0
  215. volnix-0.1.0/tests/helpers/runtime.py +43 -0
  216. volnix-0.1.0/tests/integration/__init__.py +0 -0
  217. volnix-0.1.0/tests/integration/conftest.py +814 -0
  218. volnix-0.1.0/tests/integration/test_agency_full_loop.py +668 -0
  219. volnix-0.1.0/tests/integration/test_agency_integration.py +280 -0
  220. volnix-0.1.0/tests/integration/test_animator_modes.py +296 -0
  221. volnix-0.1.0/tests/integration/test_gateway_to_report.py +11 -0
  222. volnix-0.1.0/tests/integration/test_governance.py +433 -0
  223. volnix-0.1.0/tests/integration/test_governed_vs_ungoverned.py +192 -0
  224. volnix-0.1.0/tests/integration/test_pipeline_integration.py +12 -0
  225. volnix-0.1.0/tests/integration/test_report_e2e.py +185 -0
  226. volnix-0.1.0/tests/integration/test_simulation_loop.py +208 -0
  227. volnix-0.1.0/tests/integration/test_wire.py +570 -0
  228. volnix-0.1.0/tests/integration/test_world_run.py +146 -0
  229. volnix-0.1.0/tests/integration/test_world_simulation.py +586 -0
  230. volnix-0.1.0/tests/kernel/__init__.py +0 -0
  231. volnix-0.1.0/tests/kernel/test_architectural_validation.py +230 -0
  232. volnix-0.1.0/tests/kernel/test_categories.py +51 -0
  233. volnix-0.1.0/tests/kernel/test_context_hub.py +245 -0
  234. volnix-0.1.0/tests/kernel/test_openapi_provider.py +161 -0
  235. volnix-0.1.0/tests/kernel/test_primitives.py +50 -0
  236. volnix-0.1.0/tests/kernel/test_registry.py +118 -0
  237. volnix-0.1.0/tests/kernel/test_resolver.py +183 -0
  238. volnix-0.1.0/tests/kernel/test_surface.py +233 -0
  239. volnix-0.1.0/tests/ledger/__init__.py +0 -0
  240. volnix-0.1.0/tests/ledger/test_entries.py +284 -0
  241. volnix-0.1.0/tests/ledger/test_export.py +163 -0
  242. volnix-0.1.0/tests/ledger/test_integration.py +203 -0
  243. volnix-0.1.0/tests/ledger/test_ledger.py +261 -0
  244. volnix-0.1.0/tests/ledger/test_query.py +94 -0
  245. volnix-0.1.0/tests/live/__init__.py +12 -0
  246. volnix-0.1.0/tests/live/conftest.py +62 -0
  247. volnix-0.1.0/tests/live/test_agency_full_loop.py +340 -0
  248. volnix-0.1.0/tests/live/test_agency_live.py +311 -0
  249. volnix-0.1.0/tests/live/test_agent_integration_e2e.py +288 -0
  250. volnix-0.1.0/tests/live/test_animator_live.py +86 -0
  251. volnix-0.1.0/tests/live/test_browser_simulation.py +212 -0
  252. volnix-0.1.0/tests/live/test_collaboration_cli.py +203 -0
  253. volnix-0.1.0/tests/live/test_collaboration_live.py +440 -0
  254. volnix-0.1.0/tests/live/test_collaboration_scenarios.py +1502 -0
  255. volnix-0.1.0/tests/live/test_full_simulation.py +193 -0
  256. volnix-0.1.0/tests/live/test_g4a_feedback_pipeline.py +324 -0
  257. volnix-0.1.0/tests/live/test_multi_service_live.py +370 -0
  258. volnix-0.1.0/tests/live/test_nl_create_world.py +115 -0
  259. volnix-0.1.0/tests/live/test_social_simulation.py +436 -0
  260. volnix-0.1.0/tests/live/test_tier2_full_lifecycle.py +538 -0
  261. volnix-0.1.0/tests/live/test_tier2_live.py +191 -0
  262. volnix-0.1.0/tests/live/test_trading_simulation.py +434 -0
  263. volnix-0.1.0/tests/live/test_visibility_e2e.py +285 -0
  264. volnix-0.1.0/tests/live/test_yaml_blueprint.py +128 -0
  265. volnix-0.1.0/tests/llm/__init__.py +0 -0
  266. volnix-0.1.0/tests/llm/test_acp_client.py +574 -0
  267. volnix-0.1.0/tests/llm/test_anthropic_provider.py +86 -0
  268. volnix-0.1.0/tests/llm/test_cli_subprocess.py +241 -0
  269. volnix-0.1.0/tests/llm/test_conversation.py +504 -0
  270. volnix-0.1.0/tests/llm/test_google_provider.py +69 -0
  271. volnix-0.1.0/tests/llm/test_integration.py +121 -0
  272. volnix-0.1.0/tests/llm/test_mock.py +64 -0
  273. volnix-0.1.0/tests/llm/test_openai_compat.py +99 -0
  274. volnix-0.1.0/tests/llm/test_provider.py +47 -0
  275. volnix-0.1.0/tests/llm/test_registry.py +95 -0
  276. volnix-0.1.0/tests/llm/test_router.py +280 -0
  277. volnix-0.1.0/tests/llm/test_secrets.py +78 -0
  278. volnix-0.1.0/tests/llm/test_tracker.py +107 -0
  279. volnix-0.1.0/tests/middleware/__init__.py +0 -0
  280. volnix-0.1.0/tests/middleware/conftest.py +82 -0
  281. volnix-0.1.0/tests/middleware/test_auth.py +147 -0
  282. volnix-0.1.0/tests/middleware/test_prefix_router.py +55 -0
  283. volnix-0.1.0/tests/middleware/test_status_codes.py +164 -0
  284. volnix-0.1.0/tests/packs/__init__.py +0 -0
  285. volnix-0.1.0/tests/packs/test_browser_pack.py +885 -0
  286. volnix-0.1.0/tests/packs/test_browser_pack_integration.py +461 -0
  287. volnix-0.1.0/tests/packs/test_chat_pack.py +34 -0
  288. volnix-0.1.0/tests/packs/test_email_pack.py +293 -0
  289. volnix-0.1.0/tests/packs/test_g2_comprehensive.py +696 -0
  290. volnix-0.1.0/tests/packs/test_loader.py +67 -0
  291. volnix-0.1.0/tests/packs/test_pack_integration.py +294 -0
  292. volnix-0.1.0/tests/packs/test_payments_pack.py +20 -0
  293. volnix-0.1.0/tests/packs/test_profile_infer.py +461 -0
  294. volnix-0.1.0/tests/packs/test_profile_schema.py +650 -0
  295. volnix-0.1.0/tests/packs/test_registry.py +188 -0
  296. volnix-0.1.0/tests/packs/test_runtime.py +344 -0
  297. volnix-0.1.0/tests/packs/test_tickets_pack.py +54 -0
  298. volnix-0.1.0/tests/packs/test_tier2_runtime.py +660 -0
  299. volnix-0.1.0/tests/packs/verified/__init__.py +0 -0
  300. volnix-0.1.0/tests/packs/verified/test_calendar.py +701 -0
  301. volnix-0.1.0/tests/packs/verified/test_chat.py +1144 -0
  302. volnix-0.1.0/tests/packs/verified/test_email_gmail.py +366 -0
  303. volnix-0.1.0/tests/packs/verified/test_notion.py +1334 -0
  304. volnix-0.1.0/tests/packs/verified/test_payments.py +1226 -0
  305. volnix-0.1.0/tests/packs/verified/test_reddit.py +730 -0
  306. volnix-0.1.0/tests/packs/verified/test_repos.py +1118 -0
  307. volnix-0.1.0/tests/packs/verified/test_tickets.py +801 -0
  308. volnix-0.1.0/tests/packs/verified/test_trading.py +1303 -0
  309. volnix-0.1.0/tests/packs/verified/test_twitter.py +695 -0
  310. volnix-0.1.0/tests/persistence/__init__.py +0 -0
  311. volnix-0.1.0/tests/persistence/test_append_log.py +241 -0
  312. volnix-0.1.0/tests/persistence/test_config.py +46 -0
  313. volnix-0.1.0/tests/persistence/test_database.py +11 -0
  314. volnix-0.1.0/tests/persistence/test_manager.py +94 -0
  315. volnix-0.1.0/tests/persistence/test_migrations.py +174 -0
  316. volnix-0.1.0/tests/persistence/test_snapshot.py +121 -0
  317. volnix-0.1.0/tests/persistence/test_sqlite.py +214 -0
  318. volnix-0.1.0/tests/pipeline/__init__.py +0 -0
  319. volnix-0.1.0/tests/pipeline/test_builder.py +88 -0
  320. volnix-0.1.0/tests/pipeline/test_dag.py +300 -0
  321. volnix-0.1.0/tests/pipeline/test_integration.py +267 -0
  322. volnix-0.1.0/tests/pipeline/test_side_effects.py +210 -0
  323. volnix-0.1.0/tests/pipeline/test_step.py +68 -0
  324. volnix-0.1.0/tests/reality/__init__.py +0 -0
  325. volnix-0.1.0/tests/reality/test_dimensions.py +188 -0
  326. volnix-0.1.0/tests/reality/test_expander.py +214 -0
  327. volnix-0.1.0/tests/reality/test_labels.py +237 -0
  328. volnix-0.1.0/tests/reality/test_overlays.py +78 -0
  329. volnix-0.1.0/tests/reality/test_presets.py +146 -0
  330. volnix-0.1.0/tests/reality/test_seeds.py +52 -0
  331. volnix-0.1.0/tests/registry/__init__.py +0 -0
  332. volnix-0.1.0/tests/registry/conftest.py +49 -0
  333. volnix-0.1.0/tests/registry/test_composition.py +69 -0
  334. volnix-0.1.0/tests/registry/test_health.py +83 -0
  335. volnix-0.1.0/tests/registry/test_registry.py +253 -0
  336. volnix-0.1.0/tests/registry/test_wiring.py +120 -0
  337. volnix-0.1.0/tests/runs/__init__.py +0 -0
  338. volnix-0.1.0/tests/runs/test_artifact_serialization.py +184 -0
  339. volnix-0.1.0/tests/runs/test_artifacts.py +94 -0
  340. volnix-0.1.0/tests/runs/test_comparison.py +160 -0
  341. volnix-0.1.0/tests/runs/test_divergence_points.py +107 -0
  342. volnix-0.1.0/tests/runs/test_manager.py +152 -0
  343. volnix-0.1.0/tests/runs/test_manager_summary.py +73 -0
  344. volnix-0.1.0/tests/runs/test_replay.py +107 -0
  345. volnix-0.1.0/tests/runs/test_snapshot.py +70 -0
  346. volnix-0.1.0/tests/scheduling/__init__.py +1 -0
  347. volnix-0.1.0/tests/scheduling/test_scheduler.py +251 -0
  348. volnix-0.1.0/tests/sdk/__init__.py +0 -0
  349. volnix-0.1.0/tests/sdk/conftest.py +88 -0
  350. volnix-0.1.0/tests/sdk/test_attach_detach.py +90 -0
  351. volnix-0.1.0/tests/sdk/test_client.py +44 -0
  352. volnix-0.1.0/tests/sdk/test_config_export.py +99 -0
  353. volnix-0.1.0/tests/sdk/test_entry_points.py +43 -0
  354. volnix-0.1.0/tests/sdk/test_error_paths.py +83 -0
  355. volnix-0.1.0/tests/simulation/__init__.py +0 -0
  356. volnix-0.1.0/tests/simulation/test_event_queue.py +202 -0
  357. volnix-0.1.0/tests/simulation/test_runner.py +973 -0
  358. volnix-0.1.0/tests/simulation/test_world_context.py +158 -0
  359. volnix-0.1.0/tests/templates/__init__.py +0 -0
  360. volnix-0.1.0/tests/templates/test_base.py +7 -0
  361. volnix-0.1.0/tests/templates/test_builtin.py +10 -0
  362. volnix-0.1.0/tests/templates/test_composer.py +10 -0
  363. volnix-0.1.0/tests/templates/test_loader.py +13 -0
  364. volnix-0.1.0/tests/templates/test_registry.py +13 -0
  365. volnix-0.1.0/tests/test_audit_fixes.py +878 -0
  366. volnix-0.1.0/tests/test_collaborative_communication.py +1087 -0
  367. volnix-0.1.0/tests/test_collaborative_harness.py +292 -0
  368. volnix-0.1.0/tests/test_paths.py +262 -0
  369. volnix-0.1.0/tests/utils/__init__.py +0 -0
  370. volnix-0.1.0/tests/utils/test_collections.py +124 -0
  371. volnix-0.1.0/tests/validation/__init__.py +0 -0
  372. volnix-0.1.0/tests/validation/test_amounts.py +55 -0
  373. volnix-0.1.0/tests/validation/test_consistency.py +182 -0
  374. volnix-0.1.0/tests/validation/test_pipeline.py +270 -0
  375. volnix-0.1.0/tests/validation/test_schema.py +115 -0
  376. volnix-0.1.0/tests/validation/test_schema_contracts.py +54 -0
  377. volnix-0.1.0/tests/validation/test_state_machine.py +73 -0
  378. volnix-0.1.0/tests/validation/test_temporal.py +70 -0
  379. volnix-0.1.0/tests/webhook/__init__.py +0 -0
  380. volnix-0.1.0/tests/webhook/conftest.py +70 -0
  381. volnix-0.1.0/tests/webhook/test_delivery.py +120 -0
  382. volnix-0.1.0/tests/webhook/test_manager.py +167 -0
  383. volnix-0.1.0/tests/webhook/test_payloads.py +63 -0
  384. volnix-0.1.0/tests/webhook/test_registry.py +119 -0
  385. volnix-0.1.0/tests/worlds/__init__.py +0 -0
  386. volnix-0.1.0/tests/worlds/test_world_manager.py +154 -0
  387. volnix-0.1.0/uv.lock +2369 -0
  388. volnix-0.1.0/volnix/__init__.py +3 -0
  389. volnix-0.1.0/volnix/__main__.py +5 -0
  390. volnix-0.1.0/volnix/actors/__init__.py +38 -0
  391. volnix-0.1.0/volnix/actors/config.py +75 -0
  392. volnix-0.1.0/volnix/actors/definition.py +36 -0
  393. volnix-0.1.0/volnix/actors/generator.py +48 -0
  394. volnix-0.1.0/volnix/actors/internal_profile.py +142 -0
  395. volnix-0.1.0/volnix/actors/personality.py +60 -0
  396. volnix-0.1.0/volnix/actors/profile.py +116 -0
  397. volnix-0.1.0/volnix/actors/registry.py +187 -0
  398. volnix-0.1.0/volnix/actors/replay.py +81 -0
  399. volnix-0.1.0/volnix/actors/simple_generator.py +196 -0
  400. volnix-0.1.0/volnix/actors/slot_binding.py +80 -0
  401. volnix-0.1.0/volnix/actors/slot_manager.py +301 -0
  402. volnix-0.1.0/volnix/actors/state.py +157 -0
  403. volnix-0.1.0/volnix/actors/trait_extractor.py +153 -0
  404. volnix-0.1.0/volnix/adapters/__init__.py +12 -0
  405. volnix-0.1.0/volnix/adapters/_schema.py +76 -0
  406. volnix-0.1.0/volnix/adapters/autogen.py +80 -0
  407. volnix-0.1.0/volnix/adapters/crewai.py +164 -0
  408. volnix-0.1.0/volnix/adapters/langgraph.py +77 -0
  409. volnix-0.1.0/volnix/app.py +1614 -0
  410. volnix-0.1.0/volnix/blueprints/__init__.py +0 -0
  411. volnix-0.1.0/volnix/blueprints/community/.gitkeep +0 -0
  412. volnix-0.1.0/volnix/blueprints/official/agents_campaign_creatives.yaml +39 -0
  413. volnix-0.1.0/volnix/blueprints/official/agents_climate_researchers.yaml +47 -0
  414. volnix-0.1.0/volnix/blueprints/official/agents_dynamic_support.yaml +48 -0
  415. volnix-0.1.0/volnix/blueprints/official/agents_feature_team.yaml +38 -0
  416. volnix-0.1.0/volnix/blueprints/official/agents_market_analysts.yaml +37 -0
  417. volnix-0.1.0/volnix/blueprints/official/agents_product_team.yaml +41 -0
  418. volnix-0.1.0/volnix/blueprints/official/agents_sales_team.yaml +40 -0
  419. volnix-0.1.0/volnix/blueprints/official/agents_security_team.yaml +38 -0
  420. volnix-0.1.0/volnix/blueprints/official/agents_support_team.yaml +46 -0
  421. volnix-0.1.0/volnix/blueprints/official/campaign_brainstorm.yaml +24 -0
  422. volnix-0.1.0/volnix/blueprints/official/climate_research_station.yaml +40 -0
  423. volnix-0.1.0/volnix/blueprints/official/customer_support.yaml +58 -0
  424. volnix-0.1.0/volnix/blueprints/official/demo_ecommerce.yaml +46 -0
  425. volnix-0.1.0/volnix/blueprints/official/demo_support_escalation.yaml +47 -0
  426. volnix-0.1.0/volnix/blueprints/official/dynamic_support_center.yaml +81 -0
  427. volnix-0.1.0/volnix/blueprints/official/feature_prioritization.yaml +37 -0
  428. volnix-0.1.0/volnix/blueprints/official/governance_test.yaml +43 -0
  429. volnix-0.1.0/volnix/blueprints/official/hubspot_sales_pipeline.yaml +34 -0
  430. volnix-0.1.0/volnix/blueprints/official/incident_response.yaml +56 -0
  431. volnix-0.1.0/volnix/blueprints/official/market_prediction_analysis.yaml +43 -0
  432. volnix-0.1.0/volnix/blueprints/official/notion_project_tracker.yaml +27 -0
  433. volnix-0.1.0/volnix/blueprints/official/open_sandbox.yaml +33 -0
  434. volnix-0.1.0/volnix/blueprints/official/security_posture_assessment.yaml +47 -0
  435. volnix-0.1.0/volnix/blueprints/official/stock_analysis.yaml +45 -0
  436. volnix-0.1.0/volnix/blueprints/official/support_ticket_triage.yaml +87 -0
  437. volnix-0.1.0/volnix/bus/__init__.py +40 -0
  438. volnix-0.1.0/volnix/bus/bus.py +221 -0
  439. volnix-0.1.0/volnix/bus/config.py +27 -0
  440. volnix-0.1.0/volnix/bus/fanout.py +134 -0
  441. volnix-0.1.0/volnix/bus/middleware.py +172 -0
  442. volnix-0.1.0/volnix/bus/persistence.py +172 -0
  443. volnix-0.1.0/volnix/bus/replay.py +109 -0
  444. volnix-0.1.0/volnix/bus/types.py +65 -0
  445. volnix-0.1.0/volnix/cli.py +2470 -0
  446. volnix-0.1.0/volnix/cli_exports/__init__.py +1 -0
  447. volnix-0.1.0/volnix/cli_exports/attach.py +118 -0
  448. volnix-0.1.0/volnix/cli_exports/templates.py +195 -0
  449. volnix-0.1.0/volnix/cli_helpers.py +285 -0
  450. volnix-0.1.0/volnix/config/__init__.py +25 -0
  451. volnix-0.1.0/volnix/config/loader.py +213 -0
  452. volnix-0.1.0/volnix/config/registry.py +91 -0
  453. volnix-0.1.0/volnix/config/schema.py +121 -0
  454. volnix-0.1.0/volnix/config/tunable.py +124 -0
  455. volnix-0.1.0/volnix/config/validation.py +117 -0
  456. volnix-0.1.0/volnix/core/__init__.py +261 -0
  457. volnix-0.1.0/volnix/core/context.py +165 -0
  458. volnix-0.1.0/volnix/core/engine.py +227 -0
  459. volnix-0.1.0/volnix/core/envelope.py +41 -0
  460. volnix-0.1.0/volnix/core/errors.py +398 -0
  461. volnix-0.1.0/volnix/core/events.py +396 -0
  462. volnix-0.1.0/volnix/core/protocols.py +552 -0
  463. volnix-0.1.0/volnix/core/types.py +313 -0
  464. volnix-0.1.0/volnix/dashboard/__init__.py +10 -0
  465. volnix-0.1.0/volnix/dashboard/app.py +39 -0
  466. volnix-0.1.0/volnix/dashboard/routes/__init__.py +5 -0
  467. volnix-0.1.0/volnix/dashboard/routes/api.py +59 -0
  468. volnix-0.1.0/volnix/dashboard/routes/live.py +24 -0
  469. volnix-0.1.0/volnix/dashboard/routes/replay.py +57 -0
  470. volnix-0.1.0/volnix/dashboard/routes/reports.py +56 -0
  471. volnix-0.1.0/volnix/dashboard/static/style.css +59 -0
  472. volnix-0.1.0/volnix/dashboard/templates/base.html +22 -0
  473. volnix-0.1.0/volnix/dashboard/templates/live.html +13 -0
  474. volnix-0.1.0/volnix/dashboard/templates/replay.html +17 -0
  475. volnix-0.1.0/volnix/dashboard/templates/report.html +16 -0
  476. volnix-0.1.0/volnix/deliverable_presets/__init__.py +85 -0
  477. volnix-0.1.0/volnix/deliverable_presets/assessment.yaml +96 -0
  478. volnix-0.1.0/volnix/deliverable_presets/brainstorm.yaml +60 -0
  479. volnix-0.1.0/volnix/deliverable_presets/decision.yaml +71 -0
  480. volnix-0.1.0/volnix/deliverable_presets/loader.py +32 -0
  481. volnix-0.1.0/volnix/deliverable_presets/prediction.yaml +82 -0
  482. volnix-0.1.0/volnix/deliverable_presets/recommendation.yaml +64 -0
  483. volnix-0.1.0/volnix/deliverable_presets/synthesis.yaml +55 -0
  484. volnix-0.1.0/volnix/engines/__init__.py +4 -0
  485. volnix-0.1.0/volnix/engines/adapter/__init__.py +1 -0
  486. volnix-0.1.0/volnix/engines/adapter/config.py +13 -0
  487. volnix-0.1.0/volnix/engines/adapter/engine.py +145 -0
  488. volnix-0.1.0/volnix/engines/adapter/protocols/__init__.py +1 -0
  489. volnix-0.1.0/volnix/engines/adapter/protocols/_auth.py +59 -0
  490. volnix-0.1.0/volnix/engines/adapter/protocols/_response.py +28 -0
  491. volnix-0.1.0/volnix/engines/adapter/protocols/acp_server.py +41 -0
  492. volnix-0.1.0/volnix/engines/adapter/protocols/anthropic_compat.py +169 -0
  493. volnix-0.1.0/volnix/engines/adapter/protocols/base.py +53 -0
  494. volnix-0.1.0/volnix/engines/adapter/protocols/gemini_compat.py +162 -0
  495. volnix-0.1.0/volnix/engines/adapter/protocols/http_rest.py +1676 -0
  496. volnix-0.1.0/volnix/engines/adapter/protocols/mcp_server.py +108 -0
  497. volnix-0.1.0/volnix/engines/adapter/protocols/openai_compat.py +181 -0
  498. volnix-0.1.0/volnix/engines/adapter/tool_manifest.py +53 -0
  499. volnix-0.1.0/volnix/engines/agency/__init__.py +7 -0
  500. volnix-0.1.0/volnix/engines/agency/config.py +70 -0
  501. volnix-0.1.0/volnix/engines/agency/engine.py +1646 -0
  502. volnix-0.1.0/volnix/engines/agency/prompt_builder.py +471 -0
  503. volnix-0.1.0/volnix/engines/animator/__init__.py +13 -0
  504. volnix-0.1.0/volnix/engines/animator/config.py +31 -0
  505. volnix-0.1.0/volnix/engines/animator/context.py +123 -0
  506. volnix-0.1.0/volnix/engines/animator/engine.py +433 -0
  507. volnix-0.1.0/volnix/engines/animator/generator.py +91 -0
  508. volnix-0.1.0/volnix/engines/budget/__init__.py +1 -0
  509. volnix-0.1.0/volnix/engines/budget/config.py +12 -0
  510. volnix-0.1.0/volnix/engines/budget/engine.py +316 -0
  511. volnix-0.1.0/volnix/engines/budget/tracker.py +271 -0
  512. volnix-0.1.0/volnix/engines/feedback/__init__.py +1 -0
  513. volnix-0.1.0/volnix/engines/feedback/annotations.py +113 -0
  514. volnix-0.1.0/volnix/engines/feedback/capture.py +206 -0
  515. volnix-0.1.0/volnix/engines/feedback/config.py +51 -0
  516. volnix-0.1.0/volnix/engines/feedback/drift.py +258 -0
  517. volnix-0.1.0/volnix/engines/feedback/engine.py +600 -0
  518. volnix-0.1.0/volnix/engines/feedback/models.py +106 -0
  519. volnix-0.1.0/volnix/engines/feedback/pack_compiler.py +314 -0
  520. volnix-0.1.0/volnix/engines/feedback/pack_verifier.py +362 -0
  521. volnix-0.1.0/volnix/engines/feedback/promotion.py +219 -0
  522. volnix-0.1.0/volnix/engines/feedback/proposer.py +147 -0
  523. volnix-0.1.0/volnix/engines/feedback/signals.py +338 -0
  524. volnix-0.1.0/volnix/engines/feedback/sync.py +133 -0
  525. volnix-0.1.0/volnix/engines/permission/__init__.py +1 -0
  526. volnix-0.1.0/volnix/engines/permission/authority.py +113 -0
  527. volnix-0.1.0/volnix/engines/permission/config.py +34 -0
  528. volnix-0.1.0/volnix/engines/permission/engine.py +386 -0
  529. volnix-0.1.0/volnix/engines/policy/__init__.py +1 -0
  530. volnix-0.1.0/volnix/engines/policy/config.py +12 -0
  531. volnix-0.1.0/volnix/engines/policy/enforcement.py +165 -0
  532. volnix-0.1.0/volnix/engines/policy/engine.py +278 -0
  533. volnix-0.1.0/volnix/engines/policy/evaluator.py +185 -0
  534. volnix-0.1.0/volnix/engines/policy/loader.py +44 -0
  535. volnix-0.1.0/volnix/engines/reporter/__init__.py +1 -0
  536. volnix-0.1.0/volnix/engines/reporter/agent_boundaries.py +293 -0
  537. volnix-0.1.0/volnix/engines/reporter/capability_gaps.py +110 -0
  538. volnix-0.1.0/volnix/engines/reporter/causal_trace.py +63 -0
  539. volnix-0.1.0/volnix/engines/reporter/config.py +12 -0
  540. volnix-0.1.0/volnix/engines/reporter/diff.py +142 -0
  541. volnix-0.1.0/volnix/engines/reporter/engine.py +295 -0
  542. volnix-0.1.0/volnix/engines/reporter/governance_report.py +114 -0
  543. volnix-0.1.0/volnix/engines/reporter/scorecard.py +251 -0
  544. volnix-0.1.0/volnix/engines/reporter/world_challenges.py +319 -0
  545. volnix-0.1.0/volnix/engines/responder/__init__.py +1 -0
  546. volnix-0.1.0/volnix/engines/responder/config.py +13 -0
  547. volnix-0.1.0/volnix/engines/responder/engine.py +303 -0
  548. volnix-0.1.0/volnix/engines/responder/tier1.py +40 -0
  549. volnix-0.1.0/volnix/engines/responder/tier2.py +488 -0
  550. volnix-0.1.0/volnix/engines/state/__init__.py +8 -0
  551. volnix-0.1.0/volnix/engines/state/causal_graph.py +87 -0
  552. volnix-0.1.0/volnix/engines/state/config.py +12 -0
  553. volnix-0.1.0/volnix/engines/state/engine.py +530 -0
  554. volnix-0.1.0/volnix/engines/state/event_log.py +116 -0
  555. volnix-0.1.0/volnix/engines/state/migrations.py +115 -0
  556. volnix-0.1.0/volnix/engines/state/store.py +118 -0
  557. volnix-0.1.0/volnix/engines/world_compiler/__init__.py +30 -0
  558. volnix-0.1.0/volnix/engines/world_compiler/config.py +17 -0
  559. volnix-0.1.0/volnix/engines/world_compiler/data_generator.py +308 -0
  560. volnix-0.1.0/volnix/engines/world_compiler/engine.py +1147 -0
  561. volnix-0.1.0/volnix/engines/world_compiler/generation_context.py +154 -0
  562. volnix-0.1.0/volnix/engines/world_compiler/nl_parser.py +126 -0
  563. volnix-0.1.0/volnix/engines/world_compiler/personality_generator.py +199 -0
  564. volnix-0.1.0/volnix/engines/world_compiler/plan.py +105 -0
  565. volnix-0.1.0/volnix/engines/world_compiler/plan_reviewer.py +171 -0
  566. volnix-0.1.0/volnix/engines/world_compiler/prompt_templates.py +625 -0
  567. volnix-0.1.0/volnix/engines/world_compiler/seed_processor.py +225 -0
  568. volnix-0.1.0/volnix/engines/world_compiler/service_bootstrapper.py +119 -0
  569. volnix-0.1.0/volnix/engines/world_compiler/service_resolution.py +314 -0
  570. volnix-0.1.0/volnix/engines/world_compiler/subscription_generator.py +359 -0
  571. volnix-0.1.0/volnix/engines/world_compiler/validator.py +547 -0
  572. volnix-0.1.0/volnix/engines/world_compiler/visibility_generator.py +161 -0
  573. volnix-0.1.0/volnix/engines/world_compiler/yaml_parser.py +164 -0
  574. volnix-0.1.0/volnix/gateway/__init__.py +17 -0
  575. volnix-0.1.0/volnix/gateway/config.py +29 -0
  576. volnix-0.1.0/volnix/gateway/gateway.py +268 -0
  577. volnix-0.1.0/volnix/kernel/__init__.py +22 -0
  578. volnix-0.1.0/volnix/kernel/categories.py +104 -0
  579. volnix-0.1.0/volnix/kernel/context_hub.py +213 -0
  580. volnix-0.1.0/volnix/kernel/data/categories.toml +51 -0
  581. volnix-0.1.0/volnix/kernel/data/services.toml +78 -0
  582. volnix-0.1.0/volnix/kernel/external_spec.py +30 -0
  583. volnix-0.1.0/volnix/kernel/mapping.py +122 -0
  584. volnix-0.1.0/volnix/kernel/openapi_provider.py +181 -0
  585. volnix-0.1.0/volnix/kernel/primitives.py +443 -0
  586. volnix-0.1.0/volnix/kernel/registry.py +89 -0
  587. volnix-0.1.0/volnix/kernel/resolver.py +135 -0
  588. volnix-0.1.0/volnix/kernel/surface.py +237 -0
  589. volnix-0.1.0/volnix/ledger/__init__.py +48 -0
  590. volnix-0.1.0/volnix/ledger/config.py +28 -0
  591. volnix-0.1.0/volnix/ledger/entries.py +476 -0
  592. volnix-0.1.0/volnix/ledger/export.py +103 -0
  593. volnix-0.1.0/volnix/ledger/ledger.py +143 -0
  594. volnix-0.1.0/volnix/ledger/query.py +181 -0
  595. volnix-0.1.0/volnix/llm/__init__.py +41 -0
  596. volnix-0.1.0/volnix/llm/config.py +81 -0
  597. volnix-0.1.0/volnix/llm/conversation.py +277 -0
  598. volnix-0.1.0/volnix/llm/provider.py +55 -0
  599. volnix-0.1.0/volnix/llm/providers/__init__.py +22 -0
  600. volnix-0.1.0/volnix/llm/providers/acp_client.py +939 -0
  601. volnix-0.1.0/volnix/llm/providers/anthropic.py +232 -0
  602. volnix-0.1.0/volnix/llm/providers/cli_subprocess.py +164 -0
  603. volnix-0.1.0/volnix/llm/providers/google.py +298 -0
  604. volnix-0.1.0/volnix/llm/providers/mock.py +105 -0
  605. volnix-0.1.0/volnix/llm/providers/openai_compat.py +294 -0
  606. volnix-0.1.0/volnix/llm/registry.py +180 -0
  607. volnix-0.1.0/volnix/llm/router.py +278 -0
  608. volnix-0.1.0/volnix/llm/secrets.py +110 -0
  609. volnix-0.1.0/volnix/llm/tracker.py +132 -0
  610. volnix-0.1.0/volnix/llm/types.py +136 -0
  611. volnix-0.1.0/volnix/middleware/__init__.py +6 -0
  612. volnix-0.1.0/volnix/middleware/auth.py +147 -0
  613. volnix-0.1.0/volnix/middleware/config.py +28 -0
  614. volnix-0.1.0/volnix/middleware/prefix_router.py +97 -0
  615. volnix-0.1.0/volnix/middleware/status_codes.py +146 -0
  616. volnix-0.1.0/volnix/packs/__init__.py +28 -0
  617. volnix-0.1.0/volnix/packs/base.py +185 -0
  618. volnix-0.1.0/volnix/packs/loader.py +126 -0
  619. volnix-0.1.0/volnix/packs/profile_infer.py +500 -0
  620. volnix-0.1.0/volnix/packs/profile_loader.py +142 -0
  621. volnix-0.1.0/volnix/packs/profile_registry.py +69 -0
  622. volnix-0.1.0/volnix/packs/profile_schema.py +114 -0
  623. volnix-0.1.0/volnix/packs/profile_surface.py +89 -0
  624. volnix-0.1.0/volnix/packs/profiles/email.profile.yaml +556 -0
  625. volnix-0.1.0/volnix/packs/profiles/gmail.profile.yaml +511 -0
  626. volnix-0.1.0/volnix/packs/profiles/jira.profile.yaml +299 -0
  627. volnix-0.1.0/volnix/packs/profiles/shopify.profile.yaml +524 -0
  628. volnix-0.1.0/volnix/packs/profiles/stripe.profile.yaml +658 -0
  629. volnix-0.1.0/volnix/packs/profiles/twilio.profile.yaml +424 -0
  630. volnix-0.1.0/volnix/packs/registry.py +163 -0
  631. volnix-0.1.0/volnix/packs/runtime.py +408 -0
  632. volnix-0.1.0/volnix/packs/verified/__init__.py +5 -0
  633. volnix-0.1.0/volnix/packs/verified/alpaca/__init__.py +5 -0
  634. volnix-0.1.0/volnix/packs/verified/alpaca/handlers.py +1176 -0
  635. volnix-0.1.0/volnix/packs/verified/alpaca/pack.py +151 -0
  636. volnix-0.1.0/volnix/packs/verified/alpaca/price_model.py +206 -0
  637. volnix-0.1.0/volnix/packs/verified/alpaca/schemas.py +881 -0
  638. volnix-0.1.0/volnix/packs/verified/alpaca/state_machines.py +42 -0
  639. volnix-0.1.0/volnix/packs/verified/browser/__init__.py +5 -0
  640. volnix-0.1.0/volnix/packs/verified/browser/handlers.py +877 -0
  641. volnix-0.1.0/volnix/packs/verified/browser/pack.py +93 -0
  642. volnix-0.1.0/volnix/packs/verified/browser/schemas.py +581 -0
  643. volnix-0.1.0/volnix/packs/verified/browser/state_machines.py +22 -0
  644. volnix-0.1.0/volnix/packs/verified/github/__init__.py +5 -0
  645. volnix-0.1.0/volnix/packs/verified/github/handlers.py +769 -0
  646. volnix-0.1.0/volnix/packs/verified/github/pack.py +111 -0
  647. volnix-0.1.0/volnix/packs/verified/github/schemas.py +716 -0
  648. volnix-0.1.0/volnix/packs/verified/github/state_machines.py +37 -0
  649. volnix-0.1.0/volnix/packs/verified/gmail/__init__.py +5 -0
  650. volnix-0.1.0/volnix/packs/verified/gmail/handlers.py +612 -0
  651. volnix-0.1.0/volnix/packs/verified/gmail/pack.py +123 -0
  652. volnix-0.1.0/volnix/packs/verified/gmail/schemas.py +436 -0
  653. volnix-0.1.0/volnix/packs/verified/gmail/state_machines.py +23 -0
  654. volnix-0.1.0/volnix/packs/verified/google_calendar/__init__.py +5 -0
  655. volnix-0.1.0/volnix/packs/verified/google_calendar/handlers.py +511 -0
  656. volnix-0.1.0/volnix/packs/verified/google_calendar/pack.py +88 -0
  657. volnix-0.1.0/volnix/packs/verified/google_calendar/schemas.py +459 -0
  658. volnix-0.1.0/volnix/packs/verified/google_calendar/state_machines.py +23 -0
  659. volnix-0.1.0/volnix/packs/verified/notion/__init__.py +5 -0
  660. volnix-0.1.0/volnix/packs/verified/notion/handlers.py +1054 -0
  661. volnix-0.1.0/volnix/packs/verified/notion/pack.py +105 -0
  662. volnix-0.1.0/volnix/packs/verified/notion/schemas.py +920 -0
  663. volnix-0.1.0/volnix/packs/verified/notion/state_machines.py +15 -0
  664. volnix-0.1.0/volnix/packs/verified/reddit/__init__.py +5 -0
  665. volnix-0.1.0/volnix/packs/verified/reddit/handlers.py +1163 -0
  666. volnix-0.1.0/volnix/packs/verified/reddit/pack.py +116 -0
  667. volnix-0.1.0/volnix/packs/verified/reddit/schemas.py +724 -0
  668. volnix-0.1.0/volnix/packs/verified/reddit/state_machines.py +38 -0
  669. volnix-0.1.0/volnix/packs/verified/slack/__init__.py +5 -0
  670. volnix-0.1.0/volnix/packs/verified/slack/handlers.py +819 -0
  671. volnix-0.1.0/volnix/packs/verified/slack/pack.py +108 -0
  672. volnix-0.1.0/volnix/packs/verified/slack/schemas.py +604 -0
  673. volnix-0.1.0/volnix/packs/verified/slack/state_machines.py +14 -0
  674. volnix-0.1.0/volnix/packs/verified/stripe/__init__.py +5 -0
  675. volnix-0.1.0/volnix/packs/verified/stripe/handlers.py +1029 -0
  676. volnix-0.1.0/volnix/packs/verified/stripe/pack.py +125 -0
  677. volnix-0.1.0/volnix/packs/verified/stripe/schemas.py +750 -0
  678. volnix-0.1.0/volnix/packs/verified/stripe/state_machines.py +81 -0
  679. volnix-0.1.0/volnix/packs/verified/twitter/__init__.py +5 -0
  680. volnix-0.1.0/volnix/packs/verified/twitter/handlers.py +1067 -0
  681. volnix-0.1.0/volnix/packs/verified/twitter/pack.py +107 -0
  682. volnix-0.1.0/volnix/packs/verified/twitter/schemas.py +545 -0
  683. volnix-0.1.0/volnix/packs/verified/twitter/state_machines.py +21 -0
  684. volnix-0.1.0/volnix/packs/verified/zendesk/__init__.py +5 -0
  685. volnix-0.1.0/volnix/packs/verified/zendesk/handlers.py +521 -0
  686. volnix-0.1.0/volnix/packs/verified/zendesk/pack.py +94 -0
  687. volnix-0.1.0/volnix/packs/verified/zendesk/schemas.py +534 -0
  688. volnix-0.1.0/volnix/packs/verified/zendesk/state_machines.py +17 -0
  689. volnix-0.1.0/volnix/paths.py +238 -0
  690. volnix-0.1.0/volnix/persistence/__init__.py +31 -0
  691. volnix-0.1.0/volnix/persistence/append_log.py +175 -0
  692. volnix-0.1.0/volnix/persistence/config.py +31 -0
  693. volnix-0.1.0/volnix/persistence/database.py +108 -0
  694. volnix-0.1.0/volnix/persistence/manager.py +112 -0
  695. volnix-0.1.0/volnix/persistence/migrations.py +153 -0
  696. volnix-0.1.0/volnix/persistence/snapshot.py +141 -0
  697. volnix-0.1.0/volnix/persistence/sqlite.py +202 -0
  698. volnix-0.1.0/volnix/pipeline/__init__.py +23 -0
  699. volnix-0.1.0/volnix/pipeline/builder.py +49 -0
  700. volnix-0.1.0/volnix/pipeline/config.py +34 -0
  701. volnix-0.1.0/volnix/pipeline/dag.py +179 -0
  702. volnix-0.1.0/volnix/pipeline/side_effects.py +157 -0
  703. volnix-0.1.0/volnix/pipeline/step.py +66 -0
  704. volnix-0.1.0/volnix/presets/hostile.yaml +16 -0
  705. volnix-0.1.0/volnix/presets/ideal.yaml +16 -0
  706. volnix-0.1.0/volnix/presets/messy.yaml +16 -0
  707. volnix-0.1.0/volnix/reality/__init__.py +62 -0
  708. volnix-0.1.0/volnix/reality/config.py +36 -0
  709. volnix-0.1.0/volnix/reality/dimensions.py +102 -0
  710. volnix-0.1.0/volnix/reality/expander.py +290 -0
  711. volnix-0.1.0/volnix/reality/labels.py +313 -0
  712. volnix-0.1.0/volnix/reality/overlays.py +171 -0
  713. volnix-0.1.0/volnix/reality/presets.py +151 -0
  714. volnix-0.1.0/volnix/reality/seeds.py +119 -0
  715. volnix-0.1.0/volnix/registry/__init__.py +24 -0
  716. volnix-0.1.0/volnix/registry/composition.py +46 -0
  717. volnix-0.1.0/volnix/registry/health.py +69 -0
  718. volnix-0.1.0/volnix/registry/registry.py +149 -0
  719. volnix-0.1.0/volnix/registry/wiring.py +88 -0
  720. volnix-0.1.0/volnix/runs/__init__.py +26 -0
  721. volnix-0.1.0/volnix/runs/artifacts.py +133 -0
  722. volnix-0.1.0/volnix/runs/comparison.py +488 -0
  723. volnix-0.1.0/volnix/runs/config.py +23 -0
  724. volnix-0.1.0/volnix/runs/manager.py +191 -0
  725. volnix-0.1.0/volnix/runs/replay.py +92 -0
  726. volnix-0.1.0/volnix/runs/snapshot.py +63 -0
  727. volnix-0.1.0/volnix/scheduling/__init__.py +19 -0
  728. volnix-0.1.0/volnix/scheduling/scheduler.py +278 -0
  729. volnix-0.1.0/volnix/sdk.py +228 -0
  730. volnix-0.1.0/volnix/simulation/__init__.py +13 -0
  731. volnix-0.1.0/volnix/simulation/config.py +64 -0
  732. volnix-0.1.0/volnix/simulation/event_queue.py +75 -0
  733. volnix-0.1.0/volnix/simulation/runner.py +577 -0
  734. volnix-0.1.0/volnix/simulation/world_context.py +129 -0
  735. volnix-0.1.0/volnix/templates/__init__.py +23 -0
  736. volnix-0.1.0/volnix/templates/base.py +68 -0
  737. volnix-0.1.0/volnix/templates/builtin/__init__.py +14 -0
  738. volnix-0.1.0/volnix/templates/builtin/customer_support.py +43 -0
  739. volnix-0.1.0/volnix/templates/builtin/incident_response.py +41 -0
  740. volnix-0.1.0/volnix/templates/builtin/open_sandbox.py +40 -0
  741. volnix-0.1.0/volnix/templates/composer.py +60 -0
  742. volnix-0.1.0/volnix/templates/config.py +17 -0
  743. volnix-0.1.0/volnix/templates/loader.py +56 -0
  744. volnix-0.1.0/volnix/templates/registry.py +54 -0
  745. volnix-0.1.0/volnix/utils/__init__.py +1 -0
  746. volnix-0.1.0/volnix/utils/collections.py +79 -0
  747. volnix-0.1.0/volnix/validation/__init__.py +31 -0
  748. volnix-0.1.0/volnix/validation/amounts.py +89 -0
  749. volnix-0.1.0/volnix/validation/config.py +20 -0
  750. volnix-0.1.0/volnix/validation/consistency.py +130 -0
  751. volnix-0.1.0/volnix/validation/pipeline.py +196 -0
  752. volnix-0.1.0/volnix/validation/schema.py +197 -0
  753. volnix-0.1.0/volnix/validation/schema_contracts.py +161 -0
  754. volnix-0.1.0/volnix/validation/state_machine.py +81 -0
  755. volnix-0.1.0/volnix/validation/step.py +76 -0
  756. volnix-0.1.0/volnix/validation/temporal.py +158 -0
  757. volnix-0.1.0/volnix/webhook/__init__.py +8 -0
  758. volnix-0.1.0/volnix/webhook/config.py +28 -0
  759. volnix-0.1.0/volnix/webhook/delivery.py +152 -0
  760. volnix-0.1.0/volnix/webhook/manager.py +152 -0
  761. volnix-0.1.0/volnix/webhook/payloads.py +170 -0
  762. volnix-0.1.0/volnix/webhook/registry.py +163 -0
  763. volnix-0.1.0/volnix/worlds/__init__.py +1 -0
  764. volnix-0.1.0/volnix/worlds/config.py +12 -0
  765. volnix-0.1.0/volnix/worlds/manager.py +193 -0
  766. volnix-0.1.0/volnix-dashboard/.env.example +3 -0
  767. volnix-0.1.0/volnix-dashboard/.gitignore +24 -0
  768. volnix-0.1.0/volnix-dashboard/.vite/deps/_metadata.json +8 -0
  769. volnix-0.1.0/volnix-dashboard/.vite/deps/package.json +3 -0
  770. volnix-0.1.0/volnix-dashboard/README.md +73 -0
  771. volnix-0.1.0/volnix-dashboard/dist/assets/html2canvas-BPBHsaeR.js +5 -0
  772. volnix-0.1.0/volnix-dashboard/dist/assets/index-BjpdnCjf.js +76 -0
  773. volnix-0.1.0/volnix-dashboard/dist/assets/index-DDrKQGv6.css +2 -0
  774. volnix-0.1.0/volnix-dashboard/dist/favicon.svg +1 -0
  775. volnix-0.1.0/volnix-dashboard/dist/icons.svg +24 -0
  776. volnix-0.1.0/volnix-dashboard/dist/index.html +17 -0
  777. volnix-0.1.0/volnix-dashboard/eslint.config.js +29 -0
  778. volnix-0.1.0/volnix-dashboard/index.html +16 -0
  779. volnix-0.1.0/volnix-dashboard/package.json +52 -0
  780. volnix-0.1.0/volnix-dashboard/public/favicon.svg +1 -0
  781. volnix-0.1.0/volnix-dashboard/public/icons.svg +24 -0
  782. volnix-0.1.0/volnix-dashboard/src/app.tsx +23 -0
  783. volnix-0.1.0/volnix-dashboard/src/assets/hero.png +0 -0
  784. volnix-0.1.0/volnix-dashboard/src/assets/vite.svg +1 -0
  785. volnix-0.1.0/volnix-dashboard/src/components/domain/actor-badge.tsx +24 -0
  786. volnix-0.1.0/volnix-dashboard/src/components/domain/causal-chain.tsx +43 -0
  787. volnix-0.1.0/volnix-dashboard/src/components/domain/enforcement-badge.tsx +24 -0
  788. volnix-0.1.0/volnix-dashboard/src/components/domain/entity-link.tsx +34 -0
  789. volnix-0.1.0/volnix-dashboard/src/components/domain/event-type-badge.tsx +14 -0
  790. volnix-0.1.0/volnix-dashboard/src/components/domain/fidelity-indicator.tsx +19 -0
  791. volnix-0.1.0/volnix-dashboard/src/components/domain/json-viewer.tsx +59 -0
  792. volnix-0.1.0/volnix-dashboard/src/components/domain/outcome-icon.tsx +24 -0
  793. volnix-0.1.0/volnix-dashboard/src/components/domain/run-status-badge.tsx +41 -0
  794. volnix-0.1.0/volnix-dashboard/src/components/domain/score-bar.tsx +25 -0
  795. volnix-0.1.0/volnix-dashboard/src/components/domain/score-grade.tsx +10 -0
  796. volnix-0.1.0/volnix-dashboard/src/components/domain/service-badge.tsx +20 -0
  797. volnix-0.1.0/volnix-dashboard/src/components/domain/timestamp-cell.tsx +17 -0
  798. volnix-0.1.0/volnix-dashboard/src/components/feedback/dialog.tsx +45 -0
  799. volnix-0.1.0/volnix-dashboard/src/components/feedback/empty-state.tsx +18 -0
  800. volnix-0.1.0/volnix-dashboard/src/components/feedback/error-boundary.tsx +34 -0
  801. volnix-0.1.0/volnix-dashboard/src/components/feedback/error-display.tsx +26 -0
  802. volnix-0.1.0/volnix-dashboard/src/components/feedback/page-loading.tsx +10 -0
  803. volnix-0.1.0/volnix-dashboard/src/components/feedback/query-guard.tsx +33 -0
  804. volnix-0.1.0/volnix-dashboard/src/components/feedback/section-loading.tsx +9 -0
  805. volnix-0.1.0/volnix-dashboard/src/components/feedback/skeletons.tsx +56 -0
  806. volnix-0.1.0/volnix-dashboard/src/components/layout/app-shell.tsx +17 -0
  807. volnix-0.1.0/volnix-dashboard/src/components/layout/page-header.tsx +17 -0
  808. volnix-0.1.0/volnix-dashboard/src/components/layout/panel-layout.tsx +21 -0
  809. volnix-0.1.0/volnix-dashboard/src/components/layout/sidebar.tsx +59 -0
  810. volnix-0.1.0/volnix-dashboard/src/components/layout/status-bar.tsx +26 -0
  811. volnix-0.1.0/volnix-dashboard/src/constants/defaults.ts +29 -0
  812. volnix-0.1.0/volnix-dashboard/src/constants/index.ts +7 -0
  813. volnix-0.1.0/volnix-dashboard/src/constants/query-keys.ts +31 -0
  814. volnix-0.1.0/volnix-dashboard/src/constants/routes.ts +26 -0
  815. volnix-0.1.0/volnix-dashboard/src/hooks/index.ts +23 -0
  816. volnix-0.1.0/volnix-dashboard/src/hooks/queries/use-actors.ts +12 -0
  817. volnix-0.1.0/volnix-dashboard/src/hooks/queries/use-compare.ts +14 -0
  818. volnix-0.1.0/volnix-dashboard/src/hooks/queries/use-deliverable.ts +11 -0
  819. volnix-0.1.0/volnix-dashboard/src/hooks/queries/use-entities.ts +24 -0
  820. volnix-0.1.0/volnix-dashboard/src/hooks/queries/use-events.ts +24 -0
  821. volnix-0.1.0/volnix-dashboard/src/hooks/queries/use-gaps.ts +12 -0
  822. volnix-0.1.0/volnix-dashboard/src/hooks/queries/use-runs.ts +28 -0
  823. volnix-0.1.0/volnix-dashboard/src/hooks/queries/use-scorecard.ts +13 -0
  824. volnix-0.1.0/volnix-dashboard/src/hooks/queries/use-worlds.ts +19 -0
  825. volnix-0.1.0/volnix-dashboard/src/hooks/use-copy-to-clipboard.ts +29 -0
  826. volnix-0.1.0/volnix-dashboard/src/hooks/use-debounce.ts +17 -0
  827. volnix-0.1.0/volnix-dashboard/src/hooks/use-keyboard.ts +24 -0
  828. volnix-0.1.0/volnix-dashboard/src/hooks/use-live-events.ts +137 -0
  829. volnix-0.1.0/volnix-dashboard/src/hooks/use-url-filters.ts +13 -0
  830. volnix-0.1.0/volnix-dashboard/src/hooks/use-url-state.ts +38 -0
  831. volnix-0.1.0/volnix-dashboard/src/hooks/use-url-tabs.ts +6 -0
  832. volnix-0.1.0/volnix-dashboard/src/hooks/use-websocket.ts +23 -0
  833. volnix-0.1.0/volnix-dashboard/src/lib/causal-graph.ts +46 -0
  834. volnix-0.1.0/volnix-dashboard/src/lib/classifiers.ts +91 -0
  835. volnix-0.1.0/volnix-dashboard/src/lib/cn.ts +6 -0
  836. volnix-0.1.0/volnix-dashboard/src/lib/color-utils.ts +36 -0
  837. volnix-0.1.0/volnix-dashboard/src/lib/comparison.ts +42 -0
  838. volnix-0.1.0/volnix-dashboard/src/lib/export.ts +25 -0
  839. volnix-0.1.0/volnix-dashboard/src/lib/formatters.ts +75 -0
  840. volnix-0.1.0/volnix-dashboard/src/lib/index.ts +13 -0
  841. volnix-0.1.0/volnix-dashboard/src/lib/score-utils.ts +20 -0
  842. volnix-0.1.0/volnix-dashboard/src/lib/url-state.ts +36 -0
  843. volnix-0.1.0/volnix-dashboard/src/main.tsx +13 -0
  844. volnix-0.1.0/volnix-dashboard/src/pages/compare/divergence-timeline.tsx +71 -0
  845. volnix-0.1.0/volnix-dashboard/src/pages/compare/entity-diff.tsx +31 -0
  846. volnix-0.1.0/volnix-dashboard/src/pages/compare/export-button.tsx +26 -0
  847. volnix-0.1.0/volnix-dashboard/src/pages/compare/index.tsx +77 -0
  848. volnix-0.1.0/volnix-dashboard/src/pages/compare/metric-diff-table.tsx +49 -0
  849. volnix-0.1.0/volnix-dashboard/src/pages/live-console/activity-timeline.tsx +70 -0
  850. volnix-0.1.0/volnix-dashboard/src/pages/live-console/context-view.tsx +338 -0
  851. volnix-0.1.0/volnix-dashboard/src/pages/live-console/event-feed-item.tsx +64 -0
  852. volnix-0.1.0/volnix-dashboard/src/pages/live-console/event-feed.tsx +224 -0
  853. volnix-0.1.0/volnix-dashboard/src/pages/live-console/index.tsx +122 -0
  854. volnix-0.1.0/volnix-dashboard/src/pages/live-console/inspector.tsx +128 -0
  855. volnix-0.1.0/volnix-dashboard/src/pages/live-console/run-header-bar.tsx +112 -0
  856. volnix-0.1.0/volnix-dashboard/src/pages/live-console/transition-banner.tsx +26 -0
  857. volnix-0.1.0/volnix-dashboard/src/pages/run-list/compare-toolbar.tsx +38 -0
  858. volnix-0.1.0/volnix-dashboard/src/pages/run-list/index.tsx +171 -0
  859. volnix-0.1.0/volnix-dashboard/src/pages/run-list/run-filters.tsx +103 -0
  860. volnix-0.1.0/volnix-dashboard/src/pages/run-list/run-row.tsx +156 -0
  861. volnix-0.1.0/volnix-dashboard/src/pages/run-list/run-table.tsx +32 -0
  862. volnix-0.1.0/volnix-dashboard/src/pages/run-list/run-timeline.tsx +100 -0
  863. volnix-0.1.0/volnix-dashboard/src/pages/run-report/index.tsx +93 -0
  864. volnix-0.1.0/volnix-dashboard/src/pages/run-report/report-header.tsx +83 -0
  865. volnix-0.1.0/volnix-dashboard/src/pages/run-report/tabs/conditions-tab.tsx +165 -0
  866. volnix-0.1.0/volnix-dashboard/src/pages/run-report/tabs/deliverable-tab.tsx +157 -0
  867. volnix-0.1.0/volnix-dashboard/src/pages/run-report/tabs/entities-tab.tsx +251 -0
  868. volnix-0.1.0/volnix-dashboard/src/pages/run-report/tabs/events-tab.tsx +564 -0
  869. volnix-0.1.0/volnix-dashboard/src/pages/run-report/tabs/gaps-tab.tsx +131 -0
  870. volnix-0.1.0/volnix-dashboard/src/pages/run-report/tabs/overview-tab.tsx +349 -0
  871. volnix-0.1.0/volnix-dashboard/src/pages/run-report/tabs/scorecard-tab.tsx +143 -0
  872. volnix-0.1.0/volnix-dashboard/src/pages/worlds/index.tsx +129 -0
  873. volnix-0.1.0/volnix-dashboard/src/providers/app-providers.tsx +13 -0
  874. volnix-0.1.0/volnix-dashboard/src/providers/index.ts +3 -0
  875. volnix-0.1.0/volnix-dashboard/src/providers/query-provider.tsx +18 -0
  876. volnix-0.1.0/volnix-dashboard/src/providers/services-provider.tsx +27 -0
  877. volnix-0.1.0/volnix-dashboard/src/services/api-client.ts +118 -0
  878. volnix-0.1.0/volnix-dashboard/src/services/index.ts +2 -0
  879. volnix-0.1.0/volnix-dashboard/src/services/ws-manager.ts +126 -0
  880. volnix-0.1.0/volnix-dashboard/src/stores/compare-store.ts +27 -0
  881. volnix-0.1.0/volnix-dashboard/src/stores/index.ts +2 -0
  882. volnix-0.1.0/volnix-dashboard/src/stores/layout-store.ts +49 -0
  883. volnix-0.1.0/volnix-dashboard/src/styles/globals.css +141 -0
  884. volnix-0.1.0/volnix-dashboard/src/types/api.ts +113 -0
  885. volnix-0.1.0/volnix-dashboard/src/types/domain.ts +272 -0
  886. volnix-0.1.0/volnix-dashboard/src/types/index.ts +8 -0
  887. volnix-0.1.0/volnix-dashboard/src/types/ui.ts +16 -0
  888. volnix-0.1.0/volnix-dashboard/src/types/ws.ts +46 -0
  889. volnix-0.1.0/volnix-dashboard/tests/components/dialog.test.tsx +63 -0
  890. volnix-0.1.0/volnix-dashboard/tests/components/domain/entity-link.test.tsx +56 -0
  891. volnix-0.1.0/volnix-dashboard/tests/components/domain/outcome-icon.test.tsx +26 -0
  892. volnix-0.1.0/volnix-dashboard/tests/components/domain/run-status-badge.test.tsx +33 -0
  893. volnix-0.1.0/volnix-dashboard/tests/components/domain/score-bar.test.tsx +28 -0
  894. volnix-0.1.0/volnix-dashboard/tests/components/domain/timestamp-cell.test.tsx +28 -0
  895. volnix-0.1.0/volnix-dashboard/tests/components/feedback/error-boundary.test.tsx +46 -0
  896. volnix-0.1.0/volnix-dashboard/tests/components/feedback/query-guard.test.tsx +84 -0
  897. volnix-0.1.0/volnix-dashboard/tests/components/panel-layout.test.tsx +31 -0
  898. volnix-0.1.0/volnix-dashboard/tests/components/score-bar.test.tsx +27 -0
  899. volnix-0.1.0/volnix-dashboard/tests/components/skeletons.test.tsx +32 -0
  900. volnix-0.1.0/volnix-dashboard/tests/helpers/mock-websocket.ts +33 -0
  901. volnix-0.1.0/volnix-dashboard/tests/hooks/queries/use-events.test.tsx +52 -0
  902. volnix-0.1.0/volnix-dashboard/tests/hooks/queries/use-runs.test.tsx +57 -0
  903. volnix-0.1.0/volnix-dashboard/tests/hooks/queries/use-scorecard.test.tsx +41 -0
  904. volnix-0.1.0/volnix-dashboard/tests/hooks/use-live-events.test.tsx +112 -0
  905. volnix-0.1.0/volnix-dashboard/tests/hooks/use-url-state.test.tsx +53 -0
  906. volnix-0.1.0/volnix-dashboard/tests/hooks/use-websocket.test.ts +49 -0
  907. volnix-0.1.0/volnix-dashboard/tests/lib/causal-graph.test.ts +69 -0
  908. volnix-0.1.0/volnix-dashboard/tests/lib/classifiers.test.ts +56 -0
  909. volnix-0.1.0/volnix-dashboard/tests/lib/color-utils.test.ts +33 -0
  910. volnix-0.1.0/volnix-dashboard/tests/lib/comparison.test.ts +47 -0
  911. volnix-0.1.0/volnix-dashboard/tests/lib/formatters.test.ts +62 -0
  912. volnix-0.1.0/volnix-dashboard/tests/lib/score-utils.test.ts +34 -0
  913. volnix-0.1.0/volnix-dashboard/tests/lib/url-state.test.ts +38 -0
  914. volnix-0.1.0/volnix-dashboard/tests/mocks/handlers.ts +72 -0
  915. volnix-0.1.0/volnix-dashboard/tests/mocks/server.ts +4 -0
  916. volnix-0.1.0/volnix-dashboard/tests/mocks/ws-mock.ts +22 -0
  917. volnix-0.1.0/volnix-dashboard/tests/pages/compare.test.tsx +115 -0
  918. volnix-0.1.0/volnix-dashboard/tests/pages/divergence-timeline.test.tsx +67 -0
  919. volnix-0.1.0/volnix-dashboard/tests/pages/live-console.test.tsx +348 -0
  920. volnix-0.1.0/volnix-dashboard/tests/pages/run-list.test.tsx +174 -0
  921. volnix-0.1.0/volnix-dashboard/tests/pages/run-report.test.tsx +369 -0
  922. volnix-0.1.0/volnix-dashboard/tests/services/api-client.test.ts +112 -0
  923. volnix-0.1.0/volnix-dashboard/tests/services/ws-manager.test.ts +156 -0
  924. volnix-0.1.0/volnix-dashboard/tests/setup.ts +7 -0
  925. volnix-0.1.0/volnix-dashboard/tests/stores/compare-store.test.ts +36 -0
  926. volnix-0.1.0/volnix-dashboard/tests/stores/layout-store.test.ts +37 -0
  927. volnix-0.1.0/volnix-dashboard/tsconfig.app.json +34 -0
  928. volnix-0.1.0/volnix-dashboard/tsconfig.json +7 -0
  929. volnix-0.1.0/volnix-dashboard/tsconfig.node.json +26 -0
  930. volnix-0.1.0/volnix-dashboard/vite.config.ts +26 -0
  931. volnix-0.1.0/volnix-dashboard/vitest.config.ts +22 -0
  932. volnix-0.1.0/volnix.toml +367 -0
@@ -0,0 +1,31 @@
1
+ # Volnix Environment Configuration
2
+ # Copy to .env and fill in your values:
3
+ # cp .env.example .env
4
+ #
5
+ # The config system resolves api_key_ref values from these env vars.
6
+ # Only set the providers you plan to use.
7
+
8
+ # ── LLM API Keys ──────────────────────────────────────────────────
9
+ # Direct API access — Volnix calls the provider's API with your key.
10
+
11
+ ANTHROPIC_API_KEY= # https://console.anthropic.com/
12
+ OPENAI_API_KEY= # https://platform.openai.com/api-keys
13
+ GOOGLE_API_KEY= # https://aistudio.google.com/apikey
14
+
15
+ # ── ACP Agent Servers ─────────────────────────────────────────────
16
+ # For connecting to locally-installed CLIs via Agent Client Protocol.
17
+ # Start the ACP server first, then set the URL here.
18
+ #
19
+ # Claude Code: npx @zed-industries/claude-agent-acp
20
+ # Codex: npx @zed-industries/codex-acp
21
+ #
22
+ # These use the CLI's own credentials — no API key needed from Volnix.
23
+
24
+ ACP_CLAUDE_URL= # e.g., http://localhost:3000
25
+ ACP_CODEX_URL= # e.g., http://localhost:3001
26
+
27
+ # ── Testing ───────────────────────────────────────────────────────
28
+ # Enable real API tests (costs money, adds latency — off by default)
29
+
30
+ VOLNIX_RUN_REAL_API_TESTS= # Set to "1" to enable real API tests
31
+ ACP_SERVER_URL= # URL of a running ACP server for integration tests
@@ -0,0 +1,64 @@
1
+ name: Bug Report
2
+ description: Report a bug in Volnix
3
+ labels: ["bug"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Thanks for reporting a bug. Please fill out the sections below so we can reproduce and fix it.
9
+
10
+ - type: textarea
11
+ id: description
12
+ attributes:
13
+ label: Description
14
+ description: What happened? What did you expect to happen?
15
+ placeholder: A clear description of the bug.
16
+ validations:
17
+ required: true
18
+
19
+ - type: textarea
20
+ id: reproduction
21
+ attributes:
22
+ label: Steps to Reproduce
23
+ description: How can we reproduce this?
24
+ placeholder: |
25
+ 1. Run `volnix serve customer_support --port 8080`
26
+ 2. Connect an agent
27
+ 3. Call `email_send` with ...
28
+ 4. See error
29
+ validations:
30
+ required: true
31
+
32
+ - type: textarea
33
+ id: expected
34
+ attributes:
35
+ label: Expected Behavior
36
+ description: What should have happened instead?
37
+ validations:
38
+ required: true
39
+
40
+ - type: textarea
41
+ id: logs
42
+ attributes:
43
+ label: Logs / Error Output
44
+ description: Paste any relevant logs or error messages.
45
+ render: shell
46
+
47
+ - type: input
48
+ id: version
49
+ attributes:
50
+ label: Volnix Version
51
+ description: Output of `volnix --version`
52
+ placeholder: "0.1.0"
53
+
54
+ - type: input
55
+ id: python
56
+ attributes:
57
+ label: Python Version
58
+ placeholder: "3.12.1"
59
+
60
+ - type: input
61
+ id: os
62
+ attributes:
63
+ label: Operating System
64
+ placeholder: "macOS 15.2 / Ubuntu 24.04 / Windows 11"
@@ -0,0 +1,56 @@
1
+ name: Feature Request
2
+ description: Propose a new feature or improvement
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Thanks for suggesting an improvement. Please describe the problem you're trying to solve and your proposed solution.
9
+
10
+ - type: textarea
11
+ id: problem
12
+ attributes:
13
+ label: Problem
14
+ description: What problem are you trying to solve? What's missing or frustrating?
15
+ placeholder: When I try to ..., I can't ... because ...
16
+ validations:
17
+ required: true
18
+
19
+ - type: textarea
20
+ id: solution
21
+ attributes:
22
+ label: Proposed Solution
23
+ description: How would you like this to work?
24
+ placeholder: It would be great if Volnix could ...
25
+ validations:
26
+ required: true
27
+
28
+ - type: textarea
29
+ id: alternatives
30
+ attributes:
31
+ label: Alternatives Considered
32
+ description: Have you considered any workarounds or alternative approaches?
33
+
34
+ - type: dropdown
35
+ id: area
36
+ attributes:
37
+ label: Area
38
+ description: Which part of Volnix does this relate to?
39
+ options:
40
+ - CLI
41
+ - World Compiler
42
+ - Governance Pipeline
43
+ - Service Packs
44
+ - Agent Integration (MCP / REST / SDK)
45
+ - Internal Simulation (Agency Engine)
46
+ - Dashboard
47
+ - Configuration
48
+ - Documentation
49
+ - Other
50
+
51
+ - type: checkboxes
52
+ id: contribution
53
+ attributes:
54
+ label: Contribution
55
+ options:
56
+ - label: I'm willing to submit a pull request for this feature
@@ -0,0 +1,20 @@
1
+ ## What
2
+
3
+ Brief description of what this PR does.
4
+
5
+ ## Why
6
+
7
+ What problem does it solve or what feature does it add?
8
+
9
+ ## How
10
+
11
+ Key implementation details or design decisions worth noting.
12
+
13
+ ## Checklist
14
+
15
+ - [ ] Tests added or updated
16
+ - [ ] `uv run pytest` passes
17
+ - [ ] `uv run ruff check volnix/ tests/` passes
18
+ - [ ] `uv run ruff format --check volnix/ tests/` passes
19
+ - [ ] `uv run mypy volnix/` passes
20
+ - [ ] Documentation updated (if user-facing change)
@@ -0,0 +1,76 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ name: Tests
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Install uv
17
+ uses: astral-sh/setup-uv@v4
18
+ with:
19
+ version: "latest"
20
+
21
+ - name: Set up Python
22
+ uses: actions/setup-python@v5
23
+ with:
24
+ python-version: "3.12"
25
+
26
+ - name: Install dependencies
27
+ run: uv sync --all-extras
28
+
29
+ - name: Run tests
30
+ run: uv run pytest --cov=volnix --cov-report=term-missing --cov-fail-under=75 -x -q
31
+ env:
32
+ VOLNIX_RUN_REAL_API_TESTS: "0"
33
+
34
+ lint:
35
+ name: Lint & Format
36
+ runs-on: ubuntu-latest
37
+ steps:
38
+ - uses: actions/checkout@v4
39
+
40
+ - name: Install uv
41
+ uses: astral-sh/setup-uv@v4
42
+ with:
43
+ version: "latest"
44
+
45
+ - name: Set up Python
46
+ uses: actions/setup-python@v5
47
+ with:
48
+ python-version: "3.12"
49
+
50
+ - name: Install dependencies
51
+ run: uv sync --all-extras
52
+
53
+ - name: Ruff check
54
+ run: uv run ruff check volnix/ tests/
55
+
56
+ - name: Ruff format check
57
+ run: uv run ruff format --check volnix/ tests/
58
+
59
+ # TODO: Re-enable once mypy strict errors are resolved
60
+ # typecheck:
61
+ # name: Type Check
62
+ # runs-on: ubuntu-latest
63
+ # steps:
64
+ # - uses: actions/checkout@v4
65
+ # - name: Install uv
66
+ # uses: astral-sh/setup-uv@v4
67
+ # with:
68
+ # version: "latest"
69
+ # - name: Set up Python
70
+ # uses: actions/setup-python@v5
71
+ # with:
72
+ # python-version: "3.12"
73
+ # - name: Install dependencies
74
+ # run: uv sync --all-extras
75
+ # - name: Mypy
76
+ # run: uv run mypy volnix/
@@ -0,0 +1,47 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*" # Only triggers on version tags like v0.1.0, v1.2.3
7
+
8
+ jobs:
9
+ publish:
10
+ name: Build & Publish
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ id-token: write # Required for trusted publishing (no API token needed)
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Install uv
19
+ uses: astral-sh/setup-uv@v4
20
+ with:
21
+ version: "latest"
22
+
23
+ - name: Set up Python
24
+ uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.12"
27
+
28
+ - name: Install dependencies
29
+ run: uv sync --all-extras
30
+
31
+ - name: Run tests
32
+ run: uv run pytest --cov=volnix --cov-fail-under=75 -x -q
33
+ env:
34
+ VOLNIX_RUN_REAL_API_TESTS: "0"
35
+
36
+ - name: Lint
37
+ run: uv run ruff check volnix/ tests/
38
+
39
+ # TODO: Re-enable once mypy strict errors are resolved
40
+ # - name: Type check
41
+ # run: uv run mypy volnix/
42
+
43
+ - name: Build package
44
+ run: uv build
45
+
46
+ - name: Publish to PyPI
47
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,91 @@
1
+ # ──────────────────────────────────────────────
2
+ # Volnix .gitignore
3
+ # ──────────────────────────────────────────────
4
+
5
+ # Volnix local config & runtime data
6
+ volnix.local.toml
7
+ volnix.development.toml.bak
8
+ terrarium.development.toml.bak
9
+ data/
10
+ !volnix/kernel/data/
11
+ !volnix/kernel/data/
12
+ dev_data/
13
+ volnix_data/
14
+ terrarium_data/
15
+ logs/
16
+ reports/
17
+ snapshots/
18
+
19
+ # Old pre-rename directories (should not be tracked)
20
+ terrarium-dashboard/
21
+ =6.0
22
+
23
+ # Internal docs (specs, plans — not for public release)
24
+ internal_docs/
25
+
26
+ # Internal development tracking
27
+ IMPLEMENTATION_STATUS.md
28
+ MASTER_ISSUES.md
29
+ OPEN_QUESTIONS.md
30
+
31
+ # Python
32
+ __pycache__/
33
+ *.py[cod]
34
+ *$py.class
35
+ *.so
36
+
37
+ # Virtual environments
38
+ .venv/
39
+ venv/
40
+ ENV/
41
+ env/
42
+
43
+ # Distribution / packaging
44
+ build/
45
+ dist/
46
+ !volnix-dashboard/dist/
47
+ *.egg-info/
48
+ *.egg
49
+ sdist/
50
+ wheels/
51
+
52
+ # Testing
53
+ .pytest_cache/
54
+ htmlcov/
55
+ .coverage
56
+ .coverage.*
57
+ coverage.xml
58
+ *.cover
59
+
60
+ # Type checking
61
+ .mypy_cache/
62
+ .dmypy.json
63
+ dmypy.json
64
+
65
+ # Linting
66
+ .ruff_cache/
67
+
68
+ # IDE
69
+ .vscode/
70
+ .idea/
71
+ *.swp
72
+ *.swo
73
+ *~
74
+ .project
75
+ .settings/
76
+
77
+ # Node (npx cache for @aisuite/chub)
78
+ node_modules/
79
+ package-lock.json
80
+
81
+ # OS
82
+ .DS_Store
83
+ Thumbs.db
84
+
85
+ # Jupyter
86
+ .ipynb_checkpoints/
87
+
88
+ # Environment variables
89
+ .env
90
+ .env.*
91
+ !.env.example
volnix-0.1.0/AGENTS.md ADDED
@@ -0,0 +1,171 @@
1
+ # AGENTS.md
2
+
3
+ This file provides guidance to Codex (Codex.ai/code) when working with code in this repository.
4
+
5
+ ## What is Volnix
6
+
7
+ Volnix is a **world engine for AI agents**. It creates stateful, causal, observable realities where agents exist as participants — not as isolated prompt loops calling tools, but as actors inside a world that has places, institutions, other agents, budgets, policies, communication systems, and real consequences.
8
+
9
+ Users describe a world in natural language or YAML. Volnix compiles it into a deep, reproducible simulation. Agents interact with the world through standard protocols (MCP, ACP, OpenAI function calling, Anthropic tool use, raw HTTP). Everything that happens is recorded, scored, and diffable.
10
+
11
+ ## Spec Documents
12
+
13
+ For deep understanding of the system, read these internal docs in order:
14
+
15
+ - `internal_docs/volnix-full-spec.md` — Complete specification: all 10 engines, the runtime pipeline, fidelity tiers, validation framework, governed vs. ungoverned, multi-agent, world packs, CLI, and roadmap.
16
+ - `internal_docs/volnix-world-definition-and-compiler.md` — World definition YAML schema, reality dimensions (labels + per-attribute numbers), behavior modes, fidelity tiers, compiler settings, blueprints, reproducibility model, and the five user-facing concepts.
17
+ - `internal_docs/volnix-architecture.md` — The two-half architecture (deterministic engine vs. generative layer), three generation phases, fidelity tiers, world conditions, the self-improving loop, and the end-to-end flow diagram.
18
+ - `DESIGN_PRINCIPLES.md` — Architectural principles, design rules (DOs/DON'Ts), patterns (event bus, ledger, pipeline, gateway, composition root), async flow, and enforcement mechanisms.
19
+
20
+ ## Commands
21
+
22
+ ```bash
23
+ # Install (uses uv with hatchling build backend)
24
+ uv sync --all-extras
25
+
26
+ # Run all tests
27
+ uv run pytest
28
+
29
+ # Run a single test file
30
+ uv run pytest tests/path/to/test_file.py
31
+
32
+ # Run a single test
33
+ uv run pytest tests/path/to/test_file.py::test_function_name -v
34
+
35
+ # Run tests with coverage
36
+ uv run pytest --cov=volnix --cov-report=term-missing
37
+
38
+ # Lint
39
+ uv run ruff check volnix/ tests/
40
+ uv run ruff format --check volnix/ tests/
41
+
42
+ # Type check
43
+ uv run mypy volnix/
44
+
45
+ # CLI entry point (typer-based, entry point: volnix/cli.py)
46
+ uv run volnix --help
47
+ ```
48
+
49
+ ## Architecture
50
+
51
+ ### The Two Halves
52
+
53
+ **World Law (Deterministic Engine):** Owns state, events, causal graph, permissions, policy enforcement, budget accounting, time, visibility, mutation validation, replay/fork/diff, governance scoring. The engine never guesses, never generates text, never decides what a service "would probably do." It enforces structure.
54
+
55
+ **World Content (Generative Layer):** Creates realistic data, service behavior, actor responses, scenario complications. But it operates inside constraints set by the engine. The generative layer proposes; the engine disposes. A generated response that violates state consistency is rejected. A generated mutation that exceeds budget is denied.
56
+
57
+ ### Two-Phase Model
58
+
59
+ - **Phase A (World Compilation):** The compiler transforms user intent into a runnable world. LLM generates all world data — entities, actors, service state — seeded for reproducibility and shaped by reality dimensions. Dimensions determine what IS in the world at compile time. The compiler executes a 7-step pipeline: Parse → Classify → Resolve → Generate → Validate → Inject seeds → Snapshot.
60
+ - **Phase B (Runtime):** The 7-step governance pipeline processes every agent action. Services return data as it exists in state. No LLM decides runtime reality — it was baked in during compilation.
61
+
62
+ ### The 10 Engines
63
+
64
+ Every engine inherits from `BaseEngine` (`core/engine.py`), which provides lifecycle hooks (`_on_initialize`, `_on_start`, `_on_stop`) and event bus integration. Engines override `_handle_event` for their core logic.
65
+
66
+ | Engine | Package | Responsibility |
67
+ |--------|---------|---------------|
68
+ | **World Compiler** | `engines/world_compiler/` | Transforms NL/YAML descriptions into runnable worlds. Schema resolution, data generation, plan review. |
69
+ | **State Engine** | `engines/state/` | Single source of truth. Entity storage, event log, causal graph, snapshot/fork/diff. All state mutations go through its commit interface. |
70
+ | **Policy Engine** | `engines/policy/` | Evaluates governance rules. YAML condition language. Enforcement modes: hold, block, escalate, log. Precedence: block > hold > escalate > log. |
71
+ | **Permission Engine** | `engines/permission/` | RBAC + visibility scoping. Determines what each actor can see and do. Filters query results by actor scope. |
72
+ | **Budget Engine** | `engines/budget/` | Tracks resource consumption per actor (api_calls, llm_spend_usd, world_actions, time). Emits warning/critical/exhausted events. |
73
+ | **World Responder** | `engines/responder/` | Generates responses. Tier 1: deterministic pack logic, no LLM. Tier 2: profile-constrained LLM, seeded. |
74
+ | **World Animator** | `engines/animator/` | Generates events between agent turns. Controlled by behavior mode (static=off, reactive=cause-effect, dynamic=fully alive). Two layers: deterministic schedule + generative content with creativity budget. |
75
+ | **Agent Adapter** | `engines/adapter/` | Translates between external protocols (MCP, ACP, OpenAI, Anthropic, HTTP) and internal world actions. Handles capability gap detection. |
76
+ | **Report Generator** | `engines/reporter/` | Produces governance scorecards, capability gap logs, causal traces, counterfactual diffs. Scores are derived from events, not LLM judgment. Two-direction observation: world→agent challenges + agent→world behavior. |
77
+ | **Feedback Engine** | `engines/feedback/` | Manages the self-improving loop: annotations, tier promotion (bootstrapped→curated→verified), external source sync. |
78
+
79
+ ### 7-Step Governance Pipeline
80
+
81
+ Every action flows through: **permission → policy → budget → capability → responder → validation → commit**. This pipeline IS the law of the world. Nothing bypasses it. Agent actions, animator events, side effects, and approval responses all flow through the same seven steps. Steps are configured in `volnix.toml` under `[pipeline]`. Steps can short-circuit (e.g., policy blocks before reaching responder).
82
+
83
+ ### Semantic Kernel (`kernel/`)
84
+
85
+ Maps services to semantic categories (communication, work-management, money, authority, identity, storage, code, scheduling, monitoring) via `SemanticCategory` and `SemanticPrimitive`. This is a static registry — no LLMs. When the compiler encounters a service name (e.g., "Stripe"), it classifies it to a category, inherits core primitives, then specializes. This means bootstrapped services start from category semantics, not from zero. Services are resolved through `ServiceResolver` and exposed via `ServiceSurface` with `APIOperation` definitions.
86
+
87
+ ### Fidelity Tiers (Two Tiers at Runtime)
88
+
89
+ - **Tier 1 (Verified Pack):** Hand-built deterministic simulation. No LLM at runtime. Fully reproducible. Benchmark-grade. Built along mission-critical paths of flagship templates.
90
+ - **Tier 2 (Profile-Backed):** Curated prompt profile with schemas, state machines, response templates, behavioral annotations. LLM generates content within constraints. Seeded. Includes bootstrapped services (compile-time inferred, labeled as `fidelity_source: "bootstrapped"`).
91
+ - **There is no Tier 3 at runtime.** Bootstrapping happens at compile time and produces a Tier 2 profile.
92
+
93
+ ### Service Resolution Priority Chain (Compiler)
94
+
95
+ When the compiler encounters a service name:
96
+ 1. **Semantic classification** — map to category, inherit primitives
97
+ 2. **Verified Pack?** — if found → Tier 1, done
98
+ 3. **Curated Profile?** — if found → Tier 2, done
99
+ 4. **External spec?** — Context Hub (`chub get`), OpenAPI spec, MCP Registry → generate draft profile → Tier 2
100
+ 5. **LLM Inference** — bootstrap from category primitives + general knowledge → Tier 2 (labeled "bootstrapped")
101
+
102
+ ### Reality Dimensions — The World's Personality
103
+
104
+ Five dimensions that are personality traits, not engineering parameters. The LLM interprets them holistically — "somewhat neglected information" means the LLM creates a world where data management has been neglected, contextually and narratively coherent.
105
+
106
+ | Dimension | What it answers | Sub-attributes |
107
+ |-----------|----------------|----------------|
108
+ | **Information Quality** | How well-maintained is the data? | staleness, incompleteness, inconsistency, noise |
109
+ | **Reliability** | Do the tools work? | failures, timeouts, degradation |
110
+ | **Social Friction** | How difficult are the people? | uncooperative, deceptive, hostile, sophistication |
111
+ | **Complexity** | How messy are the situations? | ambiguity, edge_cases, contradictions, urgency, volatility |
112
+ | **Boundaries** | What limits exist? | access_limits, rule_clarity, boundary_gaps |
113
+
114
+ Three presets: `ideal` / `messy` (default) / `hostile`. Two-level config: labels for simple users, per-attribute numbers (0-100) for advanced. Mix freely.
115
+
116
+ ### Behavior Modes
117
+
118
+ | Mode | Animator | Reproducibility |
119
+ |------|----------|----------------|
120
+ | **static** | Off. World frozen after compilation. | Fully deterministic. Same seed = same world. |
121
+ | **reactive** | Responds only to agent actions/inaction. | Same agent actions = same reactions. |
122
+ | **dynamic** | Fully active. Generates contextual events. | Seeds provide similar character. Use snapshots for exact replay. |
123
+
124
+ ### Five User-Facing Concepts (the stable API)
125
+
126
+ | Concept | What it answers | Flag |
127
+ |---------|----------------|------|
128
+ | **Description** | What is this world? | NL or YAML |
129
+ | **Reality** | What kind of world? | `--reality ideal/messy/hostile` |
130
+ | **Behavior** | Is the world alive? | `--behavior static/reactive/dynamic` |
131
+ | **Fidelity** | How accurate are services? | `--fidelity auto/strict/exploratory` |
132
+ | **Mode** | Are rules enforced? | `--mode governed/ungoverned` |
133
+
134
+ ### Composition Root
135
+
136
+ `registry/composition.py` is the **only** place that imports concrete engine classes. All other code depends on `typing.Protocol` interfaces from `core/protocols.py`. This is strictly enforced — no cross-engine imports.
137
+
138
+ ### Event Bus & Ledger (separate concerns)
139
+
140
+ - **Bus** (`bus/`): Inter-engine communication via typed events. Events are immutable Pydantic models persisted to SQLite before delivery. Per-engine `asyncio.Queue` instances.
141
+ - **Ledger** (`ledger/`): Audit log for observability. Records pipeline steps, state mutations, LLM calls, gateway requests. Not for inter-engine communication.
142
+
143
+ ### Config System
144
+
145
+ - `volnix.toml` — base config
146
+ - `volnix.{env}.toml` — environment overrides (e.g., `volnix.development.toml` uses `:memory:` DBs)
147
+ - `volnix.local.toml` — git-ignored local overrides
148
+ - Root config schema: `config/schema.py` → `VolnixConfig`. Each subsystem owns its own config model (SRP).
149
+
150
+ ### LLM Router
151
+
152
+ All LLM calls go through the router (`llm/router.py`), which handles provider selection, retry, budget tracking, and fallback. Never call provider SDKs directly. Task-specific routing is configured in `[llm.routing.*]` sections of `volnix.toml`. Supports: Google (native), Anthropic (native), OpenAI-compatible (OpenAI, Gemini, Ollama, vLLM), CLI providers (Codex, codex, gemini), ACP providers (bidirectional JSON-RPC).
153
+
154
+ ## Key Conventions
155
+
156
+ - **All I/O is async.** Use `aiosqlite`, `httpx`, async SDK methods. Wrap sync libs with `asyncio.to_thread()`. A single blocking call degrades the entire event loop.
157
+ - **All value objects and events are frozen Pydantic models** (`model_config = ConfigDict(frozen=True)`).
158
+ - **Inter-module contracts use `typing.Protocol`** (runtime_checkable, structural). ABC is used only for `BaseEngine`.
159
+ - **Typed IDs everywhere** — `EntityId`, `ActorId`, `ServiceId`, `EventId`, `WorldId`, `RunId`, `PolicyId`, `ToolName`, `SnapshotId`, `ProfileVersion` are `NewType` wrappers in `core/types.py`. Never pass raw strings for domain identifiers.
160
+ - **No hardcoded values in engine code.** Thresholds, timeouts, limits, provider names come from TOML config.
161
+ - **No cross-engine imports.** `engines/policy/` must never import from `engines/state/`. Communication is through the bus and protocols only.
162
+ - **All state changes go through the State Engine's commit interface.** Direct mutation creates inconsistencies.
163
+ - **All external requests go through the Gateway.** MCP calls, HTTP requests, webhook deliveries — everything.
164
+ - **All LLM calls go through the LLM router.** Never call provider SDKs directly. The router handles provider selection, retry, budget tracking, and fallback.
165
+ - **Record everything in the ledger.** If it didn't produce a ledger entry, it didn't happen.
166
+ - **Use the persistence module for all database operations.** Never create standalone SQLite connections.
167
+ - **Tests use `pytest-asyncio` with `asyncio_mode = "auto"`** — no `@pytest.mark.asyncio` decorators needed.
168
+ - **Coverage threshold: 80%** (95% for critical paths: pipeline, bus, state engine).
169
+ - Shared test fixtures in `tests/conftest.py`: `mock_event_bus`, `mock_ledger`, `stub_state_engine`, `mock_llm_provider`, `make_action_context`, `make_world_event`.
170
+ - **Ruff** for linting/formatting: Python 3.12 target, 100-char line length, rules: E, F, I, N, W, UP.
171
+ - **Mypy** with strict mode enabled.
@@ -0,0 +1,32 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.0] - 2026-04-03
9
+
10
+ ### Added
11
+
12
+ - 10-engine architecture: State, Policy, Permission, Budget, World Responder, World Animator, Agency, Agent Adapter, Report Generator, Feedback
13
+ - World Compiler: natural language and YAML world definitions compiled into runnable simulations
14
+ - 7-step governance pipeline: permission, policy, budget, capability, responder, validation, commit
15
+ - CLI with 28 commands: create, run, serve, mcp, dashboard, blueprints, report, check, config, attach, detach, inspect, diff, and more
16
+ - REST API with 39 endpoints + WebSocket live event streaming
17
+ - MCP server for agent integration (stdio and HTTP transports)
18
+ - React dashboard for run observation, scorecards, deliverables, and comparison
19
+ - 10 verified service packs: Gmail, Slack, Zendesk, Stripe, GitHub, Google Calendar, Twitter, Reddit, Alpaca, Browser
20
+ - 15 official blueprints: customer support, incident response, open sandbox, market prediction, campaign brainstorm, climate research, feature prioritization, security assessment, support ticket triage, governance test, and 5 internal agent team templates
21
+ - Multi-provider LLM routing: Anthropic, OpenAI, Google Gemini, Ollama, CLI-based, ACP-based
22
+ - Reality dimensions: information quality, reliability, social friction, complexity, boundaries (with ideal/messy/hostile presets)
23
+ - Behavior modes: static, reactive, dynamic
24
+ - Internal agent simulation with collaborative communication, subscriptions, and deliverable synthesis
25
+ - Python SDK client for programmatic access
26
+ - Agent config integration: one-command attach for Claude Desktop, Cursor, Windsurf
27
+ - Config export for OpenAI, Anthropic, LangGraph, CrewAI, AutoGen formats
28
+ - Layered TOML configuration system with environment and local overrides
29
+ - SQLite async persistence with WAL mode
30
+ - Event bus for inter-engine communication
31
+ - Ledger for audit logging and observability
32
+ - Seeded reproducibility: same seed produces same world state