juno-code 1.0.50 → 1.0.51
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 +100 -8
- package/dist/bin/cli.js +2431 -1280
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/cli.mjs +2413 -1262
- package/dist/bin/cli.mjs.map +1 -1
- package/dist/index.d.mts +23 -12
- package/dist/index.d.ts +23 -12
- package/dist/index.js +40 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +40 -11
- package/dist/index.mjs.map +1 -1
- package/dist/templates/scripts/install_requirements.sh +14 -2
- package/dist/templates/scripts/kanban.sh +7 -0
- package/dist/templates/services/README.md +23 -4
- package/dist/templates/services/__pycache__/pi.cpython-313.pyc +0 -0
- package/dist/templates/services/pi.py +657 -29
- package/dist/templates/skills/claude/ralph-loop/scripts/kanban.sh +7 -0
- package/dist/templates/skills/codex/ralph-loop/scripts/kanban.sh +7 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -222,6 +222,9 @@ juno-code codex 'your task'
|
|
|
222
222
|
juno-code gemini 'your task'
|
|
223
223
|
juno-code pi 'your task'
|
|
224
224
|
|
|
225
|
+
# Pi live interactive run (auto-exits on non-aborted completion)
|
|
226
|
+
juno-code pi --live -p '/skill:ralph-loop' -i 1
|
|
227
|
+
|
|
225
228
|
# AI-powered test generation
|
|
226
229
|
juno-code test --generate --framework vitest
|
|
227
230
|
juno-code test --run
|
|
@@ -243,6 +246,7 @@ juno-code view-log .juno_task/logs/claude_shell_*.log --output json-only --limit
|
|
|
243
246
|
| `-v, --verbose` | Human-readable verbose output |
|
|
244
247
|
| `-r, --resume <id>` | Resume specific session |
|
|
245
248
|
| `--continue` | Continue most recent session |
|
|
249
|
+
| `--live` | Pi-only: run Pi in interactive TUI mode with auto-exit on non-aborted completion |
|
|
246
250
|
| `--no-hooks` | Skip lifecycle hooks |
|
|
247
251
|
| `--on-hourly-limit <action>` | Quota limit behavior: `wait` (auto-retry) or `raise` (exit) |
|
|
248
252
|
| `--force-update` | Force reinstall all scripts and services |
|
|
@@ -252,12 +256,44 @@ juno-code view-log .juno_task/logs/claude_shell_*.log --output json-only --limit
|
|
|
252
256
|
### Session Management
|
|
253
257
|
|
|
254
258
|
```bash
|
|
255
|
-
juno-code session list
|
|
256
|
-
juno-code session info abc123
|
|
257
|
-
juno-code --resume abc123 -p 'continue'
|
|
258
|
-
juno-code --continue -p 'keep going'
|
|
259
|
+
juno-code session list # View all sessions
|
|
260
|
+
juno-code session info abc123 # Session details
|
|
261
|
+
juno-code --resume abc123 -p 'continue' # Resume session
|
|
262
|
+
juno-code --continue -p 'keep going' # Continue most recent (backend-native)
|
|
263
|
+
juno-code continue 'next prompt' # Reuse last session id + runtime settings snapshot
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Each `juno-code` run also appends execution history to:
|
|
267
|
+
|
|
268
|
+
- `.juno_task/session_history.json` (unlimited, newest-first)
|
|
269
|
+
|
|
270
|
+
Per-run entries include: initial prompt + timestamp, subagent/model/settings, total cost, turn/message counts, session IDs, and last-message timestamp.
|
|
271
|
+
|
|
272
|
+
CLI run summaries also surface these fields live in the terminal:
|
|
273
|
+
- `Statistics -> Total Cost`
|
|
274
|
+
- `Statistics -> Completed At`
|
|
275
|
+
- `Statistics -> Average Duration` (humanized unit: ms/s/m/h)
|
|
276
|
+
- `Session ID(s)` entries with per-session cost when available
|
|
277
|
+
|
|
278
|
+
For `juno-code continue`, the latest session context is persisted into the project env file (`.env.juno` by default) using **shell-scoped keys** so panes/tabs do not overwrite each other:
|
|
279
|
+
- `JUNO_CODE_LAST_SESSION_ID_SCOPE_<HASH>`
|
|
280
|
+
- `JUNO_CODE_LAST_EXECUTION_SETTINGS_SCOPE_<HASH>` (JSON runtime-settings snapshot)
|
|
281
|
+
|
|
282
|
+
Scope detection prefers terminal markers (for example `TMUX_PANE`, `WEZTERM_PANE`, `TERM_SESSION_ID`) and falls back to the parent shell PID. You can override scope resolution explicitly with `JUNO_CODE_CONTINUE_SCOPE=<name>`.
|
|
283
|
+
|
|
284
|
+
Short help text for scripts that need pane-scoped continue state:
|
|
285
|
+
- Session key pattern: `JUNO_CODE_LAST_SESSION_ID_SCOPE_<HASH>`
|
|
286
|
+
- Settings key pattern: `JUNO_CODE_LAST_EXECUTION_SETTINGS_SCOPE_<HASH>`
|
|
287
|
+
- Deterministic override: set `JUNO_CODE_CONTINUE_SCOPE=<your-pane-id>` before running `juno-code` so external scripts can target a stable scope name across runs.
|
|
288
|
+
|
|
289
|
+
Script endpoint for hash/status lookups:
|
|
290
|
+
```bash
|
|
291
|
+
juno-code continue-scope --json # current scope hash + status
|
|
292
|
+
juno-code continue-scope A1B2C3 --json # lookup by short hash prefix (5-6 chars)
|
|
259
293
|
```
|
|
260
294
|
|
|
295
|
+
`continue-scope` returns `status` as one of: `running`, `finished`, `not_found`, `error`.
|
|
296
|
+
|
|
261
297
|
### Feedback System
|
|
262
298
|
|
|
263
299
|
```bash
|
|
@@ -289,9 +325,9 @@ juno-code skills status
|
|
|
289
325
|
|
|
290
326
|
| Agent | Directory | Skills |
|
|
291
327
|
|-------|-----------|--------|
|
|
292
|
-
| Claude | `.claude/skills/` | `ralph-loop`, `plan-kanban-tasks`, `understand-project` |
|
|
293
|
-
| Codex | `.agents/skills/` | `ralph-loop` |
|
|
294
|
-
| Pi | `.pi/skills/` |
|
|
328
|
+
| Claude | `.claude/skills/` | `kanban-workflow`, `ralph-loop`, `plan-kanban-tasks`, `understand-project` |
|
|
329
|
+
| Codex | `.agents/skills/` | `kanban-workflow`, `ralph-loop`, `plan-kanban-tasks`, `understand-project` |
|
|
330
|
+
| Pi | `.pi/skills/` | `kanban-workflow`, `ralph-loop`, `plan-kanban-tasks`, `understand-project` |
|
|
295
331
|
|
|
296
332
|
### Service Management
|
|
297
333
|
|
|
@@ -306,6 +342,18 @@ juno-code services status
|
|
|
306
342
|
juno-code services install --force
|
|
307
343
|
```
|
|
308
344
|
|
|
345
|
+
### Auth Management (Codex → Pi)
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
# Import default Codex auth into Pi auth store
|
|
349
|
+
juno-code auth import-codex
|
|
350
|
+
|
|
351
|
+
# Use explicit input/output paths (useful for account switching/backup files)
|
|
352
|
+
juno-code auth import-codex --input ~/.codex/auth.json --output ~/.pi/agent/auth.json
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
This command translates Codex CLI credentials to Pi's `auth.json` format (`type: "oauth"`) and writes/updates the `openai-codex` provider entry.
|
|
356
|
+
|
|
309
357
|
## Backends & Services
|
|
310
358
|
|
|
311
359
|
### Supported Services
|
|
@@ -315,11 +363,31 @@ juno-code services install --force
|
|
|
315
363
|
| claude | `claude-sonnet-4-6` | `:haiku`, `:sonnet`, `:opus` |
|
|
316
364
|
| codex | `gpt-5.3-codex` | `:codex`, `:codex-mini`, `:gpt-5`, `:mini` |
|
|
317
365
|
| gemini | `gemini-2.5-pro` | `:pro`, `:flash`, `:pro-3`, `:flash-3` |
|
|
318
|
-
| pi | `anthropic/claude-sonnet-4-6` | `:pi`, `:sonnet`, `:opus`, `:gpt-5`, `:codex`, `:api-codex`, `:gemini-pro` |
|
|
366
|
+
| pi | `anthropic/claude-sonnet-4-6` | `:pi`, `:sonnet`, `:opus`, `:gpt-5`, `:codex`, `:api-codex`, `:codex-spark`, `:api-codex-spark`, `:gemini-pro` |
|
|
319
367
|
|
|
320
368
|
> **Pi** is a multi-provider coding agent that supports Anthropic, OpenAI, Google, Groq, xAI, and more.
|
|
321
369
|
> It requires separate installation: `npm install -g @mariozechner/pi-coding-agent`
|
|
322
370
|
|
|
371
|
+
### Pi Live Mode (`--live`)
|
|
372
|
+
|
|
373
|
+
Use live mode when you want Pi's interactive TUI while keeping juno-code iteration hooks/statistics.
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
# Canonical live flow
|
|
377
|
+
juno-code pi --live -p '/skill:ralph-loop' -i 1
|
|
378
|
+
|
|
379
|
+
# If :pi default model is unavailable in your Pi provider setup, pick an explicit available model
|
|
380
|
+
juno-code pi --live -m :api-codex -p '/skill:ralph-loop' -i 1
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
Notes:
|
|
384
|
+
- `--live` is validated as **Pi-only** (`juno-code pi ...`).
|
|
385
|
+
- `--live` requires extensions enabled (`--no-extensions` is incompatible).
|
|
386
|
+
- Live auto-exit is triggered on non-aborted `agent_end` only. Pressing `Esc` to interrupt the current run keeps Pi open so you can continue interacting.
|
|
387
|
+
- To manually leave Pi and return control to juno-code hooks/loop, use Pi's normal exit keys (for example `Ctrl+C` twice quickly or `Ctrl+D` on an empty editor).
|
|
388
|
+
- Best experience is an interactive terminal (TTY) so Pi TUI can manage screen state cleanly.
|
|
389
|
+
- Pi TUI depends on the Node runtime used to launch Pi; use a modern Node version (Node 20+) in PATH.
|
|
390
|
+
|
|
323
391
|
### Custom Backends
|
|
324
392
|
|
|
325
393
|
Service scripts live in `~/.juno_code/services/`. Each is a Python script that accepts standard args (`-p/--prompt`, `-m/--model`, `-v/--verbose`) and outputs JSON events to stdout.
|
|
@@ -660,6 +728,30 @@ The kanban.sh script wraps juno-kanban. Here are the actual commands:
|
|
|
660
728
|
4. Global config files
|
|
661
729
|
5. Hardcoded defaults
|
|
662
730
|
|
|
731
|
+
### Per-subagent default models
|
|
732
|
+
|
|
733
|
+
Set model defaults per subagent without changing your global default:
|
|
734
|
+
|
|
735
|
+
```bash
|
|
736
|
+
juno-code pi set-default-model :api-codex
|
|
737
|
+
juno-code claude set-default-model :opus
|
|
738
|
+
juno-code codex set-default-model :gpt-5
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
This writes to `.juno_task/config.json`:
|
|
742
|
+
|
|
743
|
+
```json
|
|
744
|
+
{
|
|
745
|
+
"defaultModels": {
|
|
746
|
+
"pi": ":api-codex",
|
|
747
|
+
"claude": ":opus",
|
|
748
|
+
"codex": ":gpt-5"
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
`juno-code` resolves models in this order: CLI `--model` → configured subagent default (`defaultModels` / legacy `defaultModel`) → built-in default.
|
|
754
|
+
|
|
663
755
|
### Project Env Bootstrap (`.env.juno`)
|
|
664
756
|
|
|
665
757
|
`juno-code` now bootstraps a project env file automatically:
|