highhxcli 0.1.0__tar.gz → 0.3.2__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.
- highhxcli-0.3.2/CHANGELOG.md +147 -0
- highhxcli-0.1.0/README.md → highhxcli-0.3.2/PKG-INFO +160 -6
- highhxcli-0.1.0/PKG-INFO → highhxcli-0.3.2/README.md +117 -36
- highhxcli-0.3.2/docs/agent.md +165 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/docs/architecture.md +38 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/docs/commands.md +356 -0
- highhxcli-0.3.2/docs/computer-use.md +106 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/docs/configuration.md +16 -1
- highhxcli-0.3.2/docs/platform.md +123 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/docs/security.md +31 -4
- {highhxcli-0.1.0 → highhxcli-0.3.2}/pyproject.toml +15 -3
- {highhxcli-0.1.0 → highhxcli-0.3.2}/schemas/config.schema.json +55 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/scripts/generate_docs.py +1 -0
- highhxcli-0.3.2/server/README.md +87 -0
- highhxcli-0.3.2/server/src/highhx_platform/__init__.py +4 -0
- highhxcli-0.3.2/server/src/highhx_platform/__main__.py +33 -0
- highhxcli-0.3.2/server/src/highhx_platform/accounts.py +247 -0
- highhxcli-0.3.2/server/src/highhx_platform/app.py +127 -0
- highhxcli-0.3.2/server/src/highhx_platform/billing.py +264 -0
- highhxcli-0.3.2/server/src/highhx_platform/config.py +82 -0
- highhxcli-0.3.2/server/src/highhx_platform/db.py +68 -0
- highhxcli-0.3.2/server/src/highhx_platform/deps.py +74 -0
- highhxcli-0.3.2/server/src/highhx_platform/gateway.py +151 -0
- highhxcli-0.3.2/server/src/highhx_platform/migrations/__init__.py +1 -0
- highhxcli-0.3.2/server/src/highhx_platform/migrations/env.py +28 -0
- highhxcli-0.3.2/server/src/highhx_platform/migrations/script.py.mako +25 -0
- highhxcli-0.3.2/server/src/highhx_platform/migrations/versions/0001_initial_schema.py +187 -0
- highhxcli-0.3.2/server/src/highhx_platform/migrations/versions/0002_security_and_metering.py +66 -0
- highhxcli-0.3.2/server/src/highhx_platform/migrations/versions/0003_shared_stream_state.py +61 -0
- highhxcli-0.3.2/server/src/highhx_platform/models.py +218 -0
- highhxcli-0.3.2/server/src/highhx_platform/routers/__init__.py +1 -0
- highhxcli-0.3.2/server/src/highhx_platform/routers/account.py +204 -0
- highhxcli-0.3.2/server/src/highhx_platform/routers/ai.py +246 -0
- highhxcli-0.3.2/server/src/highhx_platform/routers/auth.py +232 -0
- highhxcli-0.3.2/server/src/highhx_platform/routers/billing.py +144 -0
- highhxcli-0.3.2/server/src/highhx_platform/routers/web.py +141 -0
- highhxcli-0.3.2/server/src/highhx_platform/security.py +126 -0
- highhxcli-0.3.2/server/src/highhx_platform/streams.py +240 -0
- highhxcli-0.3.2/server/tests/conftest.py +134 -0
- highhxcli-0.3.2/server/tests/helpers.py +193 -0
- highhxcli-0.3.2/server/tests/test_cli_integration.py +176 -0
- highhxcli-0.3.2/server/tests/test_e2e_final.py +153 -0
- highhxcli-0.3.2/server/tests/test_hardening.py +648 -0
- highhxcli-0.3.2/server/tests/test_multi_instance.py +221 -0
- highhxcli-0.3.2/server/tests/test_platform.py +367 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/__init__.py +1 -1
- highhxcli-0.3.2/src/highhx/agent/__init__.py +15 -0
- highhxcli-0.3.2/src/highhx/agent/bootstrap.py +106 -0
- highhxcli-0.3.2/src/highhx/agent/context.py +162 -0
- highhxcli-0.3.2/src/highhx/agent/history.py +234 -0
- highhxcli-0.3.2/src/highhx/agent/memory.py +67 -0
- highhxcli-0.3.2/src/highhx/agent/messages.py +150 -0
- highhxcli-0.3.2/src/highhx/agent/model/__init__.py +14 -0
- highhxcli-0.3.2/src/highhx/agent/model/anthropic.py +229 -0
- highhxcli-0.3.2/src/highhx/agent/model/base.py +229 -0
- highhxcli-0.3.2/src/highhx/agent/model/gemini.py +222 -0
- highhxcli-0.3.2/src/highhx/agent/model/openai.py +219 -0
- highhxcli-0.3.2/src/highhx/agent/model/platform.py +131 -0
- highhxcli-0.3.2/src/highhx/agent/model/registry.py +92 -0
- highhxcli-0.3.2/src/highhx/agent/model/resilience.py +68 -0
- highhxcli-0.3.2/src/highhx/agent/permissions.py +197 -0
- highhxcli-0.3.2/src/highhx/agent/planner.py +137 -0
- highhxcli-0.3.2/src/highhx/agent/prompts.py +75 -0
- highhxcli-0.3.2/src/highhx/agent/repl.py +460 -0
- highhxcli-0.3.2/src/highhx/agent/running.py +118 -0
- highhxcli-0.3.2/src/highhx/agent/session.py +606 -0
- highhxcli-0.3.2/src/highhx/agent/settings.py +57 -0
- highhxcli-0.3.2/src/highhx/agent/state.py +70 -0
- highhxcli-0.3.2/src/highhx/agent/streaming.py +70 -0
- highhxcli-0.3.2/src/highhx/agent/sync.py +80 -0
- highhxcli-0.3.2/src/highhx/agent/tools/__init__.py +6 -0
- highhxcli-0.3.2/src/highhx/agent/tools/base.py +129 -0
- highhxcli-0.3.2/src/highhx/agent/tools/commands.py +311 -0
- highhxcli-0.3.2/src/highhx/agent/tools/computer.py +178 -0
- highhxcli-0.3.2/src/highhx/agent/tools/devops.py +338 -0
- highhxcli-0.3.2/src/highhx/agent/tools/files.py +270 -0
- highhxcli-0.3.2/src/highhx/agent/tools/git.py +179 -0
- highhxcli-0.3.2/src/highhx/agent/tools/project.py +186 -0
- highhxcli-0.3.2/src/highhx/agent/tools/registry.py +101 -0
- highhxcli-0.3.2/src/highhx/agent/ui.py +360 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/approvals/manager.py +18 -1
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/cli.py +41 -5
- highhxcli-0.3.2/src/highhx/cloud/__init__.py +11 -0
- highhxcli-0.3.2/src/highhx/cloud/account.py +242 -0
- highhxcli-0.3.2/src/highhx/cloud/client.py +194 -0
- highhxcli-0.3.2/src/highhx/cloud/credentials.py +113 -0
- highhxcli-0.3.2/src/highhx/cloud/plans.py +108 -0
- highhxcli-0.3.2/src/highhx/cloud/protocol.py +67 -0
- highhxcli-0.3.2/src/highhx/cloud/sse.py +65 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/__init__.py +9 -0
- highhxcli-0.3.2/src/highhx/commands/cloud/__init__.py +1 -0
- highhxcli-0.3.2/src/highhx/commands/cloud/account.py +260 -0
- highhxcli-0.3.2/src/highhx/commands/cloud/agent.py +256 -0
- highhxcli-0.3.2/src/highhx/commands/cloud/login.py +89 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/code/exec.py +1 -1
- highhxcli-0.3.2/src/highhx/commands/computer/__init__.py +1 -0
- highhxcli-0.3.2/src/highhx/commands/computer/do.py +57 -0
- highhxcli-0.3.2/src/highhx/commands/computer/main.py +321 -0
- highhxcli-0.3.2/src/highhx/commands/observability/audit.py +46 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/registry.py +13 -0
- highhxcli-0.3.2/src/highhx/computer/__init__.py +11 -0
- highhxcli-0.3.2/src/highhx/computer/browser.py +565 -0
- highhxcli-0.3.2/src/highhx/computer/desktop.py +372 -0
- highhxcli-0.3.2/src/highhx/computer/flows.py +210 -0
- highhxcli-0.3.2/src/highhx/computer/intents.py +96 -0
- highhxcli-0.3.2/src/highhx/computer/model.py +334 -0
- highhxcli-0.3.2/src/highhx/computer/providers.py +92 -0
- highhxcli-0.3.2/src/highhx/computer/runtime.py +310 -0
- highhxcli-0.3.2/src/highhx/computer/session.py +142 -0
- highhxcli-0.3.2/src/highhx/computer/websocket.py +158 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/config/loader.py +1 -1
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/config/validation.py +15 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/core/errors.py +59 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/deployment/health.py +5 -1
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/detection/operating_system.py +1 -1
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/databases/base.py +20 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/databases/mysql.py +9 -4
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/databases/postgres.py +11 -7
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/databases/sqlite.py +10 -5
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/docker/client.py +1 -1
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/project/manifest.py +24 -3
- highhxcli-0.3.2/src/highhx/safety/__init__.py +29 -0
- highhxcli-0.3.2/src/highhx/safety/actions.py +74 -0
- highhxcli-0.3.2/src/highhx/safety/audit.py +149 -0
- highhxcli-0.3.2/src/highhx/safety/classifier.py +724 -0
- highhxcli-0.3.2/src/highhx/safety/confirmation.py +149 -0
- highhxcli-0.3.2/src/highhx/safety/gate.py +216 -0
- highhxcli-0.3.2/src/highhx/safety/injection.py +60 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/security/secrets.py +72 -1
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/storage/database.py +14 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/storage/history.py +5 -6
- highhxcli-0.3.2/src/highhx/storage/migrations.py +189 -0
- highhxcli-0.3.2/src/highhx/ui/branding.py +277 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/engine.py +1 -1
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/parser.py +1 -1
- highhxcli-0.3.2/tests/e2e/test_free_without_ai.py +76 -0
- highhxcli-0.3.2/tests/unit/agent/conftest.py +233 -0
- highhxcli-0.3.2/tests/unit/agent/test_cloud_and_cli.py +320 -0
- highhxcli-0.3.2/tests/unit/agent/test_injection_surfaces.py +133 -0
- highhxcli-0.3.2/tests/unit/agent/test_live_providers.py +59 -0
- highhxcli-0.3.2/tests/unit/agent/test_provider_wire.py +357 -0
- highhxcli-0.3.2/tests/unit/agent/test_providers.py +395 -0
- highhxcli-0.3.2/tests/unit/agent/test_repl.py +185 -0
- highhxcli-0.3.2/tests/unit/agent/test_resilience_and_state.py +334 -0
- highhxcli-0.3.2/tests/unit/agent/test_safety.py +346 -0
- highhxcli-0.3.2/tests/unit/agent/test_session.py +365 -0
- highhxcli-0.3.2/tests/unit/agent/test_tools.py +272 -0
- highhxcli-0.3.2/tests/unit/computer/conftest.py +152 -0
- highhxcli-0.3.2/tests/unit/computer/test_browser_resilience.py +150 -0
- highhxcli-0.3.2/tests/unit/computer/test_browser_scripts.py +130 -0
- highhxcli-0.3.2/tests/unit/computer/test_computer.py +384 -0
- highhxcli-0.3.2/tests/unit/computer/test_live_browser.py +135 -0
- highhxcli-0.3.2/tests/unit/computer/test_live_ocr.py +24 -0
- highhxcli-0.3.2/tests/unit/computer/test_ocr_and_platforms.py +121 -0
- highhxcli-0.3.2/tests/unit/security/__init__.py +0 -0
- highhxcli-0.3.2/tests/unit/security/test_hardening_review.py +83 -0
- highhxcli-0.3.2/tests/unit/storage/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/storage/test_storage.py +26 -0
- highhxcli-0.3.2/tests/unit/ui/__init__.py +0 -0
- highhxcli-0.3.2/tests/unit/ui/test_branding.py +207 -0
- highhxcli-0.3.2/tests/unit/workflows/__init__.py +0 -0
- highhxcli-0.1.0/CHANGELOG.md +0 -42
- highhxcli-0.1.0/src/highhx/storage/migrations.py +0 -109
- {highhxcli-0.1.0 → highhxcli-0.3.2}/.gitignore +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/CODE_OF_CONDUCT.md +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/CONTRIBUTING.md +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/LICENSE +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/SECURITY.md +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/docs/development.md +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/docs/plugins.md +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/docs/troubleshooting.md +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/docs/workflows.md +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/README.md +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/basic/.highhx/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/basic/.highhx/workflows/check.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/basic/README.md +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/basic/calc.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/basic/tests/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/basic/tests/test_calc.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/ci/.highhx/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/ci/.highhx/workflows/pipeline.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/ci/.highhx/workflows/tests.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/docker/.highhx/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/docker/.highhx/workflows/up.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/flutter/.highhx/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/flutter/.highhx/workflows/build.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/monorepo/.highhx/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/monorepo/.highhx/workflows/test-all.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/node/.highhx/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/node/.highhx/workflows/ci.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/production/.highhx/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/production/.highhx/environment.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/production/.highhx/policies.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/production/.highhx/workflows/deploy.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/production/db/migrations/001_create_users.sql +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/production/db/migrations/002_add_name.sql +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/python/.highhx/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/python/.highhx/workflows/check.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/examples/python/.highhx/workflows/release.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/schemas/plugin.schema.json +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/schemas/workflow.schema.json +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/scripts/generate_schemas.py +0 -0
- {highhxcli-0.1.0/tests → highhxcli-0.3.2/server/src/highhx_platform/migrations/versions}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/__main__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/approvals/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/approvals/policy.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/approvals/risk.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/approvals/rules.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/automation/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/automation/cron.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/automation/hooks.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/automation/scheduler.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/automation/triggers.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/automation/watcher.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/building/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/building/artifacts.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/building/builder.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/building/cleanup.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/building/packaging.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/automation/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/automation/hook.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/automation/schedule.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/automation/trigger.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/automation/watch.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/build/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/build/artifacts.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/build/build.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/build/clean.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/build/package.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/code/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/code/fix.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/code/run.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/code/script.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/code/task.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/code/watch.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/database/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/database/backup.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/database/main.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/database/migrate.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/database/restore.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/database/seed.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/database/status.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/dependencies/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/dependencies/audit.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/dependencies/clean.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/dependencies/install.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/dependencies/main.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/dependencies/outdated.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/dependencies/update.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/deployment/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/deployment/deploy.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/deployment/environments.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/deployment/logs.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/deployment/rollback.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/deployment/status.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/diagnostics/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/diagnostics/debug.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/diagnostics/diagnose.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/diagnostics/doctor.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/diagnostics/repair.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/diagnostics/trace.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/docker/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/docker/down.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/docker/logs.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/docker/main.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/docker/up.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/environment/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/environment/check.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/environment/diff.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/environment/main.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/environment/profile.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/environment/set.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/git/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/git/branch.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/git/commit.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/git/diff.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/git/history.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/git/main.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/git/status.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/git/sync.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/git/tag.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/groups.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/observability/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/observability/history.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/observability/logs.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/observability/report.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/plugins/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/plugins/install.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/plugins/list.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/plugins/main.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/plugins/remove.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/plugins/search.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/plugins/trust.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/plugins/update.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/project/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/project/check.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/project/dev.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/project/doctor.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/project/info.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/project/init.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/project/restart.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/project/start.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/project/status.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/project/stop.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/release/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/release/changelog.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/release/publish.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/release/release.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/release/version.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/security/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/security/config.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/security/dependencies.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/security/main.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/security/report.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/security/scan.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/security/secrets.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/services/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/services/main.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/services/ports.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/team/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/team/config.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/team/policy.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/team/profile.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/team/workspace.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/testing/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/testing/benchmark.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/testing/test.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/workflows/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/workflows/create.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/workflows/graph.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/workflows/list.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/workflows/main.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/commands/workflows/validate.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/config/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/config/defaults.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/config/schema.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/core/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/core/context.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/core/engine.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/core/events.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/core/executor.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/core/lifecycle.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/core/result.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/database/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/database/backup.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/database/manager.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/database/migrations.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/database/restore.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/database/seeding.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/dependencies/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/dependencies/audit.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/dependencies/detector.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/dependencies/installer.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/dependencies/manager.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/dependencies/outdated.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/dependencies/updater.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/deployment/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/deployment/manager.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/deployment/rollback.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/deployment/state.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/deployment/strategy.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/deployment/target.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/detection/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/detection/container.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/detection/database.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/detection/framework.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/detection/language.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/detection/package_manager.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/detection/runtime.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/detection/tools.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/diagnostics/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/diagnostics/diagnose.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/diagnostics/doctor.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/diagnostics/repair.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/environment/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/environment/dotenv.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/environment/manager.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/environment/profiles.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/environment/secrets.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/environment/validation.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/environment/variables.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/execution/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/execution/cancellation.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/execution/command.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/execution/environment.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/execution/isolation.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/execution/parallel.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/execution/process.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/execution/retry.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/execution/shell.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/execution/timeout.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/git/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/git/branches.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/git/commits.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/git/diff.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/git/history.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/git/manager.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/git/repository.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/git/status.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/git/tags.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/cloud/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/cloud/registry.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/databases/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/databases/url.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/docker/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/kubernetes/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/kubernetes/client.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/ssh/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/ssh/client.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/terraform/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/integrations/terraform/client.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/observability/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/observability/events.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/observability/logger.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/observability/metrics.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/observability/tracing.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/plugins/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/plugins/interface.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/plugins/loader.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/plugins/manager.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/plugins/manifest.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/plugins/registry.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/plugins/sandbox.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/policy/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/policy/engine.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/policy/rules.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/policy/validator.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/project/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/project/context.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/project/detector.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/project/initializer.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/project/monorepo.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/project/scanner.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/project/status.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/project/workspace.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/release/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/release/changelog.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/release/manager.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/release/publisher.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/release/versioning.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/security/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/security/dependencies.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/security/filesystem.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/security/permissions.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/security/policies.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/security/report.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/security/scanner.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/security/secrets_scan.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/services/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/services/health.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/services/manager.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/services/ports.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/services/registry.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/storage/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/storage/cache.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/storage/logs.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/testing/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/testing/benchmark.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/testing/coverage.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/testing/discovery.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/testing/runner.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/ui/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/ui/dashboard.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/ui/errors.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/ui/output.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/ui/progress.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/ui/prompts.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/ui/reporting.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/ui/tables.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/ui/terminal.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/utils/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/utils/filesystem.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/utils/hashing.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/utils/paths.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/utils/platform.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/utils/processes.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/utils/time.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/utils/validation.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/conditions.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/dependency_graph.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/loader.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/resolver.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/scheduler.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/schema.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/templates.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/validator.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/src/highhx/workflows/variables.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/cpp/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/cpp/workflows/build.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/docker/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/docker/workflows/build.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/flutter/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/flutter/workflows/test.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/generic/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/generic/environment.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/generic/policies.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/generic/workflows/build.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/generic/workflows/ci.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/generic/workflows/deploy.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/generic/workflows/dev.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/generic/workflows/release.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/generic/workflows/rollback.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/generic/workflows/test.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/java/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/monorepo/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/monorepo/workflows/test.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/nextjs/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/node/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/python/config.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/templates/react/config.yaml +0 -0
- {highhxcli-0.1.0/tests/e2e → highhxcli-0.3.2/tests}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/conftest.py +0 -0
- {highhxcli-0.1.0/tests/integration → highhxcli-0.3.2/tests/e2e}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/e2e/_helpers.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/e2e/test_deploy.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/e2e/test_dev.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/e2e/test_examples.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/e2e/test_init.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/e2e/test_interrupts.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/e2e/test_long_running.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/e2e/test_paths_with_spaces.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/e2e/test_rollback.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/e2e/test_services_lifecycle.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/docker_project/Dockerfile +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/docker_project/compose.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/monorepo/package.json +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/monorepo/packages/api/package.json +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/monorepo/packages/web/package.json +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/node_project/package.json +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/node_project/pnpm-lock.yaml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/node_project/tsconfig.json +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/python_project/pyproject.toml +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/python_project/src/pyapp/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/python_project/src/pyapp/calc.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/fixtures/python_project/tests/test_calc.py +0 -0
- {highhxcli-0.1.0/tests/integration/docker → highhxcli-0.3.2/tests/integration}/__init__.py +0 -0
- {highhxcli-0.1.0/tests/integration/git → highhxcli-0.3.2/tests/integration/docker}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/integration/docker/test_docker_project.py +0 -0
- {highhxcli-0.1.0/tests/integration/node → highhxcli-0.3.2/tests/integration/git}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/integration/git/test_release_flow.py +0 -0
- {highhxcli-0.1.0/tests/integration/python → highhxcli-0.3.2/tests/integration/node}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/integration/node/test_node_project.py +0 -0
- {highhxcli-0.1.0/tests/integration/workflows → highhxcli-0.3.2/tests/integration/python}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/integration/python/test_python_project.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/integration/test_external_tool_contracts.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/integration/test_mysql_real.py +0 -0
- {highhxcli-0.1.0/tests/security → highhxcli-0.3.2/tests/integration/workflows}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/integration/workflows/test_cli_workflows.py +0 -0
- {highhxcli-0.1.0/tests/unit → highhxcli-0.3.2/tests/security}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/security/test_permissions.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/security/test_policies.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/security/test_secrets.py +0 -0
- {highhxcli-0.1.0/tests/unit/commands → highhxcli-0.3.2/tests/unit}/__init__.py +0 -0
- {highhxcli-0.1.0/tests/unit/core → highhxcli-0.3.2/tests/unit/agent}/__init__.py +0 -0
- {highhxcli-0.1.0/tests/unit/detection → highhxcli-0.3.2/tests/unit/commands}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/commands/test_cli.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/commands/test_docs.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/commands/test_json_contract.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/commands/test_project_commands.py +0 -0
- {highhxcli-0.1.0/tests/unit/execution → highhxcli-0.3.2/tests/unit/computer}/__init__.py +0 -0
- {highhxcli-0.1.0/tests/unit/git → highhxcli-0.3.2/tests/unit/core}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/core/test_engine.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/core/test_errors_events.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/core/test_executor.py +0 -0
- {highhxcli-0.1.0/tests/unit/security → highhxcli-0.3.2/tests/unit/detection}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/detection/test_detection.py +0 -0
- {highhxcli-0.1.0/tests/unit/storage → highhxcli-0.3.2/tests/unit/execution}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/execution/test_command.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/execution/test_process.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/execution/test_retry_parallel_cancel.py +0 -0
- {highhxcli-0.1.0/tests/unit/workflows → highhxcli-0.3.2/tests/unit/git}/__init__.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/git/test_parsers.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/git/test_repository.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/security/test_secrets_scanner.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_approvals_policy.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_audit_regressions.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_automation.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_config_environment.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_cross_platform.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_dependencies_testing.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_deployment_database.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_gap_coverage.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_packaging.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_plugins.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_release.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_schemas_examples.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/test_services_docker.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/workflows/test_conditions.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/workflows/test_dependency_graph.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/workflows/test_engine.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/workflows/test_parser_validator.py +0 -0
- {highhxcli-0.1.0 → highhxcli-0.3.2}/tests/unit/workflows/test_templates.py +0 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
The format follows [Keep a Changelog](https://keepachangelog.com/) and the
|
|
5
|
+
project uses [Semantic Versioning](https://semver.org/).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.3.0] - 2026-09-27
|
|
10
|
+
|
|
11
|
+
Two plans, one platform: **Free** is deterministic HighhX; **Pro** adds the AI agent and AI
|
|
12
|
+
computer use on top of the same tools, safety, confirmation, verification and audit.
|
|
13
|
+
|
|
14
|
+
### Terminal identity
|
|
15
|
+
|
|
16
|
+
- **The HighhX knight**: terminal-native brand art (Unicode quadrant blocks, ASCII fallback;
|
|
17
|
+
full 26x31 and compact 13x15) shown by `highhx` on a terminal and at the start of
|
|
18
|
+
`highhx agent`, sized to the terminal (`HIGHHX_BANNER=full|compact|off`, `HIGHHX_ASCII`).
|
|
19
|
+
|
|
20
|
+
### Reliability and security hardening
|
|
21
|
+
|
|
22
|
+
- Platform: AI stream state and rate limits live in the database (migration 0003), so any
|
|
23
|
+
instance can resume, replay or cancel a stream; dead instances' streams end with a retryable
|
|
24
|
+
error; tested with two instances sharing only the database (SQLite and PostgreSQL).
|
|
25
|
+
- Providers: cancellation aborts the upstream socket immediately; inactivity timeouts; SDK
|
|
26
|
+
retries only before streaming; truncated streams are errors, not answers; raw transport errors
|
|
27
|
+
are normalised — tested through the real Anthropic, OpenAI and Gemini SDKs over HTTP.
|
|
28
|
+
- Browser: a lost DevTools answer is an *unknown* outcome that is never repeated (also after a
|
|
29
|
+
reconnect); per-call timeouts now fire when the browser is silent; waits for navigations
|
|
30
|
+
started by an action; page-text changes count for verification; sockets closed on crashes.
|
|
31
|
+
- OCR is available as a read-only `screen` source; OCR and accessibility subprocesses (and
|
|
32
|
+
their children) are killed on cancellation.
|
|
33
|
+
- Migration names are validated before use in SQL (MySQL backslash escaping); project XML
|
|
34
|
+
manifests with DTDs/entities are refused; health checks only speak http(s).
|
|
35
|
+
|
|
36
|
+
### Features
|
|
37
|
+
|
|
38
|
+
- **Shared safety layer** (`highhx/safety`) for Free automation and the agent: semantic
|
|
39
|
+
classification of commands (parsed pipelines, `sh -c`, `sudo`, force pushes, destructive SQL,
|
|
40
|
+
installs, publishing, credentials, permissions, security controls, remote code, production)
|
|
41
|
+
and UI actions (role/type/structure and multilingual labels); explicit confirmation panel;
|
|
42
|
+
single-use HMAC approval tickets bound to the exact action; blocked catastrophic actions;
|
|
43
|
+
redacted audit log (`highhx audit`).
|
|
44
|
+
- **Computer use** (`highhx/computer`): semantic observations, finite action candidates,
|
|
45
|
+
observe → act → re-observe → verify runtime with recovery; Chrome/Chromium/Edge/Brave via
|
|
46
|
+
DevTools; macOS Accessibility; OCR via tesseract. Free: `highhx computer …` commands and YAML
|
|
47
|
+
flows; Pro: `computer_observe`, `computer_act`, `browser_open`, `app_open` agent tools.
|
|
48
|
+
- `highhx do "<request>"`: deterministic plain-language requests without AI.
|
|
49
|
+
- `highhx agent stop`: kill switch that cancels model requests, retries, tools and their child
|
|
50
|
+
processes.
|
|
51
|
+
- Model calls: exponential backoff with jitter, bounded attempts, circuit breaker, per-attempt
|
|
52
|
+
idempotency keys; tools are never retried automatically.
|
|
53
|
+
- Resumable streaming: SSE event ids, `Last-Event-ID` resume without re-calling the model,
|
|
54
|
+
duplicate suppression, remote cancellation.
|
|
55
|
+
- CLI ↔ platform protocol versioning (`X-HighhX-Protocol: 1.1`, 426 on incompatibility).
|
|
56
|
+
- Agent session state machine (`created`, `running`, `waiting_for_confirmation`, `completed`,
|
|
57
|
+
`failed`, `cancelled`, `closed`) enforced on CLI and platform; single-process session leases.
|
|
58
|
+
- Tool results carry structured `error_code` and `verified`; per-tool timeouts.
|
|
59
|
+
- Prompt-injection defence: tool output and external content framed as untrusted data.
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
|
|
63
|
+
- All Pro AI goes through the HighhX platform (authenticated, entitled, metered). The
|
|
64
|
+
client-side bring-your-own-key path was removed; `--provider` selects the gateway upstream.
|
|
65
|
+
- Platform 0.2.0: Alembic migrations (upgrades 0.1.0 databases in place), token expiry and
|
|
66
|
+
rotation, account suspension, subscription expiry with grace, out-of-order and concurrent
|
|
67
|
+
webhook handling, `invoice.paid` renewals, idempotent metering, per-account concurrency limit,
|
|
68
|
+
computer-use entitlement check, upstream fallbacks, `/readyz`, optional CORS.
|
|
69
|
+
|
|
70
|
+
### Fixed
|
|
71
|
+
|
|
72
|
+
- Stripe: the webhook handler fetched subscriptions with a POST (which updates them); it now
|
|
73
|
+
uses GET. Subscription events now record the Stripe customer, so later invoice events apply.
|
|
74
|
+
- Concurrent HighhX processes opening a fresh state database raced on migrations; migrations now
|
|
75
|
+
run under an exclusive lock.
|
|
76
|
+
- Agent file edits invalidate stale Python bytecode.
|
|
77
|
+
|
|
78
|
+
## [0.2.0] - 2026-09-27
|
|
79
|
+
|
|
80
|
+
### Features
|
|
81
|
+
|
|
82
|
+
- **HighhX Pro — `highhx agent`**: an AI developer agent in the terminal. Describe the task in plain
|
|
83
|
+
language; the agent inspects the project, proposes a plan (approve / revise), works through
|
|
84
|
+
HighhX's own capabilities as tools — code search and edits, tests, lint/type checks, fixers,
|
|
85
|
+
builds, dependencies, git, security scans, doctor/diagnose/repair, workflows, deployments and
|
|
86
|
+
rollbacks — verifies the result and summarises it. Live progress (✓ / ✗ per step), streamed
|
|
87
|
+
Markdown answers, diffs for every file change, `/undo`, and slash commands (`/help`, `/status`,
|
|
88
|
+
`/plan`, `/context`, `/model`, `/mode`, `/history`, `/changes`, `/memory`, `/usage`, `/clear`, `/quit`).
|
|
89
|
+
- The agent reuses the existing safety system: every command goes through `Engine.run` (risk
|
|
90
|
+
classification, `policies.yaml`, approvals, history); agent actions have policy names
|
|
91
|
+
(`agent:write`, `agent:exec`, `agent:deploy:<target>` …); approval modes `ask` (default),
|
|
92
|
+
`auto-edit` and `read-only`; deployments and rollbacks always ask.
|
|
93
|
+
- Provider abstraction with streaming adapters for the managed HighhX gateway (default), Anthropic,
|
|
94
|
+
OpenAI and Google Gemini (bring your own key: `pip install "highhxcli[ai]"`).
|
|
95
|
+
- Sessions and transcripts are saved (`highhx agent --continue`, `--resume ID`, `highhx agent sessions`);
|
|
96
|
+
per-project memory in `.highhx/memory.md`; project instructions from `HIGHHX.md` / `AGENTS.md`.
|
|
97
|
+
- `highhx agent "…"` handles one request non-interactively (pipes, CI, `--json`).
|
|
98
|
+
- HighhX platform integration: `highhx login` (browser device flow or `--with-token`), `highhx logout`,
|
|
99
|
+
`highhx account` (`status`, `plans`, `usage`, `upgrade`, `billing`, `settings`).
|
|
100
|
+
- `agent:` section in `.highhx/config.yaml` (provider, model, approval, max_steps, effort, instructions).
|
|
101
|
+
- A bare `highhx` now suggests the next step (`highhx init`, or signing in for Pro).
|
|
102
|
+
- New exit code 10: HighhX account required, or the plan does not include the feature.
|
|
103
|
+
- `server/`: the HighhX Platform backend (FastAPI + SQLAlchemy; SQLite or PostgreSQL) — accounts,
|
|
104
|
+
device sign-in, hashed API tokens, Free/Pro entitlements, the metered AI gateway, projects,
|
|
105
|
+
agent-session sync, Stripe checkout/portal/webhooks, rate limiting and security headers.
|
|
106
|
+
|
|
107
|
+
### Security
|
|
108
|
+
|
|
109
|
+
- The agent never reads or writes secret files (`.env*`, private keys, credential files), cannot
|
|
110
|
+
leave the project root (symlinks included), cannot modify `.git/` or HighhX state, and honours
|
|
111
|
+
`forbidden_files`. Tool output is redacted before it reaches the model or the transcript.
|
|
112
|
+
- Platform credentials are stored per user with mode 0600; plain http is refused except for localhost.
|
|
113
|
+
|
|
114
|
+
## [0.1.0] - 2026-09-26
|
|
115
|
+
|
|
116
|
+
### Features
|
|
117
|
+
|
|
118
|
+
- Project detection for Python, Node.js, React, Next.js, Flutter/Dart, Java, C/C++, Go, Rust, Docker, databases and monorepos.
|
|
119
|
+
- `highhx init` with per-stack templates for config, environment, policies and workflows.
|
|
120
|
+
- Execution engine: streaming output, timeouts, cancellation, retries with exponential backoff, parallel execution, graceful shutdown.
|
|
121
|
+
- Workflow engine: dependency graphs, parallel stages, conditions, variables, outputs, approvals, retries, timeouts, reusable workflows, dry-run, validation and graphs.
|
|
122
|
+
- Risk classification and approvals with non-bypassable rules; project policies.
|
|
123
|
+
- Environment profiles with `.env` files, validation and masked secrets.
|
|
124
|
+
- Dependencies, testing (with coverage/changed/watch), building, artifacts and cleanup.
|
|
125
|
+
- Git helpers, semantic versioning, changelog generation from Conventional Commits, releases and publishing.
|
|
126
|
+
- Deployment targets (local, Docker, SSH, Kubernetes, Terraform, plugins) with preflight, health checks, state tracking and rollback.
|
|
127
|
+
- Local security checks: secrets, permissions, configuration, workflows, policies and dependency audits.
|
|
128
|
+
- Services, ports, Docker Compose and database (SQLite, PostgreSQL, MySQL) management.
|
|
129
|
+
- Plugins with manifests, declarative contributions and integrity-checked code.
|
|
130
|
+
- Execution history, redacted logs, tracing, reports, doctor, diagnose and repair.
|
|
131
|
+
|
|
132
|
+
### Security
|
|
133
|
+
|
|
134
|
+
- Plugin code runs only for contents trusted per user (`highhx plugin trust`); a repository cannot enable its own plugin code. Plugins containing symlinks are rejected and plugin names are validated.
|
|
135
|
+
- All output — including `--json` documents and captured command output — is redacted.
|
|
136
|
+
- Isolated plugin commands never receive environment-profile values.
|
|
137
|
+
- Values substituted into deploy commands are restricted to a safe character set.
|
|
138
|
+
- Hardened risk rules (wrapped shells, split `rm` flags, fork bombs, raw device writes, `find -delete`, `docker rm`, `shred`/`truncate`).
|
|
139
|
+
- Duplicate YAML keys are rejected.
|
|
140
|
+
|
|
141
|
+
### Reliability
|
|
142
|
+
|
|
143
|
+
- Workflow step output is written to execution logs; retries, step transitions and approval decisions are logged.
|
|
144
|
+
- `--json` always emits exactly one JSON document.
|
|
145
|
+
- An unreadable state database is diagnosed and can be repaired (`highhx repair`).
|
|
146
|
+
- `mysqldump` runs with `--no-tablespaces`, so backups work without the PROCESS privilege.
|
|
147
|
+
- Global `--profile` was renamed `--config-profile` so it no longer collides with `env --profile`.
|
|
@@ -1,10 +1,61 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: highhxcli
|
|
3
|
+
Version: 0.3.2
|
|
4
|
+
Summary: HighhX — the developer command center CLI, with HighhX Pro: an AI developer agent in your terminal.
|
|
5
|
+
Author: HighhX contributors
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Keywords: ai-agent,automation,cli,coding-agent,developer-tools,devops,workflow
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Requires-Dist: click>=8.1
|
|
21
|
+
Requires-Dist: pyyaml>=6.0
|
|
22
|
+
Requires-Dist: rich>=13.7
|
|
23
|
+
Provides-Extra: ai
|
|
24
|
+
Requires-Dist: anthropic>=1.0; extra == 'ai'
|
|
25
|
+
Requires-Dist: google-genai>=1.20; extra == 'ai'
|
|
26
|
+
Requires-Dist: openai>=1.40; extra == 'ai'
|
|
27
|
+
Provides-Extra: anthropic
|
|
28
|
+
Requires-Dist: anthropic>=1.0; extra == 'anthropic'
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: anthropic>=1.0; extra == 'dev'
|
|
31
|
+
Requires-Dist: coverage[toml]>=7.4; extra == 'dev'
|
|
32
|
+
Requires-Dist: google-genai>=1.20; extra == 'dev'
|
|
33
|
+
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
34
|
+
Requires-Dist: openai>=1.40; extra == 'dev'
|
|
35
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
36
|
+
Requires-Dist: ruff>=0.5; extra == 'dev'
|
|
37
|
+
Requires-Dist: types-pyyaml; extra == 'dev'
|
|
38
|
+
Provides-Extra: gemini
|
|
39
|
+
Requires-Dist: google-genai>=1.20; extra == 'gemini'
|
|
40
|
+
Provides-Extra: openai
|
|
41
|
+
Requires-Dist: openai>=1.40; extra == 'openai'
|
|
42
|
+
Description-Content-Type: text/markdown
|
|
43
|
+
|
|
1
44
|
# HighhX
|
|
2
45
|
|
|
3
|
-
**HighhX is a
|
|
46
|
+
**HighhX is a developer command center for your terminal.** One CLI — `highhx` — detects
|
|
4
47
|
your project, runs your workflows, manages environments, dependencies, tests,
|
|
5
48
|
builds, git, releases, deployments, services and databases, and keeps a searchable
|
|
6
49
|
history of everything it did. Every risky action is classified and needs approval.
|
|
7
50
|
|
|
51
|
+
| | |
|
|
52
|
+
|---|---|
|
|
53
|
+
| **HighhX Free** | Deterministic HighhX: the full developer CLI plus browser/desktop automation with known targets (`highhx computer`, `highhx do`). Local, no account, no AI. |
|
|
54
|
+
| **HighhX Pro** | Everything in Free plus `highhx agent` — an AI developer agent that plans, changes code, runs your tools, operates browsers and apps (AI computer use), recovers from failures and verifies the result. |
|
|
55
|
+
|
|
56
|
+
Free and Pro share one execution platform: the same tools, safety policy, confirmations,
|
|
57
|
+
verification and audit trail. The AI only chooses actions; it never gets its own way to run them.
|
|
58
|
+
|
|
8
59
|
```text
|
|
9
60
|
$ highhx doctor
|
|
10
61
|
|
|
@@ -28,6 +79,7 @@ Suggested actions
|
|
|
28
79
|
- [Why HighhX](#why-highhx)
|
|
29
80
|
- [Installation](#installation)
|
|
30
81
|
- [Quick start](#quick-start)
|
|
82
|
+
- [HighhX Pro: the AI developer agent](#highhx-pro-the-ai-developer-agent)
|
|
31
83
|
- [Commands](#commands)
|
|
32
84
|
- [Workflows](#workflows)
|
|
33
85
|
- [Configuration](#configuration)
|
|
@@ -42,8 +94,10 @@ Most projects accumulate a pile of scripts, Makefile targets, README snippets an
|
|
|
42
94
|
CI YAML that only half the team remembers. HighhX gives every project the same
|
|
43
95
|
front door:
|
|
44
96
|
|
|
45
|
-
- **Local-first
|
|
46
|
-
|
|
97
|
+
- **Local-first CLI.** Every Free command works without an account or network.
|
|
98
|
+
History, logs and deployment state live in `.highhx/` on your machine.
|
|
99
|
+
- **An AI agent that uses your real tools (Pro).** `highhx agent` works through HighhX's
|
|
100
|
+
own commands and safety system — not a chatbot pasting shell snippets.
|
|
47
101
|
- **Detects instead of asking.** Python (pip/uv/poetry/pdm/pipenv), Node (npm/pnpm/yarn/bun),
|
|
48
102
|
React, Next.js, Flutter/Dart, Java (Maven/Gradle), C/C++ (CMake/Make), Go, Rust, Docker,
|
|
49
103
|
common databases and monorepos — from real manifests and lockfiles, not file extensions.
|
|
@@ -105,12 +159,105 @@ highhx logs # output of the last execution (secrets redacted)
|
|
|
105
159
|
└── logs/ # execution logs (git-ignored)
|
|
106
160
|
```
|
|
107
161
|
|
|
162
|
+
## HighhX Pro: the AI developer agent
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
$ highhx agent
|
|
166
|
+
|
|
167
|
+
▗█▖
|
|
168
|
+
▐▀▌
|
|
169
|
+
▗ ▄ ▖
|
|
170
|
+
▗▚▐█▌▞▖
|
|
171
|
+
▗▚█▐█▌█▞▖ HighhX v0.3.0
|
|
172
|
+
▟█▐█▌█▙ AI Developer Agent · Pro
|
|
173
|
+
▐▐█▌█▐█▌▌ ~/code/shop
|
|
174
|
+
█▗▜▌█▐▛▖█
|
|
175
|
+
█▐▙▘█▝▟▌█
|
|
176
|
+
▐▐▜▌▄▐▛▌▌
|
|
177
|
+
▗▝▐▐▌█▐▌▌▘▖
|
|
178
|
+
█▙▝█▌█▐█▘▟█
|
|
179
|
+
▜▙▜█▖▘█▝▗█▛▟▛
|
|
180
|
+
▀█▟▀ █ ▀▙█▀
|
|
181
|
+
▀▌ █ ▐▀
|
|
182
|
+
|
|
183
|
+
Project shop
|
|
184
|
+
Stack Python, FastAPI
|
|
185
|
+
Branch main
|
|
186
|
+
Status clean
|
|
187
|
+
AI Connected HighhX (managed)
|
|
188
|
+
|
|
189
|
+
What would you like me to do? (/help for commands)
|
|
190
|
+
|
|
191
|
+
❯ run all the tests and fix whatever fails
|
|
192
|
+
|
|
193
|
+
╭─ Plan ───────────────────────────────────────────╮
|
|
194
|
+
│ 1. Run the test suite │
|
|
195
|
+
│ 2. Investigate the failures │
|
|
196
|
+
│ 3. Fix the root cause │
|
|
197
|
+
│ 4. Re-run tests, lint and type checks │
|
|
198
|
+
╰─ Get the test suite green ───────────────────────╯
|
|
199
|
+
Proceed? [Y/n]
|
|
200
|
+
|
|
201
|
+
✓ Run tests — 3 tests failing (4.1s)
|
|
202
|
+
✓ Read src/shop/cart.py — 88 lines
|
|
203
|
+
⚠ Action requires approval
|
|
204
|
+
Edit src/shop/cart.py (+2 -1)
|
|
205
|
+
…diff…
|
|
206
|
+
Proceed? [y/N/a=always this session] y
|
|
207
|
+
✓ Edit src/shop/cart.py — +2 -1
|
|
208
|
+
✓ Run tests — Tests passing — 48 passed (pytest) (4.3s)
|
|
209
|
+
✓ Run checks — all checks passed
|
|
210
|
+
|
|
211
|
+
Fixed the discount rounding in `cart.total()` (it rounded before applying tax).
|
|
212
|
+
All 48 tests pass; lint and type checks are clean.
|
|
213
|
+
|
|
214
|
+
4 steps · 1 file changed (/undo) · 38.2k tokens · 41s
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Ask for what you want in plain language — *explain how this project works*, *find and
|
|
218
|
+
fix the bugs*, *add authentication*, *find security issues*, *why is the application
|
|
219
|
+
crashing?*, *prepare this project for release*, *deploy this*. The agent inspects the
|
|
220
|
+
project, proposes a plan for multi-step work, uses HighhX's capabilities as tools
|
|
221
|
+
(code search and edits, tests, checks, fixers, builds, dependencies, git, security scans,
|
|
222
|
+
doctor/diagnose/repair, workflows, deploy and rollback), verifies what it did and
|
|
223
|
+
summarises it.
|
|
224
|
+
|
|
225
|
+
- **Same safety system.** Commands run through the HighhX engine: risk classification,
|
|
226
|
+
`policies.yaml`, approvals and history. File edits show a diff and ask (unless you
|
|
227
|
+
choose `--mode auto-edit`); pushes, deploys and rollbacks always ask; production
|
|
228
|
+
deploys need typed confirmation. The agent cannot leave the project, read secret files
|
|
229
|
+
or touch `.git/`. `--mode read-only` investigates without changing anything.
|
|
230
|
+
- **Slash commands.** `/help` `/status` `/plan` `/context` `/model` `/mode` `/history`
|
|
231
|
+
`/changes` `/undo` `/memory` `/usage` `/clear` `/quit`.
|
|
232
|
+
- **Sessions.** Saved per project: `highhx agent --continue`, `--resume ID`, `highhx agent sessions`.
|
|
233
|
+
- **Scriptable.** `highhx agent "…"` outside a terminal (or with `--json`) handles one request
|
|
234
|
+
and exits — `--yes --mode auto-edit` for unattended runs in CI.
|
|
235
|
+
- **Providers.** All Pro AI goes through the HighhX platform (authenticated, plan-checked,
|
|
236
|
+
metered); choose the upstream — Anthropic, OpenAI or Gemini — with `highhx account settings`
|
|
237
|
+
or `/model`. No provider key is needed on your machine.
|
|
238
|
+
- **Kill switch.** `highhx agent stop` (or Ctrl+C) cancels the model request, retries, running
|
|
239
|
+
commands and their child processes immediately.
|
|
240
|
+
- **Computer use.** The agent observes browsers and apps semantically and chooses among valid
|
|
241
|
+
actions; see [docs/computer-use.md](docs/computer-use.md).
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
highhx login # browser sign-in (creates your account)
|
|
245
|
+
highhx account upgrade # HighhX Pro checkout
|
|
246
|
+
highhx agent # interactive
|
|
247
|
+
highhx agent "why is the application crashing?"
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Guides: [docs/agent.md](docs/agent.md) · [docs/computer-use.md](docs/computer-use.md) · [docs/platform.md](docs/platform.md).
|
|
251
|
+
|
|
108
252
|
## Commands
|
|
109
253
|
|
|
110
254
|
Full reference with every option: [docs/commands.md](docs/commands.md).
|
|
111
255
|
|
|
112
256
|
| Area | Commands |
|
|
113
257
|
|---|---|
|
|
258
|
+
| HighhX Pro | `agent` `agent sessions` `agent models` `agent stop` |
|
|
259
|
+
| Automation (no AI) | `do` `computer status/open/observe/click/type/select/press/scroll/run` `computer browser start/stop` |
|
|
260
|
+
| Account | `login` `logout` `account` `account plans/usage/upgrade/billing/settings` |
|
|
114
261
|
| Project | `init` `status` `info` `dev` `start` `stop` `restart` `check` |
|
|
115
262
|
| Code & tasks | `run <workflow>` `exec <command>` `script <name>` `task <name>` `watch` `fix` |
|
|
116
263
|
| Dependencies | `deps` `deps install` `deps update` `deps outdated` `deps audit` `deps clean` |
|
|
@@ -121,7 +268,7 @@ Full reference with every option: [docs/commands.md](docs/commands.md).
|
|
|
121
268
|
| Security | `security` `security scan/secrets/deps/config/report` |
|
|
122
269
|
| Containers & data | `docker up/down/logs` `services` `ports` `db status/migrate/seed/backup/restore` |
|
|
123
270
|
| Workflows & automation | `workflow list/validate/create/graph` `schedule` `hook` `trigger` `watchers` |
|
|
124
|
-
| Observability | `logs [--follow]` `history [id]` `report` `trace` |
|
|
271
|
+
| Observability | `logs [--follow]` `history [id]` `audit` `report` `trace` |
|
|
125
272
|
| Extensibility & team | `plugin list/install/remove/update/search/trust` `config` `policy` `workspace` `profile` |
|
|
126
273
|
| Diagnostics | `doctor` `diagnose` `repair` `debug` |
|
|
127
274
|
|
|
@@ -272,6 +419,10 @@ Details: [docs/security.md](docs/security.md).
|
|
|
272
419
|
- **Secrets.** Secret values are never printed: `env` masks them, logs and history are
|
|
273
420
|
redacted (known secret values plus token patterns), and `security secrets` reports
|
|
274
421
|
file/line/type only. New `.env` files get owner-only permissions and are git-ignored.
|
|
422
|
+
- **The agent.** Uses the same engine, policies and approvals as you do, plus path
|
|
423
|
+
confinement, secret-file protection and redaction of everything sent to the model.
|
|
424
|
+
Agent actions have policy names (`agent:write`, `agent:exec`, `agent:deploy:<target>` …)
|
|
425
|
+
so `policies.yaml` can restrict or forbid them.
|
|
275
426
|
- **No claims.** `highhx security` reports concrete findings from local checks. An empty
|
|
276
427
|
report does not mean a project is secure, and HighhX never says it is.
|
|
277
428
|
|
|
@@ -280,12 +431,15 @@ Report vulnerabilities in HighhX itself as described in [SECURITY.md](SECURITY.m
|
|
|
280
431
|
## Development
|
|
281
432
|
|
|
282
433
|
```bash
|
|
283
|
-
pip install -e ".[dev]"
|
|
284
|
-
pytest # unit, integration, security and end-to-end tests
|
|
434
|
+
pip install -e ".[dev]" -e "./server[dev]"
|
|
435
|
+
pytest # CLI: unit, integration, security and end-to-end tests
|
|
436
|
+
(cd server && pytest) # platform API + live CLI ↔ platform integration tests
|
|
285
437
|
ruff check . && ruff format --check .
|
|
286
438
|
mypy # strict typing of src/highhx
|
|
287
439
|
```
|
|
288
440
|
|
|
441
|
+
The HighhX Platform backend lives in [`server/`](server/README.md).
|
|
442
|
+
|
|
289
443
|
Architecture: [docs/architecture.md](docs/architecture.md) · Development guide:
|
|
290
444
|
[docs/development.md](docs/development.md) · Troubleshooting: [docs/troubleshooting.md](docs/troubleshooting.md).
|
|
291
445
|
|
|
@@ -1,40 +1,18 @@
|
|
|
1
|
-
Metadata-Version: 2.5
|
|
2
|
-
Name: highhxcli
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: HighhX — a local-first, offline-first developer operations command center.
|
|
5
|
-
Author: HighhX contributors
|
|
6
|
-
License-Expression: MIT
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
Keywords: automation,cli,developer-tools,devops,workflow
|
|
9
|
-
Classifier: Development Status :: 4 - Beta
|
|
10
|
-
Classifier: Environment :: Console
|
|
11
|
-
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: Operating System :: OS Independent
|
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
-
Classifier: Topic :: Software Development :: Build Tools
|
|
19
|
-
Requires-Python: >=3.11
|
|
20
|
-
Requires-Dist: click>=8.1
|
|
21
|
-
Requires-Dist: pyyaml>=6.0
|
|
22
|
-
Requires-Dist: rich>=13.7
|
|
23
|
-
Provides-Extra: dev
|
|
24
|
-
Requires-Dist: coverage[toml]>=7.4; extra == 'dev'
|
|
25
|
-
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
26
|
-
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
27
|
-
Requires-Dist: ruff>=0.5; extra == 'dev'
|
|
28
|
-
Requires-Dist: types-pyyaml; extra == 'dev'
|
|
29
|
-
Description-Content-Type: text/markdown
|
|
30
|
-
|
|
31
1
|
# HighhX
|
|
32
2
|
|
|
33
|
-
**HighhX is a
|
|
3
|
+
**HighhX is a developer command center for your terminal.** One CLI — `highhx` — detects
|
|
34
4
|
your project, runs your workflows, manages environments, dependencies, tests,
|
|
35
5
|
builds, git, releases, deployments, services and databases, and keeps a searchable
|
|
36
6
|
history of everything it did. Every risky action is classified and needs approval.
|
|
37
7
|
|
|
8
|
+
| | |
|
|
9
|
+
|---|---|
|
|
10
|
+
| **HighhX Free** | Deterministic HighhX: the full developer CLI plus browser/desktop automation with known targets (`highhx computer`, `highhx do`). Local, no account, no AI. |
|
|
11
|
+
| **HighhX Pro** | Everything in Free plus `highhx agent` — an AI developer agent that plans, changes code, runs your tools, operates browsers and apps (AI computer use), recovers from failures and verifies the result. |
|
|
12
|
+
|
|
13
|
+
Free and Pro share one execution platform: the same tools, safety policy, confirmations,
|
|
14
|
+
verification and audit trail. The AI only chooses actions; it never gets its own way to run them.
|
|
15
|
+
|
|
38
16
|
```text
|
|
39
17
|
$ highhx doctor
|
|
40
18
|
|
|
@@ -58,6 +36,7 @@ Suggested actions
|
|
|
58
36
|
- [Why HighhX](#why-highhx)
|
|
59
37
|
- [Installation](#installation)
|
|
60
38
|
- [Quick start](#quick-start)
|
|
39
|
+
- [HighhX Pro: the AI developer agent](#highhx-pro-the-ai-developer-agent)
|
|
61
40
|
- [Commands](#commands)
|
|
62
41
|
- [Workflows](#workflows)
|
|
63
42
|
- [Configuration](#configuration)
|
|
@@ -72,8 +51,10 @@ Most projects accumulate a pile of scripts, Makefile targets, README snippets an
|
|
|
72
51
|
CI YAML that only half the team remembers. HighhX gives every project the same
|
|
73
52
|
front door:
|
|
74
53
|
|
|
75
|
-
- **Local-first
|
|
76
|
-
|
|
54
|
+
- **Local-first CLI.** Every Free command works without an account or network.
|
|
55
|
+
History, logs and deployment state live in `.highhx/` on your machine.
|
|
56
|
+
- **An AI agent that uses your real tools (Pro).** `highhx agent` works through HighhX's
|
|
57
|
+
own commands and safety system — not a chatbot pasting shell snippets.
|
|
77
58
|
- **Detects instead of asking.** Python (pip/uv/poetry/pdm/pipenv), Node (npm/pnpm/yarn/bun),
|
|
78
59
|
React, Next.js, Flutter/Dart, Java (Maven/Gradle), C/C++ (CMake/Make), Go, Rust, Docker,
|
|
79
60
|
common databases and monorepos — from real manifests and lockfiles, not file extensions.
|
|
@@ -135,12 +116,105 @@ highhx logs # output of the last execution (secrets redacted)
|
|
|
135
116
|
└── logs/ # execution logs (git-ignored)
|
|
136
117
|
```
|
|
137
118
|
|
|
119
|
+
## HighhX Pro: the AI developer agent
|
|
120
|
+
|
|
121
|
+
```text
|
|
122
|
+
$ highhx agent
|
|
123
|
+
|
|
124
|
+
▗█▖
|
|
125
|
+
▐▀▌
|
|
126
|
+
▗ ▄ ▖
|
|
127
|
+
▗▚▐█▌▞▖
|
|
128
|
+
▗▚█▐█▌█▞▖ HighhX v0.3.0
|
|
129
|
+
▟█▐█▌█▙ AI Developer Agent · Pro
|
|
130
|
+
▐▐█▌█▐█▌▌ ~/code/shop
|
|
131
|
+
█▗▜▌█▐▛▖█
|
|
132
|
+
█▐▙▘█▝▟▌█
|
|
133
|
+
▐▐▜▌▄▐▛▌▌
|
|
134
|
+
▗▝▐▐▌█▐▌▌▘▖
|
|
135
|
+
█▙▝█▌█▐█▘▟█
|
|
136
|
+
▜▙▜█▖▘█▝▗█▛▟▛
|
|
137
|
+
▀█▟▀ █ ▀▙█▀
|
|
138
|
+
▀▌ █ ▐▀
|
|
139
|
+
|
|
140
|
+
Project shop
|
|
141
|
+
Stack Python, FastAPI
|
|
142
|
+
Branch main
|
|
143
|
+
Status clean
|
|
144
|
+
AI Connected HighhX (managed)
|
|
145
|
+
|
|
146
|
+
What would you like me to do? (/help for commands)
|
|
147
|
+
|
|
148
|
+
❯ run all the tests and fix whatever fails
|
|
149
|
+
|
|
150
|
+
╭─ Plan ───────────────────────────────────────────╮
|
|
151
|
+
│ 1. Run the test suite │
|
|
152
|
+
│ 2. Investigate the failures │
|
|
153
|
+
│ 3. Fix the root cause │
|
|
154
|
+
│ 4. Re-run tests, lint and type checks │
|
|
155
|
+
╰─ Get the test suite green ───────────────────────╯
|
|
156
|
+
Proceed? [Y/n]
|
|
157
|
+
|
|
158
|
+
✓ Run tests — 3 tests failing (4.1s)
|
|
159
|
+
✓ Read src/shop/cart.py — 88 lines
|
|
160
|
+
⚠ Action requires approval
|
|
161
|
+
Edit src/shop/cart.py (+2 -1)
|
|
162
|
+
…diff…
|
|
163
|
+
Proceed? [y/N/a=always this session] y
|
|
164
|
+
✓ Edit src/shop/cart.py — +2 -1
|
|
165
|
+
✓ Run tests — Tests passing — 48 passed (pytest) (4.3s)
|
|
166
|
+
✓ Run checks — all checks passed
|
|
167
|
+
|
|
168
|
+
Fixed the discount rounding in `cart.total()` (it rounded before applying tax).
|
|
169
|
+
All 48 tests pass; lint and type checks are clean.
|
|
170
|
+
|
|
171
|
+
4 steps · 1 file changed (/undo) · 38.2k tokens · 41s
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Ask for what you want in plain language — *explain how this project works*, *find and
|
|
175
|
+
fix the bugs*, *add authentication*, *find security issues*, *why is the application
|
|
176
|
+
crashing?*, *prepare this project for release*, *deploy this*. The agent inspects the
|
|
177
|
+
project, proposes a plan for multi-step work, uses HighhX's capabilities as tools
|
|
178
|
+
(code search and edits, tests, checks, fixers, builds, dependencies, git, security scans,
|
|
179
|
+
doctor/diagnose/repair, workflows, deploy and rollback), verifies what it did and
|
|
180
|
+
summarises it.
|
|
181
|
+
|
|
182
|
+
- **Same safety system.** Commands run through the HighhX engine: risk classification,
|
|
183
|
+
`policies.yaml`, approvals and history. File edits show a diff and ask (unless you
|
|
184
|
+
choose `--mode auto-edit`); pushes, deploys and rollbacks always ask; production
|
|
185
|
+
deploys need typed confirmation. The agent cannot leave the project, read secret files
|
|
186
|
+
or touch `.git/`. `--mode read-only` investigates without changing anything.
|
|
187
|
+
- **Slash commands.** `/help` `/status` `/plan` `/context` `/model` `/mode` `/history`
|
|
188
|
+
`/changes` `/undo` `/memory` `/usage` `/clear` `/quit`.
|
|
189
|
+
- **Sessions.** Saved per project: `highhx agent --continue`, `--resume ID`, `highhx agent sessions`.
|
|
190
|
+
- **Scriptable.** `highhx agent "…"` outside a terminal (or with `--json`) handles one request
|
|
191
|
+
and exits — `--yes --mode auto-edit` for unattended runs in CI.
|
|
192
|
+
- **Providers.** All Pro AI goes through the HighhX platform (authenticated, plan-checked,
|
|
193
|
+
metered); choose the upstream — Anthropic, OpenAI or Gemini — with `highhx account settings`
|
|
194
|
+
or `/model`. No provider key is needed on your machine.
|
|
195
|
+
- **Kill switch.** `highhx agent stop` (or Ctrl+C) cancels the model request, retries, running
|
|
196
|
+
commands and their child processes immediately.
|
|
197
|
+
- **Computer use.** The agent observes browsers and apps semantically and chooses among valid
|
|
198
|
+
actions; see [docs/computer-use.md](docs/computer-use.md).
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
highhx login # browser sign-in (creates your account)
|
|
202
|
+
highhx account upgrade # HighhX Pro checkout
|
|
203
|
+
highhx agent # interactive
|
|
204
|
+
highhx agent "why is the application crashing?"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Guides: [docs/agent.md](docs/agent.md) · [docs/computer-use.md](docs/computer-use.md) · [docs/platform.md](docs/platform.md).
|
|
208
|
+
|
|
138
209
|
## Commands
|
|
139
210
|
|
|
140
211
|
Full reference with every option: [docs/commands.md](docs/commands.md).
|
|
141
212
|
|
|
142
213
|
| Area | Commands |
|
|
143
214
|
|---|---|
|
|
215
|
+
| HighhX Pro | `agent` `agent sessions` `agent models` `agent stop` |
|
|
216
|
+
| Automation (no AI) | `do` `computer status/open/observe/click/type/select/press/scroll/run` `computer browser start/stop` |
|
|
217
|
+
| Account | `login` `logout` `account` `account plans/usage/upgrade/billing/settings` |
|
|
144
218
|
| Project | `init` `status` `info` `dev` `start` `stop` `restart` `check` |
|
|
145
219
|
| Code & tasks | `run <workflow>` `exec <command>` `script <name>` `task <name>` `watch` `fix` |
|
|
146
220
|
| Dependencies | `deps` `deps install` `deps update` `deps outdated` `deps audit` `deps clean` |
|
|
@@ -151,7 +225,7 @@ Full reference with every option: [docs/commands.md](docs/commands.md).
|
|
|
151
225
|
| Security | `security` `security scan/secrets/deps/config/report` |
|
|
152
226
|
| Containers & data | `docker up/down/logs` `services` `ports` `db status/migrate/seed/backup/restore` |
|
|
153
227
|
| Workflows & automation | `workflow list/validate/create/graph` `schedule` `hook` `trigger` `watchers` |
|
|
154
|
-
| Observability | `logs [--follow]` `history [id]` `report` `trace` |
|
|
228
|
+
| Observability | `logs [--follow]` `history [id]` `audit` `report` `trace` |
|
|
155
229
|
| Extensibility & team | `plugin list/install/remove/update/search/trust` `config` `policy` `workspace` `profile` |
|
|
156
230
|
| Diagnostics | `doctor` `diagnose` `repair` `debug` |
|
|
157
231
|
|
|
@@ -302,6 +376,10 @@ Details: [docs/security.md](docs/security.md).
|
|
|
302
376
|
- **Secrets.** Secret values are never printed: `env` masks them, logs and history are
|
|
303
377
|
redacted (known secret values plus token patterns), and `security secrets` reports
|
|
304
378
|
file/line/type only. New `.env` files get owner-only permissions and are git-ignored.
|
|
379
|
+
- **The agent.** Uses the same engine, policies and approvals as you do, plus path
|
|
380
|
+
confinement, secret-file protection and redaction of everything sent to the model.
|
|
381
|
+
Agent actions have policy names (`agent:write`, `agent:exec`, `agent:deploy:<target>` …)
|
|
382
|
+
so `policies.yaml` can restrict or forbid them.
|
|
305
383
|
- **No claims.** `highhx security` reports concrete findings from local checks. An empty
|
|
306
384
|
report does not mean a project is secure, and HighhX never says it is.
|
|
307
385
|
|
|
@@ -310,12 +388,15 @@ Report vulnerabilities in HighhX itself as described in [SECURITY.md](SECURITY.m
|
|
|
310
388
|
## Development
|
|
311
389
|
|
|
312
390
|
```bash
|
|
313
|
-
pip install -e ".[dev]"
|
|
314
|
-
pytest # unit, integration, security and end-to-end tests
|
|
391
|
+
pip install -e ".[dev]" -e "./server[dev]"
|
|
392
|
+
pytest # CLI: unit, integration, security and end-to-end tests
|
|
393
|
+
(cd server && pytest) # platform API + live CLI ↔ platform integration tests
|
|
315
394
|
ruff check . && ruff format --check .
|
|
316
395
|
mypy # strict typing of src/highhx
|
|
317
396
|
```
|
|
318
397
|
|
|
398
|
+
The HighhX Platform backend lives in [`server/`](server/README.md).
|
|
399
|
+
|
|
319
400
|
Architecture: [docs/architecture.md](docs/architecture.md) · Development guide:
|
|
320
401
|
[docs/development.md](docs/development.md) · Troubleshooting: [docs/troubleshooting.md](docs/troubleshooting.md).
|
|
321
402
|
|