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 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 # View all sessions
256
- juno-code session info abc123 # Session details
257
- juno-code --resume abc123 -p 'continue' # Resume session
258
- juno-code --continue -p 'keep going' # Continue most recent
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/` | (planned) |
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: