algo-cli-runtime 0.19.2__tar.gz → 0.20.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.
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/CHANGELOG.md +90 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/PKG-INFO +4 -2
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/README.md +3 -1
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/__init__.py +1 -2
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/action_registry.py +27 -8
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/ada_task_ledger.py +94 -5
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/agent_blocks.py +1 -1
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/agent_pipeline.py +109 -111
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/arthur_outcomes.py +31 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/cli_config.py +76 -2
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/code_rag.py +1 -1
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/config.py +285 -107
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/context_budget.py +38 -114
- algo_cli_runtime-0.20.0/algo_cli/continuum_memory.py +475 -0
- algo_cli_runtime-0.20.0/algo_cli/continuum_tools.py +514 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/display.py +45 -126
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/grounded_retrieval.py +5 -5
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/grounded_retrieval_validation.py +3 -3
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/nathan_agent_runtime_hardening.py +26 -16
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/pattern_comparison.py +2 -1
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/git_evidence.py +48 -13
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/grace_memory_receipts.py +51 -29
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/harness.py +18 -37
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/identity.py +2 -2
- algo_cli_runtime-0.20.0/algo_cli/intelligence/__init__.py +511 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/permission_modes.py +7 -7
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/irene_memory_path_policy.py +117 -16
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/irene_search.py +37 -1
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/james_dispatch.py +8 -6
- algo_cli_runtime-0.20.0/algo_cli/jev_kernel.py +274 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/julia_memory_candidates.py +1 -1
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/julia_memory_runtime.py +35 -166
- algo_cli_runtime-0.20.0/algo_cli/kernels/__init__.py +5 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/kernels/manifest.py +146 -20
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/main.py +455 -126
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/marcus_authority.py +54 -80
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/model_info.py +90 -11
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/model_profile.py +40 -3
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/nathan_program_runtime.py +115 -9
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/nathan_runtime.py +299 -24
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/oliver_oneshot.py +10 -7
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/oliver_slash_dispatch.py +162 -67
- algo_cli_runtime-0.19.2/algo_cli/elsie_echo_preflight.py → algo_cli_runtime-0.20.0/algo_cli/protected_memory_preflight.py +24 -24
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/boron_browser/boron_public_browser.Dockerfile +8 -8
- algo_cli_runtime-0.20.0/algo_cli/resources/prompts/yolo_mode.md +54 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/run_contract.py +30 -16
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/samuel_policy_engine.py +58 -1
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/session_commands.py +5 -3
- algo_cli_runtime-0.20.0/algo_cli/session_mode.py +319 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/small_context.py +2 -2
- algo_cli_runtime-0.20.0/algo_cli/sticky_status.py +346 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/tool_context.py +47 -19
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/tools.py +339 -512
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/url_scheme.py +1 -1
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/worktree_runtime.py +10 -4
- algo_cli_runtime-0.20.0/docs/ALGO.md +44 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/ada-algo-cli-memory-lifecycle-contract.md +14 -15
- algo_cli_runtime-0.20.0/docs/continuum-memory.md +87 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/index-compute-lab-integration.md +1 -1
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/privacy-and-context.md +11 -11
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/provider-auth-recovery.md +8 -11
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/pyproject.toml +2 -7
- algo_cli_runtime-0.20.0/skills/session-yolo-mode.md +69 -0
- algo_cli_runtime-0.19.2/algo_cli/ada_echo_veil_identity.py +0 -837
- algo_cli_runtime-0.19.2/algo_cli/ada_memory_echo_veil.py +0 -1368
- algo_cli_runtime-0.19.2/algo_cli/intelligence/__init__.py +0 -1108
- algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_config.py +0 -307
- algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_manifests.py +0 -338
- algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_models.py +0 -195
- algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_pipeline.py +0 -295
- algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_runtime.py +0 -302
- algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_security.py +0 -261
- algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_workflows.py +0 -226
- algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/__init__.py +0 -241
- algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/common.py +0 -273
- algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/documents.py +0 -496
- algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/labor_units.py +0 -1397
- algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/payments.py +0 -470
- algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/risk.py +0 -784
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/__init__.py +0 -169
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/anomalies.py +0 -133
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/ap_ar.py +0 -357
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/cash.py +0 -166
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/close.py +0 -334
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/common.py +0 -270
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/construction.py +0 -135
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/controls.py +0 -172
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/evidence.py +0 -119
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/exceptions.py +0 -164
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/reconciliations.py +0 -253
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/revenue.py +0 -109
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/tax.py +0 -74
- algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/workpapers.py +0 -111
- algo_cli_runtime-0.19.2/algo_cli/kernels/__init__.py +0 -5
- algo_cli_runtime-0.19.2/algo_cli/session_mode.py +0 -113
- algo_cli_runtime-0.19.2/docs/ALGO.md +0 -15457
- algo_cli_runtime-0.19.2/docs/echo-veil-security-status.md +0 -249
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/.gitignore +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/CONTRIBUTING.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/LICENSE +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/SECURITY.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo-cli.cmd +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo-cli.ps1 +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/__main__.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/_internal/__init__.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/_internal/policy_chain.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/ada_control_journal.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/ada_credential_registry.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/ada_private_event_store.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/ada_supply_chain_manifest.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/ada_uninstall_recovery.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/agent_context.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/agent_run_journal.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/agent_threads.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/alice_artifact_store.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/animations.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/argon_extensions_manifest.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/arthur_control_doctor.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/arthur_control_readiness.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/austin_desktop_simulator.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/austin_install_finalizer.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/austin_release_packager.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/austin_thomas_binding.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/boron_browser_entry.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/boron_browser_isolation.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/boron_browser_wrapper.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/cache_admission.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/capability_mask.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/carbon_browser_binding.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/chat_protocol.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/chatgpt_auth.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/chatgpt_client.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/clara_effect_ledger.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/cobalt_browser_service.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/credential_helpers.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/daemon.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/daemon_rpc.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/david_control_kernel.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/david_control_runtime.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/deliberation.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/dorothy_perf_telemetry.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/elsie_keyring_anchors.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/embedding_binding.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/__init__.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/algorithm_effectiveness.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/competitive_harness_rating.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/cot_quality.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/diagnostic_graph.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/grounded_answers.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/harness_retrieval_benchmark.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/pattern_evidence.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/performance_regression.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/scorecard_grading.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/session_distribution.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evals/tool_context_efficiency.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/evelyn_context_supersession.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/execution_guardrails.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/git_publish.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/google_workspace.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/google_workspace_auth.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/grace_key_store.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/henry_effect_control.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/henry_hardening_qualification.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/index_compute_lab.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/inference_harness.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/actionability.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/adversarial_audit.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/agent_arena.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/agent_benchmark.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/agent_runtime.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/agents_as_tools.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/artifact_binding.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/autonomous_engineer.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/backpressure.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/bloom_filter.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/bonferroni.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/boundary_compaction.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/catalog_verifier.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/cavecrew.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/changelog.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/checkpoint_resume.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/circuit_breaker.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/clarification_gate.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/code_graph.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/coderank.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/consistent_hash.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/consortium_synthesis.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/content_extractor.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/context_adaptive.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/context_ops.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/count_min.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/cow_state.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/critic_loop.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/cross_source.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/daemon_mode.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/dag_orchestration.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/deep_research.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/degenerate_detector.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/delta_report.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/discovery_event_log.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/document_ingest.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/dual_layer_validate.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/echo_fidelity.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/ema_tuning.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/event_log.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/evidence_graph.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/extension_host.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/extension_manifest.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/falsification_suite.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/finding_record.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/flow_dag.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/gatherer.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/golden_master.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/graph_rag.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/group_chat.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/hash_dedup.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/hyperloglog.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/incremental_index.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/index_store.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/iteration_plan.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/kernel_plugins.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/lesson_catalog.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/llm_fallback.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/log2_histogram.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/lsp_integration.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/memory_evolution.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/minhash_lsh.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/multi_model_score.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/multi_tier_grade.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/negative_controls.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/numeric_clamp.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/occ_editor.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/output_normalize.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/parallel_delegation.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/parallel_fanout.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/pre_push_gate.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/prefetch.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/process_framework.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/project_graph.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/query_expansion.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/ralph_loop.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/rate_limiter.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/refactor_transaction.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/repo_map.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/research_workspace.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/retraction_ledger.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/saga_pattern.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/session_fork.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/shadow_editor.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/shell_session.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/source_registry.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/spawn_scales.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/stat_stability.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/structural_validator.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/subagent_spawner.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/symmetric_verify.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/task_classifier.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/team_execution.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/tiered_access.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intelligence/utility_registry.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intuition_engine.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/intuition_injector.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/irene_privacy_views.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/model_aliases.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/model_routing.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/nathan_approval_channel.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/nathan_approval_reviewer.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/nathan_provider_protocol.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/neon_browser_native_host.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/neon_browser_simulator.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/oliver_authority_rotation.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/oliver_control_installation.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/oliver_control_installer.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/oliver_control_uninstall.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/pattern_catalog.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/pattern_runtime.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/quantization/__init__.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/quantization/lloyd_max.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/quantization/turbo_quant.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reasoning/__init__.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reasoning/combinatorial.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reasoning/graph_of_thought.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reasoning/mcts.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reasoning/neuro_symbolic.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reasoning/react.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reasoning/reflexion.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reasoning/tree_of_thought.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reasoning_bridge.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reconciliation.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/reflex.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/boron_browser/boron_browser_wrapper.sh +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/boron_browser/boron_managed_policy.json +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/boron_browser/boron_public_browser.Dockerfile.dockerignore +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/boron_browser/boron_seccomp_profile.json +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/boron_browser/carbon_native_browser.Dockerfile +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/boron_browser/carbon_native_browser.Dockerfile.dockerignore +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/boron_browser/xenon_egress_broker.Dockerfile +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/boron_browser/xenon_egress_broker.Dockerfile.dockerignore +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/boron_browser/xenon_egress_broker.sh +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/neon_extension/neon_manifest_template.json +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/neon_extension/neon_popup.html +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/neon_extension/neon_popup.js +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/resources/neon_extension/neon_service_worker.js +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/retrieval_algorithms.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/samuel_policy.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/search_execution.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/skills.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/spawn_budget.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/task_router.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/theodore_runtime_qos.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/theodore_runtime_services.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/tool_contract.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/tool_schema.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/updater.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/verify.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/version_manifest.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/vision_screenshot_verify.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/william_plugins.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/workspace_resolver.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/x_account.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/xai_auth.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/xai_client.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/xenon_browser_broker.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/xenon_browser_egress.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/algo_cli/xenon_browser_entry.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/algo-cli-algorithm-evidence-contract.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/algo-cli-execution-verification-contract.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/external-agent-store-operations.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/harness-extension-cleanup-recommendation.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/inference-harness-loop-blueprint-2026-06.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/main-split-map.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/reflex-loop-v0.2.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/runtime-capability-catalog.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/supervised-action-review.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/docs/t3-code-parity-2026-07.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/harness-gateway/go.mod +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/harness-gateway/main.go +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/harness-indexer/Cargo.lock +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/harness-indexer/Cargo.toml +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/harness-indexer/src/main.rs +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/ollama_cli/__init__.py +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/skills/README.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/skills/algo-cli.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/skills/edit-file-precision.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/skills/harness-search-first.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/skills/homebrew-helper-catalog.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/skills/memory-recall-ritual.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/skills/qol-algorithms.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/skills/sleeper-agent-model-review.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/skills/smart-error-recovery.md +0 -0
- {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.0}/skills/tool-selection-cheatsheet.md +0 -0
|
@@ -4,6 +4,96 @@ All notable changes to Algo CLI are documented here. The format follows [Keep a
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.20.0] - 2026-09-20
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Add explicit, session-only `/mode yolo` activation with an owner, process,
|
|
12
|
+
and workspace binding. YOLO is never saved, inherited by child agents, or
|
|
13
|
+
enabled by a prompt, copied configuration, or harness refresh.
|
|
14
|
+
- Route memory through native Continuum when it is explicitly selected, with
|
|
15
|
+
fail-closed scoped context, revision-bound writes, and no fallback backend.
|
|
16
|
+
`algo-cli config memory repair` removes retired memory selectors from an
|
|
17
|
+
existing configuration while preserving every other setting.
|
|
18
|
+
- Add the optional Jev kernel: `jev_question_contract` sends bounded,
|
|
19
|
+
advisory question contracts to the separately installed `jev-workflows`
|
|
20
|
+
companion. Lint runs locally; inference requires `algo-cli config jev enable`
|
|
21
|
+
and session approval, and validated answers never authorize actions.
|
|
22
|
+
- Keep the normal model, context, tool, reflection, and safety status visible
|
|
23
|
+
during generation and tool execution on supported interactive terminals.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- Let user-activated YOLO preapprove registered in-scope actions while retaining
|
|
28
|
+
safe-mode denials, credential and direct-send restrictions, protected memory
|
|
29
|
+
boundaries, target checks, child isolation, and post-mutation verification.
|
|
30
|
+
- Allow curated owner-bound read-only observation outside the active workspace
|
|
31
|
+
in YOLO without extending cross-workspace mutation authority.
|
|
32
|
+
- Normalize an empty typed-program output list to the final step and ignore only
|
|
33
|
+
redundant active-workspace `cwd` fields owned by the runtime. Conflicting
|
|
34
|
+
workspaces and invalid plans remain rejected.
|
|
35
|
+
- Remove the ordinary tool-round and verification-recovery ceilings while YOLO
|
|
36
|
+
is active; saved `/toolmax` behavior is unchanged after leaving YOLO.
|
|
37
|
+
- Preserve live YOLO activation through `/reload` without persisting it, and use
|
|
38
|
+
native cloud-model context limits instead of stale catalog stamps.
|
|
39
|
+
- Show a short `/` menu of common commands, group `/help` by category, and
|
|
40
|
+
reveal subcommands after their parent command. Existing command names and
|
|
41
|
+
aliases still work.
|
|
42
|
+
- Render the in-progress footer with the same content, colors, and spacing as
|
|
43
|
+
the prompt footer, so submitting a question no longer restyles it.
|
|
44
|
+
|
|
45
|
+
### Removed
|
|
46
|
+
|
|
47
|
+
- Ship `docs/ALGO.md` as an empty template instead of a populated pattern
|
|
48
|
+
catalog. Each user keeps their own catalog at `~/.algo_cli/ALGO.md`, which
|
|
49
|
+
Algo indexes in place of the template; `/intelligence init` creates it.
|
|
50
|
+
- Remove the Acrobat, finance, and construction kernels and their modules from
|
|
51
|
+
the package. Personal kernels are declared in
|
|
52
|
+
`~/.algo_cli/kernels/kernels.json` and load on that machine only; `/kernel`
|
|
53
|
+
lists them separately from built-in kernels.
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- Stop a startup crash when Continuum's required shared context exceeds the
|
|
58
|
+
default packet size: Algo retries once with the backend-reported size, up to
|
|
59
|
+
a hard cap, without dropping required records.
|
|
60
|
+
- Check protected-memory Git paths with their exact bytes, so a hard link with a
|
|
61
|
+
non-UTF-8 name cannot bypass the link check, and never launch a
|
|
62
|
+
`continuum-memory` command found inside the current repository.
|
|
63
|
+
- Stream Continuum replies under a fixed size limit, keep `/memory help`
|
|
64
|
+
available when the backend is down, and bound the personal kernel file.
|
|
65
|
+
- Keep a context window set with `/ctx` even when it equals a common model
|
|
66
|
+
default; only unrecorded automatic values are promoted to the native window.
|
|
67
|
+
- Refresh the Boron managed-browser pin to Chrome `153.0.8010.52` with its
|
|
68
|
+
Debian package checksum, release timestamp, regenerated dpkg lock, and
|
|
69
|
+
coupled fixtures, so hosted browser qualification is within the 72-hour
|
|
70
|
+
security-update limit.
|
|
71
|
+
- Distinguish compiler-format failures from missing runtime authority so valid
|
|
72
|
+
YOLO programs are not reported as approval failures.
|
|
73
|
+
- Classify slash-command inspection by each handler's real argument contract.
|
|
74
|
+
Mutating `/host`, `/model`, `/system`, `/goal`, `/google`, and related forms
|
|
75
|
+
no longer inherit read-only output capture or inspection treatment.
|
|
76
|
+
- Preserve `/memories` output capture and keep mutating command output on the
|
|
77
|
+
normal non-captured policy path.
|
|
78
|
+
- Restore terminal scroll margins on normal completion, resize, suspension,
|
|
79
|
+
termination, and hangup; suppress terminal controls for JSON output and
|
|
80
|
+
terminals without VT support.
|
|
81
|
+
- Accept both current owned Swift test-bundle identities without weakening path
|
|
82
|
+
or process-ancestry checks, and update the dependency lock past known `anyio`
|
|
83
|
+
advisories.
|
|
84
|
+
- Pin release upgrade qualification to the actual published `0.19.2`
|
|
85
|
+
predecessor and its exact public wheel bytes instead of the obsolete
|
|
86
|
+
`0.18.0` baseline, including the real published updater for pipless
|
|
87
|
+
`uv-pip` installations instead of a manual bootstrap bypass.
|
|
88
|
+
|
|
89
|
+
### Release Limits
|
|
90
|
+
|
|
91
|
+
- Retired memory backends (Echo Veil and D-57) are removed, not supported as
|
|
92
|
+
options or fallbacks. Their historical records are left unchanged.
|
|
93
|
+
- M8 retains five blocked external-browser metrics and M9 retains thirteen
|
|
94
|
+
blocked requirements. This release does not claim external-browser or model-
|
|
95
|
+
quality qualification from local deterministic evidence.
|
|
96
|
+
|
|
7
97
|
## [0.19.2] - 2026-09-13
|
|
8
98
|
|
|
9
99
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: algo-cli-runtime
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.20.0
|
|
4
4
|
Summary: Agent runtime for tools, durable context, and verified work
|
|
5
5
|
Project-URL: Homepage, https://algo-cli.com
|
|
6
6
|
Project-URL: Documentation, https://algo-cli.com/docs
|
|
@@ -119,7 +119,7 @@ inside the running launcher does not release that Windows file lock.
|
|
|
119
119
|
To install a reviewed source checkout instead, clone the repository and run
|
|
120
120
|
`pipx install .` from its root.
|
|
121
121
|
|
|
122
|
-
Optional extras are available for PDF rendering (`algo-cli-runtime[pdf]`) and experimental vector quantization (`algo-cli-runtime[quantization]`).
|
|
122
|
+
Optional extras are available for PDF rendering (`algo-cli-runtime[pdf]`) and experimental vector quantization (`algo-cli-runtime[quantization]`). Governed memory uses the separately installed native Continuum service; see [Continuum Memory](docs/continuum-memory.md) for configuration and recovery. The distribution installs the `algo-cli` command. Run `algo-cli doctor` for a side-effect-free readiness report.
|
|
123
123
|
|
|
124
124
|
## Quick Start
|
|
125
125
|
|
|
@@ -311,6 +311,8 @@ The model can call these tools during a conversation:
|
|
|
311
311
|
|
|
312
312
|
**Programmatic actions:** `action_search` retrieves a small set of exact deferred action schemas; discovery does not bypass the active capability ceiling, runtime policy, or approval. `action_program` compiles a bounded typed dataflow plan—never arbitrary Python or JavaScript—and routes every nested action through its existing ActionSpec policy, guardrails, approval, attempt ledger, and telemetry. Its wall-clock budget is cooperative: the remaining budget is propagated into timeout-aware actions and checked around every step, while actions without a timeout contract can only be marked over-budget after they return. Large intermediate values are content-addressed in the private runtime store; compact results retain hash-chained mutation and verification receipts. Successful program verifiers reconcile into the outer completion ledger, so the latest passing post-mutation check supersedes earlier failures without relying on model phrasing.
|
|
313
313
|
|
|
314
|
+
**Jev (optional):** `jev_question_contract` asks Jev, a small TypeSafe decision model, bounded advisory questions (classification, review, routing, claim checks) and `jev_kernel_status` checks readiness. It needs the separately installed `jev-workflows` companion: run `algo-cli config jev enable --cli /absolute/path/to/jev-workflows`. The companion holds its own credentials. `lint` mode is local; `review`, `run`, and `followup` send only the supplied question packet to TypeSafe and require session approval. Answers are advisory and never authorize or execute actions. `algo-cli config jev disable` turns inference off again.
|
|
315
|
+
|
|
314
316
|
**Models:** `model_show`, `model_pull`, `model_copy`, `model_create`, `model_delete`
|
|
315
317
|
|
|
316
318
|
**Files and Git:** `read_file`, `read_pdf`, `render_pdf_pages`, `edit_file`, `write_file`, `list_directory`, `search_files`, `find_unique_anchor`, `batch_edit`, `git_status`, `git_diff`
|
|
@@ -51,7 +51,7 @@ inside the running launcher does not release that Windows file lock.
|
|
|
51
51
|
To install a reviewed source checkout instead, clone the repository and run
|
|
52
52
|
`pipx install .` from its root.
|
|
53
53
|
|
|
54
|
-
Optional extras are available for PDF rendering (`algo-cli-runtime[pdf]`) and experimental vector quantization (`algo-cli-runtime[quantization]`).
|
|
54
|
+
Optional extras are available for PDF rendering (`algo-cli-runtime[pdf]`) and experimental vector quantization (`algo-cli-runtime[quantization]`). Governed memory uses the separately installed native Continuum service; see [Continuum Memory](docs/continuum-memory.md) for configuration and recovery. The distribution installs the `algo-cli` command. Run `algo-cli doctor` for a side-effect-free readiness report.
|
|
55
55
|
|
|
56
56
|
## Quick Start
|
|
57
57
|
|
|
@@ -243,6 +243,8 @@ The model can call these tools during a conversation:
|
|
|
243
243
|
|
|
244
244
|
**Programmatic actions:** `action_search` retrieves a small set of exact deferred action schemas; discovery does not bypass the active capability ceiling, runtime policy, or approval. `action_program` compiles a bounded typed dataflow plan—never arbitrary Python or JavaScript—and routes every nested action through its existing ActionSpec policy, guardrails, approval, attempt ledger, and telemetry. Its wall-clock budget is cooperative: the remaining budget is propagated into timeout-aware actions and checked around every step, while actions without a timeout contract can only be marked over-budget after they return. Large intermediate values are content-addressed in the private runtime store; compact results retain hash-chained mutation and verification receipts. Successful program verifiers reconcile into the outer completion ledger, so the latest passing post-mutation check supersedes earlier failures without relying on model phrasing.
|
|
245
245
|
|
|
246
|
+
**Jev (optional):** `jev_question_contract` asks Jev, a small TypeSafe decision model, bounded advisory questions (classification, review, routing, claim checks) and `jev_kernel_status` checks readiness. It needs the separately installed `jev-workflows` companion: run `algo-cli config jev enable --cli /absolute/path/to/jev-workflows`. The companion holds its own credentials. `lint` mode is local; `review`, `run`, and `followup` send only the supplied question packet to TypeSafe and require session approval. Answers are advisory and never authorize or execute actions. `algo-cli config jev disable` turns inference off again.
|
|
247
|
+
|
|
246
248
|
**Models:** `model_show`, `model_pull`, `model_copy`, `model_create`, `model_delete`
|
|
247
249
|
|
|
248
250
|
**Files and Git:** `read_file`, `read_pdf`, `render_pdf_pages`, `edit_file`, `write_file`, `list_directory`, `search_files`, `find_unique_anchor`, `batch_edit`, `git_status`, `git_diff`
|
|
@@ -5,13 +5,12 @@ from __future__ import annotations
|
|
|
5
5
|
from importlib import import_module
|
|
6
6
|
from types import ModuleType
|
|
7
7
|
|
|
8
|
-
__version__ = "0.
|
|
8
|
+
__version__ = "0.20.0"
|
|
9
9
|
|
|
10
10
|
_RENAMED_INTERNAL_MODULES = {
|
|
11
11
|
"elsie_memory_path_policy": "irene_memory_path_policy",
|
|
12
12
|
"elsie_memory_receipts": "grace_memory_receipts",
|
|
13
13
|
"memory_candidates": "julia_memory_candidates",
|
|
14
|
-
"memory_echo_veil": "ada_memory_echo_veil",
|
|
15
14
|
"oneshot": "oliver_oneshot",
|
|
16
15
|
"program_runtime": "nathan_program_runtime",
|
|
17
16
|
"tool_policy": "samuel_policy",
|
|
@@ -190,6 +190,18 @@ def _spec(
|
|
|
190
190
|
|
|
191
191
|
|
|
192
192
|
ACTION_SPECS: tuple[ActionSpec, ...] = (
|
|
193
|
+
_spec(
|
|
194
|
+
"jev.status", "kernel", "Inspect Jev question-contract companion readiness.",
|
|
195
|
+
"kernel", ("jev", "read-only", "local"), "Checks compatibility without contacting TypeSafe.",
|
|
196
|
+
"low", False, False, True,
|
|
197
|
+
known_limitations=("Execute through jev_kernel_status; readiness does not verify provider connectivity.",),
|
|
198
|
+
),
|
|
199
|
+
_spec(
|
|
200
|
+
"jev.question_contract", "kernel", "Lint or submit a bounded advisory Jev question contract.",
|
|
201
|
+
"kernel", ("jev", "advisory", "network"), "Typed judgments never authorize or execute actions.",
|
|
202
|
+
"medium", False, True, False, requires_network=True,
|
|
203
|
+
known_limitations=("Execute through jev_question_contract; lint is local, inference requires explicit setup.",),
|
|
204
|
+
),
|
|
193
205
|
_spec(
|
|
194
206
|
"read_file",
|
|
195
207
|
"tool",
|
|
@@ -860,10 +872,10 @@ ACTION_SPECS: tuple[ActionSpec, ...] = (
|
|
|
860
872
|
_spec(
|
|
861
873
|
"capability.tier",
|
|
862
874
|
"kernel",
|
|
863
|
-
"
|
|
875
|
+
"Describe the compatibility capability tier; runtime authority uses scoped grants.",
|
|
864
876
|
"kernel",
|
|
865
877
|
("policy", "capability", "tier", "least-privilege"),
|
|
866
|
-
"
|
|
878
|
+
"Capability tiers describe masks but cannot authorize actions or expand scoped grants.",
|
|
867
879
|
"low",
|
|
868
880
|
False,
|
|
869
881
|
False,
|
|
@@ -1390,6 +1402,7 @@ def _first_doc_line(obj: Any, fallback: str) -> str:
|
|
|
1390
1402
|
|
|
1391
1403
|
def _generated_tool_spec(name: str, fn: Any) -> ActionSpec:
|
|
1392
1404
|
policy = policy_for_action(name)
|
|
1405
|
+
memory_tool = name.startswith("memory_")
|
|
1393
1406
|
network = (
|
|
1394
1407
|
name.startswith("web_")
|
|
1395
1408
|
or name.startswith("x_")
|
|
@@ -1412,17 +1425,23 @@ def _generated_tool_spec(name: str, fn: Any) -> ActionSpec:
|
|
|
1412
1425
|
name,
|
|
1413
1426
|
"tool",
|
|
1414
1427
|
_first_doc_line(fn, f"Runtime callable tool: {name}."),
|
|
1415
|
-
"runtime",
|
|
1416
|
-
(
|
|
1428
|
+
"memory" if memory_tool else "runtime",
|
|
1429
|
+
(
|
|
1430
|
+
("continuum", "memory", "curated-runtime", "tool")
|
|
1431
|
+
if memory_tool
|
|
1432
|
+
else ("curated-runtime", "runtime", "tool")
|
|
1433
|
+
if policy.curated
|
|
1434
|
+
else ("unclassified", "runtime", "tool")
|
|
1435
|
+
),
|
|
1417
1436
|
(
|
|
1418
1437
|
"Curated runtime policy covers this callable even though it has no long-form registry entry."
|
|
1419
1438
|
if policy.curated
|
|
1420
1439
|
else "Unclassified runtime callable is denied until an explicit authority policy is added."
|
|
1421
1440
|
),
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1441
|
+
cast(RiskLevel, policy.maximum_risk),
|
|
1442
|
+
policy.mutates_state,
|
|
1443
|
+
policy.requires_approval,
|
|
1444
|
+
policy.safe_retry,
|
|
1426
1445
|
requires_network=network,
|
|
1427
1446
|
requires_provider=provider,
|
|
1428
1447
|
)
|
|
@@ -13,8 +13,9 @@ Writes are atomic (tmp + os.replace) via config._atomic_write_text.
|
|
|
13
13
|
|
|
14
14
|
from __future__ import annotations
|
|
15
15
|
|
|
16
|
-
import
|
|
16
|
+
import hashlib
|
|
17
17
|
import hmac
|
|
18
|
+
import json
|
|
18
19
|
import os
|
|
19
20
|
import stat
|
|
20
21
|
import time
|
|
@@ -46,6 +47,7 @@ LEGACY_PROTECTED_LEDGER_SCHEMA_VERSION = 2
|
|
|
46
47
|
PROTECTED_LEDGER_SCHEMA_VERSION = 3
|
|
47
48
|
MAX_LEDGER_BYTES = 1_048_576
|
|
48
49
|
_LEDGER_MISSING = object()
|
|
50
|
+
GOAL_STORE_CONFLICT_REASON = "goal_store_conflict_requires_repair"
|
|
49
51
|
|
|
50
52
|
STATUS_RUNNING = "running"
|
|
51
53
|
STATUS_COMPLETE = "complete"
|
|
@@ -57,7 +59,7 @@ STATUS_STOPPED = "stopped" # user-interrupted or round cap reached
|
|
|
57
59
|
class GoalRecord:
|
|
58
60
|
# The goal is explicit user-authored operational state and intentionally
|
|
59
61
|
# remains readable. Model-derived reasons/history are projected below when
|
|
60
|
-
#
|
|
62
|
+
# Continuum is the selected memory authority.
|
|
61
63
|
goal: str
|
|
62
64
|
status: str = STATUS_RUNNING
|
|
63
65
|
rounds_done: int = 0
|
|
@@ -408,7 +410,7 @@ def prepare_protected_goal_store(
|
|
|
408
410
|
anchor_store=anchor_store,
|
|
409
411
|
)
|
|
410
412
|
if existing_head is not None:
|
|
411
|
-
raise ElsieReceiptError(
|
|
413
|
+
raise ElsieReceiptError(GOAL_STORE_CONFLICT_REASON)
|
|
412
414
|
payload = _protected_ledger_payload(
|
|
413
415
|
_protected_goal_payload(legacy, authority),
|
|
414
416
|
authority,
|
|
@@ -429,6 +431,93 @@ def prepare_protected_goal_store(
|
|
|
429
431
|
return recovered
|
|
430
432
|
|
|
431
433
|
|
|
434
|
+
def repair_protected_goal_store_conflict(
|
|
435
|
+
*,
|
|
436
|
+
receipt_authority: ElsieReceiptAuthority | None = None,
|
|
437
|
+
anchor_store: Any | None = None,
|
|
438
|
+
) -> dict[str, object]:
|
|
439
|
+
"""Archive a conflicting legacy ledger and publish a blocked successor.
|
|
440
|
+
|
|
441
|
+
The existing external anchor is retained and advanced. Legacy progress is
|
|
442
|
+
never made resumable: only the user-authored goal and cwd survive, in a
|
|
443
|
+
blocked record that requires an explicit fresh goal before more work.
|
|
444
|
+
"""
|
|
445
|
+
|
|
446
|
+
authority = receipt_authority or ElsieReceiptAuthority.from_existing_key_store()
|
|
447
|
+
with _exclusive_state_lock(LEDGER_PATH):
|
|
448
|
+
if _pending_goal_exists():
|
|
449
|
+
raise ElsieReceiptError("protected goal recovery is pending")
|
|
450
|
+
try:
|
|
451
|
+
raw = _state_descriptor_payload(LEDGER_PATH, max_bytes=MAX_LEDGER_BYTES)
|
|
452
|
+
except FileNotFoundError as exc:
|
|
453
|
+
raise ElsieReceiptError("protected goal ledger is missing") from exc
|
|
454
|
+
except OSError as exc:
|
|
455
|
+
raise ElsieReceiptError("protected goal ledger path is unsafe") from exc
|
|
456
|
+
try:
|
|
457
|
+
current = json.loads(raw.decode("utf-8", errors="strict"))
|
|
458
|
+
except (json.JSONDecodeError, UnicodeDecodeError) as exc:
|
|
459
|
+
raise ElsieReceiptError("protected goal ledger is malformed") from exc
|
|
460
|
+
if not isinstance(current, dict):
|
|
461
|
+
raise ElsieReceiptError("protected goal ledger is malformed")
|
|
462
|
+
if current.get("schema_version") == PROTECTED_LEDGER_SCHEMA_VERSION:
|
|
463
|
+
_validate_protected_ledger(
|
|
464
|
+
current,
|
|
465
|
+
authority,
|
|
466
|
+
anchor_store=anchor_store,
|
|
467
|
+
)
|
|
468
|
+
return {"changed": False, "backup_path": None, "source_sha256": ""}
|
|
469
|
+
|
|
470
|
+
legacy = _legacy_goal_for_protected_migration(current, authority)
|
|
471
|
+
head = load_elsie_store_anchor(
|
|
472
|
+
authority,
|
|
473
|
+
ReceiptNamespace.GOAL_STORE,
|
|
474
|
+
subject=_ledger_subject(),
|
|
475
|
+
anchor_store=anchor_store,
|
|
476
|
+
)
|
|
477
|
+
if head is None:
|
|
478
|
+
raise ElsieReceiptError("protected goal conflict is absent")
|
|
479
|
+
|
|
480
|
+
digest = hashlib.sha256(raw).hexdigest()
|
|
481
|
+
backup_path = (
|
|
482
|
+
CONFIG_DIR
|
|
483
|
+
/ "recovery-backups"
|
|
484
|
+
/ f"goal-ledger-conflict-{digest[:16]}"
|
|
485
|
+
/ LEDGER_PATH.name
|
|
486
|
+
)
|
|
487
|
+
try:
|
|
488
|
+
backup = _state_descriptor_payload(backup_path, max_bytes=MAX_LEDGER_BYTES)
|
|
489
|
+
except FileNotFoundError:
|
|
490
|
+
_atomic_write_text(backup_path, raw.decode("utf-8", errors="strict"))
|
|
491
|
+
else:
|
|
492
|
+
if backup != raw:
|
|
493
|
+
raise ElsieReceiptError("protected goal recovery backup is inconsistent")
|
|
494
|
+
|
|
495
|
+
try:
|
|
496
|
+
pinned = _state_descriptor_payload(LEDGER_PATH, max_bytes=MAX_LEDGER_BYTES)
|
|
497
|
+
except OSError as exc:
|
|
498
|
+
raise ElsieReceiptError("protected goal ledger changed during repair") from exc
|
|
499
|
+
if not hmac.compare_digest(pinned, raw):
|
|
500
|
+
raise ElsieReceiptError("protected goal ledger changed during repair")
|
|
501
|
+
|
|
502
|
+
previous = "hmac-sha256:" + head.head_digest
|
|
503
|
+
payload = _protected_ledger_payload(
|
|
504
|
+
_protected_goal_payload(legacy, authority),
|
|
505
|
+
authority,
|
|
506
|
+
sequence=head.sequence + 1,
|
|
507
|
+
previous_store_receipt=previous,
|
|
508
|
+
)
|
|
509
|
+
_publish_protected_goal_payload_unlocked(
|
|
510
|
+
payload,
|
|
511
|
+
authority,
|
|
512
|
+
anchor_store=anchor_store,
|
|
513
|
+
)
|
|
514
|
+
return {
|
|
515
|
+
"changed": True,
|
|
516
|
+
"backup_path": backup_path,
|
|
517
|
+
"source_sha256": digest,
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
|
|
432
521
|
def _publish_protected_goal_payload_unlocked(
|
|
433
522
|
payload: dict[str, Any],
|
|
434
523
|
authority: ElsieReceiptAuthority,
|
|
@@ -522,7 +611,7 @@ def save_goal(
|
|
|
522
611
|
)
|
|
523
612
|
is not None
|
|
524
613
|
):
|
|
525
|
-
raise ElsieReceiptError(
|
|
614
|
+
raise ElsieReceiptError(GOAL_STORE_CONFLICT_REASON)
|
|
526
615
|
else:
|
|
527
616
|
raise ElsieReceiptError("unsupported protected goal ledger schema")
|
|
528
617
|
else:
|
|
@@ -709,7 +798,7 @@ def load_goal(
|
|
|
709
798
|
LEGACY_PROTECTED_LEDGER_SCHEMA_VERSION,
|
|
710
799
|
PROTECTED_LEDGER_SCHEMA_VERSION,
|
|
711
800
|
}:
|
|
712
|
-
# Protected records are safe to inspect structurally
|
|
801
|
+
# Protected records are safe to inspect structurally after Continuum is
|
|
713
802
|
# disabled, but their content receipts are deliberately not reversed.
|
|
714
803
|
if goal_data is None:
|
|
715
804
|
return None
|
|
@@ -13,7 +13,7 @@ try:
|
|
|
13
13
|
import tomllib # type: ignore[import-not-found]
|
|
14
14
|
except ImportError: # Python 3.10: fall back to the tomli backport.
|
|
15
15
|
try:
|
|
16
|
-
import tomli as tomllib
|
|
16
|
+
import tomli as tomllib
|
|
17
17
|
except ImportError: # pragma: no cover - tomli is a declared 3.10 dependency.
|
|
18
18
|
tomllib = None # type: ignore[assignment]
|
|
19
19
|
|