liutaio 0.1.4 → 0.1.6

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.
package/README.md CHANGED
@@ -24,12 +24,12 @@ You need three things:
24
24
 
25
25
  1. **Docker** installed and running
26
26
  2. **SSH keys** in `~/.ssh/` that can push to your repo
27
- 3. An **agents.md** file in your repo describing the work to do (see [Writing Your agents.md](#writing-your-agentsmd))
27
+ 3. An **agent.md** file in your repo describing the work to do (see [Writing Your agent.md](#writing-your-agentmd))
28
28
 
29
29
  Then just run:
30
30
 
31
31
  ```bash
32
- liutaio agents.md 10 my-feature-branch
32
+ liutaio agent.md 10 my-feature-branch
33
33
  ```
34
34
 
35
35
  That's it. Liutaio figures out authentication, builds the container, clones your repo, installs dependencies, and starts working.
@@ -52,7 +52,7 @@ If you've ever used Claude Code on your machine, you're already set. If not, Liu
52
52
  If you don't want to touch your host credentials, or you're on a machine where Claude Code isn't installed, use `--oauth`:
53
53
 
54
54
  ```bash
55
- liutaio agents.md 10 my-branch --oauth
55
+ liutaio agent.md 10 my-branch --oauth
56
56
  ```
57
57
 
58
58
  Liutaio will show you a URL to open in your browser. After authorising, you'll see a code on the page — paste it back into the terminal. Your credentials are then cached in a Docker volume, so you only need to do this once.
@@ -60,7 +60,7 @@ Liutaio will show you a URL to open in your browser. After authorising, you'll s
60
60
  To re-authenticate later (e.g. switching accounts):
61
61
 
62
62
  ```bash
63
- liutaio agents.md 10 my-branch --fresh-login
63
+ liutaio agent.md 10 my-branch --fresh-login
64
64
  ```
65
65
 
66
66
  ### Cached OAuth credentials
@@ -95,9 +95,9 @@ Each iteration works on exactly one ticket. After completing it (code committed,
95
95
 
96
96
  If the container crashes or you stop it (`docker stop`), it pushes whatever work is on the base branch before shutting down — you never lose progress.
97
97
 
98
- ## Writing Your agents.md
98
+ ## Writing Your agent.md
99
99
 
100
- The `agents.md` file tells Claude Code what to do. Put it anywhere in your repo (you pass the path as the first argument). Here's a minimal example:
100
+ The `agent.md` file tells Claude Code what to do. Put it anywhere in your repo (you pass the path as the first argument). Here's a minimal example:
101
101
 
102
102
  ```markdown
103
103
  # My Feature
@@ -131,7 +131,7 @@ Maintain a `progress.md` file tracking what's been done.
131
131
  When all tickets are complete, output: <promise>COMPLETE</promise>
132
132
  ```
133
133
 
134
- See `agents-template.md` for a more complete template.
134
+ See `agent-template.md` for a more complete template.
135
135
 
136
136
  ### Key conventions
137
137
 
@@ -175,20 +175,20 @@ npm install --prefix packages/client
175
175
  Pass private tokens with `--env`:
176
176
 
177
177
  ```bash
178
- liutaio agents.md 10 my-branch --env MY_NPM_TOKEN=ghp_xxxx
178
+ liutaio agent.md 10 my-branch --env MY_NPM_TOKEN=ghp_xxxx
179
179
  ```
180
180
 
181
181
  ## CLI Reference
182
182
 
183
183
  ```
184
- liutaio <agents-file> <iterations> <base-branch> [options]
184
+ liutaio <agent-file> <iterations> <base-branch> [options]
185
185
  ```
186
186
 
187
187
  ### Arguments
188
188
 
189
189
  | Argument | Description |
190
190
  |----------|-------------|
191
- | `agents-file` | Path to your agents.md relative to repo root |
191
+ | `agent-file` | Path to your agent.md relative to repo root |
192
192
  | `iterations` | Maximum number of loop iterations (one ticket per iteration) |
193
193
  | `base-branch` | Name of the branch to create from main |
194
194
 
@@ -227,7 +227,7 @@ docker logs -f liutaio-my-branch
227
227
  docker exec -it liutaio-my-branch bash
228
228
 
229
229
  # Check progress on your host (updated after each ticket)
230
- cat path/to/agents-dir/progress.md
230
+ cat path/to/agent-dir/progress.md
231
231
 
232
232
  # Stop gracefully (pushes work before exiting)
233
233
  docker stop liutaio-my-branch
@@ -265,14 +265,14 @@ Check that you're copying the entire code from the callback page (including any
265
265
  Liutaio uses Claude Code's public OAuth client ID to authenticate. If Anthropic rotates this ID in a future update, OAuth login will fail. You can override it by passing the new client ID:
266
266
 
267
267
  ```bash
268
- liutaio agents.md 10 my-branch --env LIUTAIO_OAUTH_CLIENT_ID=new-client-id-here
268
+ liutaio agent.md 10 my-branch --env LIUTAIO_OAUTH_CLIENT_ID=new-client-id-here
269
269
  ```
270
270
 
271
271
  You can find the current client ID by running `claude auth login` on your host and inspecting the authorization URL it generates.
272
272
 
273
273
  ### Loop doesn't stop after all work is done
274
274
 
275
- The loop looks for `<promise>COMPLETE</promise>` in the session output. Make sure your agents.md instructs Claude to output this exact string when finished.
275
+ The loop looks for `<promise>COMPLETE</promise>` in the session output. Make sure your agent.md instructs Claude to output this exact string when finished.
276
276
 
277
277
  ## License
278
278
 
package/bin/liutaio CHANGED
@@ -17,5 +17,11 @@ if [[ "${1:-}" == "--version" || "${1:-}" == "-v" ]]; then
17
17
  exit 0
18
18
  fi
19
19
 
20
+ # Handle --agent-template
21
+ if [[ "${1:-}" == "--agent-template" ]]; then
22
+ cat "$LIUTAIO_HOME/agent-template.md"
23
+ exit 0
24
+ fi
25
+
20
26
  # Delegate to run.sh with all arguments
21
27
  exec "$LIUTAIO_HOME/docker/run.sh" "$@"
@@ -7,9 +7,9 @@ BASE_BRANCH="${3:-}"
7
7
  LOGDIR="${4:-/tmp/liutaio}"
8
8
 
9
9
  if [ -z "$AGENTS_FILE" ] || [ -z "$ITERATIONS" ] || [ -z "$BASE_BRANCH" ]; then
10
- echo "Usage: liutaio <agents-file> <iterations> <base-branch> [log-dir]"
10
+ echo "Usage: liutaio <agent-file> <iterations> <base-branch> [log-dir]"
11
11
  echo ""
12
- echo " agents-file Path to agents.md relative to repo root"
12
+ echo " agent-file Path to agent.md relative to repo root"
13
13
  echo " iterations Number of ralph loop iterations"
14
14
  echo " base-branch Name of the base branch to create from main"
15
15
  echo " log-dir Log directory (default: /tmp/liutaio)"
@@ -174,7 +174,7 @@ echo ""
174
174
  echo "============================================"
175
175
  echo " Liutaio"
176
176
  echo "============================================"
177
- echo " Agents file : $AGENTS_FILE"
177
+ echo " Agent file : $AGENTS_FILE"
178
178
  echo " Iterations : $ITERATIONS"
179
179
  echo " Base branch : $BASE_BRANCH"
180
180
  echo " Log dir : $LOGDIR"
@@ -193,9 +193,9 @@ if [ -n "$REAL_REMOTE" ]; then
193
193
  echo " Remote set to: $REAL_REMOTE"
194
194
  fi
195
195
 
196
- # Copy agents file (and its directory) from host if not on main
196
+ # Copy agent file (and its directory) from host if not on main
197
197
  if [ ! -f "/workspace/$AGENTS_FILE" ] && [ -f "/repo/$AGENTS_FILE" ]; then
198
- echo " Agents file not on main — copying from host repo..."
198
+ echo " Agent file not on main — copying from host repo..."
199
199
  mkdir -p "/workspace/$AGENTS_DIR"
200
200
  cp -r "/repo/$AGENTS_DIR/." "/workspace/$AGENTS_DIR/"
201
201
  echo " Copied: $AGENTS_DIR/"
package/docker/run.sh CHANGED
@@ -4,7 +4,7 @@ set -euo pipefail
4
4
  # ─── Liutaio — run Claude Code loops with auto-detecting auth ───
5
5
  #
6
6
  # Usage:
7
- # liutaio <agents-file> <iterations> <base-branch> [options]
7
+ # liutaio <agent-file> <iterations> <base-branch> [options]
8
8
  #
9
9
  # Authentication (checked in this order):
10
10
  # 1. Cached OAuth credentials (Docker volume from a previous --oauth run)
@@ -69,10 +69,10 @@ if [ -z "$AGENTS_FILE" ] || [ -z "$ITERATIONS" ] || [ -z "$BASE_BRANCH" ]; then
69
69
  echo "Liutaio — run Claude Code loops with auto-detecting auth"
70
70
  echo ""
71
71
  echo "Usage:"
72
- echo " liutaio <agents-file> <iterations> <base-branch> [options]"
72
+ echo " liutaio <agent-file> <iterations> <base-branch> [options]"
73
73
  echo ""
74
74
  echo "Arguments:"
75
- echo " agents-file Path to agents.md relative to repo root"
75
+ echo " agent-file Path to agent.md relative to repo root"
76
76
  echo " iterations Number of loop iterations"
77
77
  echo " base-branch Name of the base branch to create from main"
78
78
  echo ""
@@ -86,6 +86,8 @@ if [ -z "$AGENTS_FILE" ] || [ -z "$ITERATIONS" ] || [ -z "$BASE_BRANCH" ]; then
86
86
  echo " --node-version V Node.js version (default: 22, or LIUTAIO_NODE_VERSION)"
87
87
  echo " --repo PATH Path to git repo (default: auto-detect from cwd)"
88
88
  echo " --env KEY=VALUE Pass env var into the container (repeatable)"
89
+ echo " --agent-template Print the agent.md template to stdout"
90
+ echo " --version, -v Show version number"
89
91
  echo ""
90
92
  echo "Authentication (checked in this order):"
91
93
  echo " 1. Cached OAuth credentials (Docker volume from a previous --oauth run)"
@@ -94,9 +96,9 @@ if [ -z "$AGENTS_FILE" ] || [ -z "$ITERATIONS" ] || [ -z "$BASE_BRANCH" ]; then
94
96
  echo " 4. Interactive OAuth login (prompts in the terminal)"
95
97
  echo ""
96
98
  echo "Examples:"
97
- echo " liutaio agents.md 10 my-branch # auto-detect auth"
98
- echo " liutaio agents.md 10 my-branch --oauth # force OAuth login"
99
- echo " liutaio agents.md 10 my-branch --fresh-login # re-authenticate"
99
+ echo " liutaio agent.md 10 my-branch # auto-detect auth"
100
+ echo " liutaio agent.md 10 my-branch --oauth # force OAuth login"
101
+ echo " liutaio agent.md 10 my-branch --fresh-login # re-authenticate"
100
102
  exit 1
101
103
  fi
102
104
 
@@ -111,9 +113,9 @@ fi
111
113
 
112
114
  CONTAINER_NAME="${CONTAINER_NAME:-liutaio-${BASE_BRANCH}}"
113
115
 
114
- # ─── Validate agents file exists ─────────────────────────────────────
116
+ # ─── Validate agent file exists ──────────────────────────────────────
115
117
  if [ ! -f "$REPO_ROOT/$AGENTS_FILE" ]; then
116
- echo "Error: agents file not found: $REPO_ROOT/$AGENTS_FILE"
118
+ echo "Error: agent file not found: $REPO_ROOT/$AGENTS_FILE"
117
119
  exit 1
118
120
  fi
119
121
 
@@ -340,7 +342,7 @@ echo "============================================"
340
342
  echo " Liutaio"
341
343
  echo "============================================"
342
344
  echo " Container : $CONTAINER_NAME"
343
- echo " Agents : $AGENTS_FILE"
345
+ echo " Agent : $AGENTS_FILE"
344
346
  echo " Iterations : $ITERATIONS"
345
347
  echo " Base branch: $BASE_BRANCH"
346
348
  echo " Node : $NODE_VERSION"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "liutaio",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Run AI coding agents in Docker containers — autonomously, safely, and with zero setup.",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -9,7 +9,7 @@
9
9
  "files": [
10
10
  "bin/",
11
11
  "docker/",
12
- "agents-template.md",
12
+ "agent-template.md",
13
13
  "LICENSE",
14
14
  "README.md"
15
15
  ],
@@ -24,7 +24,7 @@
24
24
  ],
25
25
  "repository": {
26
26
  "type": "git",
27
- "url": "git+https://github.com/narleybrittes/liutaio.git"
27
+ "url": "git+https://github.com/narley/liutaio.git"
28
28
  },
29
29
  "engines": {
30
30
  "node": ">=18"
File without changes