hal0ai 0.9.8__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.
- hal0ai-0.9.8/.claude/.wip.lock +0 -0
- hal0ai-0.9.8/.claude/agents/docs-lead.md +43 -0
- hal0ai-0.9.8/.claude/agents/docs-verifier.md +25 -0
- hal0ai-0.9.8/.claude/agents/docs-writer.md +30 -0
- hal0ai-0.9.8/.claude/settings.json +24 -0
- hal0ai-0.9.8/.github/workflows/agent-shim-smoke.yml +170 -0
- hal0ai-0.9.8/.github/workflows/bootstrap-parity.yml +74 -0
- hal0ai-0.9.8/.github/workflows/ci.yml +100 -0
- hal0ai-0.9.8/.github/workflows/hermes-sdk-diff.yml +216 -0
- hal0ai-0.9.8/.github/workflows/nightly.yml +139 -0
- hal0ai-0.9.8/.github/workflows/playwright.yml +79 -0
- hal0ai-0.9.8/.github/workflows/release.yml +587 -0
- hal0ai-0.9.8/.github/workflows/toolbox.yml +170 -0
- hal0ai-0.9.8/.gitignore +129 -0
- hal0ai-0.9.8/.graphifyignore +5 -0
- hal0ai-0.9.8/AGENTS.md +199 -0
- hal0ai-0.9.8/ARCHITECTURE.md +326 -0
- hal0ai-0.9.8/CHANGELOG.md +2031 -0
- hal0ai-0.9.8/CLAUDE.md +9 -0
- hal0ai-0.9.8/CODE_OF_CONDUCT.md +85 -0
- hal0ai-0.9.8/CONTEXT.md +449 -0
- hal0ai-0.9.8/CONTRIBUTING.md +201 -0
- hal0ai-0.9.8/LICENSE +201 -0
- hal0ai-0.9.8/Makefile +137 -0
- hal0ai-0.9.8/PKG-INFO +543 -0
- hal0ai-0.9.8/PLAN.md +1143 -0
- hal0ai-0.9.8/README.md +499 -0
- hal0ai-0.9.8/SECURITY.md +38 -0
- hal0ai-0.9.8/dashboard-overview.png +0 -0
- hal0ai-0.9.8/dashboard-preview.png +0 -0
- hal0ai-0.9.8/docs/README.md +30 -0
- hal0ai-0.9.8/docs/concepts/agents.mdx +187 -0
- hal0ai-0.9.8/docs/concepts/architecture.mdx +201 -0
- hal0ai-0.9.8/docs/concepts/capabilities-and-profiles.mdx +303 -0
- hal0ai-0.9.8/docs/concepts/memory.mdx +114 -0
- hal0ai-0.9.8/docs/concepts/security.mdx +150 -0
- hal0ai-0.9.8/docs/concepts/slots.mdx +267 -0
- hal0ai-0.9.8/docs/concepts/stacks.mdx +156 -0
- hal0ai-0.9.8/docs/concepts/strix-halo.mdx +126 -0
- hal0ai-0.9.8/docs/design/container-image-overhaul.md +178 -0
- hal0ai-0.9.8/docs/design/toolbox-repo-consolidation.md +172 -0
- hal0ai-0.9.8/docs/getting-started/baremetal-ubuntu.mdx +147 -0
- hal0ai-0.9.8/docs/getting-started/first-chat.mdx +142 -0
- hal0ai-0.9.8/docs/getting-started/first-model.mdx +174 -0
- hal0ai-0.9.8/docs/getting-started/index.mdx +87 -0
- hal0ai-0.9.8/docs/getting-started/install.mdx +195 -0
- hal0ai-0.9.8/docs/getting-started/proxmox-lxc.mdx +359 -0
- hal0ai-0.9.8/docs/getting-started/setup.mdx +125 -0
- hal0ai-0.9.8/docs/getting-started/wsl.mdx +115 -0
- hal0ai-0.9.8/docs/guides/benchmarks.mdx +75 -0
- hal0ai-0.9.8/docs/guides/choose-models.mdx +182 -0
- hal0ai-0.9.8/docs/guides/configure.mdx +165 -0
- hal0ai-0.9.8/docs/guides/connect-external-providers.mdx +279 -0
- hal0ai-0.9.8/docs/guides/connect-mcp.mdx +156 -0
- hal0ai-0.9.8/docs/guides/enable-memory.mdx +169 -0
- hal0ai-0.9.8/docs/guides/generate-images.mdx +234 -0
- hal0ai-0.9.8/docs/guides/honcho-memory.mdx +232 -0
- hal0ai-0.9.8/docs/guides/logs-and-activity.mdx +171 -0
- hal0ai-0.9.8/docs/guides/manage-slots.mdx +431 -0
- hal0ai-0.9.8/docs/guides/obtain-models.mdx +541 -0
- hal0ai-0.9.8/docs/guides/pull-and-register-models.mdx +285 -0
- hal0ai-0.9.8/docs/guides/run-agents.mdx +240 -0
- hal0ai-0.9.8/docs/guides/update-and-rollback.mdx +208 -0
- hal0ai-0.9.8/docs/guides/voice-stt-tts.mdx +178 -0
- hal0ai-0.9.8/docs/operate/auth.mdx +185 -0
- hal0ai-0.9.8/docs/operate/services.mdx +117 -0
- hal0ai-0.9.8/docs/reference/api/openai-compat.mdx +176 -0
- hal0ai-0.9.8/docs/reference/api/rest-api.mdx +155 -0
- hal0ai-0.9.8/docs/reference/api/slot-as-model.mdx +115 -0
- hal0ai-0.9.8/docs/reference/api/streaming.mdx +105 -0
- hal0ai-0.9.8/docs/reference/cli.mdx +476 -0
- hal0ai-0.9.8/docs/reference/config-schema.mdx +373 -0
- hal0ai-0.9.8/docs/reference/env-vars.mdx +131 -0
- hal0ai-0.9.8/docs/reference/hardware-matrix.mdx +106 -0
- hal0ai-0.9.8/docs/reference/mcp-tools.mdx +143 -0
- hal0ai-0.9.8/docs/reference/model-roster-benchmark.mdx +74 -0
- hal0ai-0.9.8/docs/reference/paths-and-files.mdx +133 -0
- hal0ai-0.9.8/docs/reference/providers-profiles-devices.mdx +260 -0
- hal0ai-0.9.8/docs/reference/slot-lifecycle.mdx +196 -0
- hal0ai-0.9.8/docs/superpowers/plans/2026-07-08-settings-reorg-plan.md +794 -0
- hal0ai-0.9.8/docs/superpowers/specs/2026-07-06-upstream-model-filters.md +53 -0
- hal0ai-0.9.8/docs/superpowers/specs/2026-07-08-downloads-pane-design.md +189 -0
- hal0ai-0.9.8/docs/superpowers/specs/2026-07-08-settings-reorg-design.md +144 -0
- hal0ai-0.9.8/docs/superpowers/specs/2026-07-11-hal0-platform-cron-design.md +376 -0
- hal0ai-0.9.8/handoffs/bench-profile-matrix-local-session-2026-07-04.md +152 -0
- hal0ai-0.9.8/handoffs/benchmark-system-design-2026-07-05.md +550 -0
- hal0ai-0.9.8/handoffs/board-hermes-kanban-analysis-2026-07-04.md +212 -0
- hal0ai-0.9.8/handoffs/concurrency-batching-optimization-plan-2026-07-05.md +326 -0
- hal0ai-0.9.8/handoffs/hal0-setup-answers-spec-2026-07-05.md +232 -0
- hal0ai-0.9.8/handoffs/install-setup-update-fixes-plan-2026-07-10.md +118 -0
- hal0ai-0.9.8/handoffs/installer-setup-plan-2026-07-05.md +71 -0
- hal0ai-0.9.8/handoffs/installer-setup-research-2026-07-05.md +1718 -0
- hal0ai-0.9.8/handoffs/llamacpp-strix-halo-profile-consolidation-2026-07-04.md +362 -0
- hal0ai-0.9.8/handoffs/model-pipeline-finish-out-2026-07-05.md +130 -0
- hal0ai-0.9.8/handoffs/model-pipeline-fix-plan-2026-07-04.md +374 -0
- hal0ai-0.9.8/handoffs/onnx-strix-halo-npu-research-2026-07-04.md +228 -0
- hal0ai-0.9.8/handoffs/platform-review-2026-07-03.md +436 -0
- hal0ai-0.9.8/handoffs/qwen3tts-standalone-to-slot-migration-2026-06-28.md +251 -0
- hal0ai-0.9.8/handoffs/rocmfpx-bench-handoff-next-2026-07-05.md +193 -0
- hal0ai-0.9.8/handoffs/rocmfpx-bench-results-2026-07-05.md +91 -0
- hal0ai-0.9.8/handoffs/rocmfpx-runner-bench-runbook-2026-07-05.md +291 -0
- hal0ai-0.9.8/handoffs/upstream-controls-plan-2026-07-06.md +106 -0
- hal0ai-0.9.8/installer/README.md +271 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-bench/SKILL.md +85 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-bench/references/seam.md +53 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-bench-autopilot/SKILL.md +53 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-quantize/SKILL.md +133 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-quantize/references/presets.md +69 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-quantize/scripts/rocmfpx-build.sh +75 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-quantize/scripts/rocmfpx-env.sh +113 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-quantize/scripts/rocmfpx-pipeline.sh +29 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-quantize/scripts/rocmfpx-quantize.sh +84 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-service-management/SKILL.md +217 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-service-management/references/dashboard-permission-mismatch.md +68 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-service-management/references/dashboard-plugin-entry-mismatch.md +130 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-service-management/references/dashboard-plugin-js-loading.md +140 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-service-management/references/gateway-connectivity-quirks.md +59 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-service-management/references/hal0-codebase-map.md +141 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-service-management/references/hermes-gateway-platform-tokens.md +139 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-service-management/references/mcp-tool-quirks.md +93 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-service-management/scripts/check-service-env.sh +130 -0
- hal0ai-0.9.8/installer/agent-skills/hal0-tune/SKILL.md +117 -0
- hal0ai-0.9.8/installer/agents/hermes/hooks/inject-system-state.sh +30 -0
- hal0ai-0.9.8/installer/agents/hermes/plugins/hal0-memory/__init__.py +33 -0
- hal0ai-0.9.8/installer/agents/hermes/plugins/hal0-memory/_client.py +179 -0
- hal0ai-0.9.8/installer/agents/hermes/plugins/hal0-memory/plugin.yaml +10 -0
- hal0ai-0.9.8/installer/agents/hermes/plugins/hal0-memory/provider.py +294 -0
- hal0ai-0.9.8/installer/agents/hermes/requirements.txt +27 -0
- hal0ai-0.9.8/installer/agents/hermes-prereqs.sh +86 -0
- hal0ai-0.9.8/installer/agents/opencode.sh +149 -0
- hal0ai-0.9.8/installer/agents/pi-coder.sh +115 -0
- hal0ai-0.9.8/installer/agents/turnstone.sh +107 -0
- hal0ai-0.9.8/installer/bench/README.md +80 -0
- hal0ai-0.9.8/installer/bench/config.sh +88 -0
- hal0ai-0.9.8/installer/bench/generate_results_json.py +416 -0
- hal0ai-0.9.8/installer/bench/profile-matrix.sh +186 -0
- hal0ai-0.9.8/installer/bench/run_benchmarks.sh +219 -0
- hal0ai-0.9.8/installer/bench/server_ab.py +626 -0
- hal0ai-0.9.8/installer/bench/suites/concurrency.toml +30 -0
- hal0ai-0.9.8/installer/bench/suites/lane-matrix.toml +36 -0
- hal0ai-0.9.8/installer/bench/suites/roster.toml +25 -0
- hal0ai-0.9.8/installer/bench/suites/smoke.toml +43 -0
- hal0ai-0.9.8/installer/bench/window.toml +36 -0
- hal0ai-0.9.8/installer/bootstrap.sh +267 -0
- hal0ai-0.9.8/installer/comfyui/custom_nodes/hal0_gpu_gate.py +169 -0
- hal0ai-0.9.8/installer/comfyui/extra_model_paths.yaml +15 -0
- hal0ai-0.9.8/installer/comfyui/scripts/get_esrgan.sh +86 -0
- hal0ai-0.9.8/installer/comfyui/scripts/get_hunyuan15.sh +153 -0
- hal0ai-0.9.8/installer/comfyui/scripts/get_ltx2.sh +124 -0
- hal0ai-0.9.8/installer/comfyui/scripts/get_qwen_image.sh +115 -0
- hal0ai-0.9.8/installer/comfyui/scripts/get_sdxl.sh +103 -0
- hal0ai-0.9.8/installer/comfyui/scripts/get_wan22.sh +144 -0
- hal0ai-0.9.8/installer/comfyui/scripts/set_extra_paths.sh +28 -0
- hal0ai-0.9.8/installer/comfyui/workflows/ESRGAN-4x-Upscale.json +49 -0
- hal0ai-0.9.8/installer/comfyui/workflows/Hunyuan-Video-1.5_720p_i2v-4-step-lora.json +283 -0
- hal0ai-0.9.8/installer/comfyui/workflows/Hunyuan-Video-1.5_720p_t2v-4-step-lora.json +245 -0
- hal0ai-0.9.8/installer/comfyui/workflows/LTX2-I2V-BF16.json +618 -0
- hal0ai-0.9.8/installer/comfyui/workflows/LTX2-T2V-BF16.json +535 -0
- hal0ai-0.9.8/installer/comfyui/workflows/Qwen-Image-2512-BF16-20-Steps.json +141 -0
- hal0ai-0.9.8/installer/comfyui/workflows/Qwen-Image-2512-BF16-4-Step-LoRA.json +155 -0
- hal0ai-0.9.8/installer/comfyui/workflows/Qwen-Image-Edit-2511-BF16-20-Steps.json +225 -0
- hal0ai-0.9.8/installer/comfyui/workflows/Qwen-Image-Edit-2511-BF16-4-Step-LoRA.json +239 -0
- hal0ai-0.9.8/installer/comfyui/workflows/SDXL-Lightning-8step.json +135 -0
- hal0ai-0.9.8/installer/comfyui/workflows/Wan2.2-I2V-A14B-4steps-lora-rank64-Seko-V1-FP16.json +270 -0
- hal0ai-0.9.8/installer/comfyui/workflows/Wan2.2-T2V-A14B-FP16-4steps-lora-rank64-Seko-V2.json +244 -0
- hal0ai-0.9.8/installer/etc-hal0/profiles.toml +33 -0
- hal0ai-0.9.8/installer/etc-hal0/slots/agent.toml +25 -0
- hal0ai-0.9.8/installer/etc-hal0/slots/brain.toml +33 -0
- hal0ai-0.9.8/installer/etc-hal0/slots/flm.toml +26 -0
- hal0ai-0.9.8/installer/etc-hal0/slots/img.toml +26 -0
- hal0ai-0.9.8/installer/etc-hal0/slots/qwen3tts.toml +17 -0
- hal0ai-0.9.8/installer/etc-hal0/slots/rerank.toml +21 -0
- hal0ai-0.9.8/installer/etc-hal0/slots/tts.toml +12 -0
- hal0ai-0.9.8/installer/etc-hal0/slots/utility.toml +25 -0
- hal0ai-0.9.8/installer/honcho/README.md +39 -0
- hal0ai-0.9.8/installer/honcho/docker-compose.yml +148 -0
- hal0ai-0.9.8/installer/install.sh +2386 -0
- hal0ai-0.9.8/installer/lib/distro.sh +119 -0
- hal0ai-0.9.8/installer/lib/preflight.sh +982 -0
- hal0ai-0.9.8/installer/lib/run-as-hal0.sh +60 -0
- hal0ai-0.9.8/installer/lib/ui.sh +319 -0
- hal0ai-0.9.8/installer/manifests/omni/LMX-Omni-52B-Halo.json +50 -0
- hal0ai-0.9.8/installer/manifests/omni/hal0-default.json +50 -0
- hal0ai-0.9.8/installer/manifests/omni/hal0-lite.json +28 -0
- hal0ai-0.9.8/installer/manifests/omni/hal0-max.json +70 -0
- hal0ai-0.9.8/installer/manifests/omni/hal0-pro.json +70 -0
- hal0ai-0.9.8/installer/systemd/hal0-agent@.service +107 -0
- hal0ai-0.9.8/installer/systemd/hal0-agent@hermes.service.d/override.conf +47 -0
- hal0ai-0.9.8/installer/systemd/hal0-agent@turnstone.service.d/override.conf +36 -0
- hal0ai-0.9.8/installer/systemd/hal0-bench-worker.service +38 -0
- hal0ai-0.9.8/installer/systemd/hal0-bench.service +44 -0
- hal0ai-0.9.8/installer/systemd/hal0-bench.timer +10 -0
- hal0ai-0.9.8/installer/systemd/hal0-honcho-sync.service +8 -0
- hal0ai-0.9.8/installer/systemd/hal0-honcho-sync.timer +9 -0
- hal0ai-0.9.8/installer/systemd/hal0-honcho.service +28 -0
- hal0ai-0.9.8/installer/systemd/hindsight-api.service +86 -0
- hal0ai-0.9.8/installer/uninstall.sh +662 -0
- hal0ai-0.9.8/installer/wrappers/hal0-agentenv +99 -0
- hal0ai-0.9.8/installer/wrappers/hal0-benchctl +183 -0
- hal0ai-0.9.8/installer/wrappers/hal0-hermes +58 -0
- hal0ai-0.9.8/installer/wrappers/hermes +88 -0
- hal0ai-0.9.8/manifest.json +69 -0
- hal0ai-0.9.8/oom +0 -0
- hal0ai-0.9.8/packaging/proxmox/hal0-test-template/README.md +61 -0
- hal0ai-0.9.8/packaging/proxmox/hal0-test-template/hal0-test-ready.service +15 -0
- hal0ai-0.9.8/packaging/proxmox/hal0-test-template/provision.sh +64 -0
- hal0ai-0.9.8/packaging/sudoers/hal0-agentenv +21 -0
- hal0ai-0.9.8/packaging/sudoers/hal0-benchctl +18 -0
- hal0ai-0.9.8/packaging/systemd/hal0-openwebui.service +69 -0
- hal0ai-0.9.8/packaging/systemd/hal0-podman-forward.service +39 -0
- hal0ai-0.9.8/packaging/toolbox/.dockerignore +23 -0
- hal0ai-0.9.8/packaging/toolbox/cpu.Dockerfile +151 -0
- hal0ai-0.9.8/packaging/toolbox/flm.Dockerfile +264 -0
- hal0ai-0.9.8/packaging/toolbox/kokoro/kokoro_server.py +273 -0
- hal0ai-0.9.8/packaging/toolbox/moonshine/moonshine_server.py +451 -0
- hal0ai-0.9.8/packaging/toolbox/qwen3tts/qwen3tts_server.py +289 -0
- hal0ai-0.9.8/packaging/toolbox/qwen3tts.Dockerfile +60 -0
- hal0ai-0.9.8/pyproject.toml +160 -0
- hal0ai-0.9.8/scripts/check-bootstrap-parity.sh +96 -0
- hal0ai-0.9.8/scripts/deploy.sh +229 -0
- hal0ai-0.9.8/scripts/dev-bootstrap.sh +173 -0
- hal0ai-0.9.8/scripts/fork-pi-mono.sh +73 -0
- hal0ai-0.9.8/scripts/fresh-test-ct.sh +151 -0
- hal0ai-0.9.8/scripts/gen_release_notes.py +114 -0
- hal0ai-0.9.8/scripts/harness-report.py +114 -0
- hal0ai-0.9.8/scripts/harness.sh +145 -0
- hal0ai-0.9.8/scripts/hermes-sdk-diff.sh +237 -0
- hal0ai-0.9.8/scripts/migrate-haloai.py +441 -0
- hal0ai-0.9.8/scripts/migrate-qwen3tts-to-slot.sh +359 -0
- hal0ai-0.9.8/scripts/prototype_ttft/NOTES.md +50 -0
- hal0ai-0.9.8/scripts/prototype_ttft/README.md +64 -0
- hal0ai-0.9.8/scripts/prototype_ttft/live_probe.py +126 -0
- hal0ai-0.9.8/scripts/prototype_ttft/metrics_core.py +121 -0
- hal0ai-0.9.8/scripts/prototype_ttft/tui.py +183 -0
- hal0ai-0.9.8/scripts/proxmox-ve/README.md +86 -0
- hal0ai-0.9.8/scripts/proxmox-ve/hal0.sh +268 -0
- hal0ai-0.9.8/scripts/push-dev.sh +281 -0
- hal0ai-0.9.8/scripts/register_mnt_ai_models.py +422 -0
- hal0ai-0.9.8/scripts/release-check.sh +226 -0
- hal0ai-0.9.8/scripts/release-prototype/RELEASE_PIPELINE_NOTES.md +118 -0
- hal0ai-0.9.8/scripts/release-prototype/verify-roundtrip.sh +256 -0
- hal0ai-0.9.8/scripts/release-test-report.py +96 -0
- hal0ai-0.9.8/scripts/release-test.sh +357 -0
- hal0ai-0.9.8/scripts/smoke-opencode.sh +210 -0
- hal0ai-0.9.8/scripts/smoke-pi-coder.sh +229 -0
- hal0ai-0.9.8/scripts/update-toolbox-digests.sh +190 -0
- hal0ai-0.9.8/src/hal0/__init__.py +18 -0
- hal0ai-0.9.8/src/hal0/activity/__init__.py +433 -0
- hal0ai-0.9.8/src/hal0/agents/__init__.py +31 -0
- hal0ai-0.9.8/src/hal0/agents/budget.py +565 -0
- hal0ai-0.9.8/src/hal0/agents/hermes/__init__.py +16 -0
- hal0ai-0.9.8/src/hal0/agents/hermes/driver.py +400 -0
- hal0ai-0.9.8/src/hal0/agents/hermes/plugins/__init__.py +6 -0
- hal0ai-0.9.8/src/hal0/agents/hermes/plugins/memory_hindsight/README.md +80 -0
- hal0ai-0.9.8/src/hal0/agents/hermes/plugins/memory_hindsight/__init__.py +33 -0
- hal0ai-0.9.8/src/hal0/agents/hermes/plugins/memory_hindsight/_client.py +179 -0
- hal0ai-0.9.8/src/hal0/agents/hermes/plugins/memory_hindsight/plugin.yaml +10 -0
- hal0ai-0.9.8/src/hal0/agents/hermes/plugins/memory_hindsight/provider.py +294 -0
- hal0ai-0.9.8/src/hal0/agents/hermes_provision.py +5314 -0
- hal0ai-0.9.8/src/hal0/agents/hermes_refresh.py +32 -0
- hal0ai-0.9.8/src/hal0/agents/hermes_templates/AGENTS.md.j2 +61 -0
- hal0ai-0.9.8/src/hal0/agents/hermes_templates/HERMES.md.j2 +44 -0
- hal0ai-0.9.8/src/hal0/agents/hermes_templates/MCP-CLIENTS.md.j2 +93 -0
- hal0ai-0.9.8/src/hal0/agents/hermes_templates/SOUL.md.j2 +44 -0
- hal0ai-0.9.8/src/hal0/agents/hermes_templates/STATE.md.j2 +28 -0
- hal0ai-0.9.8/src/hal0/agents/manager.py +675 -0
- hal0ai-0.9.8/src/hal0/agents/mcp_client.py +282 -0
- hal0ai-0.9.8/src/hal0/agents/opencode/__init__.py +7 -0
- hal0ai-0.9.8/src/hal0/agents/opencode/driver.py +164 -0
- hal0ai-0.9.8/src/hal0/agents/persona.py +94 -0
- hal0ai-0.9.8/src/hal0/agents/personas.py +625 -0
- hal0ai-0.9.8/src/hal0/agents/pi_coder/__init__.py +7 -0
- hal0ai-0.9.8/src/hal0/agents/pi_coder/driver.py +324 -0
- hal0ai-0.9.8/src/hal0/agents/pi_coder/plugins/hal0-memory/index.ts +582 -0
- hal0ai-0.9.8/src/hal0/agents/pi_coder/plugins/hal0-provider/index.ts +156 -0
- hal0ai-0.9.8/src/hal0/agents/pi_coder/themes/hal0.json +58 -0
- hal0ai-0.9.8/src/hal0/agents/provision_engine.py +445 -0
- hal0ai-0.9.8/src/hal0/agents/turnstone/__init__.py +7 -0
- hal0ai-0.9.8/src/hal0/agents/turnstone/driver.py +197 -0
- hal0ai-0.9.8/src/hal0/agents/turnstone_provision.py +871 -0
- hal0ai-0.9.8/src/hal0/api/__init__.py +1739 -0
- hal0ai-0.9.8/src/hal0/api/_audit.py +74 -0
- hal0ai-0.9.8/src/hal0/api/_env_store.py +173 -0
- hal0ai-0.9.8/src/hal0/api/_redact.py +101 -0
- hal0ai-0.9.8/src/hal0/api/_settings_apply.py +310 -0
- hal0ai-0.9.8/src/hal0/api/agents/__init__.py +1 -0
- hal0ai-0.9.8/src/hal0/api/agents/_auth.py +242 -0
- hal0ai-0.9.8/src/hal0/api/agents/budget.py +371 -0
- hal0ai-0.9.8/src/hal0/api/agents/chat_proxy.py +572 -0
- hal0ai-0.9.8/src/hal0/api/agents/memory_stats.py +232 -0
- hal0ai-0.9.8/src/hal0/api/agents/personas.py +414 -0
- hal0ai-0.9.8/src/hal0/api/agents/restart.py +262 -0
- hal0ai-0.9.8/src/hal0/api/deps.py +73 -0
- hal0ai-0.9.8/src/hal0/api/image_cache.py +176 -0
- hal0ai-0.9.8/src/hal0/api/mcp_mount.py +291 -0
- hal0ai-0.9.8/src/hal0/api/middleware/__init__.py +0 -0
- hal0ai-0.9.8/src/hal0/api/middleware/error_codes.py +142 -0
- hal0ai-0.9.8/src/hal0/api/middleware/log_scrub.py +91 -0
- hal0ai-0.9.8/src/hal0/api/middleware/request_id.py +31 -0
- hal0ai-0.9.8/src/hal0/api/openrouter/__init__.py +14 -0
- hal0ai-0.9.8/src/hal0/api/openrouter/_loopback.py +86 -0
- hal0ai-0.9.8/src/hal0/api/openrouter/auth.py +47 -0
- hal0ai-0.9.8/src/hal0/api/plugins/__init__.py +28 -0
- hal0ai-0.9.8/src/hal0/api/plugins/manifest_proxy.py +600 -0
- hal0ai-0.9.8/src/hal0/api/routes/__init__.py +0 -0
- hal0ai-0.9.8/src/hal0/api/routes/_memory_subgraph.py +156 -0
- hal0ai-0.9.8/src/hal0/api/routes/activity.py +217 -0
- hal0ai-0.9.8/src/hal0/api/routes/agents.py +321 -0
- hal0ai-0.9.8/src/hal0/api/routes/approvals.py +200 -0
- hal0ai-0.9.8/src/hal0/api/routes/backends.py +455 -0
- hal0ai-0.9.8/src/hal0/api/routes/benchmarks.py +480 -0
- hal0ai-0.9.8/src/hal0/api/routes/board.py +383 -0
- hal0ai-0.9.8/src/hal0/api/routes/board_chat.py +1327 -0
- hal0ai-0.9.8/src/hal0/api/routes/board_ws.py +177 -0
- hal0ai-0.9.8/src/hal0/api/routes/capabilities.py +105 -0
- hal0ai-0.9.8/src/hal0/api/routes/chat_templates.py +141 -0
- hal0ai-0.9.8/src/hal0/api/routes/comfyui.py +951 -0
- hal0ai-0.9.8/src/hal0/api/routes/config.py +328 -0
- hal0ai-0.9.8/src/hal0/api/routes/dashboard_layout.py +168 -0
- hal0ai-0.9.8/src/hal0/api/routes/events.py +207 -0
- hal0ai-0.9.8/src/hal0/api/routes/hardware.py +671 -0
- hal0ai-0.9.8/src/hal0/api/routes/health.py +299 -0
- hal0ai-0.9.8/src/hal0/api/routes/hf.py +195 -0
- hal0ai-0.9.8/src/hal0/api/routes/images.py +53 -0
- hal0ai-0.9.8/src/hal0/api/routes/installer.py +696 -0
- hal0ai-0.9.8/src/hal0/api/routes/journal.py +320 -0
- hal0ai-0.9.8/src/hal0/api/routes/logs.py +250 -0
- hal0ai-0.9.8/src/hal0/api/routes/mcp.py +895 -0
- hal0ai-0.9.8/src/hal0/api/routes/memory.py +1205 -0
- hal0ai-0.9.8/src/hal0/api/routes/memory_admin.py +674 -0
- hal0ai-0.9.8/src/hal0/api/routes/meta.py +92 -0
- hal0ai-0.9.8/src/hal0/api/routes/models.py +2509 -0
- hal0ai-0.9.8/src/hal0/api/routes/npu.py +407 -0
- hal0ai-0.9.8/src/hal0/api/routes/ports.py +46 -0
- hal0ai-0.9.8/src/hal0/api/routes/power.py +138 -0
- hal0ai-0.9.8/src/hal0/api/routes/profiles.py +329 -0
- hal0ai-0.9.8/src/hal0/api/routes/providers.py +638 -0
- hal0ai-0.9.8/src/hal0/api/routes/proxmox.py +227 -0
- hal0ai-0.9.8/src/hal0/api/routes/secrets.py +243 -0
- hal0ai-0.9.8/src/hal0/api/routes/services.py +285 -0
- hal0ai-0.9.8/src/hal0/api/routes/services_health.py +276 -0
- hal0ai-0.9.8/src/hal0/api/routes/settings.py +564 -0
- hal0ai-0.9.8/src/hal0/api/routes/slots.py +1846 -0
- hal0ai-0.9.8/src/hal0/api/routes/stacks.py +547 -0
- hal0ai-0.9.8/src/hal0/api/routes/throughput.py +154 -0
- hal0ai-0.9.8/src/hal0/api/routes/updater.py +963 -0
- hal0ai-0.9.8/src/hal0/api/routes/v1.py +1542 -0
- hal0ai-0.9.8/src/hal0/bench/__init__.py +20 -0
- hal0ai-0.9.8/src/hal0/bench/cli.py +1034 -0
- hal0ai-0.9.8/src/hal0/bench/control.py +127 -0
- hal0ai-0.9.8/src/hal0/bench/evalrun.py +516 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/cipher-chain/README.md +2 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/cipher-chain/secret.txt +1 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/codebase-combine/README.md +2 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/codebase-combine/lib/util.py +5 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/codebase-combine/src/config.py +5 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/dep-trace/a.py +8 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/dep-trace/keys.py +3 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/dep-trace/registry.json +1 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/grep-hunt/deep/nested/license.conf +1 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/grep-hunt/deep/readme.txt +1 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/grep-hunt/mod_1.py +2 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/grep-hunt/mod_2.py +2 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/grep-hunt/mod_3.py +2 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/grep-hunt/pods.yaml +3 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/loop-aggregate/notes.md +3 -0
- hal0ai-0.9.8/src/hal0/bench/evals/agentic/fixtures/loop-aggregate/orders.csv +8 -0
- hal0ai-0.9.8/src/hal0/bench/parsers.py +250 -0
- hal0ai-0.9.8/src/hal0/bench/planner.py +409 -0
- hal0ai-0.9.8/src/hal0/bench/publish.py +197 -0
- hal0ai-0.9.8/src/hal0/bench/regress.py +117 -0
- hal0ai-0.9.8/src/hal0/bench/runner.py +587 -0
- hal0ai-0.9.8/src/hal0/bench/schema.py +271 -0
- hal0ai-0.9.8/src/hal0/bench/store.py +275 -0
- hal0ai-0.9.8/src/hal0/bench/suites.py +181 -0
- hal0ai-0.9.8/src/hal0/board/__init__.py +271 -0
- hal0ai-0.9.8/src/hal0/bundles/__init__.py +33 -0
- hal0ai-0.9.8/src/hal0/bundles/eligibility.py +101 -0
- hal0ai-0.9.8/src/hal0/bundles/schema.py +226 -0
- hal0ai-0.9.8/src/hal0/bundles/tiers.py +138 -0
- hal0ai-0.9.8/src/hal0/capabilities/__init__.py +22 -0
- hal0ai-0.9.8/src/hal0/capabilities/catalog.py +978 -0
- hal0ai-0.9.8/src/hal0/capabilities/config.py +411 -0
- hal0ai-0.9.8/src/hal0/capabilities/orchestrator.py +889 -0
- hal0ai-0.9.8/src/hal0/capabilities/profile_fit.py +52 -0
- hal0ai-0.9.8/src/hal0/cli/__init__.py +1 -0
- hal0ai-0.9.8/src/hal0/cli/_shared.py +136 -0
- hal0ai-0.9.8/src/hal0/cli/agent_commands.py +1502 -0
- hal0ai-0.9.8/src/hal0/cli/agent_shim.py +753 -0
- hal0ai-0.9.8/src/hal0/cli/app_commands.py +158 -0
- hal0ai-0.9.8/src/hal0/cli/bench_commands.py +33 -0
- hal0ai-0.9.8/src/hal0/cli/capabilities_commands.py +332 -0
- hal0ai-0.9.8/src/hal0/cli/comfyui_commands.py +85 -0
- hal0ai-0.9.8/src/hal0/cli/config_commands.py +257 -0
- hal0ai-0.9.8/src/hal0/cli/doctor_commands.py +1420 -0
- hal0ai-0.9.8/src/hal0/cli/doctor_verify.py +385 -0
- hal0ai-0.9.8/src/hal0/cli/main.py +307 -0
- hal0ai-0.9.8/src/hal0/cli/mcp_commands.py +373 -0
- hal0ai-0.9.8/src/hal0/cli/memory_bank_commands.py +412 -0
- hal0ai-0.9.8/src/hal0/cli/memory_commands.py +517 -0
- hal0ai-0.9.8/src/hal0/cli/memory_migrate_commands.py +580 -0
- hal0ai-0.9.8/src/hal0/cli/memory_mm_commands.py +109 -0
- hal0ai-0.9.8/src/hal0/cli/memory_ops_commands.py +177 -0
- hal0ai-0.9.8/src/hal0/cli/memory_recall_commands.py +84 -0
- hal0ai-0.9.8/src/hal0/cli/migrate_commands.py +761 -0
- hal0ai-0.9.8/src/hal0/cli/model_commands.py +496 -0
- hal0ai-0.9.8/src/hal0/cli/registry_commands.py +307 -0
- hal0ai-0.9.8/src/hal0/cli/setup_command.py +329 -0
- hal0ai-0.9.8/src/hal0/cli/setup_copy.py +92 -0
- hal0ai-0.9.8/src/hal0/cli/setup_install.py +251 -0
- hal0ai-0.9.8/src/hal0/cli/setup_plan.py +219 -0
- hal0ai-0.9.8/src/hal0/cli/setup_ui.py +1015 -0
- hal0ai-0.9.8/src/hal0/cli/slot_commands.py +778 -0
- hal0ai-0.9.8/src/hal0/cli/update_commands.py +734 -0
- hal0ai-0.9.8/src/hal0/cli/upstream_commands.py +556 -0
- hal0ai-0.9.8/src/hal0/comfyui/__init__.py +1 -0
- hal0ai-0.9.8/src/hal0/comfyui/capabilities.py +199 -0
- hal0ai-0.9.8/src/hal0/comfyui/fetch.py +265 -0
- hal0ai-0.9.8/src/hal0/comfyui/orchestrate.py +221 -0
- hal0ai-0.9.8/src/hal0/comfyui/provision.py +159 -0
- hal0ai-0.9.8/src/hal0/comfyui/selection.py +33 -0
- hal0ai-0.9.8/src/hal0/config/__init__.py +35 -0
- hal0ai-0.9.8/src/hal0/config/env.py +109 -0
- hal0ai-0.9.8/src/hal0/config/loader.py +842 -0
- hal0ai-0.9.8/src/hal0/config/locking.py +111 -0
- hal0ai-0.9.8/src/hal0/config/migrations/__init__.py +181 -0
- hal0ai-0.9.8/src/hal0/config/migrations/v1.py +37 -0
- hal0ai-0.9.8/src/hal0/config/network.py +137 -0
- hal0ai-0.9.8/src/hal0/config/paths.py +333 -0
- hal0ai-0.9.8/src/hal0/config/schema.py +3085 -0
- hal0ai-0.9.8/src/hal0/dashboard/__init__.py +1 -0
- hal0ai-0.9.8/src/hal0/dashboard/layout_store.py +194 -0
- hal0ai-0.9.8/src/hal0/dispatcher/__init__.py +44 -0
- hal0ai-0.9.8/src/hal0/dispatcher/_capability_resolve.py +243 -0
- hal0ai-0.9.8/src/hal0/dispatcher/_npu_common.py +21 -0
- hal0ai-0.9.8/src/hal0/dispatcher/memory_dispatcher.py +108 -0
- hal0ai-0.9.8/src/hal0/dispatcher/npu_swap_status.py +149 -0
- hal0ai-0.9.8/src/hal0/dispatcher/npu_trio.py +251 -0
- hal0ai-0.9.8/src/hal0/dispatcher/router.py +1456 -0
- hal0ai-0.9.8/src/hal0/dispatcher/single_flight.py +112 -0
- hal0ai-0.9.8/src/hal0/errors.py +207 -0
- hal0ai-0.9.8/src/hal0/events/__init__.py +270 -0
- hal0ai-0.9.8/src/hal0/hardware/__init__.py +26 -0
- hal0ai-0.9.8/src/hal0/hardware/gpu_view.py +220 -0
- hal0ai-0.9.8/src/hal0/hardware/probe.py +1129 -0
- hal0ai-0.9.8/src/hal0/hardware/pve.py +471 -0
- hal0ai-0.9.8/src/hal0/hardware/recommend.py +265 -0
- hal0ai-0.9.8/src/hal0/hardware/stats.py +295 -0
- hal0ai-0.9.8/src/hal0/install/__init__.py +1 -0
- hal0ai-0.9.8/src/hal0/install/answers.py +477 -0
- hal0ai-0.9.8/src/hal0/install/extensions.py +179 -0
- hal0ai-0.9.8/src/hal0/install/network.py +245 -0
- hal0ai-0.9.8/src/hal0/install/orchestrate.py +606 -0
- hal0ai-0.9.8/src/hal0/install/perms.py +439 -0
- hal0ai-0.9.8/src/hal0/install/profile_derive.py +165 -0
- hal0ai-0.9.8/src/hal0/install/static_seeds.py +87 -0
- hal0ai-0.9.8/src/hal0/install/suggest.py +106 -0
- hal0ai-0.9.8/src/hal0/installer/__init__.py +11 -0
- hal0ai-0.9.8/src/hal0/journal/__init__.py +18 -0
- hal0ai-0.9.8/src/hal0/mcp/__init__.py +42 -0
- hal0ai-0.9.8/src/hal0/mcp/admin.py +1681 -0
- hal0ai-0.9.8/src/hal0/mcp/approval_queue.py +368 -0
- hal0ai-0.9.8/src/hal0/mcp/browser_server.py +400 -0
- hal0ai-0.9.8/src/hal0/mcp/installed.py +325 -0
- hal0ai-0.9.8/src/hal0/mcp/manifest.py +459 -0
- hal0ai-0.9.8/src/hal0/mcp/memory.py +676 -0
- hal0ai-0.9.8/src/hal0/mcp/probes.py +448 -0
- hal0ai-0.9.8/src/hal0/memory/__init__.py +105 -0
- hal0ai-0.9.8/src/hal0/memory/extraction_env.py +124 -0
- hal0ai-0.9.8/src/hal0/memory/hindsight_client.py +144 -0
- hal0ai-0.9.8/src/hal0/memory/hindsight_provider.py +609 -0
- hal0ai-0.9.8/src/hal0/memory/honcho_env.py +240 -0
- hal0ai-0.9.8/src/hal0/memory/honcho_migrate.py +582 -0
- hal0ai-0.9.8/src/hal0/memory/migrate.py +38 -0
- hal0ai-0.9.8/src/hal0/memory/namespace.py +159 -0
- hal0ai-0.9.8/src/hal0/memory/pgvector_provider.py +179 -0
- hal0ai-0.9.8/src/hal0/memory/provider.py +246 -0
- hal0ai-0.9.8/src/hal0/model_fit.py +114 -0
- hal0ai-0.9.8/src/hal0/model_meta/__init__.py +684 -0
- hal0ai-0.9.8/src/hal0/normalize/__init__.py +11 -0
- hal0ai-0.9.8/src/hal0/normalize/messages.py +61 -0
- hal0ai-0.9.8/src/hal0/normalize/resolver.py +164 -0
- hal0ai-0.9.8/src/hal0/normalize/thinking.py +75 -0
- hal0ai-0.9.8/src/hal0/omni_router/__init__.py +38 -0
- hal0ai-0.9.8/src/hal0/omni_router/dispatch.py +426 -0
- hal0ai-0.9.8/src/hal0/omni_router/filter.py +126 -0
- hal0ai-0.9.8/src/hal0/omni_router/route_to_chat.py +227 -0
- hal0ai-0.9.8/src/hal0/omni_router/router.py +282 -0
- hal0ai-0.9.8/src/hal0/omni_router/tool_definitions.json +206 -0
- hal0ai-0.9.8/src/hal0/omni_router/tools.py +129 -0
- hal0ai-0.9.8/src/hal0/openwebui/__init__.py +22 -0
- hal0ai-0.9.8/src/hal0/openwebui/env_writer.py +191 -0
- hal0ai-0.9.8/src/hal0/openwebui/image_pin.py +138 -0
- hal0ai-0.9.8/src/hal0/ports.py +216 -0
- hal0ai-0.9.8/src/hal0/profiles/__init__.py +311 -0
- hal0ai-0.9.8/src/hal0/profiles/portable.py +119 -0
- hal0ai-0.9.8/src/hal0/providers/__init__.py +76 -0
- hal0ai-0.9.8/src/hal0/providers/_gpu.py +214 -0
- hal0ai-0.9.8/src/hal0/providers/base.py +255 -0
- hal0ai-0.9.8/src/hal0/providers/comfyui.py +538 -0
- hal0ai-0.9.8/src/hal0/providers/comfyui_workflows.py +315 -0
- hal0ai-0.9.8/src/hal0/providers/container.py +1713 -0
- hal0ai-0.9.8/src/hal0/providers/flm.py +1115 -0
- hal0ai-0.9.8/src/hal0/providers/kokoro.py +231 -0
- hal0ai-0.9.8/src/hal0/providers/llama_server.py +182 -0
- hal0ai-0.9.8/src/hal0/providers/npu_columns.py +268 -0
- hal0ai-0.9.8/src/hal0/providers/qwen3tts.py +257 -0
- hal0ai-0.9.8/src/hal0/providers/workflows/__init__.py +24 -0
- hal0ai-0.9.8/src/hal0/providers/workflows/sd15_simple.json +81 -0
- hal0ai-0.9.8/src/hal0/providers/workflows/sdxl_turbo_simple.json +81 -0
- hal0ai-0.9.8/src/hal0/registry/__init__.py +38 -0
- hal0ai-0.9.8/src/hal0/registry/curated.py +1093 -0
- hal0ai-0.9.8/src/hal0/registry/detect.py +414 -0
- hal0ai-0.9.8/src/hal0/registry/discover.py +419 -0
- hal0ai-0.9.8/src/hal0/registry/gguf_header.py +345 -0
- hal0ai-0.9.8/src/hal0/registry/model.py +228 -0
- hal0ai-0.9.8/src/hal0/registry/model_store.py +321 -0
- hal0ai-0.9.8/src/hal0/registry/pull.py +1534 -0
- hal0ai-0.9.8/src/hal0/registry/seeds/haloai_models.json +682 -0
- hal0ai-0.9.8/src/hal0/registry/store.py +541 -0
- hal0ai-0.9.8/src/hal0/registry/update_check.py +149 -0
- hal0ai-0.9.8/src/hal0/release/__init__.py +1 -0
- hal0ai-0.9.8/src/hal0/release/channel.py +83 -0
- hal0ai-0.9.8/src/hal0/release/notes.py +98 -0
- hal0ai-0.9.8/src/hal0/services/__init__.py +26 -0
- hal0ai-0.9.8/src/hal0/services/mdns.py +150 -0
- hal0ai-0.9.8/src/hal0/services/registry.py +155 -0
- hal0ai-0.9.8/src/hal0/services/systemd.py +211 -0
- hal0ai-0.9.8/src/hal0/slot_config/__init__.py +640 -0
- hal0ai-0.9.8/src/hal0/slot_view/__init__.py +831 -0
- hal0ai-0.9.8/src/hal0/slots/__init__.py +28 -0
- hal0ai-0.9.8/src/hal0/slots/arbiter.py +709 -0
- hal0ai-0.9.8/src/hal0/slots/argv.py +304 -0
- hal0ai-0.9.8/src/hal0/slots/capacity.py +482 -0
- hal0ai-0.9.8/src/hal0/slots/manager.py +4145 -0
- hal0ai-0.9.8/src/hal0/slots/metrics.py +83 -0
- hal0ai-0.9.8/src/hal0/slots/state.py +368 -0
- hal0ai-0.9.8/src/hal0/slots/ttft_samples.py +130 -0
- hal0ai-0.9.8/src/hal0/stacks/__init__.py +153 -0
- hal0ai-0.9.8/src/hal0/stacks/apply.py +456 -0
- hal0ai-0.9.8/src/hal0/stacks/portable.py +391 -0
- hal0ai-0.9.8/src/hal0/stacks/state.py +110 -0
- hal0ai-0.9.8/src/hal0/templates/__init__.py +39 -0
- hal0ai-0.9.8/src/hal0/templates/chat/chatml.jinja +7 -0
- hal0ai-0.9.8/src/hal0/templates/chat/llama3.jinja +9 -0
- hal0ai-0.9.8/src/hal0/templates/chat/qwen3.6-27b-mtp.jinja +287 -0
- hal0ai-0.9.8/src/hal0/updater/__init__.py +57 -0
- hal0ai-0.9.8/src/hal0/updater/updater.py +2252 -0
- hal0ai-0.9.8/src/hal0/upstreams/__init__.py +35 -0
- hal0ai-0.9.8/src/hal0/upstreams/filters.py +75 -0
- hal0ai-0.9.8/src/hal0/upstreams/integrations.py +237 -0
- hal0ai-0.9.8/src/hal0/upstreams/registry.py +854 -0
- hal0ai-0.9.8/tests/__init__.py +0 -0
- hal0ai-0.9.8/tests/activity/__init__.py +0 -0
- hal0ai-0.9.8/tests/activity/test_store.py +385 -0
- hal0ai-0.9.8/tests/agents/__init__.py +0 -0
- hal0ai-0.9.8/tests/agents/_hermes_fakes.py +78 -0
- hal0ai-0.9.8/tests/agents/conftest.py +30 -0
- hal0ai-0.9.8/tests/agents/hermes/__init__.py +1 -0
- hal0ai-0.9.8/tests/agents/hermes/plugins/__init__.py +1 -0
- hal0ai-0.9.8/tests/agents/hermes/plugins/test_memory_hindsight_plugin.py +665 -0
- hal0ai-0.9.8/tests/agents/hermes_plugins/test_seed_parity.py +40 -0
- hal0ai-0.9.8/tests/agents/test_agent_memory_stats_endpoint.py +187 -0
- hal0ai-0.9.8/tests/agents/test_agent_restart_endpoint.py +298 -0
- hal0ai-0.9.8/tests/agents/test_budget_module.py +396 -0
- hal0ai-0.9.8/tests/agents/test_hal0_memory_client.py +280 -0
- hal0ai-0.9.8/tests/agents/test_hermes_capture_adopt.py +453 -0
- hal0ai-0.9.8/tests/agents/test_hermes_env_seam.py +149 -0
- hal0ai-0.9.8/tests/agents/test_hermes_live_resolve_render.py +83 -0
- hal0ai-0.9.8/tests/agents/test_hermes_provision.py +2462 -0
- hal0ai-0.9.8/tests/agents/test_hermes_provision_collect.py +114 -0
- hal0ai-0.9.8/tests/agents/test_hermes_provision_context.py +225 -0
- hal0ai-0.9.8/tests/agents/test_hermes_provision_honcho.py +259 -0
- hal0ai-0.9.8/tests/agents/test_hermes_provision_idempotency.py +481 -0
- hal0ai-0.9.8/tests/agents/test_hermes_provision_install_artifacts.py +130 -0
- hal0ai-0.9.8/tests/agents/test_hermes_provision_ownership.py +222 -0
- hal0ai-0.9.8/tests/agents/test_hermes_state_render.py +360 -0
- hal0ai-0.9.8/tests/agents/test_hermes_upgrade.py +115 -0
- hal0ai-0.9.8/tests/agents/test_hermes_wrapper.py +615 -0
- hal0ai-0.9.8/tests/agents/test_manager.py +756 -0
- hal0ai-0.9.8/tests/agents/test_mcp_client.py +245 -0
- hal0ai-0.9.8/tests/agents/test_opencode_shim.py +161 -0
- hal0ai-0.9.8/tests/agents/test_personas.py +263 -0
- hal0ai-0.9.8/tests/agents/test_personas_budget_roundtrip.py +108 -0
- hal0ai-0.9.8/tests/agents/test_pi_coder_shim.py +353 -0
- hal0ai-0.9.8/tests/agents/test_provision_engine.py +167 -0
- hal0ai-0.9.8/tests/agents/test_run_as_hal0_guard.py +176 -0
- hal0ai-0.9.8/tests/agents/test_turnstone_driver.py +114 -0
- hal0ai-0.9.8/tests/agents/test_turnstone_provision.py +216 -0
- hal0ai-0.9.8/tests/api/__init__.py +0 -0
- hal0ai-0.9.8/tests/api/conftest.py +63 -0
- hal0ai-0.9.8/tests/api/test_activity.py +123 -0
- hal0ai-0.9.8/tests/api/test_activity_instrumentation.py +33 -0
- hal0ai-0.9.8/tests/api/test_activity_routes_instrumented.py +129 -0
- hal0ai-0.9.8/tests/api/test_agents_budget.py +306 -0
- hal0ai-0.9.8/tests/api/test_agents_personas.py +308 -0
- hal0ai-0.9.8/tests/api/test_agents_routes.py +100 -0
- hal0ai-0.9.8/tests/api/test_apply_selections.py +115 -0
- hal0ai-0.9.8/tests/api/test_approvals.py +172 -0
- hal0ai-0.9.8/tests/api/test_backends_npu_canonical_fields.py +327 -0
- hal0ai-0.9.8/tests/api/test_chat_normalization.py +414 -0
- hal0ai-0.9.8/tests/api/test_chat_proxy.py +563 -0
- hal0ai-0.9.8/tests/api/test_chat_proxy_auth.py +197 -0
- hal0ai-0.9.8/tests/api/test_chat_templates.py +219 -0
- hal0ai-0.9.8/tests/api/test_comfyui_category.py +31 -0
- hal0ai-0.9.8/tests/api/test_comfyui_fetch_route.py +100 -0
- hal0ai-0.9.8/tests/api/test_comfyui_phase4.py +641 -0
- hal0ai-0.9.8/tests/api/test_comfyui_proxy.py +580 -0
- hal0ai-0.9.8/tests/api/test_config_model_roots.py +108 -0
- hal0ai-0.9.8/tests/api/test_config_urls.py +216 -0
- hal0ai-0.9.8/tests/api/test_cpu_util.py +116 -0
- hal0ai-0.9.8/tests/api/test_dashboard_layout.py +160 -0
- hal0ai-0.9.8/tests/api/test_events.py +377 -0
- hal0ai-0.9.8/tests/api/test_events_fixes.py +90 -0
- hal0ai-0.9.8/tests/api/test_features_health.py +78 -0
- hal0ai-0.9.8/tests/api/test_gpu_arbiter_idle_lifespan.py +27 -0
- hal0ai-0.9.8/tests/api/test_hardware_routes.py +593 -0
- hal0ai-0.9.8/tests/api/test_health_degraded.py +51 -0
- hal0ai-0.9.8/tests/api/test_hf_routes.py +319 -0
- hal0ai-0.9.8/tests/api/test_install_apply.py +224 -0
- hal0ai-0.9.8/tests/api/test_install_services.py +42 -0
- hal0ai-0.9.8/tests/api/test_installer_routes.py +238 -0
- hal0ai-0.9.8/tests/api/test_journal_routes.py +360 -0
- hal0ai-0.9.8/tests/api/test_llm_slot_views.py +75 -0
- hal0ai-0.9.8/tests/api/test_logs_routes.py +106 -0
- hal0ai-0.9.8/tests/api/test_mcp_identity.py +75 -0
- hal0ai-0.9.8/tests/api/test_mcp_routes.py +747 -0
- hal0ai-0.9.8/tests/api/test_mcp_transport_security.py +134 -0
- hal0ai-0.9.8/tests/api/test_memory_admin_document_transfer.py +167 -0
- hal0ai-0.9.8/tests/api/test_memory_admin_routes.py +445 -0
- hal0ai-0.9.8/tests/api/test_memory_degraded_status.py +81 -0
- hal0ai-0.9.8/tests/api/test_memory_gate.py +60 -0
- hal0ai-0.9.8/tests/api/test_memory_graph_route.py +331 -0
- hal0ai-0.9.8/tests/api/test_memory_honcho_routes.py +441 -0
- hal0ai-0.9.8/tests/api/test_memory_provider_rename.py +23 -0
- hal0ai-0.9.8/tests/api/test_memory_rest_routes.py +585 -0
- hal0ai-0.9.8/tests/api/test_memory_subgraph.py +234 -0
- hal0ai-0.9.8/tests/api/test_meta_enums.py +120 -0
- hal0ai-0.9.8/tests/api/test_metrics_prometheus_route.py +199 -0
- hal0ai-0.9.8/tests/api/test_middleware.py +89 -0
- hal0ai-0.9.8/tests/api/test_model_cache_refresh.py +199 -0
- hal0ai-0.9.8/tests/api/test_models_add_from_path.py +191 -0
- hal0ai-0.9.8/tests/api/test_models_catalogue.py +48 -0
- hal0ai-0.9.8/tests/api/test_models_crud.py +518 -0
- hal0ai-0.9.8/tests/api/test_models_preview.py +167 -0
- hal0ai-0.9.8/tests/api/test_models_pull_capability.py +53 -0
- hal0ai-0.9.8/tests/api/test_models_routes.py +649 -0
- hal0ai-0.9.8/tests/api/test_models_scan.py +74 -0
- hal0ai-0.9.8/tests/api/test_models_updates.py +201 -0
- hal0ai-0.9.8/tests/api/test_npu_occupancy.py +308 -0
- hal0ai-0.9.8/tests/api/test_npu_util.py +185 -0
- hal0ai-0.9.8/tests/api/test_openrouter_auth_loopback.py +285 -0
- hal0ai-0.9.8/tests/api/test_persona_update.py +115 -0
- hal0ai-0.9.8/tests/api/test_plugin_manifest_proxy.py +565 -0
- hal0ai-0.9.8/tests/api/test_port_registry.py +166 -0
- hal0ai-0.9.8/tests/api/test_power.py +142 -0
- hal0ai-0.9.8/tests/api/test_profiles_crud.py +409 -0
- hal0ai-0.9.8/tests/api/test_profiles_portable_routes.py +186 -0
- hal0ai-0.9.8/tests/api/test_profiles_route.py +227 -0
- hal0ai-0.9.8/tests/api/test_providers.py +175 -0
- hal0ai-0.9.8/tests/api/test_providers_routes.py +546 -0
- hal0ai-0.9.8/tests/api/test_pull_routes.py +564 -0
- hal0ai-0.9.8/tests/api/test_pull_shutdown.py +257 -0
- hal0ai-0.9.8/tests/api/test_redact.py +275 -0
- hal0ai-0.9.8/tests/api/test_secrets.py +190 -0
- hal0ai-0.9.8/tests/api/test_seed_multiplex_models.py +96 -0
- hal0ai-0.9.8/tests/api/test_services_comfyui.py +72 -0
- hal0ai-0.9.8/tests/api/test_services_health.py +268 -0
- hal0ai-0.9.8/tests/api/test_services_honcho.py +78 -0
- hal0ai-0.9.8/tests/api/test_services_page.py +331 -0
- hal0ai-0.9.8/tests/api/test_settings_apply.py +374 -0
- hal0ai-0.9.8/tests/api/test_settings_models_store.py +306 -0
- hal0ai-0.9.8/tests/api/test_settings_routes.py +134 -0
- hal0ai-0.9.8/tests/api/test_slot_config_validation.py +201 -0
- hal0ai-0.9.8/tests/api/test_slots_container_state.py +439 -0
- hal0ai-0.9.8/tests/api/test_slots_image_pull.py +371 -0
- hal0ai-0.9.8/tests/api/test_slots_npu_fields.py +174 -0
- hal0ai-0.9.8/tests/api/test_slots_policy.py +123 -0
- hal0ai-0.9.8/tests/api/test_slots_routes.py +1676 -0
- hal0ai-0.9.8/tests/api/test_smoke.py +65 -0
- hal0ai-0.9.8/tests/api/test_stacks_routes.py +349 -0
- hal0ai-0.9.8/tests/api/test_startup_persona_seed.py +83 -0
- hal0ai-0.9.8/tests/api/test_startup_slot_seed.py +66 -0
- hal0ai-0.9.8/tests/api/test_throughput_history.py +190 -0
- hal0ai-0.9.8/tests/api/test_tts_request_defaults.py +146 -0
- hal0ai-0.9.8/tests/api/test_typed_errors.py +472 -0
- hal0ai-0.9.8/tests/api/test_updater_routes.py +618 -0
- hal0ai-0.9.8/tests/api/test_updater_slot_drift.py +140 -0
- hal0ai-0.9.8/tests/api/test_upstream_dedup.py +299 -0
- hal0ai-0.9.8/tests/api/test_v1_audio.py +380 -0
- hal0ai-0.9.8/tests/api/test_v1_backend_aware_load.py +190 -0
- hal0ai-0.9.8/tests/api/test_v1_chat_slot_alias.py +319 -0
- hal0ai-0.9.8/tests/api/test_v1_dispatch.py +109 -0
- hal0ai-0.9.8/tests/api/test_v1_images.py +307 -0
- hal0ai-0.9.8/tests/api/test_v1_models_filters.py +135 -0
- hal0ai-0.9.8/tests/api/test_v1_npu_trio_routing.py +432 -0
- hal0ai-0.9.8/tests/api/test_v1_proxy.py +129 -0
- hal0ai-0.9.8/tests/api/test_v1_slot_alias_models.py +189 -0
- hal0ai-0.9.8/tests/api/test_virtual_models.py +130 -0
- hal0ai-0.9.8/tests/bench/__init__.py +0 -0
- hal0ai-0.9.8/tests/bench/fixtures/llama_bench_0.8b_rocm.json +92 -0
- hal0ai-0.9.8/tests/bench/fixtures/llama_bench_0.8b_rocm.meta.json +1 -0
- hal0ai-0.9.8/tests/bench/fixtures/server_ab_ab.json +171 -0
- hal0ai-0.9.8/tests/bench/fixtures/server_ab_embed.json +18 -0
- hal0ai-0.9.8/tests/bench/fixtures/server_ab_reuse.json +39 -0
- hal0ai-0.9.8/tests/bench/test_evalrun.py +98 -0
- hal0ai-0.9.8/tests/bench/test_parsers.py +135 -0
- hal0ai-0.9.8/tests/bench/test_planner.py +168 -0
- hal0ai-0.9.8/tests/bench/test_schema.py +120 -0
- hal0ai-0.9.8/tests/bench/test_server_ab_helpers.py +78 -0
- hal0ai-0.9.8/tests/bench/test_worker_eval.py +169 -0
- hal0ai-0.9.8/tests/board/__init__.py +0 -0
- hal0ai-0.9.8/tests/board/test_board_chat.py +1055 -0
- hal0ai-0.9.8/tests/board/test_board_chat_admin_tools.py +212 -0
- hal0ai-0.9.8/tests/board/test_board_chat_text_toolcalls.py +74 -0
- hal0ai-0.9.8/tests/board/test_board_chat_tool_use_e2e.py +438 -0
- hal0ai-0.9.8/tests/board/test_board_client.py +243 -0
- hal0ai-0.9.8/tests/board/test_board_routes.py +360 -0
- hal0ai-0.9.8/tests/board/test_board_ws.py +223 -0
- hal0ai-0.9.8/tests/bundles/__init__.py +0 -0
- hal0ai-0.9.8/tests/bundles/test_eligibility.py +128 -0
- hal0ai-0.9.8/tests/bundles/test_schema.py +157 -0
- hal0ai-0.9.8/tests/bundles/test_tiers.py +139 -0
- hal0ai-0.9.8/tests/capabilities/__init__.py +0 -0
- hal0ai-0.9.8/tests/capabilities/test_catalog_backends.py +99 -0
- hal0ai-0.9.8/tests/capabilities/test_catalog_flm_blacklist.py +71 -0
- hal0ai-0.9.8/tests/capabilities/test_catalog_npu_stt.py +76 -0
- hal0ai-0.9.8/tests/capabilities/test_model_fit_validation.py +166 -0
- hal0ai-0.9.8/tests/capabilities/test_npu_container_modality.py +231 -0
- hal0ai-0.9.8/tests/capabilities/test_npu_phase2_integration.py +195 -0
- hal0ai-0.9.8/tests/capabilities/test_orchestrator_reconciliation.py +979 -0
- hal0ai-0.9.8/tests/capabilities/test_stt_curation.py +39 -0
- hal0ai-0.9.8/tests/capabilities/test_trio_status_inheritance.py +140 -0
- hal0ai-0.9.8/tests/capabilities/test_tts_capability_switch.py +284 -0
- hal0ai-0.9.8/tests/capabilities/test_vision_curation.py +63 -0
- hal0ai-0.9.8/tests/capabilities/test_vision_mmproj_autosurface.py +67 -0
- hal0ai-0.9.8/tests/cli/__init__.py +0 -0
- hal0ai-0.9.8/tests/cli/test_agent_approvals_list.py +212 -0
- hal0ai-0.9.8/tests/cli/test_agent_install_hermes.py +552 -0
- hal0ai-0.9.8/tests/cli/test_agent_shim.py +620 -0
- hal0ai-0.9.8/tests/cli/test_agent_shim_turnstone.py +99 -0
- hal0ai-0.9.8/tests/cli/test_agent_uninstall_memory.py +395 -0
- hal0ai-0.9.8/tests/cli/test_agents_personas.py +112 -0
- hal0ai-0.9.8/tests/cli/test_app_install_openwebui.py +70 -0
- hal0ai-0.9.8/tests/cli/test_app_list_uninstall.py +84 -0
- hal0ai-0.9.8/tests/cli/test_capabilities_commands.py +161 -0
- hal0ai-0.9.8/tests/cli/test_cli_docs_parity.py +97 -0
- hal0ai-0.9.8/tests/cli/test_config_hardware_probe.py +80 -0
- hal0ai-0.9.8/tests/cli/test_config_migrate.py +93 -0
- hal0ai-0.9.8/tests/cli/test_config_show_edit_selector.py +72 -0
- hal0ai-0.9.8/tests/cli/test_doctor.py +565 -0
- hal0ai-0.9.8/tests/cli/test_doctor_models.py +171 -0
- hal0ai-0.9.8/tests/cli/test_doctor_perms.py +171 -0
- hal0ai-0.9.8/tests/cli/test_doctor_profiles.py +97 -0
- hal0ai-0.9.8/tests/cli/test_doctor_verify.py +243 -0
- hal0ai-0.9.8/tests/cli/test_json_output.py +128 -0
- hal0ai-0.9.8/tests/cli/test_memory_bank_commands.py +227 -0
- hal0ai-0.9.8/tests/cli/test_memory_graph_commands.py +126 -0
- hal0ai-0.9.8/tests/cli/test_memory_migrate.py +27 -0
- hal0ai-0.9.8/tests/cli/test_memory_migrate_unify.py +266 -0
- hal0ai-0.9.8/tests/cli/test_memory_mm_commands.py +64 -0
- hal0ai-0.9.8/tests/cli/test_memory_ops_commands.py +169 -0
- hal0ai-0.9.8/tests/cli/test_memory_provider_commands.py +290 -0
- hal0ai-0.9.8/tests/cli/test_memory_recall_commands.py +71 -0
- hal0ai-0.9.8/tests/cli/test_migrate_model_layout.py +696 -0
- hal0ai-0.9.8/tests/cli/test_model_first_run_commands.py +283 -0
- hal0ai-0.9.8/tests/cli/test_model_import_backup.py +73 -0
- hal0ai-0.9.8/tests/cli/test_registry_import.py +407 -0
- hal0ai-0.9.8/tests/cli/test_serve_bind_host.py +71 -0
- hal0ai-0.9.8/tests/cli/test_setup_command.py +106 -0
- hal0ai-0.9.8/tests/cli/test_setup_install.py +157 -0
- hal0ai-0.9.8/tests/cli/test_setup_ui.py +598 -0
- hal0ai-0.9.8/tests/cli/test_slot_create_flags.py +271 -0
- hal0ai-0.9.8/tests/cli/test_slot_metrics_capacity.py +92 -0
- hal0ai-0.9.8/tests/cli/test_slot_status.py +41 -0
- hal0ai-0.9.8/tests/cli/test_slot_verb_aliases.py +103 -0
- hal0ai-0.9.8/tests/cli/test_uninstall.py +221 -0
- hal0ai-0.9.8/tests/cli/test_update_commands.py +370 -0
- hal0ai-0.9.8/tests/cli/test_upstream_commands.py +305 -0
- hal0ai-0.9.8/tests/comfyui/__init__.py +0 -0
- hal0ai-0.9.8/tests/comfyui/test_capabilities.py +62 -0
- hal0ai-0.9.8/tests/comfyui/test_fetch.py +306 -0
- hal0ai-0.9.8/tests/comfyui/test_fetch_dryrun.py +44 -0
- hal0ai-0.9.8/tests/comfyui/test_fetch_paths.py +176 -0
- hal0ai-0.9.8/tests/comfyui/test_fetch_scripts.py +129 -0
- hal0ai-0.9.8/tests/comfyui/test_fetch_ws_g.py +177 -0
- hal0ai-0.9.8/tests/comfyui/test_hal0_gpu_gate.py +100 -0
- hal0ai-0.9.8/tests/comfyui/test_orchestrate.py +123 -0
- hal0ai-0.9.8/tests/comfyui/test_provision.py +107 -0
- hal0ai-0.9.8/tests/comfyui/test_selection.py +51 -0
- hal0ai-0.9.8/tests/config/__init__.py +0 -0
- hal0ai-0.9.8/tests/config/test_agent_schema.py +178 -0
- hal0ai-0.9.8/tests/config/test_chat_template_resolve.py +19 -0
- hal0ai-0.9.8/tests/config/test_default_image_gate.py +38 -0
- hal0ai-0.9.8/tests/config/test_honcho_schema.py +123 -0
- hal0ai-0.9.8/tests/config/test_loader.py +677 -0
- hal0ai-0.9.8/tests/config/test_loader_profiles_save.py +79 -0
- hal0ai-0.9.8/tests/config/test_locking.py +77 -0
- hal0ai-0.9.8/tests/config/test_memory_engine_field.py +22 -0
- hal0ai-0.9.8/tests/config/test_memory_graph_schema.py +94 -0
- hal0ai-0.9.8/tests/config/test_model_store_root.py +54 -0
- hal0ai-0.9.8/tests/config/test_models_config.py +74 -0
- hal0ai-0.9.8/tests/config/test_mtp_override.py +152 -0
- hal0ai-0.9.8/tests/config/test_network.py +278 -0
- hal0ai-0.9.8/tests/config/test_paths_stub.py +45 -0
- hal0ai-0.9.8/tests/config/test_profile_derivation_parity.py +182 -0
- hal0ai-0.9.8/tests/config/test_profiles.py +446 -0
- hal0ai-0.9.8/tests/config/test_schema.py +484 -0
- hal0ai-0.9.8/tests/config/test_schema_migration.py +429 -0
- hal0ai-0.9.8/tests/config/test_schema_npu.py +109 -0
- hal0ai-0.9.8/tests/config/test_schema_seeds_c5.py +138 -0
- hal0ai-0.9.8/tests/config/test_schema_seeds_d1.py +138 -0
- hal0ai-0.9.8/tests/config/test_stacks_loader.py +56 -0
- hal0ai-0.9.8/tests/config/test_stacks_schema.py +122 -0
- hal0ai-0.9.8/tests/config/test_upstream_filters.py +131 -0
- hal0ai-0.9.8/tests/conftest.py +71 -0
- hal0ai-0.9.8/tests/dispatcher/__init__.py +0 -0
- hal0ai-0.9.8/tests/dispatcher/test_arbiter_dispatch.py +681 -0
- hal0ai-0.9.8/tests/dispatcher/test_capability_wake_on_evict.py +235 -0
- hal0ai-0.9.8/tests/dispatcher/test_composite_dispatch.py +206 -0
- hal0ai-0.9.8/tests/dispatcher/test_container_gate.py +243 -0
- hal0ai-0.9.8/tests/dispatcher/test_forward.py +154 -0
- hal0ai-0.9.8/tests/dispatcher/test_image_routing.py +160 -0
- hal0ai-0.9.8/tests/dispatcher/test_npu_swap_status.py +330 -0
- hal0ai-0.9.8/tests/dispatcher/test_npu_trio.py +388 -0
- hal0ai-0.9.8/tests/dispatcher/test_pool_bounds.py +141 -0
- hal0ai-0.9.8/tests/dispatcher/test_rerank_path_routing.py +280 -0
- hal0ai-0.9.8/tests/dispatcher/test_router.py +799 -0
- hal0ai-0.9.8/tests/dispatcher/test_serving_integration.py +669 -0
- hal0ai-0.9.8/tests/dispatcher/test_single_flight.py +128 -0
- hal0ai-0.9.8/tests/dispatcher/test_tts_path_routing.py +402 -0
- hal0ai-0.9.8/tests/fixtures/slots_all_ready.json +149 -0
- hal0ai-0.9.8/tests/fixtures/slots_cold.json +149 -0
- hal0ai-0.9.8/tests/fixtures/slots_primary_ready.json +149 -0
- hal0ai-0.9.8/tests/hardware/__init__.py +0 -0
- hal0ai-0.9.8/tests/hardware/test_gpu_view.py +264 -0
- hal0ai-0.9.8/tests/hardware/test_probe.py +937 -0
- hal0ai-0.9.8/tests/hardware/test_pve.py +539 -0
- hal0ai-0.9.8/tests/hardware/test_recommend.py +197 -0
- hal0ai-0.9.8/tests/hardware/test_stats.py +235 -0
- hal0ai-0.9.8/tests/hardware/test_stats_gpu_view_delegation.py +106 -0
- hal0ai-0.9.8/tests/harness/FINDINGS.md +1365 -0
- hal0ai-0.9.8/tests/harness/README.md +506 -0
- hal0ai-0.9.8/tests/harness/agents-test.sh +565 -0
- hal0ai-0.9.8/tests/harness/cli-test.sh +294 -0
- hal0ai-0.9.8/tests/harness/harness-cleanup.sh +116 -0
- hal0ai-0.9.8/tests/harness/installer-test.sh +320 -0
- hal0ai-0.9.8/tests/harness/integration/__init__.py +28 -0
- hal0ai-0.9.8/tests/harness/integration/_delegate_fakes.py +385 -0
- hal0ai-0.9.8/tests/harness/integration/_delegate_runner.py +268 -0
- hal0ai-0.9.8/tests/harness/integration/conftest.py +205 -0
- hal0ai-0.9.8/tests/harness/integration/test_delegate_task_dispatch_matrix.py +249 -0
- hal0ai-0.9.8/tests/harness/integration/test_delegate_task_docker.py +159 -0
- hal0ai-0.9.8/tests/harness/integration/test_delegate_task_local.py +125 -0
- hal0ai-0.9.8/tests/harness/integration/test_delegate_task_modal.py +159 -0
- hal0ai-0.9.8/tests/harness/integration/test_v0_3_chat_roundtrip.py +202 -0
- hal0ai-0.9.8/tests/harness/integration/test_v0_3_persona_activate.py +184 -0
- hal0ai-0.9.8/tests/harness/integration/test_voice_roundtrip.py +76 -0
- hal0ai-0.9.8/tests/harness/lib/common.sh +131 -0
- hal0ai-0.9.8/tests/harness/runtime-test.sh +211 -0
- hal0ai-0.9.8/tests/install/test_answers.py +448 -0
- hal0ai-0.9.8/tests/install/test_comfyui_extra_paths.py +41 -0
- hal0ai-0.9.8/tests/install/test_comfyui_scripts_shipped.py +146 -0
- hal0ai-0.9.8/tests/install/test_emit_answers.py +246 -0
- hal0ai-0.9.8/tests/install/test_extensions.py +150 -0
- hal0ai-0.9.8/tests/install/test_extensions_comfyui.py +41 -0
- hal0ai-0.9.8/tests/install/test_network.py +112 -0
- hal0ai-0.9.8/tests/install/test_orchestrate.py +645 -0
- hal0ai-0.9.8/tests/install/test_perms.py +266 -0
- hal0ai-0.9.8/tests/install/test_profile_derive.py +205 -0
- hal0ai-0.9.8/tests/install/test_setup_plan.py +172 -0
- hal0ai-0.9.8/tests/install/test_static_seeds.py +90 -0
- hal0ai-0.9.8/tests/install/test_suggest.py +74 -0
- hal0ai-0.9.8/tests/installer/test_bootstrap_prereq_parity.py +204 -0
- hal0ai-0.9.8/tests/installer/test_distro.sh +71 -0
- hal0ai-0.9.8/tests/installer/test_pi_coder_install.sh +58 -0
- hal0ai-0.9.8/tests/installer/test_platform_gate_hardening.py +164 -0
- hal0ai-0.9.8/tests/installer/test_preflight_gpu_gate.py +147 -0
- hal0ai-0.9.8/tests/installer/test_preflight_ports_own_service.py +104 -0
- hal0ai-0.9.8/tests/installer/test_preflight_python_floor.py +191 -0
- hal0ai-0.9.8/tests/journal/__init__.py +0 -0
- hal0ai-0.9.8/tests/journal/test_now_iso.py +33 -0
- hal0ai-0.9.8/tests/mcp/__init__.py +1 -0
- hal0ai-0.9.8/tests/mcp/conftest.py +77 -0
- hal0ai-0.9.8/tests/mcp/test_admin.py +702 -0
- hal0ai-0.9.8/tests/mcp/test_admin_stacks.py +134 -0
- hal0ai-0.9.8/tests/mcp/test_approval_queue.py +301 -0
- hal0ai-0.9.8/tests/mcp/test_browser_server_smoke.py +148 -0
- hal0ai-0.9.8/tests/mcp/test_installed.py +180 -0
- hal0ai-0.9.8/tests/mcp/test_logs_tail_redaction.py +192 -0
- hal0ai-0.9.8/tests/mcp/test_manifest.py +248 -0
- hal0ai-0.9.8/tests/mcp/test_mcp_mount_private_header.py +154 -0
- hal0ai-0.9.8/tests/mcp/test_memory.py +349 -0
- hal0ai-0.9.8/tests/mcp/test_memory_recall_tool.py +42 -0
- hal0ai-0.9.8/tests/mcp/test_probes.py +256 -0
- hal0ai-0.9.8/tests/memory/__init__.py +0 -0
- hal0ai-0.9.8/tests/memory/conftest.py +12 -0
- hal0ai-0.9.8/tests/memory/fakes.py +121 -0
- hal0ai-0.9.8/tests/memory/test_extraction_env.py +110 -0
- hal0ai-0.9.8/tests/memory/test_hindsight_client.py +117 -0
- hal0ai-0.9.8/tests/memory/test_hindsight_provider.py +318 -0
- hal0ai-0.9.8/tests/memory/test_honcho_env.py +213 -0
- hal0ai-0.9.8/tests/memory/test_honcho_migrate.py +551 -0
- hal0ai-0.9.8/tests/memory/test_namespace_policy.py +97 -0
- hal0ai-0.9.8/tests/memory/test_pgvector_degrade_safety.py +159 -0
- hal0ai-0.9.8/tests/memory/test_provider_abc.py +76 -0
- hal0ai-0.9.8/tests/memory/test_provider_contract.py +128 -0
- hal0ai-0.9.8/tests/memory/test_provider_factory.py +98 -0
- hal0ai-0.9.8/tests/memory/test_recall_route.py +67 -0
- hal0ai-0.9.8/tests/memory/test_unified_bank.py +433 -0
- hal0ai-0.9.8/tests/model_fit/test_model_fit.py +99 -0
- hal0ai-0.9.8/tests/model_meta/__init__.py +0 -0
- hal0ai-0.9.8/tests/model_meta/test_model_meta.py +422 -0
- hal0ai-0.9.8/tests/normalize/test_messages.py +135 -0
- hal0ai-0.9.8/tests/normalize/test_resolver.py +220 -0
- hal0ai-0.9.8/tests/normalize/test_thinking.py +96 -0
- hal0ai-0.9.8/tests/omni_router/__init__.py +0 -0
- hal0ai-0.9.8/tests/omni_router/conftest.py +141 -0
- hal0ai-0.9.8/tests/omni_router/test_api_wiring.py +85 -0
- hal0ai-0.9.8/tests/omni_router/test_dispatch.py +509 -0
- hal0ai-0.9.8/tests/omni_router/test_filter.py +345 -0
- hal0ai-0.9.8/tests/omni_router/test_route_to_chat.py +456 -0
- hal0ai-0.9.8/tests/omni_router/test_router_loop.py +555 -0
- hal0ai-0.9.8/tests/omni_router/test_tools.py +192 -0
- hal0ai-0.9.8/tests/openwebui/__init__.py +0 -0
- hal0ai-0.9.8/tests/openwebui/conftest.py +19 -0
- hal0ai-0.9.8/tests/openwebui/test_env_writer.py +174 -0
- hal0ai-0.9.8/tests/openwebui/test_image_pin.py +97 -0
- hal0ai-0.9.8/tests/openwebui/test_owui_pin_consistency.py +56 -0
- hal0ai-0.9.8/tests/openwebui/test_prewire_smoke.py +539 -0
- hal0ai-0.9.8/tests/profiles/test_catalog.py +171 -0
- hal0ai-0.9.8/tests/profiles/test_portable.py +191 -0
- hal0ai-0.9.8/tests/providers/__init__.py +0 -0
- hal0ai-0.9.8/tests/providers/test_comfyui.py +351 -0
- hal0ai-0.9.8/tests/providers/test_comfyui_container_spec.py +179 -0
- hal0ai-0.9.8/tests/providers/test_comfyui_workflows.py +201 -0
- hal0ai-0.9.8/tests/providers/test_container.py +1150 -0
- hal0ai-0.9.8/tests/providers/test_container_assembler.py +302 -0
- hal0ai-0.9.8/tests/providers/test_container_chat_template.py +295 -0
- hal0ai-0.9.8/tests/providers/test_container_dropin_cleanup.py +131 -0
- hal0ai-0.9.8/tests/providers/test_container_health_gating.py +125 -0
- hal0ai-0.9.8/tests/providers/test_container_mmproj.py +183 -0
- hal0ai-0.9.8/tests/providers/test_container_npu.py +422 -0
- hal0ai-0.9.8/tests/providers/test_container_resolved_detail.py +48 -0
- hal0ai-0.9.8/tests/providers/test_container_spec_dispatch.py +243 -0
- hal0ai-0.9.8/tests/providers/test_container_vision_toggle.py +97 -0
- hal0ai-0.9.8/tests/providers/test_flm.py +741 -0
- hal0ai-0.9.8/tests/providers/test_flm_container_spec.py +171 -0
- hal0ai-0.9.8/tests/providers/test_flm_store_link.py +117 -0
- hal0ai-0.9.8/tests/providers/test_gpu.py +61 -0
- hal0ai-0.9.8/tests/providers/test_image_resolution.py +139 -0
- hal0ai-0.9.8/tests/providers/test_kokoro_container_spec.py +98 -0
- hal0ai-0.9.8/tests/providers/test_llama_server.py +216 -0
- hal0ai-0.9.8/tests/providers/test_moonshine_server.py +139 -0
- hal0ai-0.9.8/tests/providers/test_npu_columns.py +236 -0
- hal0ai-0.9.8/tests/providers/test_parallel_batching.py +84 -0
- hal0ai-0.9.8/tests/providers/test_qwen3tts_container_spec.py +161 -0
- hal0ai-0.9.8/tests/providers/test_runtime_launch_plan.py +207 -0
- hal0ai-0.9.8/tests/registry/__init__.py +0 -0
- hal0ai-0.9.8/tests/registry/test_comfyui_path.py +15 -0
- hal0ai-0.9.8/tests/registry/test_curated.py +89 -0
- hal0ai-0.9.8/tests/registry/test_curated_comfyui.py +60 -0
- hal0ai-0.9.8/tests/registry/test_curated_image_models.py +187 -0
- hal0ai-0.9.8/tests/registry/test_curated_pull_coords.py +115 -0
- hal0ai-0.9.8/tests/registry/test_curation_drift.py +60 -0
- hal0ai-0.9.8/tests/registry/test_detect.py +226 -0
- hal0ai-0.9.8/tests/registry/test_discover.py +392 -0
- hal0ai-0.9.8/tests/registry/test_flm_pull_progress.py +91 -0
- hal0ai-0.9.8/tests/registry/test_gguf_header.py +178 -0
- hal0ai-0.9.8/tests/registry/test_model_store.py +203 -0
- hal0ai-0.9.8/tests/registry/test_pull.py +1299 -0
- hal0ai-0.9.8/tests/registry/test_pull_capability_path.py +37 -0
- hal0ai-0.9.8/tests/registry/test_pull_store.py +148 -0
- hal0ai-0.9.8/tests/registry/test_schema_migration.py +211 -0
- hal0ai-0.9.8/tests/registry/test_store.py +395 -0
- hal0ai-0.9.8/tests/registry/test_store_concurrency.py +237 -0
- hal0ai-0.9.8/tests/registry/test_store_on_change.py +61 -0
- hal0ai-0.9.8/tests/registry/test_update_check.py +210 -0
- hal0ai-0.9.8/tests/release/__init__.py +0 -0
- hal0ai-0.9.8/tests/release/test_channel.py +93 -0
- hal0ai-0.9.8/tests/release/test_notes.py +243 -0
- hal0ai-0.9.8/tests/scripts/__init__.py +0 -0
- hal0ai-0.9.8/tests/scripts/test_migrate_haloai.py +354 -0
- hal0ai-0.9.8/tests/slot_config/__init__.py +0 -0
- hal0ai-0.9.8/tests/slot_config/test_merge_slot_config.py +241 -0
- hal0ai-0.9.8/tests/slot_config/test_store.py +386 -0
- hal0ai-0.9.8/tests/slot_config/test_store_locking.py +172 -0
- hal0ai-0.9.8/tests/slot_config/test_validation_and_lock.py +120 -0
- hal0ai-0.9.8/tests/slot_view/__init__.py +0 -0
- hal0ai-0.9.8/tests/slot_view/test_aggregator.py +847 -0
- hal0ai-0.9.8/tests/slots/__init__.py +0 -0
- hal0ai-0.9.8/tests/slots/conftest.py +145 -0
- hal0ai-0.9.8/tests/slots/test_adopted_slot_eviction.py +129 -0
- hal0ai-0.9.8/tests/slots/test_argv.py +279 -0
- hal0ai-0.9.8/tests/slots/test_config_drift_aliases.py +167 -0
- hal0ai-0.9.8/tests/slots/test_container_cgroup_mem.py +316 -0
- hal0ai-0.9.8/tests/slots/test_default_uniqueness.py +171 -0
- hal0ai-0.9.8/tests/slots/test_device_profile_coherence.py +129 -0
- hal0ai-0.9.8/tests/slots/test_dispatchable_ready_set_single_source.py +128 -0
- hal0ai-0.9.8/tests/slots/test_fail_watcher.py +174 -0
- hal0ai-0.9.8/tests/slots/test_fail_watcher_warming.py +245 -0
- hal0ai-0.9.8/tests/slots/test_flag_merge.py +197 -0
- hal0ai-0.9.8/tests/slots/test_gpu_arbiter.py +1127 -0
- hal0ai-0.9.8/tests/slots/test_health_probe_cfg.py +52 -0
- hal0ai-0.9.8/tests/slots/test_loaded_slot.py +105 -0
- hal0ai-0.9.8/tests/slots/test_manager.py +1088 -0
- hal0ai-0.9.8/tests/slots/test_manager_npu_container.py +345 -0
- hal0ai-0.9.8/tests/slots/test_manager_readiness_api.py +149 -0
- hal0ai-0.9.8/tests/slots/test_model_fallback.py +192 -0
- hal0ai-0.9.8/tests/slots/test_model_preferred_profile.py +103 -0
- hal0ai-0.9.8/tests/slots/test_mtp_defuse.py +123 -0
- hal0ai-0.9.8/tests/slots/test_npu_exclusivity.py +254 -0
- hal0ai-0.9.8/tests/slots/test_npu_trio_reconcile.py +173 -0
- hal0ai-0.9.8/tests/slots/test_npu_trio_shadow.py +148 -0
- hal0ai-0.9.8/tests/slots/test_pressure_eviction.py +302 -0
- hal0ai-0.9.8/tests/slots/test_pulling_serving_idle.py +403 -0
- hal0ai-0.9.8/tests/slots/test_restart_errored_slot.py +91 -0
- hal0ai-0.9.8/tests/slots/test_slot_aliases.py +283 -0
- hal0ai-0.9.8/tests/slots/test_slot_create_conflict.py +115 -0
- hal0ai-0.9.8/tests/slots/test_state_self_managed_providers.py +52 -0
- hal0ai-0.9.8/tests/slots/test_state_transitions.py +156 -0
- hal0ai-0.9.8/tests/slots/test_transition_guard.py +76 -0
- hal0ai-0.9.8/tests/slots/test_ttft_samples.py +207 -0
- hal0ai-0.9.8/tests/slots/test_upstream_reconcile.py +171 -0
- hal0ai-0.9.8/tests/stacks/__init__.py +0 -0
- hal0ai-0.9.8/tests/stacks/conftest.py +75 -0
- hal0ai-0.9.8/tests/stacks/test_apply_commit.py +102 -0
- hal0ai-0.9.8/tests/stacks/test_apply_plan.py +237 -0
- hal0ai-0.9.8/tests/stacks/test_apply_validate.py +53 -0
- hal0ai-0.9.8/tests/stacks/test_converge_capabilities.py +103 -0
- hal0ai-0.9.8/tests/stacks/test_converge_primary.py +76 -0
- hal0ai-0.9.8/tests/stacks/test_converge_unload.py +74 -0
- hal0ai-0.9.8/tests/stacks/test_drift.py +152 -0
- hal0ai-0.9.8/tests/stacks/test_export.py +170 -0
- hal0ai-0.9.8/tests/stacks/test_import.py +133 -0
- hal0ai-0.9.8/tests/stacks/test_snapshot.py +159 -0
- hal0ai-0.9.8/tests/stacks/test_stacks_catalog.py +103 -0
- hal0ai-0.9.8/tests/systemd/__init__.py +0 -0
- hal0ai-0.9.8/tests/systemd/test_hf_token_secrets.py +197 -0
- hal0ai-0.9.8/tests/systemd/test_unit_files.py +348 -0
- hal0ai-0.9.8/tests/test_import.py +34 -0
- hal0ai-0.9.8/tests/updater/__init__.py +0 -0
- hal0ai-0.9.8/tests/updater/test_image_retag.py +114 -0
- hal0ai-0.9.8/tests/updater/test_seed_profiles_migration.py +92 -0
- hal0ai-0.9.8/tests/updater/test_unit_rerender.py +145 -0
- hal0ai-0.9.8/tests/updater/test_updater.py +1175 -0
- hal0ai-0.9.8/tests/upstreams/__init__.py +0 -0
- hal0ai-0.9.8/tests/upstreams/test_integrations.py +95 -0
- hal0ai-0.9.8/tests/upstreams/test_registry.py +707 -0
- hal0ai-0.9.8/ui/.env.example +10 -0
- hal0ai-0.9.8/ui/CONTRACTS.md +250 -0
- hal0ai-0.9.8/ui/eslint.config.js +97 -0
- hal0ai-0.9.8/ui/index.html +29 -0
- hal0ai-0.9.8/ui/package-lock.json +3713 -0
- hal0ai-0.9.8/ui/package.json +41 -0
- hal0ai-0.9.8/ui/playwright.config.ts +61 -0
- hal0ai-0.9.8/ui/playwright.local.config.ts +11 -0
- hal0ai-0.9.8/ui/public/brand/logo-halo-dark-favico.png +0 -0
- hal0ai-0.9.8/ui/public/brand/logo-halo-dark-favico.svg +1 -0
- hal0ai-0.9.8/ui/public/brand/logo-halo-dark.png +0 -0
- hal0ai-0.9.8/ui/public/brand/logo-halo-dark.svg +1 -0
- hal0ai-0.9.8/ui/public/brand/logo-halo-light-favico.png +0 -0
- hal0ai-0.9.8/ui/public/brand/logo-halo-light-favico.svg +1 -0
- hal0ai-0.9.8/ui/public/brand/logo-halo-light.png +0 -0
- hal0ai-0.9.8/ui/public/brand/logo-halo-light.svg +1 -0
- hal0ai-0.9.8/ui/public/favicon.svg +1 -0
- hal0ai-0.9.8/ui/src/api/client.ts +123 -0
- hal0ai-0.9.8/ui/src/api/endpoints.ts +419 -0
- hal0ai-0.9.8/ui/src/api/hooks/__tests__/boardActors.test.mjs +54 -0
- hal0ai-0.9.8/ui/src/api/hooks/__tests__/logRing.test.mjs +66 -0
- hal0ai-0.9.8/ui/src/api/hooks/__tests__/rawLevel.test.mjs +56 -0
- hal0ai-0.9.8/ui/src/api/hooks/boardActors.js +41 -0
- hal0ai-0.9.8/ui/src/api/hooks/index.ts +25 -0
- hal0ai-0.9.8/ui/src/api/hooks/logRing.js +28 -0
- hal0ai-0.9.8/ui/src/api/hooks/rawLevel.js +18 -0
- hal0ai-0.9.8/ui/src/api/hooks/useActivity.ts +304 -0
- hal0ai-0.9.8/ui/src/api/hooks/useAgentMcpClients.ts +141 -0
- hal0ai-0.9.8/ui/src/api/hooks/useAgents.ts +538 -0
- hal0ai-0.9.8/ui/src/api/hooks/useBackends.ts +81 -0
- hal0ai-0.9.8/ui/src/api/hooks/useBoard.ts +1494 -0
- hal0ai-0.9.8/ui/src/api/hooks/useCapabilities.ts +64 -0
- hal0ai-0.9.8/ui/src/api/hooks/useChatTemplates.ts +38 -0
- hal0ai-0.9.8/ui/src/api/hooks/useComfyui.ts +310 -0
- hal0ai-0.9.8/ui/src/api/hooks/useConfigUrls.ts +38 -0
- hal0ai-0.9.8/ui/src/api/hooks/useDashLayout.ts +176 -0
- hal0ai-0.9.8/ui/src/api/hooks/useFeatures.ts +33 -0
- hal0ai-0.9.8/ui/src/api/hooks/useHardware.ts +117 -0
- hal0ai-0.9.8/ui/src/api/hooks/useHindsight.ts +537 -0
- hal0ai-0.9.8/ui/src/api/hooks/useHoncho.ts +139 -0
- hal0ai-0.9.8/ui/src/api/hooks/useInstallState.ts +51 -0
- hal0ai-0.9.8/ui/src/api/hooks/useLogs.ts +387 -0
- hal0ai-0.9.8/ui/src/api/hooks/useMcp.ts +132 -0
- hal0ai-0.9.8/ui/src/api/hooks/useMemory.ts +209 -0
- hal0ai-0.9.8/ui/src/api/hooks/useMeta.ts +45 -0
- hal0ai-0.9.8/ui/src/api/hooks/useModels.ts +589 -0
- hal0ai-0.9.8/ui/src/api/hooks/useNpuOccupancy.ts +50 -0
- hal0ai-0.9.8/ui/src/api/hooks/useProfiles.ts +130 -0
- hal0ai-0.9.8/ui/src/api/hooks/useProxmoxSettings.ts +65 -0
- hal0ai-0.9.8/ui/src/api/hooks/useRequestsRollup.ts +67 -0
- hal0ai-0.9.8/ui/src/api/hooks/useRuntime.ts +105 -0
- hal0ai-0.9.8/ui/src/api/hooks/useSecrets.ts +43 -0
- hal0ai-0.9.8/ui/src/api/hooks/useServices.ts +142 -0
- hal0ai-0.9.8/ui/src/api/hooks/useServicesHealth.ts +88 -0
- hal0ai-0.9.8/ui/src/api/hooks/useSettings.ts +213 -0
- hal0ai-0.9.8/ui/src/api/hooks/useSlots.ts +702 -0
- hal0ai-0.9.8/ui/src/api/hooks/useStacks.ts +217 -0
- hal0ai-0.9.8/ui/src/api/hooks/useStatsHardware.ts +57 -0
- hal0ai-0.9.8/ui/src/api/hooks/useStatsPower.ts +63 -0
- hal0ai-0.9.8/ui/src/api/hooks/useThroughputHistory.ts +62 -0
- hal0ai-0.9.8/ui/src/api/hooks/useUpdates.ts +197 -0
- hal0ai-0.9.8/ui/src/api/hooks/useUpstreams.ts +156 -0
- hal0ai-0.9.8/ui/src/api/mock.ts +1193 -0
- hal0ai-0.9.8/ui/src/dash/Benchmarks.tsx +1160 -0
- hal0ai-0.9.8/ui/src/dash/__tests__/model-sort.test.mjs +138 -0
- hal0ai-0.9.8/ui/src/dash/__tests__/model-types.test.mjs +82 -0
- hal0ai-0.9.8/ui/src/dash/__tests__/react-hooks-order.test.mjs +191 -0
- hal0ai-0.9.8/ui/src/dash/__tests__/slot-status.consistency.test.mjs +80 -0
- hal0ai-0.9.8/ui/src/dash/__tests__/slot-status.disabled-running.test.mjs +81 -0
- hal0ai-0.9.8/ui/src/dash/activity-log.css +248 -0
- hal0ai-0.9.8/ui/src/dash/activity-log.jsx +269 -0
- hal0ai-0.9.8/ui/src/dash/agents/agent-card.jsx +318 -0
- hal0ai-0.9.8/ui/src/dash/agents/agent-cards.css +190 -0
- hal0ai-0.9.8/ui/src/dash/agents/agent-view.jsx +118 -0
- hal0ai-0.9.8/ui/src/dash/agents/agents-hook-bridge.ts +35 -0
- hal0ai-0.9.8/ui/src/dash/agents/agents-overview.jsx +298 -0
- hal0ai-0.9.8/ui/src/dash/agents/assets/hermes.png +0 -0
- hal0ai-0.9.8/ui/src/dash/agents/assets/opencode-logo.svg +1 -0
- hal0ai-0.9.8/ui/src/dash/agents/assets/pi-amber.png +0 -0
- hal0ai-0.9.8/ui/src/dash/agents/assets/qwen-logo.svg +1 -0
- hal0ai-0.9.8/ui/src/dash/agents/memory-tab-hook-bridge.ts +47 -0
- hal0ai-0.9.8/ui/src/dash/agents/memory-tab.jsx +275 -0
- hal0ai-0.9.8/ui/src/dash/board/agent-chat.jsx +344 -0
- hal0ai-0.9.8/ui/src/dash/board/board-hook-bridge.ts +113 -0
- hal0ai-0.9.8/ui/src/dash/board/board-view.jsx +764 -0
- hal0ai-0.9.8/ui/src/dash/board/board.css +500 -0
- hal0ai-0.9.8/ui/src/dash/board/kcard.jsx +82 -0
- hal0ai-0.9.8/ui/src/dash/board/lane.jsx +93 -0
- hal0ai-0.9.8/ui/src/dash/board/new-board-modal.jsx +130 -0
- hal0ai-0.9.8/ui/src/dash/board/new-task-modal.jsx +165 -0
- hal0ai-0.9.8/ui/src/dash/board/orchestration-popover.jsx +233 -0
- hal0ai-0.9.8/ui/src/dash/board/task-drawer.jsx +366 -0
- hal0ai-0.9.8/ui/src/dash/cards-shell.jsx +111 -0
- hal0ai-0.9.8/ui/src/dash/chrome.jsx +1202 -0
- hal0ai-0.9.8/ui/src/dash/comfyui-pane.css +564 -0
- hal0ai-0.9.8/ui/src/dash/comfyui-pane.jsx +793 -0
- hal0ai-0.9.8/ui/src/dash/command-palette.jsx +383 -0
- hal0ai-0.9.8/ui/src/dash/connections.css +414 -0
- hal0ai-0.9.8/ui/src/dash/connections.jsx +1486 -0
- hal0ai-0.9.8/ui/src/dash/dashboard-redesign.jsx +1080 -0
- hal0ai-0.9.8/ui/src/dash/dashboard.jsx +298 -0
- hal0ai-0.9.8/ui/src/dash/data.jsx +360 -0
- hal0ai-0.9.8/ui/src/dash/engine-panes.css +1433 -0
- hal0ai-0.9.8/ui/src/dash/extra-modals.jsx +179 -0
- hal0ai-0.9.8/ui/src/dash/extras.jsx +337 -0
- hal0ai-0.9.8/ui/src/dash/flow-modals.jsx +264 -0
- hal0ai-0.9.8/ui/src/dash/inference-pane.jsx +642 -0
- hal0ai-0.9.8/ui/src/dash/main.jsx +513 -0
- hal0ai-0.9.8/ui/src/dash/memory-graph-ego.jsx +351 -0
- hal0ai-0.9.8/ui/src/dash/memory-graph-engine.jsx +504 -0
- hal0ai-0.9.8/ui/src/dash/memory-graph-structured.jsx +667 -0
- hal0ai-0.9.8/ui/src/dash/memory-graph.jsx +696 -0
- hal0ai-0.9.8/ui/src/dash/memory-hook-bridge.ts +108 -0
- hal0ai-0.9.8/ui/src/dash/memory-map.jsx +526 -0
- hal0ai-0.9.8/ui/src/dash/memory-overhaul.css +416 -0
- hal0ai-0.9.8/ui/src/dash/memory-tools.jsx +602 -0
- hal0ai-0.9.8/ui/src/dash/memory.jsx +1083 -0
- hal0ai-0.9.8/ui/src/dash/metric-cards.jsx +252 -0
- hal0ai-0.9.8/ui/src/dash/model-modals.jsx +1277 -0
- hal0ai-0.9.8/ui/src/dash/model-sort.js +158 -0
- hal0ai-0.9.8/ui/src/dash/model-types.js +59 -0
- hal0ai-0.9.8/ui/src/dash/models.jsx +840 -0
- hal0ai-0.9.8/ui/src/dash/notifications.jsx +293 -0
- hal0ai-0.9.8/ui/src/dash/npu-pane.jsx +546 -0
- hal0ai-0.9.8/ui/src/dash/npu.css +646 -0
- hal0ai-0.9.8/ui/src/dash/optin-cards.jsx +350 -0
- hal0ai-0.9.8/ui/src/dash/overhaul.css +1886 -0
- hal0ai-0.9.8/ui/src/dash/primitives.jsx +1020 -0
- hal0ai-0.9.8/ui/src/dash/profile-names.js +29 -0
- hal0ai-0.9.8/ui/src/dash/profiles.jsx +693 -0
- hal0ai-0.9.8/ui/src/dash/quickchat-card.jsx +358 -0
- hal0ai-0.9.8/ui/src/dash/redesign.css +375 -0
- hal0ai-0.9.8/ui/src/dash/services-card.jsx +365 -0
- hal0ai-0.9.8/ui/src/dash/services.css +147 -0
- hal0ai-0.9.8/ui/src/dash/services.jsx +287 -0
- hal0ai-0.9.8/ui/src/dash/settings.jsx +2598 -0
- hal0ai-0.9.8/ui/src/dash/slot-list.jsx +253 -0
- hal0ai-0.9.8/ui/src/dash/slot-modals.jsx +2190 -0
- hal0ai-0.9.8/ui/src/dash/slot-status.js +296 -0
- hal0ai-0.9.8/ui/src/dash/slots.jsx +1024 -0
- hal0ai-0.9.8/ui/src/dash/stacks.css +185 -0
- hal0ai-0.9.8/ui/src/dash/stacks.jsx +850 -0
- hal0ai-0.9.8/ui/src/dash/telemetry-header.jsx +490 -0
- hal0ai-0.9.8/ui/src/dash/tweaks-panel.jsx +531 -0
- hal0ai-0.9.8/ui/src/dashboard.css +3570 -0
- hal0ai-0.9.8/ui/src/globals-install.ts +32 -0
- hal0ai-0.9.8/ui/src/lib/deviceMeta.ts +348 -0
- hal0ai-0.9.8/ui/src/lib/normalizeApiModel.ts +162 -0
- hal0ai-0.9.8/ui/src/lib/queryClient.ts +28 -0
- hal0ai-0.9.8/ui/src/main.tsx +157 -0
- hal0ai-0.9.8/ui/src/stores/useBannerStore.ts +273 -0
- hal0ai-0.9.8/ui/src/stores/useToastStore.ts +90 -0
- hal0ai-0.9.8/ui/src/stores/useTweaksStore.ts +98 -0
- hal0ai-0.9.8/ui/src/types/globals.d.ts +30 -0
- hal0ai-0.9.8/ui/tests/e2e/README.md +29 -0
- hal0ai-0.9.8/ui/tests/e2e/fixtures/apiMock.ts +431 -0
- hal0ai-0.9.8/ui/tests/e2e/fixtures/mock-data.ts +819 -0
- hal0ai-0.9.8/ui/tests/e2e/fixtures/sseHarness.ts +127 -0
- hal0ai-0.9.8/ui/tests/e2e/fixtures/wsHarness.ts +190 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/activity-log.spec.ts +163 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/agent-view-v3.spec.ts +127 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-assignee-display-v3.spec.ts +44 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-bulk-v3.spec.ts +231 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-chat-tool-use-v3.spec.ts +223 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-chat-v3.spec.ts +428 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-columns-render-v3.spec.ts +46 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-dragdrop-v3.spec.ts +221 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-drawer-v3.spec.ts +498 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-filters-v3.spec.ts +166 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-hermes-actor-shape-v3.spec.ts +54 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-render-v3.spec.ts +200 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/board-selector-v3.spec.ts +359 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/comfyui-arbiter-v3.spec.ts +250 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/connections-v3.spec.ts +193 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/dashboard-redesign-v3.spec.ts +295 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/dashboard-v3.spec.ts +46 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/footer-chips-v3.spec.ts +60 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/footer-journal-pane-v3.spec.ts +195 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/footer-throughput-chip-v3.spec.ts +85 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/footer-update-chip-v3.spec.ts +110 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/hf-token-setting.spec.ts +41 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/imagegen-v2.spec.ts +253 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/inference-pane-v3.spec.ts +255 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/logs-v3.spec.ts +37 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/memory-gate-v3.spec.ts +73 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/memory-graph-empty-v3.spec.ts +71 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/memory-graph-explorer-v3.spec.ts +168 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/memory-graph-v3.spec.ts +98 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/memory-map-v3.spec.ts +141 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/memory-provider-v3.spec.ts +222 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/memory-tools-v3.spec.ts +124 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/memory-view-v3.spec.ts +259 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/mobile-nav-v3.spec.ts +99 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/model-edit-identity-v3.spec.ts +89 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/model-recipe-template-v3.spec.ts +89 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/models-catalog-controls-v3.spec.ts +170 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/models-upstream-v3.spec.ts +99 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/models-v3.spec.ts +227 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/notification-bell-v3.spec.ts +226 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/npu-occupancy-v3.spec.ts +139 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/profiles-crud-v3.spec.ts +336 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/profiles-page-v3.spec.ts +205 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/services-v3.spec.ts +213 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/settings-default-slots-v3.spec.ts +33 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/settings-v3.spec.ts +47 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/sidebar-accordion-v3.spec.ts +119 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/slot-card-container-v3.spec.ts +309 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/slot-drawer-profile-v3.spec.ts +447 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/slot-edit-controls-v3.spec.ts +344 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/slot-indicator-live-screenshot.spec.ts +30 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/slot-indicator.spec.ts +225 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/slot-live-equivalence-v3.spec.ts +120 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/slots-v3.spec.ts +46 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/slots-wireup-v3.spec.ts +137 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/system-card-v3.spec.ts +89 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/ui-sweep-a-v3.spec.ts +253 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/update-banner-v3.spec.ts +78 -0
- hal0ai-0.9.8/ui/tests/e2e/specs/warm-color-tones.spec.ts +98 -0
- hal0ai-0.9.8/ui/tsconfig.json +34 -0
- hal0ai-0.9.8/ui/tsconfig.node.json +13 -0
- hal0ai-0.9.8/ui/vite.config.ts +70 -0
- hal0ai-0.9.8/uv.lock +3948 -0
|
File without changes
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-lead
|
|
3
|
+
description: Sonnet section lead for hal0 documentation. Owns exactly one docs/ section (getting-started, concepts, guides, or reference+operate). Builds the change delta from git log, CHANGELOG.md, and graphify, decomposes it into per-file briefs, spawns docs-writer (haiku) workers to apply edits, reviews every diff, and optionally spawns docs-verifier to fact-check claims. Use for any docs update spanning multiple files in one section.
|
|
4
|
+
model: sonnet
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are a documentation section lead for the hal0 repo. You own ONE section of
|
|
8
|
+
`docs/` — the section is named in your task prompt. Never edit files outside it.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. **Build the delta.** Read `CHANGELOG.md` (Unreleased + the last few released
|
|
13
|
+
sections), run `git log --oneline -- docs/ src/` to see what changed since
|
|
14
|
+
the docs were last touched, and use `graphify query "<question>"` /
|
|
15
|
+
`graphify explain "<concept>"` when `graphify-out/graph.json` exists to map
|
|
16
|
+
concepts to source. Verify any CLI flag, config key, endpoint, or path
|
|
17
|
+
against `src/hal0/` before it goes in a brief — never trust memory.
|
|
18
|
+
2. **Decompose.** Group your section's files into 2–4 batches. For each batch
|
|
19
|
+
write a precise brief: file paths, exact facts to add/change/delete (with
|
|
20
|
+
the source citation: commit, CHANGELOG entry, or source file:line), and
|
|
21
|
+
what must NOT change.
|
|
22
|
+
3. **Delegate.** Spawn one `docs-writer` (haiku) agent per batch via the Agent
|
|
23
|
+
tool with `model: "haiku"`. Run them concurrently. Writers only apply
|
|
24
|
+
briefs — all research and judgment stays with you.
|
|
25
|
+
4. **Review.** `git diff` each writer's files. Fix style drift, factual
|
|
26
|
+
errors, and scope creep yourself with Edit. For risky claims (commands,
|
|
27
|
+
flags, defaults) spawn a `docs-verifier` (haiku) to check them against
|
|
28
|
+
source.
|
|
29
|
+
5. **Report.** Return: files changed, one line per meaningful content change,
|
|
30
|
+
and any claims you could not verify. Do NOT commit — leave changes in the
|
|
31
|
+
working tree.
|
|
32
|
+
|
|
33
|
+
## Ground rules
|
|
34
|
+
|
|
35
|
+
- Docs are `.mdx`; match the existing file's heading style, frontmatter, tone,
|
|
36
|
+
and admonition components. No marketing language, no SEO filler.
|
|
37
|
+
- Delete stale claims rather than hedging them ("previously…" belongs in the
|
|
38
|
+
CHANGELOG, not guides).
|
|
39
|
+
- Retired concepts as of v0.9.5: slot `role` is gone (slot NAME is the routing
|
|
40
|
+
key, `hal0/<slot>`); profile slugs are the `{rocm,vulkan} × {dense,moe}`
|
|
41
|
+
grid; the installer does not seed a recommended model slot.
|
|
42
|
+
- If a fact can't be verified in source, leave the doc untouched and flag it
|
|
43
|
+
in your report instead of guessing.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-verifier
|
|
3
|
+
description: Haiku documentation fact-checker. Given a list of claims from updated docs (CLI commands, flags, config keys, defaults, paths, endpoints), verifies each against the hal0 source tree and reports verified/refuted/unverifiable with evidence. Read-only — never edits docs.
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Grep, Glob, Bash
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You fact-check documentation claims against the hal0 source tree. You never
|
|
9
|
+
edit anything.
|
|
10
|
+
|
|
11
|
+
For each claim in your task:
|
|
12
|
+
|
|
13
|
+
- Find the authoritative source: CLI commands/flags in `src/hal0/cli*`,
|
|
14
|
+
config schema in `src/hal0/config*` / `src/hal0/schema*`, API routes in
|
|
15
|
+
`src/hal0/api/`, seeds under `installer/`, versioned behavior in
|
|
16
|
+
`CHANGELOG.md`. Use Grep/Glob; run `--help` output via Bash only if the
|
|
17
|
+
source is ambiguous.
|
|
18
|
+
- Verdict per claim: VERIFIED (quote the source line as `path:line`),
|
|
19
|
+
REFUTED (quote what the source actually says), or UNVERIFIABLE (say what
|
|
20
|
+
you searched).
|
|
21
|
+
- Be adversarial: a claim that is merely plausible is not verified. Check
|
|
22
|
+
defaults and spellings exactly — `chat = true` vs `chat=True` vs a stale
|
|
23
|
+
key name are different claims.
|
|
24
|
+
|
|
25
|
+
Return a compact list: claim → verdict → evidence. Nothing else.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-writer
|
|
3
|
+
description: Haiku documentation writer. Applies a precise brief from a docs-lead to a small batch of .mdx files — adds, updates, or deletes exactly the facts listed in the brief, preserving each file's existing style. Does not research or invent content beyond the brief.
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Edit, Write, Grep, Glob, Bash
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a documentation writer executing a brief from a section lead. The
|
|
9
|
+
brief lists file paths and the exact facts to add, change, or remove, with
|
|
10
|
+
citations.
|
|
11
|
+
|
|
12
|
+
Rules:
|
|
13
|
+
|
|
14
|
+
- Edit ONLY the files named in your brief. Read each file fully before
|
|
15
|
+
editing.
|
|
16
|
+
- Apply exactly the facts in the brief. If the brief cites a source file, you
|
|
17
|
+
may Read it to get wording/values right — but never add claims the brief
|
|
18
|
+
doesn't authorize.
|
|
19
|
+
- Match the surrounding style: heading depth, frontmatter shape, code-fence
|
|
20
|
+
language tags, admonition components, sentence tone. A reader should not be
|
|
21
|
+
able to tell which paragraphs are new.
|
|
22
|
+
- Delete stale content the brief marks stale — don't soften it into
|
|
23
|
+
"previously" phrasing.
|
|
24
|
+
- Prose: complete sentences, no marketing language, no filler. Commands and
|
|
25
|
+
config keys in backticks, exact and copy-pasteable.
|
|
26
|
+
- If something in the brief conflicts with what you see in the file or source,
|
|
27
|
+
do NOT guess — skip that item and report the conflict.
|
|
28
|
+
|
|
29
|
+
Return: per file, a one-line summary of what changed, plus any skipped brief
|
|
30
|
+
items with the reason.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"PreToolUse": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "Bash",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "CMD=$(python3 -c \"import json,sys; d=json.load(sys.stdin); print(d.get('tool_input',d).get('command',''))\" 2>/dev/null || true); case \"$CMD\" in *grep*|*rg\\ *|*ripgrep*|*find\\ *|*fd\\ *|*ack\\ *|*ag\\ *) [ -f graphify-out/graph.json ] && echo '{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"additionalContext\":\"MANDATORY: graphify-out/graph.json exists. You MUST run `graphify query \\\"<question>\\\"` before grepping raw files. Only grep after graphify has oriented you, or to modify/debug specific lines.\"}}' || true ;; esac"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"matcher": "Read|Glob",
|
|
15
|
+
"hooks": [
|
|
16
|
+
{
|
|
17
|
+
"type": "command",
|
|
18
|
+
"command": "HIT=$(python3 -c \"import json,sys;d=json.load(sys.stdin);t=d.get('tool_input',d);exts=('.py','.js','.ts','.tsx','.jsx','.astro','.vue','.svelte','.go','.rs','.java','.rb','.c','.h','.cpp','.hpp','.cc','.cs','.kt','.swift','.php','.scala','.lua','.sh','.md','.rst','.txt','.mdx');vals=[str(t.get('file_path') or ''),str(t.get('pattern') or ''),str(t.get('path') or '')];j=' '.join(vals).lower().replace(chr(92),'/');tails=[('.'+x.rsplit('.',1)[-1]) for v in vals if v for x in [v.lower().replace(chr(92),'/').rsplit('/',1)[-1]] if '.' in x];sys.stdout.write('1' if 'graphify-out/' not in j and any(tl in exts for tl in tails) else '')\" 2>/dev/null || true); if [ \"$HIT\" = 1 ] && [ -f graphify-out/graph.json ]; then echo '{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"additionalContext\":\"MANDATORY: graphify-out/graph.json exists. You MUST run graphify before reading source files. Use: `graphify query \\\"<question>\\\"` (scoped subgraph), `graphify explain \\\"<concept>\\\"`, or `graphify path \\\"<A>\\\" \\\"<B>\\\"`. Only read raw files after graphify has oriented you, or to modify/debug specific lines. This rule applies to subagents too \u2014 include it in every subagent prompt involving code exploration.\"}}'; fi || true"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
name: Agent shim smoke (pi-coder + opencode nightly)
|
|
2
|
+
|
|
3
|
+
# Nightly end-to-end re-run of each bundled agent's installer
|
|
4
|
+
# (installer/agents/<agent>.sh) + an MCP round-trip against the resulting
|
|
5
|
+
# hal0 MCP memory server.
|
|
6
|
+
#
|
|
7
|
+
# Why this exists:
|
|
8
|
+
# ADR-0004 §3 ("Mitigation for track-latest churn") + PLAN.md §17 risk
|
|
9
|
+
# row commit hal0 to a nightly smoke that catches upstream pi-coder
|
|
10
|
+
# contract drift overnight, instead of breaking real installs the next
|
|
11
|
+
# morning. Pinning pi-coder per hal0 release would freeze users on
|
|
12
|
+
# stale revisions; track-latest is the chosen tradeoff and this
|
|
13
|
+
# workflow is the safety net.
|
|
14
|
+
#
|
|
15
|
+
# Runner choice (v0.2):
|
|
16
|
+
# ubuntu-latest. Graduation to a self-hosted hal0-LXC runner with
|
|
17
|
+
# Strix Halo passthrough is a post-v0.2 follow-up — for v0.2 the
|
|
18
|
+
# round-trip only needs the FastAPI/MCP layer to be healthy, not the
|
|
19
|
+
# NPU/iGPU inference path.
|
|
20
|
+
#
|
|
21
|
+
# Failure handling:
|
|
22
|
+
# On red, open (or update) a single tracking issue tagged
|
|
23
|
+
# `agent-shim-broken`. One issue per upstream-broken-us state — we
|
|
24
|
+
# refuse to spam a fresh ticket every night while the same root cause
|
|
25
|
+
# is unfixed.
|
|
26
|
+
|
|
27
|
+
on:
|
|
28
|
+
schedule:
|
|
29
|
+
# 04:00 UTC nightly — well after the Asia/Europe push window so any
|
|
30
|
+
# upstream pi-coder release from the prior day is already cut.
|
|
31
|
+
- cron: "0 4 * * *"
|
|
32
|
+
workflow_dispatch:
|
|
33
|
+
|
|
34
|
+
concurrency:
|
|
35
|
+
group: agent-shim-smoke
|
|
36
|
+
# Latest nightly wins. We do not queue back-to-back runs.
|
|
37
|
+
cancel-in-progress: true
|
|
38
|
+
|
|
39
|
+
permissions:
|
|
40
|
+
contents: read
|
|
41
|
+
issues: write # required for the failure-issue handling step below
|
|
42
|
+
|
|
43
|
+
jobs:
|
|
44
|
+
smoke:
|
|
45
|
+
name: ${{ matrix.agent }} install + MCP round-trip
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
timeout-minutes: 25
|
|
48
|
+
strategy:
|
|
49
|
+
fail-fast: false
|
|
50
|
+
matrix:
|
|
51
|
+
agent: [pi-coder, opencode]
|
|
52
|
+
|
|
53
|
+
steps:
|
|
54
|
+
- name: Checkout
|
|
55
|
+
uses: actions/checkout@v6
|
|
56
|
+
|
|
57
|
+
- name: Set up Python 3.12
|
|
58
|
+
uses: actions/setup-python@v6
|
|
59
|
+
with:
|
|
60
|
+
python-version: "3.12"
|
|
61
|
+
cache: pip
|
|
62
|
+
|
|
63
|
+
- name: Install hal0 (editable + dev extras)
|
|
64
|
+
# Mirrors integration.yml — gets pip/pydantic/etc primed before
|
|
65
|
+
# installer/install.sh runs so the FastAPI process can boot.
|
|
66
|
+
run: |
|
|
67
|
+
python -m venv .venv
|
|
68
|
+
. .venv/bin/activate
|
|
69
|
+
pip install --upgrade pip
|
|
70
|
+
pip install -e ".[dev]"
|
|
71
|
+
|
|
72
|
+
- name: Verify Docker on runner
|
|
73
|
+
# pi-coder.sh and the agent toolboxes rely on docker; surface a
|
|
74
|
+
# clear error early instead of letting smoke-pi-coder.sh fail
|
|
75
|
+
# deep inside install.
|
|
76
|
+
run: |
|
|
77
|
+
docker version
|
|
78
|
+
docker info --format '{{.ServerVersion}}'
|
|
79
|
+
|
|
80
|
+
- name: Run ${{ matrix.agent }} smoke
|
|
81
|
+
id: smoke
|
|
82
|
+
# The script is the contract — see scripts/smoke-${{ matrix.agent }}.sh
|
|
83
|
+
# header for exit-code semantics.
|
|
84
|
+
run: bash scripts/smoke-${{ matrix.agent }}.sh
|
|
85
|
+
|
|
86
|
+
- name: Capture journald on failure
|
|
87
|
+
if: failure()
|
|
88
|
+
run: |
|
|
89
|
+
sudo journalctl -u 'hal0-api*' --no-pager -n 500 > journal-api.log || true
|
|
90
|
+
sudo journalctl -u 'hal0-mcp*' --no-pager -n 500 > journal-mcp.log || true
|
|
91
|
+
systemctl status hal0-api.service --no-pager > status-api.txt 2>&1 || true
|
|
92
|
+
|
|
93
|
+
- name: Upload diagnostics on failure
|
|
94
|
+
if: failure()
|
|
95
|
+
uses: actions/upload-artifact@v7
|
|
96
|
+
with:
|
|
97
|
+
name: agent-shim-smoke-logs
|
|
98
|
+
path: |
|
|
99
|
+
journal-api.log
|
|
100
|
+
journal-mcp.log
|
|
101
|
+
status-api.txt
|
|
102
|
+
if-no-files-found: ignore
|
|
103
|
+
|
|
104
|
+
# ── failure-issue handling ────────────────────────────────────────────
|
|
105
|
+
# Runs only when the smoke job failed. Opens a fresh issue tagged
|
|
106
|
+
# `agent-shim-broken` if none is open, or comments on the existing one
|
|
107
|
+
# with the failing run's URL. This guarantees exactly one open ticket
|
|
108
|
+
# per upstream-broken-us state — no spam, no duplicates.
|
|
109
|
+
notify:
|
|
110
|
+
name: Open/update agent-shim-broken issue
|
|
111
|
+
needs: smoke
|
|
112
|
+
if: failure()
|
|
113
|
+
runs-on: ubuntu-latest
|
|
114
|
+
permissions:
|
|
115
|
+
contents: read
|
|
116
|
+
issues: write
|
|
117
|
+
steps:
|
|
118
|
+
- name: Find or create tracking issue
|
|
119
|
+
uses: actions/github-script@v9
|
|
120
|
+
env:
|
|
121
|
+
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
|
122
|
+
with:
|
|
123
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
124
|
+
script: |
|
|
125
|
+
const label = 'agent-shim-broken';
|
|
126
|
+
const runUrl = process.env.RUN_URL;
|
|
127
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
128
|
+
|
|
129
|
+
// Look for any open issue with the label. We want one
|
|
130
|
+
// tracker per upstream-broken-us state, so we attach to the
|
|
131
|
+
// first match and never open duplicates.
|
|
132
|
+
const open = await github.paginate(github.rest.issues.listForRepo, {
|
|
133
|
+
owner: context.repo.owner,
|
|
134
|
+
repo: context.repo.repo,
|
|
135
|
+
state: 'open',
|
|
136
|
+
labels: label,
|
|
137
|
+
per_page: 100,
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
const body = [
|
|
141
|
+
`Nightly agent-shim smoke failed on ${today}.`,
|
|
142
|
+
``,
|
|
143
|
+
`Run: ${runUrl}`,
|
|
144
|
+
``,
|
|
145
|
+
`This is the track-latest mitigation defined in ADR-0004 §3.`,
|
|
146
|
+
`Likely cause: an upstream bundled agent (pi-coder / opencode)`,
|
|
147
|
+
`changed a CLI flag, shim contract, or MCP handshake — check`,
|
|
148
|
+
`which matrix lane failed. Diagnose with the run log +`,
|
|
149
|
+
`\`agent-shim-smoke-logs\` artifact attached to the run.`,
|
|
150
|
+
].join('\n');
|
|
151
|
+
|
|
152
|
+
if (open.length === 0) {
|
|
153
|
+
const created = await github.rest.issues.create({
|
|
154
|
+
owner: context.repo.owner,
|
|
155
|
+
repo: context.repo.repo,
|
|
156
|
+
title: `agent-shim-broken: bundled-agent nightly failing (${today})`,
|
|
157
|
+
body,
|
|
158
|
+
labels: [label],
|
|
159
|
+
});
|
|
160
|
+
core.info(`opened issue #${created.data.number}`);
|
|
161
|
+
} else {
|
|
162
|
+
const issue = open[0];
|
|
163
|
+
await github.rest.issues.createComment({
|
|
164
|
+
owner: context.repo.owner,
|
|
165
|
+
repo: context.repo.repo,
|
|
166
|
+
issue_number: issue.number,
|
|
167
|
+
body: `Still failing on ${today}.\n\nRun: ${runUrl}`,
|
|
168
|
+
});
|
|
169
|
+
core.info(`updated issue #${issue.number}`);
|
|
170
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: Bootstrap parity (daily)
|
|
2
|
+
|
|
3
|
+
# Detect drift between the in-tree, audited installer/bootstrap.sh and the
|
|
4
|
+
# LIVE one-liner served at https://hal0.dev/install.sh (hal0-web's mirrored
|
|
5
|
+
# public/install.sh — what `curl https://hal0.dev/install.sh | bash` runs).
|
|
6
|
+
#
|
|
7
|
+
# Why this is NOT a required PR check:
|
|
8
|
+
# The check depends on the live public site. Network flakiness or a known,
|
|
9
|
+
# not-yet-synced drift would block every unrelated PR. Instead it runs on a
|
|
10
|
+
# daily schedule and on demand, surfacing drift in the run output so the
|
|
11
|
+
# installer team can reconcile hal0-web in a follow-up. The header of
|
|
12
|
+
# bootstrap.sh promises the two stay mirrored; this is the safety net.
|
|
13
|
+
#
|
|
14
|
+
# The script is the contract (scripts/check-bootstrap-parity.sh):
|
|
15
|
+
# exit 0 — in sync. exit 1 — drift (unified diff printed).
|
|
16
|
+
# exit 2 — operational error (fetch failed / empty) — NOT read as drift.
|
|
17
|
+
|
|
18
|
+
on:
|
|
19
|
+
schedule:
|
|
20
|
+
# 06:00 UTC daily — early enough that a fresh drift is visible at the
|
|
21
|
+
# start of the working day across the Americas/EU.
|
|
22
|
+
- cron: "0 6 * * *"
|
|
23
|
+
workflow_dispatch:
|
|
24
|
+
|
|
25
|
+
concurrency:
|
|
26
|
+
group: bootstrap-parity
|
|
27
|
+
cancel-in-progress: true
|
|
28
|
+
|
|
29
|
+
permissions:
|
|
30
|
+
contents: read
|
|
31
|
+
|
|
32
|
+
jobs:
|
|
33
|
+
parity:
|
|
34
|
+
name: Diff in-tree bootstrap.sh against live install.sh
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
timeout-minutes: 5
|
|
37
|
+
|
|
38
|
+
steps:
|
|
39
|
+
- name: Checkout hal0
|
|
40
|
+
uses: actions/checkout@v6
|
|
41
|
+
|
|
42
|
+
- name: Run bootstrap-parity check
|
|
43
|
+
id: parity
|
|
44
|
+
# Exit 0 = in sync, 1 = drift, 2 = operational error. We surface the
|
|
45
|
+
# script's stdout/stderr (the unified diff lives there) into the step
|
|
46
|
+
# summary so a glance at the run page tells the whole story.
|
|
47
|
+
run: |
|
|
48
|
+
set +e
|
|
49
|
+
bash scripts/check-bootstrap-parity.sh > parity.out 2>&1
|
|
50
|
+
rc=$?
|
|
51
|
+
set -e
|
|
52
|
+
|
|
53
|
+
{
|
|
54
|
+
echo "## Bootstrap parity check"
|
|
55
|
+
echo ""
|
|
56
|
+
echo '```diff'
|
|
57
|
+
cat parity.out
|
|
58
|
+
echo '```'
|
|
59
|
+
} >> "$GITHUB_STEP_SUMMARY"
|
|
60
|
+
|
|
61
|
+
cat parity.out
|
|
62
|
+
|
|
63
|
+
case "$rc" in
|
|
64
|
+
0)
|
|
65
|
+
echo "::notice::installer/bootstrap.sh is in sync with the live install.sh."
|
|
66
|
+
;;
|
|
67
|
+
1)
|
|
68
|
+
echo "::error::DRIFT — installer/bootstrap.sh differs from the live hal0.dev/install.sh. Sync hal0-web:public/install.sh."
|
|
69
|
+
;;
|
|
70
|
+
*)
|
|
71
|
+
echo "::warning::Could not fetch the live installer (operational error, exit ${rc}). NOT treated as drift."
|
|
72
|
+
;;
|
|
73
|
+
esac
|
|
74
|
+
exit "$rc"
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
# Cancel superseded PR runs to save runners; never cancel a push to main
|
|
9
|
+
# (every main commit must build — required checks + the nightly greenness gate).
|
|
10
|
+
concurrency:
|
|
11
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
12
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
13
|
+
|
|
14
|
+
# Least privilege: CI only needs to read the repo.
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
python:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
# 3.14 is experimental until every dep ships 3.14 wheels — surface it
|
|
22
|
+
# without reddening main. No-op on PRs, which run 3.12 only.
|
|
23
|
+
continue-on-error: ${{ matrix.python-version == '3.14' }}
|
|
24
|
+
env:
|
|
25
|
+
# fastembed (cognee memory tests) honours FASTEMBED_CACHE_PATH
|
|
26
|
+
# (fastembed/common/utils.py). Pin it to a stable, cacheable dir so the
|
|
27
|
+
# warm step AND pytest share one location that actions/cache persists.
|
|
28
|
+
FASTEMBED_CACHE_PATH: ${{ github.workspace }}/.fastembed-cache
|
|
29
|
+
strategy:
|
|
30
|
+
fail-fast: false
|
|
31
|
+
matrix:
|
|
32
|
+
# PRs test the primary 3.12 only (fast feedback; matches the required
|
|
33
|
+
# "python (3.12)" status check). Pushes to main test the full supported
|
|
34
|
+
# range so Python-version drift still gates the protected branch.
|
|
35
|
+
python-version: ${{ (github.event_name == 'pull_request' && fromJSON('["3.12"]')) || fromJSON('["3.12","3.13","3.14"]') }}
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@v6
|
|
38
|
+
- uses: actions/setup-python@v6
|
|
39
|
+
with:
|
|
40
|
+
python-version: ${{ matrix.python-version }}
|
|
41
|
+
cache: pip
|
|
42
|
+
- name: Install system deps
|
|
43
|
+
# ffmpeg backs the in-container moonshine audio decoder
|
|
44
|
+
# (packaging/toolbox/moonshine/moonshine_server.py). The redaction
|
|
45
|
+
# tests in tests/providers/test_moonshine_server.py exercise the
|
|
46
|
+
# real subprocess path; without ffmpeg they hit FileNotFoundError
|
|
47
|
+
# instead of the CalledProcessError the code catches.
|
|
48
|
+
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends ffmpeg
|
|
49
|
+
- name: Install
|
|
50
|
+
run: pip install -e ".[dev]"
|
|
51
|
+
- name: Cache fastembed embedding model
|
|
52
|
+
# cognee memory tests (tests/memory/test_cognee_wrapper.py) embed via
|
|
53
|
+
# fastembed, which downloads qdrant/bge-small-en-v1.5-onnx-q (~64 MB)
|
|
54
|
+
# into FASTEMBED_CACHE_PATH on first use. That per-run download
|
|
55
|
+
# intermittently slow-fails (could-not-load-model-from-any-source) and
|
|
56
|
+
# gated unrelated PRs (#442, #445). The model id is fixed, so a static
|
|
57
|
+
# key caches once and restores forever (bump -vN to refresh).
|
|
58
|
+
uses: actions/cache@v5
|
|
59
|
+
with:
|
|
60
|
+
path: ${{ github.workspace }}/.fastembed-cache
|
|
61
|
+
key: fastembed-bge-small-en-v1.5-v2
|
|
62
|
+
- name: Warm fastembed cache
|
|
63
|
+
# On a cache miss, download the model now. fastembed already retries 3x
|
|
64
|
+
# internally; we wrap each attempt in `timeout` so a stalled connection
|
|
65
|
+
# is bounded (~6 min) and retried fresh rather than hanging. Best-effort:
|
|
66
|
+
# on total failure, let pytest surface the error rather than masking it.
|
|
67
|
+
run: |
|
|
68
|
+
for attempt in 1 2 3; do
|
|
69
|
+
timeout 360 python -c "from fastembed import TextEmbedding; TextEmbedding('BAAI/bge-small-en-v1.5'); print('fastembed model warmed')" && exit 0
|
|
70
|
+
echo "::warning::fastembed warm attempt $attempt failed/timed out; retrying in 10s"
|
|
71
|
+
sleep 10
|
|
72
|
+
done
|
|
73
|
+
echo "::warning::fastembed warm-up failed after 3 attempts; cognee tests will surface it"
|
|
74
|
+
- name: Lint
|
|
75
|
+
run: ruff check src tests
|
|
76
|
+
- name: Format check
|
|
77
|
+
run: ruff format --check src tests
|
|
78
|
+
- name: Test
|
|
79
|
+
# Coverage (+ verbose) only on main pushes — it's a report, not a gate,
|
|
80
|
+
# so PRs skip the instrumentation overhead and run a quiet, faster suite.
|
|
81
|
+
run: pytest tests/ ${{ github.event_name == 'push' && '-v --cov=hal0 --cov-report=term-missing' || '-q' }}
|
|
82
|
+
|
|
83
|
+
ui:
|
|
84
|
+
runs-on: ubuntu-latest
|
|
85
|
+
defaults:
|
|
86
|
+
run:
|
|
87
|
+
working-directory: ui
|
|
88
|
+
steps:
|
|
89
|
+
- uses: actions/checkout@v6
|
|
90
|
+
- uses: actions/setup-node@v6
|
|
91
|
+
with:
|
|
92
|
+
node-version: "22"
|
|
93
|
+
cache: npm
|
|
94
|
+
cache-dependency-path: ui/package-lock.json
|
|
95
|
+
- name: Install
|
|
96
|
+
run: npm ci
|
|
97
|
+
- name: Lint
|
|
98
|
+
run: npm run lint
|
|
99
|
+
- name: Build
|
|
100
|
+
run: npm run build
|