juno-code 1.0.46 → 1.0.49

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 (54) hide show
  1. package/README.md +44 -8
  2. package/dist/bin/cli.d.mts +17 -0
  3. package/dist/bin/cli.d.ts +17 -0
  4. package/dist/bin/cli.js +5601 -17505
  5. package/dist/bin/cli.js.map +1 -1
  6. package/dist/bin/cli.mjs +5640 -17542
  7. package/dist/bin/cli.mjs.map +1 -1
  8. package/dist/bin/feedback-collector.d.mts +2 -0
  9. package/dist/bin/feedback-collector.d.ts +2 -0
  10. package/dist/bin/feedback-collector.js.map +1 -1
  11. package/dist/bin/feedback-collector.mjs.map +1 -1
  12. package/dist/index.d.mts +2107 -0
  13. package/dist/index.d.ts +2107 -0
  14. package/dist/index.js +3760 -14728
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.mjs +3761 -14536
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/templates/extensions/pi/juno-skill-preprocessor.ts +239 -0
  19. package/dist/templates/scripts/__pycache__/github.cpython-313.pyc +0 -0
  20. package/dist/templates/scripts/__pycache__/parallel_runner.cpython-313.pyc +0 -0
  21. package/dist/templates/scripts/__pycache__/slack_respond.cpython-313.pyc +0 -0
  22. package/dist/templates/scripts/kanban.sh +18 -4
  23. package/dist/templates/scripts/parallel_runner.sh +2242 -0
  24. package/dist/templates/services/README.md +61 -1
  25. package/dist/templates/services/__pycache__/claude.cpython-313.pyc +0 -0
  26. package/dist/templates/services/__pycache__/codex.cpython-313.pyc +0 -0
  27. package/dist/templates/services/__pycache__/pi.cpython-313.pyc +0 -0
  28. package/dist/templates/services/claude.py +132 -33
  29. package/dist/templates/services/codex.py +179 -66
  30. package/dist/templates/services/gemini.py +117 -27
  31. package/dist/templates/services/pi.py +1753 -0
  32. package/dist/templates/skills/claude/plan-kanban-tasks/SKILL.md +14 -7
  33. package/dist/templates/skills/claude/ralph-loop/SKILL.md +18 -22
  34. package/dist/templates/skills/claude/ralph-loop/references/first_check.md +15 -14
  35. package/dist/templates/skills/claude/ralph-loop/references/implement.md +17 -17
  36. package/dist/templates/skills/claude/ralph-loop/scripts/kanban.sh +18 -4
  37. package/dist/templates/skills/claude/understand-project/SKILL.md +14 -7
  38. package/dist/templates/skills/codex/ralph-loop/SKILL.md +18 -22
  39. package/dist/templates/skills/codex/ralph-loop/references/first_check.md +15 -14
  40. package/dist/templates/skills/codex/ralph-loop/references/implement.md +17 -17
  41. package/dist/templates/skills/codex/ralph-loop/scripts/kanban.sh +18 -4
  42. package/dist/templates/skills/pi/.gitkeep +0 -0
  43. package/dist/templates/skills/pi/plan-kanban-tasks/SKILL.md +32 -0
  44. package/dist/templates/skills/pi/ralph-loop/SKILL.md +39 -0
  45. package/dist/templates/skills/pi/ralph-loop/references/first_check.md +21 -0
  46. package/dist/templates/skills/pi/ralph-loop/references/implement.md +99 -0
  47. package/dist/templates/skills/pi/understand-project/SKILL.md +46 -0
  48. package/package.json +20 -42
  49. package/dist/templates/scripts/__pycache__/attachment_downloader.cpython-38.pyc +0 -0
  50. package/dist/templates/scripts/__pycache__/github.cpython-38.pyc +0 -0
  51. package/dist/templates/scripts/__pycache__/slack_fetch.cpython-38.pyc +0 -0
  52. package/dist/templates/scripts/__pycache__/slack_state.cpython-38.pyc +0 -0
  53. package/dist/templates/services/__pycache__/claude.cpython-38.pyc +0 -0
  54. package/dist/templates/services/__pycache__/codex.cpython-38.pyc +0 -0
package/README.md CHANGED
@@ -17,12 +17,17 @@
17
17
 
18
18
  ```bash
19
19
  npm install -g juno-code
20
+
21
+ # For Pi agent support (optional - multi-provider coding agent)
22
+ npm install -g @mariozechner/pi-coding-agent
20
23
  ```
21
24
 
22
25
  After installation, initialize your project:
23
26
 
24
27
  ```bash
25
28
  juno-code init --task "Your task description" --subagent claude
29
+ # Or with Pi (multi-provider agent)
30
+ juno-code init --task "Your task description" --subagent pi
26
31
  ```
27
32
 
28
33
  ---
@@ -52,7 +57,7 @@ Run the AI in a loop. Let it iterate. Watch it solve problems, fix bugs, and add
52
57
  | **Overcooking** | Loop runs too long, AI adds features nobody asked for | You get bloated code and wasted tokens |
53
58
  | **Undercooking** | You Ctrl+C too early, work is incomplete | Features half-done, bugs half-fixed |
54
59
  | **Fragile state** | Markdown files (TASKS.md, PLANNING.md) as source of truth | LLMs can corrupt format; no strict schema |
55
- | **Vendor lock-in** | Ralph was built for Claude Code | Can't easily switch to Codex, Gemini, or others |
60
+ | **Vendor lock-in** | Ralph was built for Claude Code | Can't easily switch to Codex, Gemini, Pi, or others |
56
61
  | **No traceability** | Changes blend together | Hard to debug, impossible to time-travel |
57
62
 
58
63
  ## juno-code: Ralph, But Better
@@ -85,12 +90,13 @@ Built-in kanban via [juno-kanban](https://pypi.org/project/juno-kanban/). Unlike
85
90
  ```
86
91
 
87
92
  ### Backend Choice: Use Any AI
88
- Switch between Claude, Codex, Gemini, or Cursor with one flag:
93
+ Switch between Claude, Codex, Gemini, Pi, or Cursor with one flag:
89
94
  ```bash
90
95
  # Stuck on a bug? Try different models
91
- juno-code -b shell -s claude -m :opus-i 1 -v
96
+ juno-code -b shell -s claude -m :opus -i 1 -v
92
97
  juno-code -b shell -s codex -m :codex -i 1 -v
93
98
  juno-code -b shell -s gemini -m :flash -i 1 -v
99
+ juno-code -b shell -s pi -m :sonnet -i 1 -v
94
100
  ```
95
101
 
96
102
  ### Full Traceability: Every Change Tracked
@@ -116,6 +122,16 @@ juno-code -b shell -s claude -i 5 -v
116
122
  # Clean, readable progress instead of wall of JSON
117
123
  ```
118
124
 
125
+ ### Quota Limit Handling
126
+ Auto-wait when you hit API rate limits instead of failing:
127
+ ```bash
128
+ # Wait automatically when hitting hourly limits
129
+ juno-code -b shell -s claude -i 10 --on-hourly-limit wait
130
+
131
+ # Or exit immediately (default)
132
+ juno-code -b shell -s claude -i 10 --on-hourly-limit raise
133
+ ```
134
+
119
135
  ## Quick Start
120
136
 
121
137
  ```bash
@@ -157,6 +173,10 @@ juno-code -b shell -s claude -i 3 -p "your prompt"
157
173
  juno-code claude "your task"
158
174
  juno-code codex "your task"
159
175
  juno-code gemini "your task"
176
+ juno-code pi "your task"
177
+
178
+ # View and parse log files
179
+ juno-code view-log .juno_task/logs/claude_shell_*.log --output json-only --limit 50
160
180
  ```
161
181
 
162
182
  ### Global Options
@@ -164,13 +184,19 @@ juno-code gemini "your task"
164
184
  | Flag | Description |
165
185
  |------|-------------|
166
186
  | `-b, --backend <type>` | Backend: `mcp`, `shell` |
167
- | `-s, --subagent <name>` | Service: `claude`, `codex`, `gemini`, `cursor` |
187
+ | `-s, --subagent <name>` | Service: `claude`, `codex`, `gemini`, `pi`, `cursor` |
168
188
  | `-m, --model <name>` | Model (supports shorthands like `:opus`, `:haiku`) |
169
189
  | `-i, --max-iterations <n>` | Iteration limit (-1 for unlimited) |
170
190
  | `-p, --prompt <text>` | Prompt text (if omitted with `start`, uses prompt.md) |
191
+ | `-f, --prompt-file <path>` | Read prompt from a file instead of `-p` |
171
192
  | `-v, --verbose` | Human-readable verbose output |
172
193
  | `-r, --resume <id>` | Resume specific session |
173
194
  | `--continue` | Continue most recent session |
195
+ | `--no-hooks` | Skip lifecycle hooks |
196
+ | `--on-hourly-limit <action>` | Quota limit behavior: `wait` (auto-retry) or `raise` (exit) |
197
+ | `--force-update` | Force reinstall all scripts and services |
198
+ | `--til-completion` | Loop until all kanban tasks are done |
199
+ | `--pre-run-hook <name>` | Execute named hooks before loop |
174
200
 
175
201
  ### Session Management
176
202
 
@@ -486,9 +512,13 @@ The kanban.sh script wraps juno-kanban. Here are the actual commands:
486
512
 
487
513
  | Service | Default Model | Shorthands |
488
514
  |---------|---------------|------------|
489
- | claude | `claude-sonnet-4-5-20250929` | `:haiku`, `:sonnet`, `:opus` |
490
- | codex | `gpt-5.3-codex` | `:codex`, `:gpt-5`, `:mini` |
515
+ | claude | `claude-sonnet-4-6` | `:haiku`, `:sonnet`, `:opus` |
516
+ | codex | `gpt-5.3-codex` | `:codex`, `:codex-mini`, `:gpt-5`, `:mini` |
491
517
  | gemini | `gemini-2.5-pro` | `:pro`, `:flash`, `:pro-3`, `:flash-3` |
518
+ | pi | `anthropic/claude-sonnet-4-6` | `:pi`, `:sonnet`, `:opus`, `:gpt-5`, `:codex`, `:gemini-pro` |
519
+
520
+ > **Pi** is a multi-provider coding agent that supports Anthropic, OpenAI, Google, Groq, xAI, and more.
521
+ > It requires separate installation: `npm install -g @mariozechner/pi-coding-agent`
492
522
 
493
523
  ### Custom Backends
494
524
 
@@ -541,6 +571,9 @@ export JUNO_CODE_MAX_ITERATIONS=10
541
571
  export CODEX_HIDE_STREAM_TYPES="turn_diff,token_count"
542
572
  export GEMINI_API_KEY=your-key
543
573
  export CLAUDE_USER_MESSAGE_PRETTY_TRUNCATE=4
574
+
575
+ # Pi requires the pi-coding-agent CLI installed globally
576
+ # npm install -g @mariozechner/pi-coding-agent
544
577
  ```
545
578
 
546
579
  ## Examples
@@ -566,6 +599,9 @@ juno-code -b shell -s claude -m :opus -p "Investigate CI failures" -i 3
566
599
 
567
600
  # Stuck? Try Codex perspective
568
601
  juno-code -b shell -s codex -p "Same investigation" -i 3
602
+
603
+ # Or use Pi with any provider's model
604
+ juno-code -b shell -s pi -m :sonnet -p "Same investigation" -i 3
569
605
  ```
570
606
 
571
607
  ### Iterative Feature Development
@@ -590,7 +626,7 @@ git log --oneline
590
626
  | **Stopping** | Ctrl+C (guesswork) | `-i N` or "until tasks done" |
591
627
  | **Source of Truth** | Markdown files (TASKS.md, PLANNING.md) | Structured kanban over bash |
592
628
  | **Format Integrity** | Relies on LLM instruction-following | Strict format, always parseable |
593
- | **Multiple AIs** | Claude only | Claude, Codex, Gemini, Cursor |
629
+ | **Multiple AIs** | Claude only | Claude, Codex, Gemini, Pi, Cursor |
594
630
  | **Traceability** | None | Every task → git commit |
595
631
  | **Hooks** | Claude-specific | Works with any backend |
596
632
  | **Verbose** | Raw JSON | Human-readable + jq-friendly |
@@ -633,7 +669,7 @@ juno-code services install --force
633
669
  ```bash
634
670
  # Verify with verbose
635
671
  juno-code -v -b shell -s codex -m :codex -p "test"
636
- # Check stderr for: "Executing: python3 ~/.juno_code/services/codex.py ... -m codex-5.2-codex-max"
672
+ # Check stderr for: "Executing: python3 ~/.juno_code/services/codex.py ... -m gpt-5.3-codex"
637
673
  ```
638
674
 
639
675
  ### Kanban not finding tasks
@@ -0,0 +1,17 @@
1
+ /**
2
+ * CLI entry point for juno-code
3
+ *
4
+ * Comprehensive TypeScript CLI implementation with full functionality parity
5
+ * to the Python budi-cli. Provides all core commands with interactive and
6
+ * headless support, comprehensive error handling, and real-time progress tracking.
7
+ */
8
+ /**
9
+ * Global error handler for CLI operations
10
+ */
11
+ declare function handleCLIError(error: unknown, verbose?: boolean): void;
12
+ /**
13
+ * Main CLI function
14
+ */
15
+ declare function main(): Promise<void>;
16
+
17
+ export { handleCLIError, main };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * CLI entry point for juno-code
3
+ *
4
+ * Comprehensive TypeScript CLI implementation with full functionality parity
5
+ * to the Python budi-cli. Provides all core commands with interactive and
6
+ * headless support, comprehensive error handling, and real-time progress tracking.
7
+ */
8
+ /**
9
+ * Global error handler for CLI operations
10
+ */
11
+ declare function handleCLIError(error: unknown, verbose?: boolean): void;
12
+ /**
13
+ * Main CLI function
14
+ */
15
+ declare function main(): Promise<void>;
16
+
17
+ export { handleCLIError, main };