zall 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 (317) hide show
  1. zall-0.1.0/LICENSE +21 -0
  2. zall-0.1.0/PKG-INFO +470 -0
  3. zall-0.1.0/README.md +420 -0
  4. zall-0.1.0/pyproject.toml +148 -0
  5. zall-0.1.0/setup.cfg +4 -0
  6. zall-0.1.0/src/zall/__init__.py +8 -0
  7. zall-0.1.0/src/zall/__main__.py +3 -0
  8. zall-0.1.0/src/zall/_util/__init__.py +18 -0
  9. zall-0.1.0/src/zall/_util/backoff.py +46 -0
  10. zall-0.1.0/src/zall/_util/file.py +118 -0
  11. zall-0.1.0/src/zall/_util/file_state.py +123 -0
  12. zall-0.1.0/src/zall/_util/hash_utils.py +110 -0
  13. zall-0.1.0/src/zall/_util/jsonl.py +85 -0
  14. zall-0.1.0/src/zall/_util/logging.py +130 -0
  15. zall-0.1.0/src/zall/_util/model_registry.py +342 -0
  16. zall-0.1.0/src/zall/_util/path.py +73 -0
  17. zall-0.1.0/src/zall/_util/string.py +98 -0
  18. zall-0.1.0/src/zall/_util/term.py +150 -0
  19. zall-0.1.0/src/zall/_util/tokens.py +60 -0
  20. zall-0.1.0/src/zall/_util/toml.py +231 -0
  21. zall-0.1.0/src/zall/_util/win32.py +91 -0
  22. zall-0.1.0/src/zall/adapters/__init__.py +26 -0
  23. zall-0.1.0/src/zall/adapters/anthropic.py +460 -0
  24. zall-0.1.0/src/zall/adapters/base.py +432 -0
  25. zall-0.1.0/src/zall/adapters/chaos.py +128 -0
  26. zall-0.1.0/src/zall/adapters/gemini.py +363 -0
  27. zall-0.1.0/src/zall/adapters/ollama.py +315 -0
  28. zall-0.1.0/src/zall/adapters/openai_compat.py +581 -0
  29. zall-0.1.0/src/zall/adapters/scripted.py +165 -0
  30. zall-0.1.0/src/zall/cli/__init__.py +8 -0
  31. zall-0.1.0/src/zall/cli/app.py +211 -0
  32. zall-0.1.0/src/zall/cli/commands/__init__.py +197 -0
  33. zall-0.1.0/src/zall/cli/commands/_common.py +1240 -0
  34. zall-0.1.0/src/zall/cli/commands/config.py +345 -0
  35. zall-0.1.0/src/zall/cli/commands/eval.py +219 -0
  36. zall-0.1.0/src/zall/cli/commands/files.py +251 -0
  37. zall-0.1.0/src/zall/cli/commands/git.py +211 -0
  38. zall-0.1.0/src/zall/cli/commands/model.py +944 -0
  39. zall-0.1.0/src/zall/cli/commands/reload.py +97 -0
  40. zall-0.1.0/src/zall/cli/commands/science.py +358 -0
  41. zall-0.1.0/src/zall/cli/commands/session.py +465 -0
  42. zall-0.1.0/src/zall/cli/commands/suggest.py +512 -0
  43. zall-0.1.0/src/zall/cli/commands/system.py +772 -0
  44. zall-0.1.0/src/zall/cli/commands/v040.py +427 -0
  45. zall-0.1.0/src/zall/cli/config.py +508 -0
  46. zall-0.1.0/src/zall/cli/config_layers.py +290 -0
  47. zall-0.1.0/src/zall/cli/diff_render.py +428 -0
  48. zall-0.1.0/src/zall/cli/environment.py +782 -0
  49. zall-0.1.0/src/zall/cli/file_complete.py +236 -0
  50. zall-0.1.0/src/zall/cli/init_wizard.py +284 -0
  51. zall-0.1.0/src/zall/cli/judge.py +64 -0
  52. zall-0.1.0/src/zall/cli/orchestrator.py +674 -0
  53. zall-0.1.0/src/zall/cli/paste_fold.py +112 -0
  54. zall-0.1.0/src/zall/cli/prompt.py +366 -0
  55. zall-0.1.0/src/zall/cli/render.py +1747 -0
  56. zall-0.1.0/src/zall/cli/repl_ui.py +595 -0
  57. zall-0.1.0/src/zall/cli/replay.py +318 -0
  58. zall-0.1.0/src/zall/cli/responder.py +529 -0
  59. zall-0.1.0/src/zall/cli/select.py +80 -0
  60. zall-0.1.0/src/zall/cli/session.py +755 -0
  61. zall-0.1.0/src/zall/cli/syntax_theme.py +102 -0
  62. zall-0.1.0/src/zall/cli/theme.py +318 -0
  63. zall-0.1.0/src/zall/cli/tui/__init__.py +36 -0
  64. zall-0.1.0/src/zall/cli/tui/app.py +1590 -0
  65. zall-0.1.0/src/zall/cli/tui/tui_responder.py +93 -0
  66. zall-0.1.0/src/zall/cli/tui/widgets.py +1358 -0
  67. zall-0.1.0/src/zall/cli/update.py +299 -0
  68. zall-0.1.0/src/zall/codegraph/__init__.py +919 -0
  69. zall-0.1.0/src/zall/core/__init__.py +178 -0
  70. zall-0.1.0/src/zall/core/accountability.py +317 -0
  71. zall-0.1.0/src/zall/core/action.py +66 -0
  72. zall-0.1.0/src/zall/core/agent.py +563 -0
  73. zall-0.1.0/src/zall/core/builder.py +445 -0
  74. zall-0.1.0/src/zall/core/chat_state.py +687 -0
  75. zall-0.1.0/src/zall/core/checkpoint.py +432 -0
  76. zall-0.1.0/src/zall/core/compactor.py +478 -0
  77. zall-0.1.0/src/zall/core/context.py +115 -0
  78. zall-0.1.0/src/zall/core/context_manager.py +256 -0
  79. zall-0.1.0/src/zall/core/coordinator.py +176 -0
  80. zall-0.1.0/src/zall/core/eval/__init__.py +362 -0
  81. zall-0.1.0/src/zall/core/events.py +159 -0
  82. zall-0.1.0/src/zall/core/evidence.py +69 -0
  83. zall-0.1.0/src/zall/core/executor.py +463 -0
  84. zall-0.1.0/src/zall/core/experience_store.py +335 -0
  85. zall-0.1.0/src/zall/core/experiment.py +99 -0
  86. zall-0.1.0/src/zall/core/extension.py +248 -0
  87. zall-0.1.0/src/zall/core/gate.py +349 -0
  88. zall-0.1.0/src/zall/core/goal.py +419 -0
  89. zall-0.1.0/src/zall/core/hallucination.py +48 -0
  90. zall-0.1.0/src/zall/core/hypothesis.py +203 -0
  91. zall-0.1.0/src/zall/core/judge/__init__.py +460 -0
  92. zall-0.1.0/src/zall/core/lifecycle.py +262 -0
  93. zall-0.1.0/src/zall/core/loop.py +1809 -0
  94. zall-0.1.0/src/zall/core/loop_checkpoint.py +152 -0
  95. zall-0.1.0/src/zall/core/loop_config.py +99 -0
  96. zall-0.1.0/src/zall/core/loop_errors.py +8 -0
  97. zall-0.1.0/src/zall/core/loop_events.py +45 -0
  98. zall-0.1.0/src/zall/core/loop_model_call.py +217 -0
  99. zall-0.1.0/src/zall/core/loop_perception.py +126 -0
  100. zall-0.1.0/src/zall/core/memory.py +306 -0
  101. zall-0.1.0/src/zall/core/model.py +240 -0
  102. zall-0.1.0/src/zall/core/open_ended.py +180 -0
  103. zall-0.1.0/src/zall/core/perception/__init__.py +47 -0
  104. zall-0.1.0/src/zall/core/perception/coding_sensors.py +463 -0
  105. zall-0.1.0/src/zall/core/perception/coding_world_model.py +377 -0
  106. zall-0.1.0/src/zall/core/perception/engine.py +300 -0
  107. zall-0.1.0/src/zall/core/perception/sensor.py +275 -0
  108. zall-0.1.0/src/zall/core/perception/world_model.py +197 -0
  109. zall-0.1.0/src/zall/core/plan_mode.py +165 -0
  110. zall-0.1.0/src/zall/core/plugin_loader.py +351 -0
  111. zall-0.1.0/src/zall/core/policies.py +102 -0
  112. zall-0.1.0/src/zall/core/process_anchor/__init__.py +30 -0
  113. zall-0.1.0/src/zall/core/process_anchor/client.py +268 -0
  114. zall-0.1.0/src/zall/core/process_anchor/protocol.py +124 -0
  115. zall-0.1.0/src/zall/core/process_anchor/server.py +340 -0
  116. zall-0.1.0/src/zall/core/prompt_template.py +182 -0
  117. zall-0.1.0/src/zall/core/proof_gate.py +464 -0
  118. zall-0.1.0/src/zall/core/provenance.py +115 -0
  119. zall-0.1.0/src/zall/core/red_blue.py +236 -0
  120. zall-0.1.0/src/zall/core/refiner.py +320 -0
  121. zall-0.1.0/src/zall/core/safety.py +346 -0
  122. zall-0.1.0/src/zall/core/sandbox.py +253 -0
  123. zall-0.1.0/src/zall/core/sandbox_verifier.py +109 -0
  124. zall-0.1.0/src/zall/core/self_improve.py +244 -0
  125. zall-0.1.0/src/zall/core/tool.py +443 -0
  126. zall-0.1.0/src/zall/core/tool_kind.py +98 -0
  127. zall-0.1.0/src/zall/core/toolset.py +242 -0
  128. zall-0.1.0/src/zall/core/verifiability.py +579 -0
  129. zall-0.1.0/src/zall/eval/__init__.py +15 -0
  130. zall-0.1.0/src/zall/eval/metrics.py +348 -0
  131. zall-0.1.0/src/zall/extensions/__init__.py +1 -0
  132. zall-0.1.0/src/zall/extensions/auto_learn.py +733 -0
  133. zall-0.1.0/src/zall/extensions/science/__init__.py +14 -0
  134. zall-0.1.0/src/zall/extensions/science/store.py +197 -0
  135. zall-0.1.0/src/zall/extensions/usage_tracker.py +91 -0
  136. zall-0.1.0/src/zall/lsp/__init__.py +847 -0
  137. zall-0.1.0/src/zall/mcp/__init__.py +22 -0
  138. zall-0.1.0/src/zall/mcp/client.py +270 -0
  139. zall-0.1.0/src/zall/mcp/config.py +191 -0
  140. zall-0.1.0/src/zall/mcp/tool.py +129 -0
  141. zall-0.1.0/src/zall/plugin/__init__.py +583 -0
  142. zall-0.1.0/src/zall/safety/__init__.py +10 -0
  143. zall-0.1.0/src/zall/safety/config.py +231 -0
  144. zall-0.1.0/src/zall/safety/rules_file.py +578 -0
  145. zall-0.1.0/src/zall/safety/sensitive.py +90 -0
  146. zall-0.1.0/src/zall/sandbox/__init__.py +630 -0
  147. zall-0.1.0/src/zall/skills/__init__.py +11 -0
  148. zall-0.1.0/src/zall/skills/loader.py +202 -0
  149. zall-0.1.0/src/zall/tools/__init__.py +11 -0
  150. zall-0.1.0/src/zall/tools/_bash_semantics.py +256 -0
  151. zall-0.1.0/src/zall/tools/_diff.py +24 -0
  152. zall-0.1.0/src/zall/tools/apply_patch.py +298 -0
  153. zall-0.1.0/src/zall/tools/bash.py +761 -0
  154. zall-0.1.0/src/zall/tools/batch_edit.py +331 -0
  155. zall-0.1.0/src/zall/tools/code_understanding.py +258 -0
  156. zall-0.1.0/src/zall/tools/codegraph.py +350 -0
  157. zall-0.1.0/src/zall/tools/edit_file.py +205 -0
  158. zall-0.1.0/src/zall/tools/git_protect.py +189 -0
  159. zall-0.1.0/src/zall/tools/glob.py +138 -0
  160. zall-0.1.0/src/zall/tools/grep.py +346 -0
  161. zall-0.1.0/src/zall/tools/list_dir.py +156 -0
  162. zall-0.1.0/src/zall/tools/lsp_diagnostics.py +329 -0
  163. zall-0.1.0/src/zall/tools/project_analysis.py +221 -0
  164. zall-0.1.0/src/zall/tools/pty_executor.py +253 -0
  165. zall-0.1.0/src/zall/tools/read_file.py +278 -0
  166. zall-0.1.0/src/zall/tools/read_image.py +316 -0
  167. zall-0.1.0/src/zall/tools/science.py +506 -0
  168. zall-0.1.0/src/zall/tools/search.py +474 -0
  169. zall-0.1.0/src/zall/tools/spawn_subagent.py +731 -0
  170. zall-0.1.0/src/zall/tools/todo.py +142 -0
  171. zall-0.1.0/src/zall/tools/web_fetch.py +502 -0
  172. zall-0.1.0/src/zall/tools/write_file.py +150 -0
  173. zall-0.1.0/src/zall.egg-info/PKG-INFO +470 -0
  174. zall-0.1.0/src/zall.egg-info/SOURCES.txt +315 -0
  175. zall-0.1.0/src/zall.egg-info/dependency_links.txt +1 -0
  176. zall-0.1.0/src/zall.egg-info/entry_points.txt +2 -0
  177. zall-0.1.0/src/zall.egg-info/requires.txt +27 -0
  178. zall-0.1.0/src/zall.egg-info/top_level.txt +1 -0
  179. zall-0.1.0/tests/test_accountability_multi_judge.py +520 -0
  180. zall-0.1.0/tests/test_action_invariants.py +57 -0
  181. zall-0.1.0/tests/test_adapter_mock_invariants.py +491 -0
  182. zall-0.1.0/tests/test_agent_builder.py +275 -0
  183. zall-0.1.0/tests/test_agent_definition.py +274 -0
  184. zall-0.1.0/tests/test_auto_compact_v018.py +368 -0
  185. zall-0.1.0/tests/test_backoff_invariants.py +86 -0
  186. zall-0.1.0/tests/test_bash_invariants.py +305 -0
  187. zall-0.1.0/tests/test_bash_pty.py +132 -0
  188. zall-0.1.0/tests/test_batch_edit_invariants.py +190 -0
  189. zall-0.1.0/tests/test_bugfix_regressions.py +322 -0
  190. zall-0.1.0/tests/test_chat_state_invariants.py +355 -0
  191. zall-0.1.0/tests/test_checkpoint_invariants.py +233 -0
  192. zall-0.1.0/tests/test_cli_app.py +853 -0
  193. zall-0.1.0/tests/test_cli_interaction_v012.py +339 -0
  194. zall-0.1.0/tests/test_cli_interaction_v013.py +204 -0
  195. zall-0.1.0/tests/test_cli_judge.py +129 -0
  196. zall-0.1.0/tests/test_cli_missing_commands.py +241 -0
  197. zall-0.1.0/tests/test_cli_new_commands.py +494 -0
  198. zall-0.1.0/tests/test_cli_render.py +419 -0
  199. zall-0.1.0/tests/test_cli_responder.py +148 -0
  200. zall-0.1.0/tests/test_codegraph_invariants.py +495 -0
  201. zall-0.1.0/tests/test_command_palette.py +211 -0
  202. zall-0.1.0/tests/test_compactor_invariants.py +684 -0
  203. zall-0.1.0/tests/test_config_command_invariants.py +147 -0
  204. zall-0.1.0/tests/test_config_layers.py +339 -0
  205. zall-0.1.0/tests/test_config_selfheal.py +85 -0
  206. zall-0.1.0/tests/test_confirm_gate_invariants.py +265 -0
  207. zall-0.1.0/tests/test_confirm_select.py +265 -0
  208. zall-0.1.0/tests/test_context_invariants.py +156 -0
  209. zall-0.1.0/tests/test_context_judge_invariants.py +296 -0
  210. zall-0.1.0/tests/test_coordinator_invariants.py +202 -0
  211. zall-0.1.0/tests/test_covering_invariants.py +81 -0
  212. zall-0.1.0/tests/test_custom_provider_invariants.py +195 -0
  213. zall-0.1.0/tests/test_diff_render_invariants.py +239 -0
  214. zall-0.1.0/tests/test_edit_bash_invariants.py +105 -0
  215. zall-0.1.0/tests/test_edit_file_invariants.py +235 -0
  216. zall-0.1.0/tests/test_eval_invariants.py +150 -0
  217. zall-0.1.0/tests/test_experience_store_invariants.py +133 -0
  218. zall-0.1.0/tests/test_experience_tier_gate_invariants.py +95 -0
  219. zall-0.1.0/tests/test_file_complete.py +178 -0
  220. zall-0.1.0/tests/test_git_rules_invariants.py +79 -0
  221. zall-0.1.0/tests/test_glob_invariants.py +76 -0
  222. zall-0.1.0/tests/test_goal_invariants.py +597 -0
  223. zall-0.1.0/tests/test_grep_invariants.py +151 -0
  224. zall-0.1.0/tests/test_hash_utils_invariants.py +127 -0
  225. zall-0.1.0/tests/test_hypothesis_invariants.py +313 -0
  226. zall-0.1.0/tests/test_integration.py +250 -0
  227. zall-0.1.0/tests/test_integration_v040.py +600 -0
  228. zall-0.1.0/tests/test_interaction_debt_e4.py +509 -0
  229. zall-0.1.0/tests/test_interaction_polish.py +394 -0
  230. zall-0.1.0/tests/test_interaction_v020.py +405 -0
  231. zall-0.1.0/tests/test_jsonl_header_invariants.py +131 -0
  232. zall-0.1.0/tests/test_judge_invariants.py +342 -0
  233. zall-0.1.0/tests/test_kimi_visual.py +381 -0
  234. zall-0.1.0/tests/test_lab_command_invariants.py +163 -0
  235. zall-0.1.0/tests/test_lifecycle_hooks.py +649 -0
  236. zall-0.1.0/tests/test_list_dir_invariants.py +92 -0
  237. zall-0.1.0/tests/test_live_region.py +207 -0
  238. zall-0.1.0/tests/test_loop_invariants.py +572 -0
  239. zall-0.1.0/tests/test_loop_observer_invariants.py +401 -0
  240. zall-0.1.0/tests/test_loop_step_invariants.py +336 -0
  241. zall-0.1.0/tests/test_loop_stream_invariants.py +293 -0
  242. zall-0.1.0/tests/test_lsp_invariants.py +244 -0
  243. zall-0.1.0/tests/test_mcp_registration_v017.py +290 -0
  244. zall-0.1.0/tests/test_model_invariants.py +217 -0
  245. zall-0.1.0/tests/test_ontology_invariants.py +247 -0
  246. zall-0.1.0/tests/test_open_ended_invariants.py +93 -0
  247. zall-0.1.0/tests/test_openai_compat_invariants.py +399 -0
  248. zall-0.1.0/tests/test_paste_fold_invariants.py +122 -0
  249. zall-0.1.0/tests/test_perception_consumed_by_loop.py +445 -0
  250. zall-0.1.0/tests/test_perception_invariants.py +687 -0
  251. zall-0.1.0/tests/test_phase1_invariants.py +403 -0
  252. zall-0.1.0/tests/test_platform_compat.py +555 -0
  253. zall-0.1.0/tests/test_plugin_discovery.py +334 -0
  254. zall-0.1.0/tests/test_plugin_safety.py +462 -0
  255. zall-0.1.0/tests/test_plugin_system.py +290 -0
  256. zall-0.1.0/tests/test_process_anchor_invariants.py +187 -0
  257. zall-0.1.0/tests/test_project_memory_invariants.py +74 -0
  258. zall-0.1.0/tests/test_proof_gate_invariants.py +173 -0
  259. zall-0.1.0/tests/test_proof_gate_square_invariants.py +59 -0
  260. zall-0.1.0/tests/test_read_file_invariants.py +142 -0
  261. zall-0.1.0/tests/test_read_image_invariants.py +230 -0
  262. zall-0.1.0/tests/test_real_api_v030.py +365 -0
  263. zall-0.1.0/tests/test_real_token_watermark.py +47 -0
  264. zall-0.1.0/tests/test_red_blue_invariants.py +164 -0
  265. zall-0.1.0/tests/test_refiner_invariants.py +338 -0
  266. zall-0.1.0/tests/test_reject_feedback_invariants.py +147 -0
  267. zall-0.1.0/tests/test_render_spinner_invariants.py +175 -0
  268. zall-0.1.0/tests/test_replay_invariants.py +213 -0
  269. zall-0.1.0/tests/test_retry_optimization.py +158 -0
  270. zall-0.1.0/tests/test_retry_step_invariants.py +206 -0
  271. zall-0.1.0/tests/test_retry_visibility_invariants.py +272 -0
  272. zall-0.1.0/tests/test_rules_file_invariants.py +243 -0
  273. zall-0.1.0/tests/test_sampling_params_invariants.py +126 -0
  274. zall-0.1.0/tests/test_sandbox_invariants.py +264 -0
  275. zall-0.1.0/tests/test_sandbox_verifier_invariants.py +81 -0
  276. zall-0.1.0/tests/test_science_cli_invariants.py +291 -0
  277. zall-0.1.0/tests/test_science_core_invariants.py +438 -0
  278. zall-0.1.0/tests/test_science_tool_invariants.py +389 -0
  279. zall-0.1.0/tests/test_scripted_chaos_invariants.py +224 -0
  280. zall-0.1.0/tests/test_select_menu.py +256 -0
  281. zall-0.1.0/tests/test_select_typeahead_guard.py +143 -0
  282. zall-0.1.0/tests/test_self_evolution_closed_loop.py +186 -0
  283. zall-0.1.0/tests/test_self_improve_invariants.py +200 -0
  284. zall-0.1.0/tests/test_sensitive_file_invariants.py +158 -0
  285. zall-0.1.0/tests/test_session_resume.py +171 -0
  286. zall-0.1.0/tests/test_shorten_invariants.py +136 -0
  287. zall-0.1.0/tests/test_skills.py +206 -0
  288. zall-0.1.0/tests/test_stream_error_invariants.py +363 -0
  289. zall-0.1.0/tests/test_stream_flush.py +177 -0
  290. zall-0.1.0/tests/test_streaming_invariants.py +262 -0
  291. zall-0.1.0/tests/test_streaming_render.py +460 -0
  292. zall-0.1.0/tests/test_subagent_authority_v014.py +215 -0
  293. zall-0.1.0/tests/test_subagent_mcp_inheritance.py +104 -0
  294. zall-0.1.0/tests/test_subprocess_encoding_invariants.py +90 -0
  295. zall-0.1.0/tests/test_subprocess_sandbox.py +257 -0
  296. zall-0.1.0/tests/test_syntax_theme_invariants.py +142 -0
  297. zall-0.1.0/tests/test_term_invariants.py +103 -0
  298. zall-0.1.0/tests/test_theme_invariants.py +170 -0
  299. zall-0.1.0/tests/test_thinking_display.py +291 -0
  300. zall-0.1.0/tests/test_timeline_completeness.py +250 -0
  301. zall-0.1.0/tests/test_token_clamp_invariants.py +116 -0
  302. zall-0.1.0/tests/test_tool_invariants.py +185 -0
  303. zall-0.1.0/tests/test_tool_version_invariants.py +156 -0
  304. zall-0.1.0/tests/test_toolset_presets.py +81 -0
  305. zall-0.1.0/tests/test_transient_retry.py +111 -0
  306. zall-0.1.0/tests/test_tui_app.py +533 -0
  307. zall-0.1.0/tests/test_tui_deadlock_guard.py +108 -0
  308. zall-0.1.0/tests/test_tui_interaction_kimi.py +385 -0
  309. zall-0.1.0/tests/test_tui_polish.py +420 -0
  310. zall-0.1.0/tests/test_tui_theme.py +51 -0
  311. zall-0.1.0/tests/test_universal_config.py +163 -0
  312. zall-0.1.0/tests/test_update_and_anomaly_invariants.py +193 -0
  313. zall-0.1.0/tests/test_verifiability_invariants.py +312 -0
  314. zall-0.1.0/tests/test_verify_chain_runtime.py +346 -0
  315. zall-0.1.0/tests/test_web_fetch_invariants.py +153 -0
  316. zall-0.1.0/tests/test_windows_encoding.py +324 -0
  317. zall-0.1.0/tests/test_write_file_invariants.py +81 -0
zall-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 zall contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
zall-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,470 @@
1
+ Metadata-Version: 2.4
2
+ Name: zall
3
+ Version: 0.1.0
4
+ Summary: A falsifiable, reproducible coding agent CLI โ€” model-agnostic, chain-hashed, replayable. Features LSP integration, CodeGraph code intelligence, sandbox isolation, plugin system, and MCP support.
5
+ Author: qinrayn (Yuhan Zhang)
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/qinrayn/zall
8
+ Project-URL: Repository, https://github.com/qinrayn/zall
9
+ Project-URL: Documentation, https://github.com/qinrayn/zall#readme
10
+ Project-URL: Changelog, https://github.com/qinrayn/zall/blob/master/CHANGELOG.md
11
+ Project-URL: Issues, https://github.com/qinrayn/zall/issues
12
+ Project-URL: CI, https://github.com/qinrayn/zall/actions
13
+ Keywords: coding-agent,cli,ai,llm,developer-tools,reproducible,code-assistant,agent,automation,lsp,code-intelligence,sandbox,mcp,plugin-system,chain-hash
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Software Development :: Build Tools
23
+ Classifier: Topic :: Software Development :: Debuggers
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
26
+ Requires-Python: >=3.10
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Requires-Dist: pydantic>=2.5
30
+ Requires-Dist: cryptography>=42
31
+ Requires-Dist: httpx>=0.24
32
+ Requires-Dist: rich>=13
33
+ Requires-Dist: prompt_toolkit>=3.0
34
+ Requires-Dist: tomli>=2.0; python_version < "3.11"
35
+ Requires-Dist: pyyaml>=6.0
36
+ Provides-Extra: dev
37
+ Requires-Dist: pytest>=7.4; extra == "dev"
38
+ Requires-Dist: mypy>=1.7; extra == "dev"
39
+ Requires-Dist: ruff>=0.1; extra == "dev"
40
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
41
+ Provides-Extra: bs4
42
+ Requires-Dist: beautifulsoup4>=4.0; extra == "bs4"
43
+ Provides-Extra: images
44
+ Requires-Dist: pillow>=10.0; extra == "images"
45
+ Provides-Extra: tui
46
+ Requires-Dist: textual>=8.0.0; extra == "tui"
47
+ Provides-Extra: all
48
+ Requires-Dist: zall[bs4,dev,images,tui]; extra == "all"
49
+ Dynamic: license-file
50
+
51
+ <picture>
52
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/zall-v0.1.0-blue?style=for-the-badge&logo=python&logoColor=white&labelColor=1a1a2e">
53
+ <img alt="zall" src="https://img.shields.io/badge/zall-v0.1.0-blue?style=for-the-badge&logo=python&logoColor=white&labelColor=1a1a2e">
54
+ </picture>
55
+
56
+ <p align="center">
57
+ <em>A falsifiable, reproducible coding agent CLI โ€” model-agnostic, engineering-grade</em>
58
+ </p>
59
+
60
+ <p align="center">
61
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
62
+ <a href="https://python.org"><img src="https://img.shields.io/badge/python-โ‰ฅ3.10-blue" alt="Python โ‰ฅ3.10"></a>
63
+ <a href="https://github.com/Qinrayn/zall/actions/workflows/ci.yml"><img src="https://github.com/Qinrayn/zall/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
64
+ <a href="https://pypi.org/project/zall/"><img src="https://img.shields.io/pypi/v/zall" alt="PyPI"></a>
65
+ <a href="https://pypi.org/project/zall/"><img src="https://img.shields.io/pypi/dm/zall" alt="Downloads"></a>
66
+ <a href="https://github.com/Qinrayn/zall/stargazers"><img src="https://img.shields.io/github/stars/Qinrayn/zall?style=flat" alt="GitHub Stars"></a>
67
+ <br>
68
+ <a href="#quick-start">Quick Start</a> โ€ข
69
+ <a href="#features">Features</a> โ€ข
70
+ <a href="#architecture">Architecture</a> โ€ข
71
+ <a href="#configuration">Configuration</a> โ€ข
72
+ <a href="#api-reference">API Reference</a> โ€ข
73
+ <a href="#contributing">Contributing</a>
74
+ </p>
75
+
76
+ ---
77
+
78
+ ## ๐Ÿ“ฆ Installation
79
+
80
+ ```bash
81
+ pip install zall
82
+ ```
83
+
84
+ Requires Python 3.10+. For optional features:
85
+
86
+ ```bash
87
+ pip install "zall[tui]" # inline/full-screen Textual UI (recommended)
88
+ pip install "zall[bs4]" # web_fetch with BeautifulSoup HTML parsing
89
+ pip install "zall[images]" # read_image with Pillow
90
+ pip install "zall[dev]" # development tools (pytest, mypy, ruff)
91
+ pip install "zall[all]" # everything
92
+ ```
93
+
94
+ Works on Windows, macOS and Linux (pure-Python wheel, `py3-none-any`).
95
+
96
+ ## ๐Ÿš€ Quick Start
97
+
98
+ ### 1. Set your API key
99
+
100
+ ```bash
101
+ # OpenAI-compatible API
102
+ export ZALL_API_KEY="sk-..."
103
+ export ZALL_MODEL="gpt-4o"
104
+
105
+ # Or use Anthropic, Gemini, Ollama, or any OpenAI-compatible provider
106
+ export ZALL_PROVIDER="anthropic"
107
+ export ANTHROPIC_API_KEY="sk-ant-..."
108
+ ```
109
+
110
+ ### 2. Run a task
111
+
112
+ ```bash
113
+ # One-shot: fix a bug
114
+ zall "refactor the auth module to use async"
115
+
116
+ # One-shot with verbose output
117
+ zall "write a snake game in Python" --verbose
118
+
119
+ # Interactive REPL
120
+ zall
121
+ ```
122
+
123
+ ### 3. Interactive REPL
124
+
125
+ ```
126
+ > /help # Show all commands
127
+ > /model gpt-4o # Switch model
128
+ > /plan on # Read-only mode
129
+ > /lsp status # Live code diagnostics
130
+ > /codegraph search MyClass # Find symbols
131
+ > /sandbox process # Isolated execution
132
+ > /eval # Evaluate sessions
133
+ > /replay <id> # Replay a session
134
+ > /cost # Token usage
135
+ > /compact # Compress context
136
+ > /doctor # Diagnose setup
137
+ ```
138
+
139
+ ## โœจ Features
140
+
141
+ ### ๐Ÿง  Code Intelligence
142
+
143
+ | Feature | Description |
144
+ |---------|-------------|
145
+ | **LSP Integration** | Live diagnostics, go-to-definition, hover info, completions. Supports pyright, typescript-language-server, rust-analyzer, gopls, clangd |
146
+ | **CodeGraph** | Multi-language symbol indexer for Python, JS, TS, Rust, Go, Java, C++, Ruby, PHP, Swift |
147
+ | **`code_understanding`** | Combine search + outline + read in one agent call |
148
+
149
+ ### ๐Ÿ›ก๏ธ Safety & Reproducibility
150
+
151
+ | Feature | Description |
152
+ |---------|-------------|
153
+ | **PR-0 Hallucination Detection** | Architectural detection โ€” `stop_reason=STOP` with no tool calls gets flagged |
154
+ | **Chain-hash Timeline** | Every session is cryptographically chained and replayable |
155
+ | **ConfirmGate** | Three-layer safety: rule engine + gate + override audit |
156
+ | **Sensitive-file Protection** | `.env`, SSH private keys, cloud credentials are never read into model context โ€” enforced in `read_file`, `grep` (both engines) and `@file` injection |
157
+ | **Type-ahead Guard** | Keystrokes buffered while the model runs can never auto-approve a confirmation menu (grace window in TUI, stdin flush in REPL) |
158
+ | **Sandbox** | Process isolation with worktree/process/bwrap/container modes |
159
+ | **ToolKind Classification** | 19 semantic tool kinds with read/write detection |
160
+
161
+ ### ๐Ÿ”Œ Extensibility
162
+
163
+ | Feature | Description |
164
+ |---------|-------------|
165
+ | **Plugin System** | Manifest-based plugins with git install, Python entry points |
166
+ | **21 Agent Tools** | read/write/edit/bash/grep/glob/list_dir/search/web_fetch/spawn_subagent + LSP + CodeGraph |
167
+ | **MCP Support** | Connect any MCP server (Model Context Protocol) |
168
+ | **AgentDefinition** | YAML-based agent profiles with toolset presets |
169
+ | **5 Toolset Presets** | `zall`, `explore`, `plan`, `codex`, `opencode` |
170
+
171
+ ### ๐ŸŽฏ Agent Architecture
172
+
173
+ | Feature | Description |
174
+ |---------|-------------|
175
+ | **Six-Dimension Ontology** | Every `AgentLoop` implements all six dimensions โ€” Identity / Commitment / Perception / Authority / Accountability / Verifiability โ€” enforced by the I-0/I-7 completeness invariants (`tests/test_ontology_invariants.py`) |
176
+ | **ChatState** | Actor-based message management with events, usage tracking, compaction |
177
+ | **AgentBuilder** | Fluent builder for AgentLoop construction |
178
+ | **Subagent & Coordinator** | Typed sub-agents (general-purpose, explore, plan) with capability isolation; thread-parallel spawning + `Coordinator` primitive for dispatch-and-aggregate multi-agent orchestration |
179
+ | **Self-Evolution** | Pi-style extension/lifecycle hooks for auto-learning, usage tracking, pattern discovery; `/suggest` and `/learn` commands for insight and application; high-confidence K-value auto-adjustment; cross-session learned memory injection |
180
+
181
+ ## ๐ŸŽฌ Demo
182
+
183
+ ### One-shot: Create a Snake game
184
+
185
+ ```bash
186
+ zall "Create a classic Snake game in Python with pygame"
187
+ ```
188
+
189
+ zall writes the code, tests it, and fixes any issues automatically:
190
+
191
+ ```
192
+ โฏ zall "Create a classic Snake game in Python with pygame"
193
+ โ— read_file(file_path="snake.py")
194
+ โ”” File does not exist yet โ€” will create new
195
+ โ— write_file(file_path="snake.py", content="...")
196
+ โ”” 142 lines written
197
+ โ— bash(command="python -c 'import pygame; print(pygame.version.ver)'")
198
+ โ”” pygame 2.6.1
199
+ โ— bash(command="python snake.py")
200
+ โ”” Process exited with code 0 (game window opened successfully)
201
+ โ— bash(command="pytest test_snake.py -q")
202
+ โ”” 5 passed in 0.32s
203
+ โœ“ Task completed (8 steps, 2 model calls)
204
+ ```
205
+
206
+ ### Interactive Bug Fixing
207
+
208
+ ```bash
209
+ zall # Start interactive REPL
210
+ ```
211
+
212
+ ```
213
+ > /model gpt-4o
214
+ > /lsp status
215
+ โœ“ pyright: active (2 errors, 3 warnings)
216
+ > fix the off-by-one error in binary_search.py
217
+ โ— read_file(src/binary_search.py)
218
+ โ— edit_file(old_string="...", new_string="...")
219
+ โ— bash(command="pytest tests/test_search.py -x -q")
220
+ โ”” 12 passed in 0.45s
221
+ โœ“ Bug fixed in 3 steps
222
+ ```
223
+
224
+ ### @file Reference (Claude Code-style)
225
+
226
+ ```bash
227
+ zall "Refactor the auth module @src/auth.py to use async/await"
228
+ ```
229
+
230
+ Files referenced with `@` are automatically injected into the model context โ€” no need for the agent to `read_file` first.
231
+
232
+ ### Multi-step Research Task
233
+
234
+ ```bash
235
+ zall --yes -j "Study the Collatz stopping time for numbers up to 100000"
236
+ ```
237
+
238
+ The agent runs a full research pipeline: write code โ†’ execute โ†’ analyze โ†’ report โ†’ detect and fix its own errors:
239
+
240
+ ```
241
+ โœ“ Collatz study complete: max stopping time=350 (n=77031),
242
+ mean=107.54 (corrected after agent self-detected its initial
243
+ mean=114.98 included out-of-range memo keys)
244
+ ```
245
+
246
+ > **PR-0 Hallucination Detection**: The agent independently caught its own mistake โ€” the mean calculation included intermediate memo keys outside the study range. It diagnosed the root cause, fixed the code, and re-ran. This is not a prompt-based guard; it's architectural (IPR-0).
247
+
248
+ ## ๐Ÿ—๏ธ Architecture
249
+
250
+ ```
251
+ zall/
252
+ โ”œโ”€โ”€ core/ # Primitives: model, agent, chat_state, gate, goal, safety, tool
253
+ โ”‚ โ”œโ”€โ”€ loop.py # AgentLoop orchestrator (synchronous main controller)
254
+ โ”‚ โ”œโ”€โ”€ loop_config.py # AgentConfig โ€” unified configuration dataclass
255
+ โ”‚ โ”œโ”€โ”€ loop_events.py # LoopEvent, RunEgress, StepResult
256
+ โ”‚ โ”œโ”€โ”€ loop_errors.py # ToolNotFound, AgentRunaway, ContextLimitExceeded
257
+ โ”‚ โ”œโ”€โ”€ tool_kind.py # ToolKind taxonomy โ€” 19 semantic kinds
258
+ โ”‚ โ”œโ”€โ”€ policies.py # CompactionPolicy, ReminderPolicy
259
+ โ”‚ โ”œโ”€โ”€ agent.py # AgentDefinition + ToolsetPreset + CapabilityMode
260
+ โ”‚ โ”œโ”€โ”€ chat_state.py # Actor-based message management
261
+ โ”‚ โ”œโ”€โ”€ safety.py # Three-state context_judge (whitelist/greylist/blacklist)
262
+ โ”‚ โ”œโ”€โ”€ gate.py # ConfirmGate state machine (8-state)
263
+ โ”‚ โ””โ”€โ”€ verifiability.py # RunRecorder (chain-hash) + TrustAnchor (ed25519)
264
+ โ”œโ”€โ”€ cli/ # Rich REPL, 25+ slash commands, replay, session management
265
+ โ”œโ”€โ”€ tools/ # 21 tools: read/write/edit/bash/grep/lsp/codegraph/โ€ฆ
266
+ โ”œโ”€โ”€ adapters/ # OpenAI-compat, Anthropic, Gemini, Ollama
267
+ โ”œโ”€โ”€ codegraph/ # Multi-language symbol indexer
268
+ โ”œโ”€โ”€ lsp/ # LSP client (pyright, rust-analyzer, gopls, clangd)
269
+ โ”œโ”€โ”€ sandbox/ # Process isolation (worktree/process/bwrap/container)
270
+ โ”œโ”€โ”€ plugin/ # Plugin system with marketplace
271
+ โ”œโ”€โ”€ mcp/ # MCP client for Model Context Protocol
272
+ โ”œโ”€โ”€ safety/ # Rule loader and config management
273
+ โ”œโ”€โ”€ eval/ # 5-dimensional R-Metric evaluation
274
+ โ””โ”€โ”€ skills/ # Skill loader and executor
275
+ ```
276
+
277
+ ### Key Design Principles
278
+
279
+ 1. **Model Agnostic (IPR-3)**: Core never imports model SDKs. `ModelAdapter` is a Protocol โ€” adapters are pluggable.
280
+ 2. **Immutable First**: All Pydantic models are `frozen=True`. `AgentConfig` is a frozen dataclass.
281
+ 3. **Declarative Safety**: `context_judge` uses rule matching (fnmatch glob) โ€” no model calls, no arbitrary code.
282
+ 4. **Dual Safety Nets**: GitProtect (git stash) + CheckpointManager (filesystem snapshots).
283
+ 5. **Full Audit Trail**: `RunRecorder` + chain-hash SHA-256 + `TrustAnchor` ed25519 signing.
284
+ 6. **Self-Falsifying (PR-0)**: Architectural hallucination detection, not prompt-based.
285
+
286
+ ## โš™๏ธ Configuration
287
+
288
+ ### config.toml
289
+
290
+ Create `~/.zall/config.toml`:
291
+
292
+ ```toml
293
+ [general]
294
+ default_model = "gpt-4o"
295
+ timeout = 300 # seconds (default: 300, was 120 in v0.4.2)
296
+
297
+ [openai]
298
+ api_key = "sk-..."
299
+ api_base = "https://api.openai.com/v1"
300
+
301
+ [anthropic]
302
+ api_key = "sk-ant-..."
303
+
304
+ [gemini]
305
+ api_key = "..."
306
+
307
+ [ollama]
308
+ api_base = "http://localhost:11434"
309
+ default_model = "llama3"
310
+ ```
311
+
312
+ ### Environment Variables
313
+
314
+ | Variable | Description |
315
+ |----------|-------------|
316
+ | `ZALL_API_KEY` | API key (highest priority) |
317
+ | `ZALL_MODEL` | Model name override |
318
+ | `ZALL_PROVIDER` | Provider: `openai`, `anthropic`, `gemini`, `ollama` |
319
+ | `ZALL_API_BASE` | Custom API base URL |
320
+ | `ZALL_TIMEOUT` | Request timeout in seconds |
321
+ | `ZALL_VERBOSE` | Enable verbose output |
322
+ | `ZALL_PLAN_MODE` | Enable read-only plan mode |
323
+
324
+ ### Agent Definition Files
325
+
326
+ Place `.md` files in `.zall/agents/` with YAML frontmatter:
327
+
328
+ ```yaml
329
+ ---
330
+ name: my-agent
331
+ description: Custom agent for Python development
332
+ toolset: zall
333
+ permission_mode: auto
334
+ model: gpt-4o
335
+ ---
336
+ Your custom system prompt here...
337
+ ```
338
+
339
+ ## ๐Ÿ“– API Reference
340
+
341
+ ### Python API
342
+
343
+ ```python
344
+ from zall.core.builder import AgentBuilder
345
+ from zall.core.loop_config import AgentConfig
346
+ from zall.core.goal import GoalType
347
+ from zall.cli.orchestrator import run
348
+
349
+ # One-shot execution
350
+ egress = run(
351
+ "refactor the auth module",
352
+ model="gpt-4o",
353
+ judge_mode="none",
354
+ stream=True,
355
+ )
356
+
357
+ # Programmatic agent loop
358
+ loop = (
359
+ AgentBuilder()
360
+ .with_model(adapter)
361
+ .with_tools(tools)
362
+ .with_goal(goal)
363
+ .with_config(AgentConfig(max_steps=30, stream=True))
364
+ .build()
365
+ )
366
+ egress = loop.run(system_prompt="You are a coding assistant...")
367
+ ```
368
+
369
+ ### CLI Reference
370
+
371
+ ```
372
+ zall [task] [options]
373
+
374
+ Options:
375
+ --model TEXT Model name (overrides config)
376
+ --yes, -y Auto-accept greylist actions
377
+ --strict, -S Strict mode: enable full confirm/downgrade gates
378
+ --judge MODE Judge mode: none (default), system
379
+ --json Output events as NDJSON
380
+ --no-stream Disable token streaming
381
+ --max-steps N Maximum steps before termination
382
+ --init Initialize .zall/ config in current directory
383
+ --verbose Show full tool output
384
+ --version, -V Show version
385
+
386
+ Commands in REPL:
387
+ /help, /model, /plan, /lsp, /codegraph, /sandbox,
388
+ /chatstate, /plugin, /add, /drop, /diff, /search,
389
+ /web, /git, /commit, /sessions, /resume, /replay,
390
+ /eval, /cost, /compact, /undo, /retry, /doctor,
391
+ /checkpoint, /clear, /suggest, /learn
392
+ ```
393
+
394
+ ## ๐Ÿ†š Comparison
395
+
396
+ ### vs Claude Code / Copilot / Cursor
397
+
398
+ | Feature | zall | Claude Code | GitHub Copilot | Cursor |
399
+ |---------|------|-------------|----------------|--------|
400
+ | Hallucination detection | **Architectural** (PR-0) | Prompt-based | None | None |
401
+ | Reproducibility | Chain-hash + Replay | Log files only | None | None |
402
+ | Safety | 3-layer gate + audit | Implicit | None | Implicit |
403
+ | Model independence | 4 adapters (Protocol) | Anthropic-only | OpenAI/Gemini | OpenAI/Anthropic |
404
+ | Code intelligence | LSP + CodeGraph | Limited | Built-in | Built-in |
405
+ | Sandbox isolation | Process/Worktree modes | None | None | None |
406
+ | Multi-agent orchestration | Parallel subagents + Coordinator | Task/subagent | None | None |
407
+ | Plugin system | Manifest-based | None | Extensions | Extensions |
408
+ | Audit trail | Chain-hash + ed25519 | None | None | None |
409
+ | Open source | โœ… MIT | โŒ | โŒ | โŒ |
410
+ | Self-hostable | โœ… | โŒ | โŒ | โŒ |
411
+ | Local models | โœ… (Ollama) | โŒ | โŒ | โŒ |
412
+
413
+ ## ๐Ÿงช Development
414
+
415
+ ```bash
416
+ # Clone and install
417
+ git clone https://github.com/Qinrayn/zall.git
418
+ cd zall
419
+ pip install -e ".[dev,bs4,images]"
420
+
421
+ # Run tests
422
+ python -m pytest tests/ -q
423
+
424
+ # Type check
425
+ mypy src/zall/
426
+
427
+ # Lint
428
+ ruff check src/
429
+
430
+ # Build
431
+ python -m build
432
+ ```
433
+
434
+ ### Test Structure
435
+
436
+ The project follows **IPR-0**: every invariant has a counterexample test. Tests are organized by component:
437
+
438
+ ```
439
+ tests/
440
+ โ”œโ”€โ”€ test_loop_invariants.py # AgentLoop core invariants
441
+ โ”œโ”€โ”€ test_safety_invariants.py # context_judge rules
442
+ โ”œโ”€โ”€ test_gate_invariants.py # ConfirmGate state machine
443
+ โ”œโ”€โ”€ test_verifiability_invariants.py # Chain-hash timeline
444
+ โ”œโ”€โ”€ test_read_file_invariants.py # ReadFileTool invariants
445
+ โ”œโ”€โ”€ test_bash_invariants.py # BashTool invariants
446
+ โ”œโ”€โ”€ test_chat_state_invariants.py # ChatState actor
447
+ โ”œโ”€โ”€ test_lsp_invariants.py # LSP integration
448
+ โ”œโ”€โ”€ test_sandbox_invariants.py # Sandbox isolation
449
+ โ””โ”€โ”€ ...
450
+ ```
451
+
452
+ ## ๐Ÿค Contributing
453
+
454
+ Contributions are welcome! See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for guidelines.
455
+
456
+ - **Report bugs**: [github.com/Qinrayn/zall/issues](https://github.com/Qinrayn/zall/issues)
457
+ - **Feature requests**: Open an issue with the `enhancement` label
458
+ - **Pull requests**: PRs are reviewed within 48 hours
459
+ - **Security issues**: See [SECURITY.md](SECURITY.md)
460
+
461
+ ## ๐Ÿ“„ License
462
+
463
+ [MIT](LICENSE) ยฉ 2026 qinrayn (Yuhan Zhang)
464
+
465
+ ## ๐Ÿ™ Acknowledgements
466
+
467
+ - **xAI Grok Build** โ€” Architecture inspiration for agent definition, tool taxonomy, and modular design
468
+ - **Claude Code** โ€” Interaction design patterns
469
+ - **OpenAI Function Calling** โ€” API compatibility
470
+ - **MCP Specification** โ€” Model Context Protocol integration