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.
- zall-0.1.0/LICENSE +21 -0
- zall-0.1.0/PKG-INFO +470 -0
- zall-0.1.0/README.md +420 -0
- zall-0.1.0/pyproject.toml +148 -0
- zall-0.1.0/setup.cfg +4 -0
- zall-0.1.0/src/zall/__init__.py +8 -0
- zall-0.1.0/src/zall/__main__.py +3 -0
- zall-0.1.0/src/zall/_util/__init__.py +18 -0
- zall-0.1.0/src/zall/_util/backoff.py +46 -0
- zall-0.1.0/src/zall/_util/file.py +118 -0
- zall-0.1.0/src/zall/_util/file_state.py +123 -0
- zall-0.1.0/src/zall/_util/hash_utils.py +110 -0
- zall-0.1.0/src/zall/_util/jsonl.py +85 -0
- zall-0.1.0/src/zall/_util/logging.py +130 -0
- zall-0.1.0/src/zall/_util/model_registry.py +342 -0
- zall-0.1.0/src/zall/_util/path.py +73 -0
- zall-0.1.0/src/zall/_util/string.py +98 -0
- zall-0.1.0/src/zall/_util/term.py +150 -0
- zall-0.1.0/src/zall/_util/tokens.py +60 -0
- zall-0.1.0/src/zall/_util/toml.py +231 -0
- zall-0.1.0/src/zall/_util/win32.py +91 -0
- zall-0.1.0/src/zall/adapters/__init__.py +26 -0
- zall-0.1.0/src/zall/adapters/anthropic.py +460 -0
- zall-0.1.0/src/zall/adapters/base.py +432 -0
- zall-0.1.0/src/zall/adapters/chaos.py +128 -0
- zall-0.1.0/src/zall/adapters/gemini.py +363 -0
- zall-0.1.0/src/zall/adapters/ollama.py +315 -0
- zall-0.1.0/src/zall/adapters/openai_compat.py +581 -0
- zall-0.1.0/src/zall/adapters/scripted.py +165 -0
- zall-0.1.0/src/zall/cli/__init__.py +8 -0
- zall-0.1.0/src/zall/cli/app.py +211 -0
- zall-0.1.0/src/zall/cli/commands/__init__.py +197 -0
- zall-0.1.0/src/zall/cli/commands/_common.py +1240 -0
- zall-0.1.0/src/zall/cli/commands/config.py +345 -0
- zall-0.1.0/src/zall/cli/commands/eval.py +219 -0
- zall-0.1.0/src/zall/cli/commands/files.py +251 -0
- zall-0.1.0/src/zall/cli/commands/git.py +211 -0
- zall-0.1.0/src/zall/cli/commands/model.py +944 -0
- zall-0.1.0/src/zall/cli/commands/reload.py +97 -0
- zall-0.1.0/src/zall/cli/commands/science.py +358 -0
- zall-0.1.0/src/zall/cli/commands/session.py +465 -0
- zall-0.1.0/src/zall/cli/commands/suggest.py +512 -0
- zall-0.1.0/src/zall/cli/commands/system.py +772 -0
- zall-0.1.0/src/zall/cli/commands/v040.py +427 -0
- zall-0.1.0/src/zall/cli/config.py +508 -0
- zall-0.1.0/src/zall/cli/config_layers.py +290 -0
- zall-0.1.0/src/zall/cli/diff_render.py +428 -0
- zall-0.1.0/src/zall/cli/environment.py +782 -0
- zall-0.1.0/src/zall/cli/file_complete.py +236 -0
- zall-0.1.0/src/zall/cli/init_wizard.py +284 -0
- zall-0.1.0/src/zall/cli/judge.py +64 -0
- zall-0.1.0/src/zall/cli/orchestrator.py +674 -0
- zall-0.1.0/src/zall/cli/paste_fold.py +112 -0
- zall-0.1.0/src/zall/cli/prompt.py +366 -0
- zall-0.1.0/src/zall/cli/render.py +1747 -0
- zall-0.1.0/src/zall/cli/repl_ui.py +595 -0
- zall-0.1.0/src/zall/cli/replay.py +318 -0
- zall-0.1.0/src/zall/cli/responder.py +529 -0
- zall-0.1.0/src/zall/cli/select.py +80 -0
- zall-0.1.0/src/zall/cli/session.py +755 -0
- zall-0.1.0/src/zall/cli/syntax_theme.py +102 -0
- zall-0.1.0/src/zall/cli/theme.py +318 -0
- zall-0.1.0/src/zall/cli/tui/__init__.py +36 -0
- zall-0.1.0/src/zall/cli/tui/app.py +1590 -0
- zall-0.1.0/src/zall/cli/tui/tui_responder.py +93 -0
- zall-0.1.0/src/zall/cli/tui/widgets.py +1358 -0
- zall-0.1.0/src/zall/cli/update.py +299 -0
- zall-0.1.0/src/zall/codegraph/__init__.py +919 -0
- zall-0.1.0/src/zall/core/__init__.py +178 -0
- zall-0.1.0/src/zall/core/accountability.py +317 -0
- zall-0.1.0/src/zall/core/action.py +66 -0
- zall-0.1.0/src/zall/core/agent.py +563 -0
- zall-0.1.0/src/zall/core/builder.py +445 -0
- zall-0.1.0/src/zall/core/chat_state.py +687 -0
- zall-0.1.0/src/zall/core/checkpoint.py +432 -0
- zall-0.1.0/src/zall/core/compactor.py +478 -0
- zall-0.1.0/src/zall/core/context.py +115 -0
- zall-0.1.0/src/zall/core/context_manager.py +256 -0
- zall-0.1.0/src/zall/core/coordinator.py +176 -0
- zall-0.1.0/src/zall/core/eval/__init__.py +362 -0
- zall-0.1.0/src/zall/core/events.py +159 -0
- zall-0.1.0/src/zall/core/evidence.py +69 -0
- zall-0.1.0/src/zall/core/executor.py +463 -0
- zall-0.1.0/src/zall/core/experience_store.py +335 -0
- zall-0.1.0/src/zall/core/experiment.py +99 -0
- zall-0.1.0/src/zall/core/extension.py +248 -0
- zall-0.1.0/src/zall/core/gate.py +349 -0
- zall-0.1.0/src/zall/core/goal.py +419 -0
- zall-0.1.0/src/zall/core/hallucination.py +48 -0
- zall-0.1.0/src/zall/core/hypothesis.py +203 -0
- zall-0.1.0/src/zall/core/judge/__init__.py +460 -0
- zall-0.1.0/src/zall/core/lifecycle.py +262 -0
- zall-0.1.0/src/zall/core/loop.py +1809 -0
- zall-0.1.0/src/zall/core/loop_checkpoint.py +152 -0
- zall-0.1.0/src/zall/core/loop_config.py +99 -0
- zall-0.1.0/src/zall/core/loop_errors.py +8 -0
- zall-0.1.0/src/zall/core/loop_events.py +45 -0
- zall-0.1.0/src/zall/core/loop_model_call.py +217 -0
- zall-0.1.0/src/zall/core/loop_perception.py +126 -0
- zall-0.1.0/src/zall/core/memory.py +306 -0
- zall-0.1.0/src/zall/core/model.py +240 -0
- zall-0.1.0/src/zall/core/open_ended.py +180 -0
- zall-0.1.0/src/zall/core/perception/__init__.py +47 -0
- zall-0.1.0/src/zall/core/perception/coding_sensors.py +463 -0
- zall-0.1.0/src/zall/core/perception/coding_world_model.py +377 -0
- zall-0.1.0/src/zall/core/perception/engine.py +300 -0
- zall-0.1.0/src/zall/core/perception/sensor.py +275 -0
- zall-0.1.0/src/zall/core/perception/world_model.py +197 -0
- zall-0.1.0/src/zall/core/plan_mode.py +165 -0
- zall-0.1.0/src/zall/core/plugin_loader.py +351 -0
- zall-0.1.0/src/zall/core/policies.py +102 -0
- zall-0.1.0/src/zall/core/process_anchor/__init__.py +30 -0
- zall-0.1.0/src/zall/core/process_anchor/client.py +268 -0
- zall-0.1.0/src/zall/core/process_anchor/protocol.py +124 -0
- zall-0.1.0/src/zall/core/process_anchor/server.py +340 -0
- zall-0.1.0/src/zall/core/prompt_template.py +182 -0
- zall-0.1.0/src/zall/core/proof_gate.py +464 -0
- zall-0.1.0/src/zall/core/provenance.py +115 -0
- zall-0.1.0/src/zall/core/red_blue.py +236 -0
- zall-0.1.0/src/zall/core/refiner.py +320 -0
- zall-0.1.0/src/zall/core/safety.py +346 -0
- zall-0.1.0/src/zall/core/sandbox.py +253 -0
- zall-0.1.0/src/zall/core/sandbox_verifier.py +109 -0
- zall-0.1.0/src/zall/core/self_improve.py +244 -0
- zall-0.1.0/src/zall/core/tool.py +443 -0
- zall-0.1.0/src/zall/core/tool_kind.py +98 -0
- zall-0.1.0/src/zall/core/toolset.py +242 -0
- zall-0.1.0/src/zall/core/verifiability.py +579 -0
- zall-0.1.0/src/zall/eval/__init__.py +15 -0
- zall-0.1.0/src/zall/eval/metrics.py +348 -0
- zall-0.1.0/src/zall/extensions/__init__.py +1 -0
- zall-0.1.0/src/zall/extensions/auto_learn.py +733 -0
- zall-0.1.0/src/zall/extensions/science/__init__.py +14 -0
- zall-0.1.0/src/zall/extensions/science/store.py +197 -0
- zall-0.1.0/src/zall/extensions/usage_tracker.py +91 -0
- zall-0.1.0/src/zall/lsp/__init__.py +847 -0
- zall-0.1.0/src/zall/mcp/__init__.py +22 -0
- zall-0.1.0/src/zall/mcp/client.py +270 -0
- zall-0.1.0/src/zall/mcp/config.py +191 -0
- zall-0.1.0/src/zall/mcp/tool.py +129 -0
- zall-0.1.0/src/zall/plugin/__init__.py +583 -0
- zall-0.1.0/src/zall/safety/__init__.py +10 -0
- zall-0.1.0/src/zall/safety/config.py +231 -0
- zall-0.1.0/src/zall/safety/rules_file.py +578 -0
- zall-0.1.0/src/zall/safety/sensitive.py +90 -0
- zall-0.1.0/src/zall/sandbox/__init__.py +630 -0
- zall-0.1.0/src/zall/skills/__init__.py +11 -0
- zall-0.1.0/src/zall/skills/loader.py +202 -0
- zall-0.1.0/src/zall/tools/__init__.py +11 -0
- zall-0.1.0/src/zall/tools/_bash_semantics.py +256 -0
- zall-0.1.0/src/zall/tools/_diff.py +24 -0
- zall-0.1.0/src/zall/tools/apply_patch.py +298 -0
- zall-0.1.0/src/zall/tools/bash.py +761 -0
- zall-0.1.0/src/zall/tools/batch_edit.py +331 -0
- zall-0.1.0/src/zall/tools/code_understanding.py +258 -0
- zall-0.1.0/src/zall/tools/codegraph.py +350 -0
- zall-0.1.0/src/zall/tools/edit_file.py +205 -0
- zall-0.1.0/src/zall/tools/git_protect.py +189 -0
- zall-0.1.0/src/zall/tools/glob.py +138 -0
- zall-0.1.0/src/zall/tools/grep.py +346 -0
- zall-0.1.0/src/zall/tools/list_dir.py +156 -0
- zall-0.1.0/src/zall/tools/lsp_diagnostics.py +329 -0
- zall-0.1.0/src/zall/tools/project_analysis.py +221 -0
- zall-0.1.0/src/zall/tools/pty_executor.py +253 -0
- zall-0.1.0/src/zall/tools/read_file.py +278 -0
- zall-0.1.0/src/zall/tools/read_image.py +316 -0
- zall-0.1.0/src/zall/tools/science.py +506 -0
- zall-0.1.0/src/zall/tools/search.py +474 -0
- zall-0.1.0/src/zall/tools/spawn_subagent.py +731 -0
- zall-0.1.0/src/zall/tools/todo.py +142 -0
- zall-0.1.0/src/zall/tools/web_fetch.py +502 -0
- zall-0.1.0/src/zall/tools/write_file.py +150 -0
- zall-0.1.0/src/zall.egg-info/PKG-INFO +470 -0
- zall-0.1.0/src/zall.egg-info/SOURCES.txt +315 -0
- zall-0.1.0/src/zall.egg-info/dependency_links.txt +1 -0
- zall-0.1.0/src/zall.egg-info/entry_points.txt +2 -0
- zall-0.1.0/src/zall.egg-info/requires.txt +27 -0
- zall-0.1.0/src/zall.egg-info/top_level.txt +1 -0
- zall-0.1.0/tests/test_accountability_multi_judge.py +520 -0
- zall-0.1.0/tests/test_action_invariants.py +57 -0
- zall-0.1.0/tests/test_adapter_mock_invariants.py +491 -0
- zall-0.1.0/tests/test_agent_builder.py +275 -0
- zall-0.1.0/tests/test_agent_definition.py +274 -0
- zall-0.1.0/tests/test_auto_compact_v018.py +368 -0
- zall-0.1.0/tests/test_backoff_invariants.py +86 -0
- zall-0.1.0/tests/test_bash_invariants.py +305 -0
- zall-0.1.0/tests/test_bash_pty.py +132 -0
- zall-0.1.0/tests/test_batch_edit_invariants.py +190 -0
- zall-0.1.0/tests/test_bugfix_regressions.py +322 -0
- zall-0.1.0/tests/test_chat_state_invariants.py +355 -0
- zall-0.1.0/tests/test_checkpoint_invariants.py +233 -0
- zall-0.1.0/tests/test_cli_app.py +853 -0
- zall-0.1.0/tests/test_cli_interaction_v012.py +339 -0
- zall-0.1.0/tests/test_cli_interaction_v013.py +204 -0
- zall-0.1.0/tests/test_cli_judge.py +129 -0
- zall-0.1.0/tests/test_cli_missing_commands.py +241 -0
- zall-0.1.0/tests/test_cli_new_commands.py +494 -0
- zall-0.1.0/tests/test_cli_render.py +419 -0
- zall-0.1.0/tests/test_cli_responder.py +148 -0
- zall-0.1.0/tests/test_codegraph_invariants.py +495 -0
- zall-0.1.0/tests/test_command_palette.py +211 -0
- zall-0.1.0/tests/test_compactor_invariants.py +684 -0
- zall-0.1.0/tests/test_config_command_invariants.py +147 -0
- zall-0.1.0/tests/test_config_layers.py +339 -0
- zall-0.1.0/tests/test_config_selfheal.py +85 -0
- zall-0.1.0/tests/test_confirm_gate_invariants.py +265 -0
- zall-0.1.0/tests/test_confirm_select.py +265 -0
- zall-0.1.0/tests/test_context_invariants.py +156 -0
- zall-0.1.0/tests/test_context_judge_invariants.py +296 -0
- zall-0.1.0/tests/test_coordinator_invariants.py +202 -0
- zall-0.1.0/tests/test_covering_invariants.py +81 -0
- zall-0.1.0/tests/test_custom_provider_invariants.py +195 -0
- zall-0.1.0/tests/test_diff_render_invariants.py +239 -0
- zall-0.1.0/tests/test_edit_bash_invariants.py +105 -0
- zall-0.1.0/tests/test_edit_file_invariants.py +235 -0
- zall-0.1.0/tests/test_eval_invariants.py +150 -0
- zall-0.1.0/tests/test_experience_store_invariants.py +133 -0
- zall-0.1.0/tests/test_experience_tier_gate_invariants.py +95 -0
- zall-0.1.0/tests/test_file_complete.py +178 -0
- zall-0.1.0/tests/test_git_rules_invariants.py +79 -0
- zall-0.1.0/tests/test_glob_invariants.py +76 -0
- zall-0.1.0/tests/test_goal_invariants.py +597 -0
- zall-0.1.0/tests/test_grep_invariants.py +151 -0
- zall-0.1.0/tests/test_hash_utils_invariants.py +127 -0
- zall-0.1.0/tests/test_hypothesis_invariants.py +313 -0
- zall-0.1.0/tests/test_integration.py +250 -0
- zall-0.1.0/tests/test_integration_v040.py +600 -0
- zall-0.1.0/tests/test_interaction_debt_e4.py +509 -0
- zall-0.1.0/tests/test_interaction_polish.py +394 -0
- zall-0.1.0/tests/test_interaction_v020.py +405 -0
- zall-0.1.0/tests/test_jsonl_header_invariants.py +131 -0
- zall-0.1.0/tests/test_judge_invariants.py +342 -0
- zall-0.1.0/tests/test_kimi_visual.py +381 -0
- zall-0.1.0/tests/test_lab_command_invariants.py +163 -0
- zall-0.1.0/tests/test_lifecycle_hooks.py +649 -0
- zall-0.1.0/tests/test_list_dir_invariants.py +92 -0
- zall-0.1.0/tests/test_live_region.py +207 -0
- zall-0.1.0/tests/test_loop_invariants.py +572 -0
- zall-0.1.0/tests/test_loop_observer_invariants.py +401 -0
- zall-0.1.0/tests/test_loop_step_invariants.py +336 -0
- zall-0.1.0/tests/test_loop_stream_invariants.py +293 -0
- zall-0.1.0/tests/test_lsp_invariants.py +244 -0
- zall-0.1.0/tests/test_mcp_registration_v017.py +290 -0
- zall-0.1.0/tests/test_model_invariants.py +217 -0
- zall-0.1.0/tests/test_ontology_invariants.py +247 -0
- zall-0.1.0/tests/test_open_ended_invariants.py +93 -0
- zall-0.1.0/tests/test_openai_compat_invariants.py +399 -0
- zall-0.1.0/tests/test_paste_fold_invariants.py +122 -0
- zall-0.1.0/tests/test_perception_consumed_by_loop.py +445 -0
- zall-0.1.0/tests/test_perception_invariants.py +687 -0
- zall-0.1.0/tests/test_phase1_invariants.py +403 -0
- zall-0.1.0/tests/test_platform_compat.py +555 -0
- zall-0.1.0/tests/test_plugin_discovery.py +334 -0
- zall-0.1.0/tests/test_plugin_safety.py +462 -0
- zall-0.1.0/tests/test_plugin_system.py +290 -0
- zall-0.1.0/tests/test_process_anchor_invariants.py +187 -0
- zall-0.1.0/tests/test_project_memory_invariants.py +74 -0
- zall-0.1.0/tests/test_proof_gate_invariants.py +173 -0
- zall-0.1.0/tests/test_proof_gate_square_invariants.py +59 -0
- zall-0.1.0/tests/test_read_file_invariants.py +142 -0
- zall-0.1.0/tests/test_read_image_invariants.py +230 -0
- zall-0.1.0/tests/test_real_api_v030.py +365 -0
- zall-0.1.0/tests/test_real_token_watermark.py +47 -0
- zall-0.1.0/tests/test_red_blue_invariants.py +164 -0
- zall-0.1.0/tests/test_refiner_invariants.py +338 -0
- zall-0.1.0/tests/test_reject_feedback_invariants.py +147 -0
- zall-0.1.0/tests/test_render_spinner_invariants.py +175 -0
- zall-0.1.0/tests/test_replay_invariants.py +213 -0
- zall-0.1.0/tests/test_retry_optimization.py +158 -0
- zall-0.1.0/tests/test_retry_step_invariants.py +206 -0
- zall-0.1.0/tests/test_retry_visibility_invariants.py +272 -0
- zall-0.1.0/tests/test_rules_file_invariants.py +243 -0
- zall-0.1.0/tests/test_sampling_params_invariants.py +126 -0
- zall-0.1.0/tests/test_sandbox_invariants.py +264 -0
- zall-0.1.0/tests/test_sandbox_verifier_invariants.py +81 -0
- zall-0.1.0/tests/test_science_cli_invariants.py +291 -0
- zall-0.1.0/tests/test_science_core_invariants.py +438 -0
- zall-0.1.0/tests/test_science_tool_invariants.py +389 -0
- zall-0.1.0/tests/test_scripted_chaos_invariants.py +224 -0
- zall-0.1.0/tests/test_select_menu.py +256 -0
- zall-0.1.0/tests/test_select_typeahead_guard.py +143 -0
- zall-0.1.0/tests/test_self_evolution_closed_loop.py +186 -0
- zall-0.1.0/tests/test_self_improve_invariants.py +200 -0
- zall-0.1.0/tests/test_sensitive_file_invariants.py +158 -0
- zall-0.1.0/tests/test_session_resume.py +171 -0
- zall-0.1.0/tests/test_shorten_invariants.py +136 -0
- zall-0.1.0/tests/test_skills.py +206 -0
- zall-0.1.0/tests/test_stream_error_invariants.py +363 -0
- zall-0.1.0/tests/test_stream_flush.py +177 -0
- zall-0.1.0/tests/test_streaming_invariants.py +262 -0
- zall-0.1.0/tests/test_streaming_render.py +460 -0
- zall-0.1.0/tests/test_subagent_authority_v014.py +215 -0
- zall-0.1.0/tests/test_subagent_mcp_inheritance.py +104 -0
- zall-0.1.0/tests/test_subprocess_encoding_invariants.py +90 -0
- zall-0.1.0/tests/test_subprocess_sandbox.py +257 -0
- zall-0.1.0/tests/test_syntax_theme_invariants.py +142 -0
- zall-0.1.0/tests/test_term_invariants.py +103 -0
- zall-0.1.0/tests/test_theme_invariants.py +170 -0
- zall-0.1.0/tests/test_thinking_display.py +291 -0
- zall-0.1.0/tests/test_timeline_completeness.py +250 -0
- zall-0.1.0/tests/test_token_clamp_invariants.py +116 -0
- zall-0.1.0/tests/test_tool_invariants.py +185 -0
- zall-0.1.0/tests/test_tool_version_invariants.py +156 -0
- zall-0.1.0/tests/test_toolset_presets.py +81 -0
- zall-0.1.0/tests/test_transient_retry.py +111 -0
- zall-0.1.0/tests/test_tui_app.py +533 -0
- zall-0.1.0/tests/test_tui_deadlock_guard.py +108 -0
- zall-0.1.0/tests/test_tui_interaction_kimi.py +385 -0
- zall-0.1.0/tests/test_tui_polish.py +420 -0
- zall-0.1.0/tests/test_tui_theme.py +51 -0
- zall-0.1.0/tests/test_universal_config.py +163 -0
- zall-0.1.0/tests/test_update_and_anomaly_invariants.py +193 -0
- zall-0.1.0/tests/test_verifiability_invariants.py +312 -0
- zall-0.1.0/tests/test_verify_chain_runtime.py +346 -0
- zall-0.1.0/tests/test_web_fetch_invariants.py +153 -0
- zall-0.1.0/tests/test_windows_encoding.py +324 -0
- 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
|