UNPKG

@impulselab/hepha

Version:

Command-line interface for the Hepha platform.

96 lines (71 loc) • 2.89 kB
# `hepha` Command-line interface for creating and operating [Hephaistos](https://hephaistos.impulselab.ai) sessions. ## Install ```bash npm install --global @impulselab/hepha ``` Node.js 20 or newer is required. ## Quick start ```bash hepha login hepha whoami hepha run "Add rate limiting to the public API" \ --repo impulse-studio/hephaistos \ --follow ``` Run `hepha help` to see all commands. The full API reference is available at <https://hephaistos.impulselab.ai/api/v1/docs>. ## Authentication `hepha login` uses device authorization and stores the resulting session in `~/.hepha/config.json`. For scripts and agents, use an API key: ```bash export HEPHA_API_KEY="..." hepha sessions list --json ``` `HEPHA_API_KEY` takes precedence over a stored login. `HEPHA_URL` can point the CLI at another Hephaistos deployment. `HEPHA_TIMEOUT_MS` bounds one request; `HEPHA_FOLLOW_MAX_OUTAGE_SECONDS` makes `--follow` give up that long after its first failure, exiting with that failure. When unset, it waits for the platform to come back. ## Exit codes - `0`: completed successfully - `1`: failed, killed, or abstained - `2`: invalid CLI usage - `3`: waiting for a human question or approval ## Agent skill The package ships `skills/cli/SKILL.md`, an [Agent Skill](https://agentskills.io) that teaches a coding agent what the platform does and how to drive it: task types, the question cycle, the four guardrails, then the commands, the exit codes and the mistakes that look right. Install the package and the knowledge travels with it; `npm update` updates it. ```bash npx @tanstack/intent@latest install # writes discovery guidance once npx @tanstack/intent@latest list --global # the CLI is usually installed globally npx @tanstack/intent@latest load @impulselab/hepha#cli ``` Nothing runs on install: the skill is a file in the tarball and the tooling reads it out of `node_modules`, never executing package code. Discovery is opt-in per source, in the consuming project's `package.json`: ```json { "intent": { "skills": ["@impulselab/hepha"], "exclude": ["@impulselab/hepha#experimental-*"] } } ``` `intent.skills` is the package-level allowlist (`"*"` allows everything, `[]` nothing), `intent.exclude` the finer control down to `package#skill`. That list is the boundary; `intent hooks install` only nudges an editor to surface skill loading, and must never be what decides a skill is safe to load. ### Maintaining it `sources:` in the skill's frontmatter names the files it is distilled from. ```bash pnpm --filter @impulselab/hepha exec intent validate skills # blocking in CI pnpm --filter @impulselab/hepha run skills:stale # advisory ``` `.github/workflows/skills.yml` validates the skill on every PR that touches it, and reports, without failing the build, when a PR edits a declared source without touching the skill.