@kolisachint/hoocode 0.1.41 → 0.2.0

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.
Files changed (2) hide show
  1. package/README.md +145 -121
  2. package/package.json +5 -5
package/README.md CHANGED
@@ -1,170 +1,194 @@
1
- # hoocode
1
+ <h1 align="center">hoocode</h1>
2
2
 
3
- hoocode is a coding agent in Rust. It fully replaces the earlier TypeScript build, hoocode-ts (retired 2026-10-10).
3
+ <p align="center">A terminal coding agent, written in Rust. One static binary, any model provider, nothing applied without your say-so.</p>
4
4
 
5
- This is a multi-crate workspace that mirrors the structure of the [pycortex](https://github.com/kolisachint/pycortex) Python migration. Each namespace (`ai`, `agent`, `code`, `tui`) is split into focused, version-locked crates published to crates.io.
5
+ <p align="center">
6
+ <a href="https://github.com/kolisachint/hoocode/actions/workflows/ci.yml"><img src="https://github.com/kolisachint/hoocode/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI"></a>
7
+ <a href="https://github.com/kolisachint/hoocode/releases/latest"><img src="https://img.shields.io/github/v/release/kolisachint/hoocode?sort=semver" alt="Latest release"></a>
8
+ <a href="https://www.npmjs.com/package/@kolisachint/hoocode"><img src="https://img.shields.io/npm/v/@kolisachint/hoocode?label=npm" alt="npm"></a>
9
+ <a href="https://pypi.org/project/hoocode/"><img src="https://img.shields.io/pypi/v/hoocode?label=PyPI" alt="PyPI"></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT license"></a>
11
+ </p>
6
12
 
7
- ## Workspace structure
13
+ <p align="center">
14
+ <img src="docs/assets/demo.gif" alt="hoocode in a terminal: asked to make mean() return an Option, it reads src/lib.rs, shows the edit as a diff and waits for approval, runs cargo test after a second approval (1 passed), sums up, and then opens the slash-command menu" width="800">
15
+ </p>
8
16
 
9
- ```
10
- crates/
11
- hoocode-ai-types/
12
- hoocode-ai-models/
13
- ...
14
- hoocode-agent-core/
15
- ...
16
- ...
17
- ...
18
- ```
17
+ <p align="center"><sub>The real binary; only the model is scripted, so the demo can be recorded again for each release (<code>scripts/demo/record.sh</code>).</sub></p>
18
+
19
+ ---
20
+
21
+ hoocode reads your code, runs commands, edits files and talks to the model of your
22
+ choice, from a full-screen terminal UI or as a one-shot command. It is a single native
23
+ binary: no Node, no Python, no runtime to install.
19
24
 
20
- All crates share a single lockstep version defined in the workspace `Cargo.toml`.
25
+ - **Any provider.** Anthropic, OpenAI, Google, OpenRouter, Groq, DeepSeek, xAI, Fireworks
26
+ and more, by API key or by `/login` (Anthropic, GitHub Copilot, OpenAI Codex, Google).
27
+ - **You stay in control.** Shell, Edit and Write ask first (Yes / No / Always). Four
28
+ agent modes (ask, plan, build, debug) scope what the agent may do.
29
+ - **Subagents.** The agent can hand work to background subagents and keep going; their
30
+ tool calls go through the same approval gate as the main agent.
31
+ - **Sessions you can come back to.** `--continue`, `/resume`, `/fork`, `/tree`, and
32
+ automatic compaction of long conversations.
33
+ - **Extensible with open formats.** `AGENTS.md` / `CLAUDE.md` context files, skills,
34
+ prompt templates and slash commands, MCP servers, plugins, themes and keybindings.
35
+ - **Scriptable.** Print mode (`-p`) with text or JSON output, and a JSON-RPC mode
36
+ (`--mode rpc`) for driving hoocode from another program.
21
37
 
22
- ## Installation
38
+ ## Install
23
39
 
24
- **macOS / Linux** (no root, no Node):
40
+ hoocode runs on **macOS and Linux, on x64 and arm64**. The Linux builds are static
41
+ (musl), so one binary runs on any distro. There is no Windows build yet.
42
+
43
+ **Install script** (no root, no Node):
25
44
 
26
45
  ```bash
27
46
  curl -fsSL https://kolisachint.github.io/hoocode/install.sh | sh
28
47
  ```
29
48
 
30
- It installs `~/.hoocode/bin/hoocode` (and `hoo`), checks the download against the
31
- release's `SHA256SUMS`, and adds `~/.hoocode/bin` to `PATH`. `--help` lists the
32
- options (`--version`, `--dir`, `--no-modify-path`).
49
+ It downloads the release archive for your platform, checks it against the release's
50
+ `SHA256SUMS`, installs `~/.hoocode/bin/hoocode` (plus a `hoo` alias) and adds
51
+ `~/.hoocode/bin` to your `PATH`. Pass `--help` for the options (`--version`, `--dir`,
52
+ `--no-modify-path`). The script is [`install/install.sh`](install/install.sh) in this repo.
33
53
 
34
- **npm / bun:**
54
+ **npm or bun** (Node 18 or newer):
35
55
 
36
56
  ```bash
37
57
  npm install -g @kolisachint/hoocode # or: bun add -g @kolisachint/hoocode
38
58
  ```
39
59
 
40
- The package pulls in only the binary for your platform (macOS or Linux, x64 or
41
- arm64). There is no Windows build yet.
42
-
43
- ### From source
60
+ The package pulls in only the native binary for your platform. It installs `hoocode`
61
+ and `hoo`.
44
62
 
45
- The command is **`hoocode`** (alias `hoo`).
63
+ **pip** (Python 3.8 or newer):
46
64
 
47
65
  ```bash
48
- git clone https://github.com/kolisachint/hoocode
49
- cd hoocode
50
- scripts/install.sh # → updates ~/.hoocode/bin/hoocode if installed, else ~/.local/bin
51
- scripts/install.sh --prefix /usr/local/bin --also-hoocode # also keep a `hoocode` link
66
+ pip install hoocode # or: pipx install hoocode
52
67
  ```
53
68
 
54
- Plain cargo still works and installs the binary as `hoocode`:
55
- `cargo install --path crates/hoocode-code-main --bin hoocode`.
56
-
57
- ### Pre-built binaries
58
-
59
- Download `hoocode-<target>.tar.gz` from the
60
- [GitHub Releases](https://github.com/kolisachint/hoocode/releases) page and check it
61
- against `SHA256SUMS`. It holds the `hoocode` binary; put it on your `PATH`. Linux builds are static (musl) and run on any distro.
69
+ A thin launcher: on first run it downloads the release binary for your platform,
70
+ checks its sha256 against `SHA256SUMS` and caches it under `~/.cache/hoocode/`.
62
71
 
63
- ## Usage
72
+ **Prebuilt binaries.** Every [GitHub release](https://github.com/kolisachint/hoocode/releases)
73
+ has `hoocode-<target>.tar.gz` for `x86_64-unknown-linux-musl`,
74
+ `aarch64-unknown-linux-musl`, `x86_64-apple-darwin` and `aarch64-apple-darwin`, and a
75
+ `SHA256SUMS` file. Unpack it and put `hoocode` on your `PATH`:
64
76
 
65
77
  ```bash
66
- # Single-shot print mode (text or JSON)
67
- hoocode -p "Explain this codebase"
68
- hoocode -p --mode json "Explain this codebase"
69
-
70
- # Interactive TUI mode
71
- hoocode
72
-
73
- # JSON-RPC server mode
74
- hoocode --mode rpc
75
-
76
- # Subagent mode (used internally by the Agent tool)
77
- hoocode --mode subagent --task-id <id>
78
+ tar xzf hoocode-aarch64-apple-darwin.tar.gz
79
+ install -m 755 hoocode-aarch64-apple-darwin/hoocode ~/.local/bin/hoocode
78
80
  ```
79
81
 
80
- ## Development
82
+ **From source** (Rust 1.88 or newer; the repo pins its dev toolchain in
83
+ [`rust-toolchain.toml`](rust-toolchain.toml), which rustup picks up by itself):
81
84
 
82
85
  ```bash
83
- # Build the entire workspace
84
- cargo build
85
-
86
- # Run checks for all crates
87
- cargo check --workspace
88
-
89
- # Run all tests (CI uses nextest; `cargo test --workspace` works too)
90
- cargo nextest run --workspace
86
+ git clone https://github.com/kolisachint/hoocode
87
+ cd hoocode
88
+ cargo install --locked --path crates/hoocode-code-main --bin hoocode
91
89
  ```
92
90
 
93
- ### Releases
91
+ Or run `scripts/install.sh`, which builds a release binary and installs it as
92
+ `hoocode` and `hoo` into `~/.hoocode/bin` (if the install script was used before) or
93
+ `~/.local/bin`. `--prefix DIR` picks another directory.
94
94
 
95
- Label a PR `rust:patch`, `rust:minor` or `rust:major`; merging it runs the release:
96
- CI gates (parallel) → version bump, tag and GitHub release → binaries for 4 targets in
97
- parallel, each uploaded as soon as it is built. Optional labels: `release:skip-gates`
98
- (skip the gates, the PR's CI already passed) and `release:crates` (also publish to
99
- crates.io, off by default). Manual runs: Actions → Release.
95
+ hoocode is not on crates.io or Homebrew.
100
96
 
101
- ## Migration status (paused 2026-10-01, ready to use)
97
+ **Updating.** `hoocode update` prints the right update command for how you installed it.
102
98
 
103
- The port of hoocode **v0.6.0** (commit `2223437c`) is paused, and `hoocode` is usable as a
104
- daily coding agent. Phases 7, 8 and 11 are complete. Phase 10 is complete apart from the
105
- deferred items listed below. Every remaining task is **deferred** by user decision; none is
106
- in progress. Status per task: `python3 archive/migration/ledger.py status`.
99
+ ## Quick start
107
100
 
108
- What works (the pinned hoocode behavior, checked against hoocode itself):
101
+ ```bash
102
+ export ANTHROPIC_API_KEY=... # or any provider key, see `hoocode --help`
103
+ cd your-project
104
+ hoocode # full-screen interactive session
105
+ ```
109
106
 
110
- - **Modes:** interactive TUI, print mode (`-p`, text and `--mode json`), and `--mode rpc`
111
- (with a Rust `RpcClient`).
112
- - **Providers:** every catalog provider, plus OAuth logins (`/login`) and `models.json`.
113
- - **Sessions:** AgentSession with compaction, `/new`, `/resume`, `/fork`, `/tree`,
114
- `--continue`, `--session`, and `/export <file>.jsonl`.
115
- - **Tools:** Read, Shell, Edit, Write, lexical CodeSearch, TodoWrite, AskUserQuestion, and the
116
- Yes/No/Always permission prompt.
117
- - **Agent modes:** ask/plan/build/debug (`/mode`, `/plan`, `/grill`, `/approve`, alt+a).
118
- - **Subagents:** the Agent/AgentOutput tools, the task panel, and the subagent roster.
119
- - **Resources:** skills, prompt templates and slash commands, AGENTS.md/CLAUDE.md context
120
- files, themes, settings (`/settings`) and keybindings.
107
+ No API key? Start `hoocode` and run `/login` to sign in with a subscription instead.
121
108
 
122
- Deferred (not available yet, even though `--help` still lists some of them):
109
+ A few things to try in the interactive session:
123
110
 
124
- | Area | Ledger task |
111
+ | Type | What it does |
125
112
  |---|---|
126
- | MCP servers (`mcp.json`, stdio/HTTP/SSE, OAuth) | 9.1, 10.11 |
127
- | `WebFetch` / `WebSearch` (`--enable-webtools`) | 10.2e |
128
- | Plugins and marketplace (`--enable-plugintools`) | 12.1 |
129
- | `hoocode install/remove/update/list` package manager | 12.2 |
130
- | Code extensions (`-e`, extension flags) | 12.3 |
131
- | Semantic and hybrid search (`embsearch`). Search is lexical-only. | 12.4 |
132
- | `/loop`, `/goal` autonomous loop, cron/scheduler | 12.5 |
133
- | Warm subagent pool (`--warm-subagents`) | 12.6 |
134
- | HTML export and `/share`, `/learn`, canvas, `--team`, voice, telemetry, version check | 12.7 |
135
-
136
- Known parity gaps: tasks 10.2a/b/c/d/f/g, 10.4c and 10.5 pass Level 1 but not Level 2. The
137
- default-bundle system prompt in hoocode also advertises the DocSearch self-knowledge tool
138
- from 12.4, so model requests differ in that one block.
139
-
140
- The plan and its rationale are in
141
- [`archive/docs/ts-to-rust-migration.md`](archive/docs/ts-to-rust-migration.md)
142
- (§0 status, §9 phases), and the handoff log is in `archive/migration/PROGRESS.md`. To resume, take a
143
- deferred task out of `deferred` and say "continue migration" (see `CLAUDE.md`).
113
+ | `/model` | Pick a model (Ctrl+P cycles through your favourites) |
114
+ | `/mode` | Switch between ask, plan, build and debug |
115
+ | `/resume` | Reopen an earlier session in this folder |
116
+ | `@path/to/file` | Attach a file to your message |
117
+ | `/hotkeys` | Show the keyboard shortcuts |
118
+ | `/settings` | Change settings |
144
119
 
145
- ## Quick start
120
+ One-shot and scripted use:
146
121
 
147
122
  ```bash
148
- cargo install --path crates/hoocode-code-main --bin hoocode # puts `hoocode` on PATH
149
- export ANTHROPIC_API_KEY=... # or any provider key from `hoocode --help`, or /login
150
- hoocode # interactive TUI
151
- hoocode -p "Summarize this repo" # one-shot
123
+ hoocode -p "Summarize this repo" # print the answer and exit
124
+ hoocode -p --mode json "List the TODOs in src/" # JSON event stream
125
+ hoocode --model anthropic/claude-sonnet-4-5 "Review the last commit"
126
+ hoocode --continue "And now fix the first one" # continue the last session
127
+ hoocode --tools Read,CodeSearch -p "Review src/" # read-only run
128
+ hoocode --mode rpc # JSON-RPC over stdin/stdout
152
129
  ```
153
130
 
154
- - Config, auth, sessions and settings live in `~/.hoocode` (override with
155
- `HOOCODE_CODING_AGENT_DIR`). Project overrides go in `./.hoocode/`.
156
- Data from the pre-1.2 home and project folders is merged in once, with backups
157
- (`hoocode migrate --dry-run` shows what would change).
158
- - The settings, `models.json`, `auth.json`, session JSONL and `hoo-config.json` formats match
159
- hoocode's, so an existing hoocode setup can be copied over.
131
+ Plugins add skills, subagents and MCP servers. Add a git marketplace, then install
132
+ from it, from the shell or with `/plugin` in a session:
133
+
134
+ ```bash
135
+ hoocode plugin marketplace add <git-url-or-owner/repo>
136
+ hoocode install <plugin>@<marketplace> # --scope project for this repo only
137
+ hoocode list
138
+ ```
160
139
 
161
- ## Publishing
140
+ `hoocode --help` lists every flag and the provider environment variables;
141
+ `hoocode --list-models [search]` lists the models it knows.
162
142
 
163
- Publishing is driven from GitHub Actions:
143
+ ## Configuration
164
144
 
165
- - `Reserve crates.io names` — one-off workflow that publishes `0.0.1` placeholder crates.
166
- - `Release` — bump, build, publish, and create a GitHub release.
167
- - `Merge Release` — auto-releases PRs labeled `rust:patch`, `rust:minor`, or `rust:major`.
168
- - `Build binaries` — cross-compiles the `hoocode` binary for Linux, macOS (Intel/Apple Silicon), and Windows.
145
+ Everything hoocode keeps lives in **`~/.hoocode`**. Set `HOOCODE_CODING_AGENT_DIR` to
146
+ move it.
169
147
 
170
- Crates marked with `[package.metadata.hoocode] publish = true` are included in automated releases.
148
+ | File or folder | What it holds |
149
+ |---|---|
150
+ | `~/.hoocode/settings.json` | Global settings (`/settings` edits it) |
151
+ | `.hoocode/settings.json` | Per-project settings, merged over the global ones |
152
+ | `~/.hoocode/auth.json` | Logins and keys saved by `/login` |
153
+ | `~/.hoocode/models.json` | Your own providers and models (for example a local OpenAI-compatible server) |
154
+ | `~/.hoocode/hoo-config.json` | Agent modes and tool approval rules (`auto_allow`) |
155
+ | `~/.hoocode/skills/`, `.hoocode/skills/` | Skills, global and per project |
156
+ | `~/.hoocode/themes/` | Custom themes |
157
+ | `~/.hoocode/sessions/` | Saved sessions, one JSONL file each, in a folder per project (`HOOCODE_CODING_AGENT_SESSION_DIR` or `--session-dir` moves them) |
158
+ | `~/.agents/mcp.json`, `.agents/mcp.json` | MCP servers, global and per project (`/mcp` shows their state) |
159
+ | `~/.agents/plugins/`, `.agents/plugins/` | Plugins, user and per project (`hoocode install`, `hoocode list`, or `/plugin` in a session) |
160
+ | `AGENTS.md` or `CLAUDE.md` | Project instructions, read from the working folder and its parents |
161
+
162
+ Because sessions are saved as files, you can resume, fork or export
163
+ them (`/export <file>.jsonl`). `--no-session` keeps a run ephemeral, and `--offline`
164
+ turns off startup network calls such as the version check.
165
+
166
+ ## Documentation
167
+
168
+ - [`docs/maps/ui.md`](docs/maps/ui.md): the screen, pickers, slash commands and keys,
169
+ and where each lives in the code
170
+ - [`docs/maps/packages.md`](docs/maps/packages.md): every crate in the workspace and
171
+ what it does
172
+ - [`docs/design/`](docs/design/README.md): design notes and the plan for what is built next
173
+ - [`docs/design/distribution.md`](docs/design/distribution.md): how releases reach users
174
+ - [`CHANGELOG.md`](CHANGELOG.md): what changed (also `/changelog` inside hoocode)
175
+
176
+ ## Contributing
177
+
178
+ Bug reports, ideas and pull requests are welcome. Start with
179
+ [CONTRIBUTING.md](CONTRIBUTING.md): it covers the dev loop (fmt, clippy, nextest),
180
+ where tests go and how releases work. Please read the
181
+ [code of conduct](CODE_OF_CONDUCT.md), and report security problems privately as
182
+ described in [SECURITY.md](SECURITY.md).
183
+
184
+ If hoocode is useful to you, a star on the repo helps other people find it.
185
+
186
+ ## Credits
187
+
188
+ hoocode began as a fork of [`pi-mono`](https://github.com/badlogic/pi-mono) by
189
+ Mario Zechner, which is MIT-licensed. Its copyright notice is kept in [LICENSE](LICENSE).
190
+ Thanks to Mario and the upstream contributors.
191
+
192
+ ## License
193
+
194
+ MIT, see [LICENSE](LICENSE).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolisachint/hoocode",
3
- "version": "0.1.41",
3
+ "version": "0.2.0",
4
4
  "description": "HooCode, the terminal coding agent (Rust build)",
5
5
  "bin": {
6
6
  "hoocode": "bin/hoocode.js",
@@ -13,10 +13,10 @@
13
13
  "node": ">=18"
14
14
  },
15
15
  "optionalDependencies": {
16
- "@kolisachint/hoocode-darwin-arm64": "0.1.41",
17
- "@kolisachint/hoocode-darwin-x64": "0.1.41",
18
- "@kolisachint/hoocode-linux-arm64": "0.1.41",
19
- "@kolisachint/hoocode-linux-x64": "0.1.41"
16
+ "@kolisachint/hoocode-darwin-arm64": "0.2.0",
17
+ "@kolisachint/hoocode-darwin-x64": "0.2.0",
18
+ "@kolisachint/hoocode-linux-arm64": "0.2.0",
19
+ "@kolisachint/hoocode-linux-x64": "0.2.0"
20
20
  },
21
21
  "license": "MIT",
22
22
  "repository": {