highhxcli 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- highhxcli-0.1.0/.gitignore +32 -0
- highhxcli-0.1.0/CHANGELOG.md +42 -0
- highhxcli-0.1.0/CODE_OF_CONDUCT.md +32 -0
- highhxcli-0.1.0/CONTRIBUTING.md +45 -0
- highhxcli-0.1.0/LICENSE +21 -0
- highhxcli-0.1.0/PKG-INFO +329 -0
- highhxcli-0.1.0/README.md +299 -0
- highhxcli-0.1.0/SECURITY.md +30 -0
- highhxcli-0.1.0/docs/architecture.md +84 -0
- highhxcli-0.1.0/docs/commands.md +1360 -0
- highhxcli-0.1.0/docs/configuration.md +191 -0
- highhxcli-0.1.0/docs/development.md +77 -0
- highhxcli-0.1.0/docs/plugins.md +113 -0
- highhxcli-0.1.0/docs/security.md +101 -0
- highhxcli-0.1.0/docs/troubleshooting.md +60 -0
- highhxcli-0.1.0/docs/workflows.md +115 -0
- highhxcli-0.1.0/examples/README.md +19 -0
- highhxcli-0.1.0/examples/basic/.highhx/config.yaml +16 -0
- highhxcli-0.1.0/examples/basic/.highhx/workflows/check.yaml +10 -0
- highhxcli-0.1.0/examples/basic/README.md +11 -0
- highhxcli-0.1.0/examples/basic/calc.py +5 -0
- highhxcli-0.1.0/examples/basic/tests/__init__.py +0 -0
- highhxcli-0.1.0/examples/basic/tests/test_calc.py +16 -0
- highhxcli-0.1.0/examples/ci/.highhx/config.yaml +12 -0
- highhxcli-0.1.0/examples/ci/.highhx/workflows/pipeline.yaml +33 -0
- highhxcli-0.1.0/examples/ci/.highhx/workflows/tests.yaml +12 -0
- highhxcli-0.1.0/examples/docker/.highhx/config.yaml +19 -0
- highhxcli-0.1.0/examples/docker/.highhx/workflows/up.yaml +12 -0
- highhxcli-0.1.0/examples/flutter/.highhx/config.yaml +14 -0
- highhxcli-0.1.0/examples/flutter/.highhx/workflows/build.yaml +27 -0
- highhxcli-0.1.0/examples/monorepo/.highhx/config.yaml +10 -0
- highhxcli-0.1.0/examples/monorepo/.highhx/workflows/test-all.yaml +8 -0
- highhxcli-0.1.0/examples/node/.highhx/config.yaml +21 -0
- highhxcli-0.1.0/examples/node/.highhx/workflows/ci.yaml +22 -0
- highhxcli-0.1.0/examples/production/.highhx/config.yaml +57 -0
- highhxcli-0.1.0/examples/production/.highhx/environment.yaml +25 -0
- highhxcli-0.1.0/examples/production/.highhx/policies.yaml +31 -0
- highhxcli-0.1.0/examples/production/.highhx/workflows/deploy.yaml +18 -0
- highhxcli-0.1.0/examples/production/db/migrations/001_create_users.sql +5 -0
- highhxcli-0.1.0/examples/production/db/migrations/002_add_name.sql +1 -0
- highhxcli-0.1.0/examples/python/.highhx/config.yaml +33 -0
- highhxcli-0.1.0/examples/python/.highhx/workflows/check.yaml +13 -0
- highhxcli-0.1.0/examples/python/.highhx/workflows/release.yaml +18 -0
- highhxcli-0.1.0/pyproject.toml +105 -0
- highhxcli-0.1.0/schemas/config.schema.json +756 -0
- highhxcli-0.1.0/schemas/plugin.schema.json +139 -0
- highhxcli-0.1.0/schemas/workflow.schema.json +335 -0
- highhxcli-0.1.0/scripts/generate_docs.py +89 -0
- highhxcli-0.1.0/scripts/generate_schemas.py +40 -0
- highhxcli-0.1.0/src/highhx/__init__.py +5 -0
- highhxcli-0.1.0/src/highhx/__main__.py +6 -0
- highhxcli-0.1.0/src/highhx/approvals/__init__.py +5 -0
- highhxcli-0.1.0/src/highhx/approvals/manager.py +119 -0
- highhxcli-0.1.0/src/highhx/approvals/policy.py +52 -0
- highhxcli-0.1.0/src/highhx/approvals/risk.py +73 -0
- highhxcli-0.1.0/src/highhx/approvals/rules.py +182 -0
- highhxcli-0.1.0/src/highhx/automation/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/automation/cron.py +132 -0
- highhxcli-0.1.0/src/highhx/automation/hooks.py +126 -0
- highhxcli-0.1.0/src/highhx/automation/scheduler.py +108 -0
- highhxcli-0.1.0/src/highhx/automation/triggers.py +24 -0
- highhxcli-0.1.0/src/highhx/automation/watcher.py +130 -0
- highhxcli-0.1.0/src/highhx/building/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/building/artifacts.py +82 -0
- highhxcli-0.1.0/src/highhx/building/builder.py +75 -0
- highhxcli-0.1.0/src/highhx/building/cleanup.py +50 -0
- highhxcli-0.1.0/src/highhx/building/packaging.py +23 -0
- highhxcli-0.1.0/src/highhx/cli.py +270 -0
- highhxcli-0.1.0/src/highhx/commands/__init__.py +452 -0
- highhxcli-0.1.0/src/highhx/commands/automation/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/automation/hook.py +123 -0
- highhxcli-0.1.0/src/highhx/commands/automation/schedule.py +103 -0
- highhxcli-0.1.0/src/highhx/commands/automation/trigger.py +46 -0
- highhxcli-0.1.0/src/highhx/commands/automation/watch.py +36 -0
- highhxcli-0.1.0/src/highhx/commands/build/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/build/artifacts.py +37 -0
- highhxcli-0.1.0/src/highhx/commands/build/build.py +43 -0
- highhxcli-0.1.0/src/highhx/commands/build/clean.py +55 -0
- highhxcli-0.1.0/src/highhx/commands/build/package.py +18 -0
- highhxcli-0.1.0/src/highhx/commands/code/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/code/exec.py +77 -0
- highhxcli-0.1.0/src/highhx/commands/code/fix.py +41 -0
- highhxcli-0.1.0/src/highhx/commands/code/run.py +35 -0
- highhxcli-0.1.0/src/highhx/commands/code/script.py +68 -0
- highhxcli-0.1.0/src/highhx/commands/code/task.py +66 -0
- highhxcli-0.1.0/src/highhx/commands/code/watch.py +125 -0
- highhxcli-0.1.0/src/highhx/commands/database/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/database/backup.py +37 -0
- highhxcli-0.1.0/src/highhx/commands/database/main.py +29 -0
- highhxcli-0.1.0/src/highhx/commands/database/migrate.py +26 -0
- highhxcli-0.1.0/src/highhx/commands/database/restore.py +37 -0
- highhxcli-0.1.0/src/highhx/commands/database/seed.py +21 -0
- highhxcli-0.1.0/src/highhx/commands/database/status.py +41 -0
- highhxcli-0.1.0/src/highhx/commands/dependencies/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/dependencies/audit.py +39 -0
- highhxcli-0.1.0/src/highhx/commands/dependencies/clean.py +23 -0
- highhxcli-0.1.0/src/highhx/commands/dependencies/install.py +23 -0
- highhxcli-0.1.0/src/highhx/commands/dependencies/main.py +64 -0
- highhxcli-0.1.0/src/highhx/commands/dependencies/outdated.py +32 -0
- highhxcli-0.1.0/src/highhx/commands/dependencies/update.py +23 -0
- highhxcli-0.1.0/src/highhx/commands/deployment/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/deployment/deploy.py +71 -0
- highhxcli-0.1.0/src/highhx/commands/deployment/environments.py +39 -0
- highhxcli-0.1.0/src/highhx/commands/deployment/logs.py +35 -0
- highhxcli-0.1.0/src/highhx/commands/deployment/rollback.py +32 -0
- highhxcli-0.1.0/src/highhx/commands/deployment/status.py +67 -0
- highhxcli-0.1.0/src/highhx/commands/diagnostics/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/diagnostics/debug.py +60 -0
- highhxcli-0.1.0/src/highhx/commands/diagnostics/diagnose.py +40 -0
- highhxcli-0.1.0/src/highhx/commands/diagnostics/doctor.py +51 -0
- highhxcli-0.1.0/src/highhx/commands/diagnostics/repair.py +33 -0
- highhxcli-0.1.0/src/highhx/commands/diagnostics/trace.py +46 -0
- highhxcli-0.1.0/src/highhx/commands/docker/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/docker/down.py +22 -0
- highhxcli-0.1.0/src/highhx/commands/docker/logs.py +20 -0
- highhxcli-0.1.0/src/highhx/commands/docker/main.py +61 -0
- highhxcli-0.1.0/src/highhx/commands/docker/up.py +23 -0
- highhxcli-0.1.0/src/highhx/commands/environment/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/environment/check.py +38 -0
- highhxcli-0.1.0/src/highhx/commands/environment/diff.py +34 -0
- highhxcli-0.1.0/src/highhx/commands/environment/main.py +71 -0
- highhxcli-0.1.0/src/highhx/commands/environment/profile.py +52 -0
- highhxcli-0.1.0/src/highhx/commands/environment/set.py +72 -0
- highhxcli-0.1.0/src/highhx/commands/git/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/git/branch.py +50 -0
- highhxcli-0.1.0/src/highhx/commands/git/commit.py +29 -0
- highhxcli-0.1.0/src/highhx/commands/git/diff.py +43 -0
- highhxcli-0.1.0/src/highhx/commands/git/history.py +39 -0
- highhxcli-0.1.0/src/highhx/commands/git/main.py +34 -0
- highhxcli-0.1.0/src/highhx/commands/git/status.py +36 -0
- highhxcli-0.1.0/src/highhx/commands/git/sync.py +23 -0
- highhxcli-0.1.0/src/highhx/commands/git/tag.py +38 -0
- highhxcli-0.1.0/src/highhx/commands/groups.py +37 -0
- highhxcli-0.1.0/src/highhx/commands/observability/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/observability/history.py +86 -0
- highhxcli-0.1.0/src/highhx/commands/observability/logs.py +56 -0
- highhxcli-0.1.0/src/highhx/commands/observability/report.py +45 -0
- highhxcli-0.1.0/src/highhx/commands/plugins/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/plugins/install.py +29 -0
- highhxcli-0.1.0/src/highhx/commands/plugins/list.py +52 -0
- highhxcli-0.1.0/src/highhx/commands/plugins/main.py +63 -0
- highhxcli-0.1.0/src/highhx/commands/plugins/remove.py +21 -0
- highhxcli-0.1.0/src/highhx/commands/plugins/search.py +34 -0
- highhxcli-0.1.0/src/highhx/commands/plugins/trust.py +30 -0
- highhxcli-0.1.0/src/highhx/commands/plugins/update.py +19 -0
- highhxcli-0.1.0/src/highhx/commands/project/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/project/check.py +32 -0
- highhxcli-0.1.0/src/highhx/commands/project/dev.py +32 -0
- highhxcli-0.1.0/src/highhx/commands/project/doctor.py +5 -0
- highhxcli-0.1.0/src/highhx/commands/project/info.py +54 -0
- highhxcli-0.1.0/src/highhx/commands/project/init.py +70 -0
- highhxcli-0.1.0/src/highhx/commands/project/restart.py +19 -0
- highhxcli-0.1.0/src/highhx/commands/project/start.py +31 -0
- highhxcli-0.1.0/src/highhx/commands/project/status.py +18 -0
- highhxcli-0.1.0/src/highhx/commands/project/stop.py +26 -0
- highhxcli-0.1.0/src/highhx/commands/registry.py +117 -0
- highhxcli-0.1.0/src/highhx/commands/release/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/release/changelog.py +42 -0
- highhxcli-0.1.0/src/highhx/commands/release/publish.py +20 -0
- highhxcli-0.1.0/src/highhx/commands/release/release.py +49 -0
- highhxcli-0.1.0/src/highhx/commands/release/version.py +66 -0
- highhxcli-0.1.0/src/highhx/commands/security/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/security/config.py +19 -0
- highhxcli-0.1.0/src/highhx/commands/security/dependencies.py +19 -0
- highhxcli-0.1.0/src/highhx/commands/security/main.py +103 -0
- highhxcli-0.1.0/src/highhx/commands/security/report.py +48 -0
- highhxcli-0.1.0/src/highhx/commands/security/scan.py +23 -0
- highhxcli-0.1.0/src/highhx/commands/security/secrets.py +20 -0
- highhxcli-0.1.0/src/highhx/commands/services/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/services/main.py +42 -0
- highhxcli-0.1.0/src/highhx/commands/services/ports.py +47 -0
- highhxcli-0.1.0/src/highhx/commands/team/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/team/config.py +152 -0
- highhxcli-0.1.0/src/highhx/commands/team/policy.py +147 -0
- highhxcli-0.1.0/src/highhx/commands/team/profile.py +89 -0
- highhxcli-0.1.0/src/highhx/commands/team/workspace.py +83 -0
- highhxcli-0.1.0/src/highhx/commands/testing/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/testing/benchmark.py +48 -0
- highhxcli-0.1.0/src/highhx/commands/testing/test.py +99 -0
- highhxcli-0.1.0/src/highhx/commands/workflows/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/commands/workflows/create.py +71 -0
- highhxcli-0.1.0/src/highhx/commands/workflows/graph.py +39 -0
- highhxcli-0.1.0/src/highhx/commands/workflows/list.py +31 -0
- highhxcli-0.1.0/src/highhx/commands/workflows/main.py +28 -0
- highhxcli-0.1.0/src/highhx/commands/workflows/validate.py +43 -0
- highhxcli-0.1.0/src/highhx/config/__init__.py +5 -0
- highhxcli-0.1.0/src/highhx/config/defaults.py +46 -0
- highhxcli-0.1.0/src/highhx/config/loader.py +140 -0
- highhxcli-0.1.0/src/highhx/config/schema.py +301 -0
- highhxcli-0.1.0/src/highhx/config/validation.py +297 -0
- highhxcli-0.1.0/src/highhx/core/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/core/context.py +50 -0
- highhxcli-0.1.0/src/highhx/core/engine.py +447 -0
- highhxcli-0.1.0/src/highhx/core/errors.py +186 -0
- highhxcli-0.1.0/src/highhx/core/events.py +73 -0
- highhxcli-0.1.0/src/highhx/core/executor.py +145 -0
- highhxcli-0.1.0/src/highhx/core/lifecycle.py +72 -0
- highhxcli-0.1.0/src/highhx/core/result.py +159 -0
- highhxcli-0.1.0/src/highhx/database/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/database/backup.py +32 -0
- highhxcli-0.1.0/src/highhx/database/manager.py +210 -0
- highhxcli-0.1.0/src/highhx/database/migrations.py +65 -0
- highhxcli-0.1.0/src/highhx/database/restore.py +24 -0
- highhxcli-0.1.0/src/highhx/database/seeding.py +16 -0
- highhxcli-0.1.0/src/highhx/dependencies/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/dependencies/audit.py +126 -0
- highhxcli-0.1.0/src/highhx/dependencies/detector.py +246 -0
- highhxcli-0.1.0/src/highhx/dependencies/installer.py +25 -0
- highhxcli-0.1.0/src/highhx/dependencies/manager.py +237 -0
- highhxcli-0.1.0/src/highhx/dependencies/outdated.py +125 -0
- highhxcli-0.1.0/src/highhx/dependencies/updater.py +45 -0
- highhxcli-0.1.0/src/highhx/deployment/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/deployment/health.py +73 -0
- highhxcli-0.1.0/src/highhx/deployment/manager.py +317 -0
- highhxcli-0.1.0/src/highhx/deployment/rollback.py +28 -0
- highhxcli-0.1.0/src/highhx/deployment/state.py +131 -0
- highhxcli-0.1.0/src/highhx/deployment/strategy.py +387 -0
- highhxcli-0.1.0/src/highhx/deployment/target.py +50 -0
- highhxcli-0.1.0/src/highhx/detection/__init__.py +29 -0
- highhxcli-0.1.0/src/highhx/detection/container.py +41 -0
- highhxcli-0.1.0/src/highhx/detection/database.py +94 -0
- highhxcli-0.1.0/src/highhx/detection/framework.py +66 -0
- highhxcli-0.1.0/src/highhx/detection/language.py +90 -0
- highhxcli-0.1.0/src/highhx/detection/operating_system.py +50 -0
- highhxcli-0.1.0/src/highhx/detection/package_manager.py +125 -0
- highhxcli-0.1.0/src/highhx/detection/runtime.py +92 -0
- highhxcli-0.1.0/src/highhx/detection/tools.py +135 -0
- highhxcli-0.1.0/src/highhx/diagnostics/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/diagnostics/diagnose.py +228 -0
- highhxcli-0.1.0/src/highhx/diagnostics/doctor.py +328 -0
- highhxcli-0.1.0/src/highhx/diagnostics/repair.py +105 -0
- highhxcli-0.1.0/src/highhx/environment/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/environment/dotenv.py +168 -0
- highhxcli-0.1.0/src/highhx/environment/manager.py +187 -0
- highhxcli-0.1.0/src/highhx/environment/profiles.py +52 -0
- highhxcli-0.1.0/src/highhx/environment/secrets.py +22 -0
- highhxcli-0.1.0/src/highhx/environment/validation.py +69 -0
- highhxcli-0.1.0/src/highhx/environment/variables.py +136 -0
- highhxcli-0.1.0/src/highhx/execution/__init__.py +7 -0
- highhxcli-0.1.0/src/highhx/execution/cancellation.py +60 -0
- highhxcli-0.1.0/src/highhx/execution/command.py +108 -0
- highhxcli-0.1.0/src/highhx/execution/environment.py +30 -0
- highhxcli-0.1.0/src/highhx/execution/isolation.py +56 -0
- highhxcli-0.1.0/src/highhx/execution/parallel.py +81 -0
- highhxcli-0.1.0/src/highhx/execution/process.py +212 -0
- highhxcli-0.1.0/src/highhx/execution/retry.py +60 -0
- highhxcli-0.1.0/src/highhx/execution/shell.py +32 -0
- highhxcli-0.1.0/src/highhx/execution/timeout.py +30 -0
- highhxcli-0.1.0/src/highhx/git/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/git/branches.py +41 -0
- highhxcli-0.1.0/src/highhx/git/commits.py +61 -0
- highhxcli-0.1.0/src/highhx/git/diff.py +31 -0
- highhxcli-0.1.0/src/highhx/git/history.py +47 -0
- highhxcli-0.1.0/src/highhx/git/manager.py +205 -0
- highhxcli-0.1.0/src/highhx/git/repository.py +161 -0
- highhxcli-0.1.0/src/highhx/git/status.py +97 -0
- highhxcli-0.1.0/src/highhx/git/tags.py +47 -0
- highhxcli-0.1.0/src/highhx/integrations/__init__.py +2 -0
- highhxcli-0.1.0/src/highhx/integrations/cloud/__init__.py +10 -0
- highhxcli-0.1.0/src/highhx/integrations/cloud/registry.py +42 -0
- highhxcli-0.1.0/src/highhx/integrations/databases/__init__.py +25 -0
- highhxcli-0.1.0/src/highhx/integrations/databases/base.py +73 -0
- highhxcli-0.1.0/src/highhx/integrations/databases/mysql.py +104 -0
- highhxcli-0.1.0/src/highhx/integrations/databases/postgres.py +128 -0
- highhxcli-0.1.0/src/highhx/integrations/databases/sqlite.py +112 -0
- highhxcli-0.1.0/src/highhx/integrations/databases/url.py +79 -0
- highhxcli-0.1.0/src/highhx/integrations/docker/__init__.py +5 -0
- highhxcli-0.1.0/src/highhx/integrations/docker/client.py +220 -0
- highhxcli-0.1.0/src/highhx/integrations/kubernetes/__init__.py +5 -0
- highhxcli-0.1.0/src/highhx/integrations/kubernetes/client.py +89 -0
- highhxcli-0.1.0/src/highhx/integrations/ssh/__init__.py +5 -0
- highhxcli-0.1.0/src/highhx/integrations/ssh/client.py +77 -0
- highhxcli-0.1.0/src/highhx/integrations/terraform/__init__.py +5 -0
- highhxcli-0.1.0/src/highhx/integrations/terraform/client.py +69 -0
- highhxcli-0.1.0/src/highhx/observability/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/observability/events.py +45 -0
- highhxcli-0.1.0/src/highhx/observability/logger.py +67 -0
- highhxcli-0.1.0/src/highhx/observability/metrics.py +95 -0
- highhxcli-0.1.0/src/highhx/observability/tracing.py +135 -0
- highhxcli-0.1.0/src/highhx/plugins/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/plugins/interface.py +83 -0
- highhxcli-0.1.0/src/highhx/plugins/loader.py +107 -0
- highhxcli-0.1.0/src/highhx/plugins/manager.py +249 -0
- highhxcli-0.1.0/src/highhx/plugins/manifest.py +197 -0
- highhxcli-0.1.0/src/highhx/plugins/registry.py +48 -0
- highhxcli-0.1.0/src/highhx/plugins/sandbox.py +114 -0
- highhxcli-0.1.0/src/highhx/policy/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/policy/engine.py +115 -0
- highhxcli-0.1.0/src/highhx/policy/rules.py +97 -0
- highhxcli-0.1.0/src/highhx/policy/validator.py +68 -0
- highhxcli-0.1.0/src/highhx/project/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/project/context.py +79 -0
- highhxcli-0.1.0/src/highhx/project/detector.py +337 -0
- highhxcli-0.1.0/src/highhx/project/initializer.py +104 -0
- highhxcli-0.1.0/src/highhx/project/manifest.py +304 -0
- highhxcli-0.1.0/src/highhx/project/monorepo.py +90 -0
- highhxcli-0.1.0/src/highhx/project/scanner.py +39 -0
- highhxcli-0.1.0/src/highhx/project/status.py +79 -0
- highhxcli-0.1.0/src/highhx/project/workspace.py +51 -0
- highhxcli-0.1.0/src/highhx/release/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/release/changelog.py +72 -0
- highhxcli-0.1.0/src/highhx/release/manager.py +236 -0
- highhxcli-0.1.0/src/highhx/release/publisher.py +36 -0
- highhxcli-0.1.0/src/highhx/release/versioning.py +220 -0
- highhxcli-0.1.0/src/highhx/security/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/security/dependencies.py +39 -0
- highhxcli-0.1.0/src/highhx/security/filesystem.py +82 -0
- highhxcli-0.1.0/src/highhx/security/permissions.py +74 -0
- highhxcli-0.1.0/src/highhx/security/policies.py +201 -0
- highhxcli-0.1.0/src/highhx/security/report.py +126 -0
- highhxcli-0.1.0/src/highhx/security/scanner.py +99 -0
- highhxcli-0.1.0/src/highhx/security/secrets.py +284 -0
- highhxcli-0.1.0/src/highhx/security/secrets_scan.py +71 -0
- highhxcli-0.1.0/src/highhx/services/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/services/health.py +19 -0
- highhxcli-0.1.0/src/highhx/services/manager.py +198 -0
- highhxcli-0.1.0/src/highhx/services/ports.py +77 -0
- highhxcli-0.1.0/src/highhx/services/registry.py +83 -0
- highhxcli-0.1.0/src/highhx/storage/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/storage/cache.py +28 -0
- highhxcli-0.1.0/src/highhx/storage/database.py +79 -0
- highhxcli-0.1.0/src/highhx/storage/history.py +263 -0
- highhxcli-0.1.0/src/highhx/storage/logs.py +106 -0
- highhxcli-0.1.0/src/highhx/storage/migrations.py +109 -0
- highhxcli-0.1.0/src/highhx/testing/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/testing/benchmark.py +71 -0
- highhxcli-0.1.0/src/highhx/testing/coverage.py +45 -0
- highhxcli-0.1.0/src/highhx/testing/discovery.py +92 -0
- highhxcli-0.1.0/src/highhx/testing/runner.py +235 -0
- highhxcli-0.1.0/src/highhx/ui/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/ui/dashboard.py +95 -0
- highhxcli-0.1.0/src/highhx/ui/errors.py +31 -0
- highhxcli-0.1.0/src/highhx/ui/output.py +201 -0
- highhxcli-0.1.0/src/highhx/ui/progress.py +18 -0
- highhxcli-0.1.0/src/highhx/ui/prompts.py +87 -0
- highhxcli-0.1.0/src/highhx/ui/reporting.py +81 -0
- highhxcli-0.1.0/src/highhx/ui/tables.py +36 -0
- highhxcli-0.1.0/src/highhx/ui/terminal.py +69 -0
- highhxcli-0.1.0/src/highhx/utils/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/utils/filesystem.py +206 -0
- highhxcli-0.1.0/src/highhx/utils/hashing.py +58 -0
- highhxcli-0.1.0/src/highhx/utils/paths.py +87 -0
- highhxcli-0.1.0/src/highhx/utils/platform.py +51 -0
- highhxcli-0.1.0/src/highhx/utils/processes.py +87 -0
- highhxcli-0.1.0/src/highhx/utils/time.py +78 -0
- highhxcli-0.1.0/src/highhx/utils/validation.py +368 -0
- highhxcli-0.1.0/src/highhx/workflows/__init__.py +1 -0
- highhxcli-0.1.0/src/highhx/workflows/conditions.py +384 -0
- highhxcli-0.1.0/src/highhx/workflows/dependency_graph.py +194 -0
- highhxcli-0.1.0/src/highhx/workflows/engine.py +490 -0
- highhxcli-0.1.0/src/highhx/workflows/loader.py +118 -0
- highhxcli-0.1.0/src/highhx/workflows/parser.py +129 -0
- highhxcli-0.1.0/src/highhx/workflows/resolver.py +59 -0
- highhxcli-0.1.0/src/highhx/workflows/scheduler.py +165 -0
- highhxcli-0.1.0/src/highhx/workflows/schema.py +206 -0
- highhxcli-0.1.0/src/highhx/workflows/templates.py +186 -0
- highhxcli-0.1.0/src/highhx/workflows/validator.py +271 -0
- highhxcli-0.1.0/src/highhx/workflows/variables.py +56 -0
- highhxcli-0.1.0/templates/cpp/config.yaml +32 -0
- highhxcli-0.1.0/templates/cpp/workflows/build.yaml +10 -0
- highhxcli-0.1.0/templates/docker/config.yaml +26 -0
- highhxcli-0.1.0/templates/docker/workflows/build.yaml +6 -0
- highhxcli-0.1.0/templates/flutter/config.yaml +34 -0
- highhxcli-0.1.0/templates/flutter/workflows/test.yaml +21 -0
- highhxcli-0.1.0/templates/generic/config.yaml +57 -0
- highhxcli-0.1.0/templates/generic/environment.yaml +21 -0
- highhxcli-0.1.0/templates/generic/policies.yaml +27 -0
- highhxcli-0.1.0/templates/generic/workflows/build.yaml +12 -0
- highhxcli-0.1.0/templates/generic/workflows/ci.yaml +25 -0
- highhxcli-0.1.0/templates/generic/workflows/deploy.yaml +23 -0
- highhxcli-0.1.0/templates/generic/workflows/dev.yaml +12 -0
- highhxcli-0.1.0/templates/generic/workflows/release.yaml +23 -0
- highhxcli-0.1.0/templates/generic/workflows/rollback.yaml +13 -0
- highhxcli-0.1.0/templates/generic/workflows/test.yaml +15 -0
- highhxcli-0.1.0/templates/java/config.yaml +39 -0
- highhxcli-0.1.0/templates/monorepo/config.yaml +24 -0
- highhxcli-0.1.0/templates/monorepo/workflows/test.yaml +6 -0
- highhxcli-0.1.0/templates/nextjs/config.yaml +39 -0
- highhxcli-0.1.0/templates/node/config.yaml +32 -0
- highhxcli-0.1.0/templates/python/config.yaml +40 -0
- highhxcli-0.1.0/templates/react/config.yaml +37 -0
- highhxcli-0.1.0/tests/__init__.py +0 -0
- highhxcli-0.1.0/tests/conftest.py +186 -0
- highhxcli-0.1.0/tests/e2e/__init__.py +0 -0
- highhxcli-0.1.0/tests/e2e/_helpers.py +35 -0
- highhxcli-0.1.0/tests/e2e/test_deploy.py +52 -0
- highhxcli-0.1.0/tests/e2e/test_dev.py +54 -0
- highhxcli-0.1.0/tests/e2e/test_examples.py +87 -0
- highhxcli-0.1.0/tests/e2e/test_init.py +46 -0
- highhxcli-0.1.0/tests/e2e/test_interrupts.py +96 -0
- highhxcli-0.1.0/tests/e2e/test_long_running.py +127 -0
- highhxcli-0.1.0/tests/e2e/test_paths_with_spaces.py +43 -0
- highhxcli-0.1.0/tests/e2e/test_rollback.py +22 -0
- highhxcli-0.1.0/tests/e2e/test_services_lifecycle.py +87 -0
- highhxcli-0.1.0/tests/fixtures/docker_project/Dockerfile +3 -0
- highhxcli-0.1.0/tests/fixtures/docker_project/compose.yaml +8 -0
- highhxcli-0.1.0/tests/fixtures/monorepo/package.json +1 -0
- highhxcli-0.1.0/tests/fixtures/monorepo/packages/api/package.json +1 -0
- highhxcli-0.1.0/tests/fixtures/monorepo/packages/web/package.json +1 -0
- highhxcli-0.1.0/tests/fixtures/node_project/package.json +14 -0
- highhxcli-0.1.0/tests/fixtures/node_project/pnpm-lock.yaml +1 -0
- highhxcli-0.1.0/tests/fixtures/node_project/tsconfig.json +1 -0
- highhxcli-0.1.0/tests/fixtures/python_project/pyproject.toml +9 -0
- highhxcli-0.1.0/tests/fixtures/python_project/src/pyapp/__init__.py +1 -0
- highhxcli-0.1.0/tests/fixtures/python_project/src/pyapp/calc.py +2 -0
- highhxcli-0.1.0/tests/fixtures/python_project/tests/test_calc.py +10 -0
- highhxcli-0.1.0/tests/integration/__init__.py +0 -0
- highhxcli-0.1.0/tests/integration/docker/__init__.py +0 -0
- highhxcli-0.1.0/tests/integration/docker/test_docker_project.py +37 -0
- highhxcli-0.1.0/tests/integration/git/__init__.py +0 -0
- highhxcli-0.1.0/tests/integration/git/test_release_flow.py +64 -0
- highhxcli-0.1.0/tests/integration/node/__init__.py +0 -0
- highhxcli-0.1.0/tests/integration/node/test_node_project.py +23 -0
- highhxcli-0.1.0/tests/integration/python/__init__.py +0 -0
- highhxcli-0.1.0/tests/integration/python/test_python_project.py +53 -0
- highhxcli-0.1.0/tests/integration/test_external_tool_contracts.py +224 -0
- highhxcli-0.1.0/tests/integration/test_mysql_real.py +122 -0
- highhxcli-0.1.0/tests/integration/workflows/__init__.py +0 -0
- highhxcli-0.1.0/tests/integration/workflows/test_cli_workflows.py +96 -0
- highhxcli-0.1.0/tests/security/__init__.py +0 -0
- highhxcli-0.1.0/tests/security/test_permissions.py +42 -0
- highhxcli-0.1.0/tests/security/test_policies.py +115 -0
- highhxcli-0.1.0/tests/security/test_secrets.py +42 -0
- highhxcli-0.1.0/tests/unit/__init__.py +0 -0
- highhxcli-0.1.0/tests/unit/commands/__init__.py +0 -0
- highhxcli-0.1.0/tests/unit/commands/test_cli.py +124 -0
- highhxcli-0.1.0/tests/unit/commands/test_docs.py +42 -0
- highhxcli-0.1.0/tests/unit/commands/test_json_contract.py +119 -0
- highhxcli-0.1.0/tests/unit/commands/test_project_commands.py +146 -0
- highhxcli-0.1.0/tests/unit/core/__init__.py +0 -0
- highhxcli-0.1.0/tests/unit/core/test_engine.py +115 -0
- highhxcli-0.1.0/tests/unit/core/test_errors_events.py +22 -0
- highhxcli-0.1.0/tests/unit/core/test_executor.py +64 -0
- highhxcli-0.1.0/tests/unit/detection/__init__.py +0 -0
- highhxcli-0.1.0/tests/unit/detection/test_detection.py +170 -0
- highhxcli-0.1.0/tests/unit/execution/__init__.py +0 -0
- highhxcli-0.1.0/tests/unit/execution/test_command.py +56 -0
- highhxcli-0.1.0/tests/unit/execution/test_process.py +64 -0
- highhxcli-0.1.0/tests/unit/execution/test_retry_parallel_cancel.py +70 -0
- highhxcli-0.1.0/tests/unit/git/__init__.py +0 -0
- highhxcli-0.1.0/tests/unit/git/test_parsers.py +62 -0
- highhxcli-0.1.0/tests/unit/git/test_repository.py +100 -0
- highhxcli-0.1.0/tests/unit/security/__init__.py +0 -0
- highhxcli-0.1.0/tests/unit/security/test_secrets_scanner.py +106 -0
- highhxcli-0.1.0/tests/unit/storage/__init__.py +0 -0
- highhxcli-0.1.0/tests/unit/storage/test_storage.py +109 -0
- highhxcli-0.1.0/tests/unit/test_approvals_policy.py +104 -0
- highhxcli-0.1.0/tests/unit/test_audit_regressions.py +141 -0
- highhxcli-0.1.0/tests/unit/test_automation.py +80 -0
- highhxcli-0.1.0/tests/unit/test_config_environment.py +166 -0
- highhxcli-0.1.0/tests/unit/test_cross_platform.py +91 -0
- highhxcli-0.1.0/tests/unit/test_dependencies_testing.py +135 -0
- highhxcli-0.1.0/tests/unit/test_deployment_database.py +206 -0
- highhxcli-0.1.0/tests/unit/test_gap_coverage.py +200 -0
- highhxcli-0.1.0/tests/unit/test_packaging.py +29 -0
- highhxcli-0.1.0/tests/unit/test_plugins.py +176 -0
- highhxcli-0.1.0/tests/unit/test_release.py +78 -0
- highhxcli-0.1.0/tests/unit/test_schemas_examples.py +68 -0
- highhxcli-0.1.0/tests/unit/test_services_docker.py +137 -0
- highhxcli-0.1.0/tests/unit/workflows/__init__.py +0 -0
- highhxcli-0.1.0/tests/unit/workflows/test_conditions.py +72 -0
- highhxcli-0.1.0/tests/unit/workflows/test_dependency_graph.py +45 -0
- highhxcli-0.1.0/tests/unit/workflows/test_engine.py +300 -0
- highhxcli-0.1.0/tests/unit/workflows/test_parser_validator.py +128 -0
- highhxcli-0.1.0/tests/unit/workflows/test_templates.py +56 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
.eggs/
|
|
6
|
+
/build/
|
|
7
|
+
/dist/
|
|
8
|
+
/.venv/
|
|
9
|
+
/venv/
|
|
10
|
+
.pytest_cache/
|
|
11
|
+
.mypy_cache/
|
|
12
|
+
.ruff_cache/
|
|
13
|
+
.coverage
|
|
14
|
+
coverage.xml
|
|
15
|
+
htmlcov/
|
|
16
|
+
|
|
17
|
+
# HighhX local state (never commit)
|
|
18
|
+
.highhx/state/
|
|
19
|
+
.highhx/logs/
|
|
20
|
+
.highhx/backups/
|
|
21
|
+
.highhx/cache/
|
|
22
|
+
|
|
23
|
+
# Environment files
|
|
24
|
+
.env
|
|
25
|
+
.env.*
|
|
26
|
+
!.env.example
|
|
27
|
+
|
|
28
|
+
# Editors / OS
|
|
29
|
+
.idea/
|
|
30
|
+
.vscode/
|
|
31
|
+
.DS_Store
|
|
32
|
+
Thumbs.db
|
|
@@ -0,0 +1,42 @@
|
|
|
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.1.0] - 2026-09-26
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
- Project detection for Python, Node.js, React, Next.js, Flutter/Dart, Java, C/C++, Go, Rust, Docker, databases and monorepos.
|
|
14
|
+
- `highhx init` with per-stack templates for config, environment, policies and workflows.
|
|
15
|
+
- Execution engine: streaming output, timeouts, cancellation, retries with exponential backoff, parallel execution, graceful shutdown.
|
|
16
|
+
- Workflow engine: dependency graphs, parallel stages, conditions, variables, outputs, approvals, retries, timeouts, reusable workflows, dry-run, validation and graphs.
|
|
17
|
+
- Risk classification and approvals with non-bypassable rules; project policies.
|
|
18
|
+
- Environment profiles with `.env` files, validation and masked secrets.
|
|
19
|
+
- Dependencies, testing (with coverage/changed/watch), building, artifacts and cleanup.
|
|
20
|
+
- Git helpers, semantic versioning, changelog generation from Conventional Commits, releases and publishing.
|
|
21
|
+
- Deployment targets (local, Docker, SSH, Kubernetes, Terraform, plugins) with preflight, health checks, state tracking and rollback.
|
|
22
|
+
- Local security checks: secrets, permissions, configuration, workflows, policies and dependency audits.
|
|
23
|
+
- Services, ports, Docker Compose and database (SQLite, PostgreSQL, MySQL) management.
|
|
24
|
+
- Plugins with manifests, declarative contributions and integrity-checked code.
|
|
25
|
+
- Execution history, redacted logs, tracing, reports, doctor, diagnose and repair.
|
|
26
|
+
|
|
27
|
+
### Security
|
|
28
|
+
|
|
29
|
+
- 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.
|
|
30
|
+
- All output — including `--json` documents and captured command output — is redacted.
|
|
31
|
+
- Isolated plugin commands never receive environment-profile values.
|
|
32
|
+
- Values substituted into deploy commands are restricted to a safe character set.
|
|
33
|
+
- Hardened risk rules (wrapped shells, split `rm` flags, fork bombs, raw device writes, `find -delete`, `docker rm`, `shred`/`truncate`).
|
|
34
|
+
- Duplicate YAML keys are rejected.
|
|
35
|
+
|
|
36
|
+
### Reliability
|
|
37
|
+
|
|
38
|
+
- Workflow step output is written to execution logs; retries, step transitions and approval decisions are logged.
|
|
39
|
+
- `--json` always emits exactly one JSON document.
|
|
40
|
+
- An unreadable state database is diagnosed and can be repaired (`highhx repair`).
|
|
41
|
+
- `mysqldump` runs with `--no-tablespaces`, so backups work without the PROCESS privilege.
|
|
42
|
+
- Global `--profile` was renamed `--config-profile` so it no longer collides with `env --profile`.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our pledge
|
|
4
|
+
|
|
5
|
+
We want HighhX to be a welcoming project for everyone, regardless of age, body size,
|
|
6
|
+
disability, ethnicity, gender identity and expression, level of experience,
|
|
7
|
+
nationality, personal appearance, race, religion, or sexual identity and orientation.
|
|
8
|
+
|
|
9
|
+
## Our standards
|
|
10
|
+
|
|
11
|
+
Examples of behaviour that contributes to a positive environment:
|
|
12
|
+
|
|
13
|
+
- being respectful of differing viewpoints and experiences,
|
|
14
|
+
- giving and gracefully accepting constructive feedback,
|
|
15
|
+
- focusing on what is best for the community,
|
|
16
|
+
- showing empathy towards other community members.
|
|
17
|
+
|
|
18
|
+
Examples of unacceptable behaviour:
|
|
19
|
+
|
|
20
|
+
- harassment, insults or derogatory comments, public or private,
|
|
21
|
+
- sexualised language or imagery,
|
|
22
|
+
- publishing others' private information without permission,
|
|
23
|
+
- other conduct that could reasonably be considered inappropriate in a professional setting.
|
|
24
|
+
|
|
25
|
+
## Enforcement
|
|
26
|
+
|
|
27
|
+
Maintainers are responsible for clarifying and enforcing these standards and may
|
|
28
|
+
remove, edit or reject contributions that do not align with this Code of Conduct.
|
|
29
|
+
Report unacceptable behaviour privately to the maintainers through the repository's
|
|
30
|
+
contact options; all reports are reviewed and kept confidential.
|
|
31
|
+
|
|
32
|
+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Contributing to HighhX
|
|
2
|
+
|
|
3
|
+
Thanks for helping! This guide covers the practical bits.
|
|
4
|
+
|
|
5
|
+
## Getting set up
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# from a checkout of this repository
|
|
9
|
+
python -m venv .venv && . .venv/bin/activate
|
|
10
|
+
pip install -e ".[dev]"
|
|
11
|
+
pytest && ruff check . && mypy
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Ground rules
|
|
15
|
+
|
|
16
|
+
- **No placeholders.** Every feature must work end to end and have tests. No `pass`,
|
|
17
|
+
`TODO` or dummy return values outside abstract interfaces.
|
|
18
|
+
- **Local-first.** No mandatory network access, cloud services, accounts, API keys or AI features.
|
|
19
|
+
- **Safe by default.** Anything that changes shared state, deletes data or publishes must go
|
|
20
|
+
through `Engine.approve()` / `Engine.run()` with an honest `RiskLevel`, and must honour `--dry-run`.
|
|
21
|
+
- **Never print secrets.** Use `mask()` for display and make sure logs go through the redactor.
|
|
22
|
+
- **Cross-platform.** Don't assume bash, `/usr/bin` or GNU tools; prefer Python APIs and
|
|
23
|
+
`highhx.utils.platform` for platform differences.
|
|
24
|
+
- **Thin commands.** CLI modules in `highhx/commands/` parse arguments and render results;
|
|
25
|
+
logic belongs in the domain packages (see [docs/architecture.md](docs/architecture.md)).
|
|
26
|
+
|
|
27
|
+
## Tests
|
|
28
|
+
|
|
29
|
+
- Unit tests live in `tests/unit/<area>/`, integration tests in `tests/integration/`,
|
|
30
|
+
end-to-end tests (real subprocess) in `tests/e2e/`, security guarantees in `tests/security/`.
|
|
31
|
+
- Use the fixtures in `tests/conftest.py` (`cli`, `make_engine`, `python_project`,
|
|
32
|
+
`git_python_project`). They isolate user directories and git identity, so tests never
|
|
33
|
+
depend on your machine's configuration.
|
|
34
|
+
- External systems (Docker, SSH, Kubernetes, registries) are faked; SQLite, git and
|
|
35
|
+
subprocesses are real.
|
|
36
|
+
|
|
37
|
+
## Commits and pull requests
|
|
38
|
+
|
|
39
|
+
- Use [Conventional Commits](https://www.conventionalcommits.org/) (`feat:`, `fix:`, `docs:` …);
|
|
40
|
+
HighhX's own changelog is generated from them.
|
|
41
|
+
- Keep pull requests focused; include tests and update `docs/` when behaviour changes.
|
|
42
|
+
`docs/commands.md` is generated from the CLI — regenerate it with
|
|
43
|
+
`python scripts/generate_docs.py` when you change commands and `schemas/` with
|
|
44
|
+
`python scripts/generate_schemas.py` when you change a schema (the test suite fails
|
|
45
|
+
when either drifts).
|
highhxcli-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 HighhX contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
highhxcli-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,329 @@
|
|
|
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
|
+
# HighhX
|
|
32
|
+
|
|
33
|
+
**HighhX is a local-first developer command center.** One CLI — `highhx` — detects
|
|
34
|
+
your project, runs your workflows, manages environments, dependencies, tests,
|
|
35
|
+
builds, git, releases, deployments, services and databases, and keeps a searchable
|
|
36
|
+
history of everything it did. Every risky action is classified and needs approval.
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
$ highhx doctor
|
|
40
|
+
|
|
41
|
+
HighhX Doctor
|
|
42
|
+
|
|
43
|
+
✓ macOS 15.2 arm64
|
|
44
|
+
✓ HighhX on Python 3.13.1
|
|
45
|
+
✓ git 2.47.1
|
|
46
|
+
✓ node 22.12.0
|
|
47
|
+
✓ python satisfies >=3.11 — declared in pyproject.toml
|
|
48
|
+
✓ Configuration valid
|
|
49
|
+
✓ Workflows valid — 7 workflow(s)
|
|
50
|
+
⚠ docker unavailable — required by this project
|
|
51
|
+
✗ Missing DATABASE_URL — profile development
|
|
52
|
+
|
|
53
|
+
Suggested actions
|
|
54
|
+
→ Install docker and make sure it is on PATH.
|
|
55
|
+
→ Set it with `highhx env set DATABASE_URL --profile development` or export it in your shell.
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
- [Why HighhX](#why-highhx)
|
|
59
|
+
- [Installation](#installation)
|
|
60
|
+
- [Quick start](#quick-start)
|
|
61
|
+
- [Commands](#commands)
|
|
62
|
+
- [Workflows](#workflows)
|
|
63
|
+
- [Configuration](#configuration)
|
|
64
|
+
- [Plugins](#plugins)
|
|
65
|
+
- [Security model](#security-model)
|
|
66
|
+
- [Development](#development)
|
|
67
|
+
- [Contributing](#contributing)
|
|
68
|
+
|
|
69
|
+
## Why HighhX
|
|
70
|
+
|
|
71
|
+
Most projects accumulate a pile of scripts, Makefile targets, README snippets and
|
|
72
|
+
CI YAML that only half the team remembers. HighhX gives every project the same
|
|
73
|
+
front door:
|
|
74
|
+
|
|
75
|
+
- **Local-first and offline-first.** No cloud backend, no account, no API keys, no AI.
|
|
76
|
+
Everything — history, logs, deployment state — lives in `.highhx/` on your machine.
|
|
77
|
+
- **Detects instead of asking.** Python (pip/uv/poetry/pdm/pipenv), Node (npm/pnpm/yarn/bun),
|
|
78
|
+
React, Next.js, Flutter/Dart, Java (Maven/Gradle), C/C++ (CMake/Make), Go, Rust, Docker,
|
|
79
|
+
common databases and monorepos — from real manifests and lockfiles, not file extensions.
|
|
80
|
+
- **Safe by default.** Commands are classified as safe, normal, dangerous or critical.
|
|
81
|
+
`git push`, `rm -rf`, `DROP TABLE`, production deploys and restores need approval;
|
|
82
|
+
`--dry-run` previews anything; policies can make approvals non-bypassable even with `--yes`.
|
|
83
|
+
- **A real workflow engine.** YAML workflows with dependency graphs, parallel execution,
|
|
84
|
+
conditions, variables, retries with backoff, timeouts, approvals and reusable workflows —
|
|
85
|
+
validated before anything runs.
|
|
86
|
+
- **Scriptable.** Every command supports `--json` and meaningful exit codes.
|
|
87
|
+
|
|
88
|
+
## Installation
|
|
89
|
+
|
|
90
|
+
HighhX needs Python 3.11+. It is developed and tested on macOS; Linux and Windows
|
|
91
|
+
support is designed in (see [docs/development.md](docs/development.md#platform-support))
|
|
92
|
+
but not yet verified on those systems.
|
|
93
|
+
|
|
94
|
+
> HighhXcli is **not yet published on PyPI**. Install it from a built wheel or from source.
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# from a checkout of this repository
|
|
98
|
+
python -m pip install build && python -m build # creates dist/highhxcli-*.whl
|
|
99
|
+
pipx install dist/highhxcli-*.whl # or: pip install dist/highhxcli-*.whl
|
|
100
|
+
|
|
101
|
+
# development install
|
|
102
|
+
python -m venv .venv && . .venv/bin/activate # Windows: .venv\Scripts\activate
|
|
103
|
+
pip install -e ".[dev]"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Both `highhx` and `highhxcli` are installed as commands, and `python -m highhx` works too.
|
|
107
|
+
|
|
108
|
+
Runtime dependencies are deliberately small: `click`, `rich` and `PyYAML`.
|
|
109
|
+
External tools (git, docker, kubectl, psql …) are used only when a feature needs them.
|
|
110
|
+
|
|
111
|
+
## Quick start
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
cd your-project
|
|
115
|
+
highhx init # detect the project, create .highhx/ (never overwrites without --force)
|
|
116
|
+
highhx doctor # check tools, config, env vars, ports
|
|
117
|
+
highhx status # dashboard: git, environment, services, recent runs
|
|
118
|
+
highhx test # auto-detected test runner (pytest, vitest, jest, flutter, mvn, …)
|
|
119
|
+
highhx run ci # run a workflow; parallel where dependencies allow
|
|
120
|
+
highhx run ci --dry-run
|
|
121
|
+
highhx history # what ran, when, how long, exit codes
|
|
122
|
+
highhx logs # output of the last execution (secrets redacted)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
`highhx init` creates:
|
|
126
|
+
|
|
127
|
+
```text
|
|
128
|
+
.highhx/
|
|
129
|
+
├── config.yaml # commands, services, deploy targets, approvals …
|
|
130
|
+
├── environment.yaml # declared variables and profiles (values live in .env files)
|
|
131
|
+
├── policies.yaml # protected branches, forbidden files, rules
|
|
132
|
+
├── workflows/ # dev, test, build, ci, release, deploy, rollback
|
|
133
|
+
├── hooks/ # scripts for git hooks
|
|
134
|
+
├── state/ # local database (git-ignored)
|
|
135
|
+
└── logs/ # execution logs (git-ignored)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Commands
|
|
139
|
+
|
|
140
|
+
Full reference with every option: [docs/commands.md](docs/commands.md).
|
|
141
|
+
|
|
142
|
+
| Area | Commands |
|
|
143
|
+
|---|---|
|
|
144
|
+
| Project | `init` `status` `info` `dev` `start` `stop` `restart` `check` |
|
|
145
|
+
| Code & tasks | `run <workflow>` `exec <command>` `script <name>` `task <name>` `watch` `fix` |
|
|
146
|
+
| Dependencies | `deps` `deps install` `deps update` `deps outdated` `deps audit` `deps clean` |
|
|
147
|
+
| Testing & build | `test [--watch] [--coverage] [--changed]` `benchmark` `build` `clean` `package` `artifacts` |
|
|
148
|
+
| Environment | `env` `env check` `env set` `env profile` `env diff` |
|
|
149
|
+
| Git & releases | `git status/diff/branch/commit/sync/tag/history` `version` `changelog` `release` `publish` |
|
|
150
|
+
| Deployment | `deploy [target]` `deploy status` `deploy logs` `rollback` `environments` |
|
|
151
|
+
| Security | `security` `security scan/secrets/deps/config/report` |
|
|
152
|
+
| Containers & data | `docker up/down/logs` `services` `ports` `db status/migrate/seed/backup/restore` |
|
|
153
|
+
| Workflows & automation | `workflow list/validate/create/graph` `schedule` `hook` `trigger` `watchers` |
|
|
154
|
+
| Observability | `logs [--follow]` `history [id]` `report` `trace` |
|
|
155
|
+
| Extensibility & team | `plugin list/install/remove/update/search/trust` `config` `policy` `workspace` `profile` |
|
|
156
|
+
| Diagnostics | `doctor` `diagnose` `repair` `debug` |
|
|
157
|
+
|
|
158
|
+
Global options (work before or after the command): `--json`, `--dry-run`, `--yes/-y`,
|
|
159
|
+
`--force`, `--quiet/-q`, `--verbose/-v`, `--debug`, `--no-color`, `--cwd/-C DIR`,
|
|
160
|
+
`--config-profile NAME`, `--version`, `--help`.
|
|
161
|
+
|
|
162
|
+
A few examples:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
highhx exec -- pytest -q # run anything with env profile, risk check, history
|
|
166
|
+
highhx exec --timeout 30s --retry 3 -- ./flaky.sh
|
|
167
|
+
highhx test --changed # only tests related to files changed since HEAD
|
|
168
|
+
highhx deps update # shows what will change, then asks
|
|
169
|
+
highhx env set DATABASE_URL # prompts without echo; value never printed again
|
|
170
|
+
highhx release # version from Conventional Commits, changelog, tag
|
|
171
|
+
highhx deploy staging --version 1.4.0 # preflight → approval → deploy → health check
|
|
172
|
+
highhx rollback staging # restore the previous successful deployment
|
|
173
|
+
highhx security --fail-on high # exit 9 if high/critical findings
|
|
174
|
+
highhx workflow graph ci --format mermaid
|
|
175
|
+
highhx status --json | jq .git.branch
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Workflows
|
|
179
|
+
|
|
180
|
+
Workflows are YAML files in `.highhx/workflows/`. Full reference:
|
|
181
|
+
[docs/workflows.md](docs/workflows.md) · JSON Schema: [schemas/workflow.schema.json](schemas/workflow.schema.json).
|
|
182
|
+
|
|
183
|
+
```yaml
|
|
184
|
+
name: production
|
|
185
|
+
|
|
186
|
+
settings:
|
|
187
|
+
fail_fast: true
|
|
188
|
+
max_parallel: 4
|
|
189
|
+
timeout: 30m
|
|
190
|
+
|
|
191
|
+
steps:
|
|
192
|
+
- id: test
|
|
193
|
+
run: pytest
|
|
194
|
+
|
|
195
|
+
- id: lint
|
|
196
|
+
run: ruff check .
|
|
197
|
+
|
|
198
|
+
- id: build
|
|
199
|
+
run: docker build -t myapp .
|
|
200
|
+
depends_on: [test, lint] # test and lint run in parallel first
|
|
201
|
+
|
|
202
|
+
- id: deploy
|
|
203
|
+
run: ./deploy.sh ${{ steps.build.outputs.tag }}
|
|
204
|
+
depends_on: [build]
|
|
205
|
+
approval: true # asks before running
|
|
206
|
+
retry:
|
|
207
|
+
attempts: 3
|
|
208
|
+
delay: 10s # exponential backoff: 10s, 20s …
|
|
209
|
+
|
|
210
|
+
- id: notify
|
|
211
|
+
run: ./notify.sh "deploy failed"
|
|
212
|
+
depends_on: [deploy]
|
|
213
|
+
if: failure()
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
A step never starts before every step in its `depends_on` succeeded. Steps whose
|
|
217
|
+
dependencies are satisfied run in parallel (up to `max_parallel`). Also supported:
|
|
218
|
+
`if:` conditions, `${{ }}` variables (`env`, `vars`, `inputs`, `steps.<id>.outputs`),
|
|
219
|
+
step outputs, `continue_on_error`, per-step `timeout`/`cwd`/`env`, reusable workflows
|
|
220
|
+
(`uses: other-workflow` with `with:` inputs), and `on:` event triggers.
|
|
221
|
+
|
|
222
|
+
`highhx workflow validate` catches circular and missing dependencies, duplicate ids,
|
|
223
|
+
unknown fields, bad expressions, references to steps that are not dependencies,
|
|
224
|
+
unparsable commands, impossible steps and risky commands without `approval` —
|
|
225
|
+
before anything runs.
|
|
226
|
+
|
|
227
|
+
## Configuration
|
|
228
|
+
|
|
229
|
+
`.highhx/config.yaml` is validated strictly (unknown keys are errors with
|
|
230
|
+
"did you mean" suggestions). Reference: [docs/configuration.md](docs/configuration.md) ·
|
|
231
|
+
JSON Schema: [schemas/config.schema.json](schemas/config.schema.json).
|
|
232
|
+
|
|
233
|
+
```yaml
|
|
234
|
+
version: 1
|
|
235
|
+
project:
|
|
236
|
+
name: shop
|
|
237
|
+
commands: # override anything HighhX detected
|
|
238
|
+
test: uv run pytest
|
|
239
|
+
dev: uv run uvicorn app.main:app --reload
|
|
240
|
+
services: # highhx start / stop / services
|
|
241
|
+
api:
|
|
242
|
+
command: uv run uvicorn app.main:app --port 8000
|
|
243
|
+
port: 8000
|
|
244
|
+
health: {url: http://127.0.0.1:8000/health}
|
|
245
|
+
deploy:
|
|
246
|
+
default: staging
|
|
247
|
+
targets:
|
|
248
|
+
staging:
|
|
249
|
+
type: ssh # local | docker | ssh | kubernetes | terraform | plugin:<name>
|
|
250
|
+
host: deploy@staging.example.com
|
|
251
|
+
command: ./deploy.sh {{ version }}
|
|
252
|
+
rollback_command: ./deploy.sh {{ previous_version }}
|
|
253
|
+
health_check: {url: https://staging.example.com/health}
|
|
254
|
+
approvals:
|
|
255
|
+
auto_approve: normal # never prompt at or below this risk
|
|
256
|
+
yes_max_risk: critical # the highest risk --yes may approve
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Config profiles (`.highhx/profiles/ci.yaml`) overlay the config with `--config-profile ci`.
|
|
260
|
+
Environment profiles (development/staging/production) are separate and live in
|
|
261
|
+
`.highhx/environment.yaml` plus your `.env` files — see `highhx env --help`.
|
|
262
|
+
|
|
263
|
+
## Plugins
|
|
264
|
+
|
|
265
|
+
Plugins add commands, workflows, templates, detectors and deployment backends.
|
|
266
|
+
Guide: [docs/plugins.md](docs/plugins.md).
|
|
267
|
+
|
|
268
|
+
```yaml
|
|
269
|
+
# my-plugin/highhx-plugin.yaml
|
|
270
|
+
name: greet
|
|
271
|
+
version: 1.0.0
|
|
272
|
+
api_version: 1
|
|
273
|
+
permissions: [commands]
|
|
274
|
+
contributes:
|
|
275
|
+
commands:
|
|
276
|
+
- name: greet
|
|
277
|
+
run: echo "hello"
|
|
278
|
+
workflows: [workflows]
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
highhx plugin install ./my-plugin # or a git URL, or a name from plugins.index
|
|
283
|
+
highhx greet
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Declarative contributions run as subprocesses with an isolated environment.
|
|
287
|
+
Python code plugins run only when `plugins.allow_code: true` **and** you trusted those
|
|
288
|
+
exact files (by SHA-256) with `highhx plugin install` or `highhx plugin trust`. Trust is
|
|
289
|
+
stored in your user data directory, so a cloned repository cannot enable its own plugin code.
|
|
290
|
+
|
|
291
|
+
## Security model
|
|
292
|
+
|
|
293
|
+
Details: [docs/security.md](docs/security.md).
|
|
294
|
+
|
|
295
|
+
- **Approvals.** Every command is classified (safe / normal / dangerous / critical).
|
|
296
|
+
Anything above `approvals.auto_approve` asks; critical actions require typing a word.
|
|
297
|
+
Without a terminal, HighhX denies instead of guessing. `--yes` approves up to
|
|
298
|
+
`approvals.yes_max_risk`, never beyond, and never for non-bypassable rules
|
|
299
|
+
(e.g. `rm -rf /`, `terraform destroy`, policy rules with `bypassable: false`).
|
|
300
|
+
- **Policies.** `.highhx/policies.yaml` can deny commands/actions, require approval,
|
|
301
|
+
protect branches, forbid committed files and require a clean tree for releases/deploys.
|
|
302
|
+
- **Secrets.** Secret values are never printed: `env` masks them, logs and history are
|
|
303
|
+
redacted (known secret values plus token patterns), and `security secrets` reports
|
|
304
|
+
file/line/type only. New `.env` files get owner-only permissions and are git-ignored.
|
|
305
|
+
- **No claims.** `highhx security` reports concrete findings from local checks. An empty
|
|
306
|
+
report does not mean a project is secure, and HighhX never says it is.
|
|
307
|
+
|
|
308
|
+
Report vulnerabilities in HighhX itself as described in [SECURITY.md](SECURITY.md).
|
|
309
|
+
|
|
310
|
+
## Development
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
pip install -e ".[dev]"
|
|
314
|
+
pytest # unit, integration, security and end-to-end tests
|
|
315
|
+
ruff check . && ruff format --check .
|
|
316
|
+
mypy # strict typing of src/highhx
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Architecture: [docs/architecture.md](docs/architecture.md) · Development guide:
|
|
320
|
+
[docs/development.md](docs/development.md) · Troubleshooting: [docs/troubleshooting.md](docs/troubleshooting.md).
|
|
321
|
+
|
|
322
|
+
## Contributing
|
|
323
|
+
|
|
324
|
+
Contributions are welcome — see [CONTRIBUTING.md](CONTRIBUTING.md) and the
|
|
325
|
+
[Code of Conduct](CODE_OF_CONDUCT.md). Please open an issue before large changes.
|
|
326
|
+
|
|
327
|
+
## License
|
|
328
|
+
|
|
329
|
+
MIT — see [LICENSE](LICENSE).
|