juno-code 1.0.20 → 1.0.23

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/dist/index.js CHANGED
@@ -75,7 +75,7 @@ var __export = (target, all) => {
75
75
  exports.version = void 0;
76
76
  var init_version = __esm({
77
77
  "src/version.ts"() {
78
- exports.version = "1.0.20";
78
+ exports.version = "1.0.23";
79
79
  }
80
80
  });
81
81
  function isHeadlessEnvironment() {
package/dist/index.mjs CHANGED
@@ -44,7 +44,7 @@ var __export = (target, all) => {
44
44
  var version;
45
45
  var init_version = __esm({
46
46
  "src/version.ts"() {
47
- version = "1.0.20";
47
+ version = "1.0.23";
48
48
  }
49
49
  });
50
50
  function isHeadlessEnvironment() {
@@ -15,8 +15,10 @@
15
15
 
16
16
  set -euo pipefail # Exit on error, undefined variable, or pipe failure
17
17
 
18
- # DEBUG OUTPUT: Show that kanban.sh is being executed
19
- echo "[DEBUG] kanban.sh is being executed from: $(pwd)" >&2
18
+ # DEBUG OUTPUT: Show that kanban.sh is being executed (only if JUNO_VERBOSE=true)
19
+ if [ "${JUNO_VERBOSE:-false}" = "true" ]; then
20
+ echo "[DEBUG] kanban.sh is being executed from: $(pwd)" >&2
21
+ fi
20
22
 
21
23
  # Color output for better readability
22
24
  RED='\033[0;31m'
@@ -32,18 +34,28 @@ INSTALL_SCRIPT="${SCRIPTS_DIR}/install_requirements.sh"
32
34
 
33
35
  # Logging functions
34
36
  log_info() {
35
- echo -e "${BLUE}[KANBAN]${NC} $1"
37
+ # Only print if JUNO_VERBOSE is set to true
38
+ if [ "${JUNO_VERBOSE:-false}" = "true" ]; then
39
+ echo -e "${BLUE}[KANBAN]${NC} $1"
40
+ fi
36
41
  }
37
42
 
38
43
  log_success() {
39
- echo -e "${GREEN}[KANBAN]${NC} $1"
44
+ # Only print if JUNO_VERBOSE is set to true
45
+ if [ "${JUNO_VERBOSE:-false}" = "true" ]; then
46
+ echo -e "${GREEN}[KANBAN]${NC} $1"
47
+ fi
40
48
  }
41
49
 
42
50
  log_warning() {
43
- echo -e "${YELLOW}[KANBAN]${NC} $1"
51
+ # Only print if JUNO_VERBOSE is set to true
52
+ if [ "${JUNO_VERBOSE:-false}" = "true" ]; then
53
+ echo -e "${YELLOW}[KANBAN]${NC} $1"
54
+ fi
44
55
  }
45
56
 
46
57
  log_error() {
58
+ # Always print errors regardless of JUNO_VERBOSE
47
59
  echo -e "${RED}[KANBAN]${NC} $1"
48
60
  }
49
61
 
@@ -19,10 +19,12 @@ class ClaudeService:
19
19
 
20
20
  # Default configuration
21
21
  DEFAULT_MODEL = "claude-sonnet-4-5-20250929"
22
+ DEFAULT_PERMISSION_MODE = "default"
22
23
  DEFAULT_AUTO_INSTRUCTION = """You are Claude Code, an AI coding assistant. Follow the instructions provided and generate high-quality code."""
23
24
 
24
25
  def __init__(self):
25
26
  self.model_name = self.DEFAULT_MODEL
27
+ self.permission_mode = self.DEFAULT_PERMISSION_MODE
26
28
  self.auto_instruction = self.DEFAULT_AUTO_INSTRUCTION
27
29
  self.project_path = os.getcwd()
28
30
  self.prompt = ""
@@ -53,6 +55,14 @@ Examples:
53
55
  %(prog)s -p "Write a hello world function"
54
56
  %(prog)s -pp prompt.txt --cd /path/to/project
55
57
  %(prog)s -p "Add tests" -m claude-opus-4-20250514 --tool "Bash Edit"
58
+
59
+ Environment Variables:
60
+ CLAUDE_PROJECT_PATH Project path (default: current directory)
61
+ CLAUDE_MODEL Model name (default: claude-sonnet-4-5-20250929)
62
+ CLAUDE_AUTO_INSTRUCTION Auto instruction to prepend to prompt
63
+ CLAUDE_PERMISSION_MODE Permission mode (default: default)
64
+ CLAUDE_PRETTY Pretty print JSON output (default: true)
65
+ CLAUDE_VERBOSE Enable verbose output (default: false)
56
66
  """
57
67
  )
58
68
 
@@ -72,22 +82,22 @@ Examples:
72
82
  parser.add_argument(
73
83
  "--cd",
74
84
  type=str,
75
- default=os.getcwd(),
76
- help="Project path (absolute path). Default: current directory"
85
+ default=os.environ.get("CLAUDE_PROJECT_PATH", os.getcwd()),
86
+ help="Project path (absolute path). Default: current directory (env: CLAUDE_PROJECT_PATH)"
77
87
  )
78
88
 
79
89
  parser.add_argument(
80
90
  "-m", "--model",
81
91
  type=str,
82
- default=self.DEFAULT_MODEL,
83
- help=f"Model name (e.g. 'sonnet', 'opus', or full name). Default: {self.DEFAULT_MODEL}"
92
+ default=os.environ.get("CLAUDE_MODEL", self.DEFAULT_MODEL),
93
+ help=f"Model name (e.g. 'sonnet', 'opus', or full name). Default: {self.DEFAULT_MODEL} (env: CLAUDE_MODEL)"
84
94
  )
85
95
 
86
96
  parser.add_argument(
87
97
  "--auto-instruction",
88
98
  type=str,
89
- default=self.DEFAULT_AUTO_INSTRUCTION,
90
- help="Auto instruction to prepend to prompt"
99
+ default=os.environ.get("CLAUDE_AUTO_INSTRUCTION", self.DEFAULT_AUTO_INSTRUCTION),
100
+ help="Auto instruction to prepend to prompt (env: CLAUDE_AUTO_INSTRUCTION)"
91
101
  )
92
102
 
93
103
  parser.add_argument(
@@ -100,9 +110,9 @@ Examples:
100
110
  parser.add_argument(
101
111
  "--permission-mode",
102
112
  type=str,
103
- choices=["acceptEdits", "bypassPermissions", "default", "plan"],
104
- default="bypassPermissions",
105
- help="Permission mode for the session. Default: bypassPermissions"
113
+ choices=["acceptEdits", "bypassPermissions", "default", "plan", "skip"],
114
+ default=os.environ.get("CLAUDE_PERMISSION_MODE", self.DEFAULT_PERMISSION_MODE),
115
+ help=f"Permission mode for the session. Default: {self.DEFAULT_PERMISSION_MODE} (env: CLAUDE_PERMISSION_MODE)"
106
116
  )
107
117
 
108
118
  parser.add_argument(
@@ -123,7 +133,8 @@ Examples:
123
133
  parser.add_argument(
124
134
  "--verbose",
125
135
  action="store_true",
126
- help="Enable verbose output"
136
+ default=os.environ.get("CLAUDE_VERBOSE", "false").lower() == "true",
137
+ help="Enable verbose output (env: CLAUDE_VERBOSE)"
127
138
  )
128
139
 
129
140
  parser.add_argument(
@@ -347,6 +358,13 @@ Examples:
347
358
  file=sys.stderr
348
359
  )
349
360
  print("\nRun 'claude.py --help' for usage information.", file=sys.stderr)
361
+ print("\nAvailable Environment Variables:", file=sys.stderr)
362
+ print(" CLAUDE_PROJECT_PATH Project path (default: current directory)", file=sys.stderr)
363
+ print(" CLAUDE_MODEL Model name (default: claude-sonnet-4-5-20250929)", file=sys.stderr)
364
+ print(" CLAUDE_AUTO_INSTRUCTION Auto instruction to prepend to prompt", file=sys.stderr)
365
+ print(" CLAUDE_PERMISSION_MODE Permission mode (default: default)", file=sys.stderr)
366
+ print(" CLAUDE_PRETTY Pretty print JSON output (default: true)", file=sys.stderr)
367
+ print(" CLAUDE_VERBOSE Enable verbose output (default: false)", file=sys.stderr)
350
368
  return 1
351
369
 
352
370
  # Check if claude is installed
@@ -15,7 +15,7 @@ class CodexService:
15
15
  """Service wrapper for OpenAI Codex CLI"""
16
16
 
17
17
  # Default configuration
18
- DEFAULT_MODEL = "gpt-4"
18
+ DEFAULT_MODEL = "gpt-5-codex"
19
19
  DEFAULT_AUTO_INSTRUCTION = """You are an AI coding assistant. Follow the instructions provided and generate high-quality code."""
20
20
 
21
21
  def __init__(self):
@@ -156,8 +156,10 @@ Examples:
156
156
  # Add exec command with prompt
157
157
  cmd.extend(["exec", full_prompt])
158
158
 
159
- # Note: We do NOT add --json flag. Codex will output text format by default.
160
- # This allows streaming text updates to work correctly with shell backend.
159
+ # Add --json flag for streaming support
160
+ # This is CRITICAL for codex to output streaming responses
161
+ # Without this flag, codex will not stream progress updates
162
+ cmd.append("--json")
161
163
 
162
164
  return cmd
163
165
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "juno-code",
3
- "version": "1.0.20",
3
+ "version": "1.0.23",
4
4
  "description": "TypeScript CLI tool for AI subagent orchestration with code automation",
5
5
  "keywords": [
6
6
  "ai",