agentk8 1.0.2 → 1.0.3

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
@@ -2,64 +2,93 @@
2
2
 
3
3
  **Multi-Agent Claude Code Terminal Suite**
4
4
 
5
- Orchestrate multiple specialized Claude agents for software development and ML research. Inspired by Boris Cherny's parallel Claude workflow.
6
-
7
5
  ```
8
- ╭─────────────────────────────────────────────────╮
9
- AGENT-K v1.0
10
- ╰─────────────────────────────────────────────────╯
6
+ ╭─────────────────────────────────────────────────────────────────────────────────╮
7
+ AGENT-K v1.0
8
+ ╰─────────────────────────────────────────────────────────────────────────────────╯
9
+ ```
11
10
 
12
- You: Implement user authentication with JWT
11
+ Transform your terminal into a team of specialized AI agents. AGENT-K orchestrates multiple Claude instances working in parallel on your software development and ML research tasks.
13
12
 
14
- [Orchestrator] Breaking down task...
15
- → Engineer: Implement JWT auth module
16
- → Tester: Write auth tests
17
- → Security: Review for vulnerabilities
13
+ ## What is AGENT-K?
18
14
 
19
- [●] Orchestrator Coordinating
20
- [◐] Engineer Writing src/auth.py...
21
- [ ] Tester Waiting
22
- [ ] Security Waiting
15
+ AGENT-K extends Claude Code with **multi-agent orchestration**. Instead of a single AI assistant, you get a coordinated team of specialists - each with domain expertise, working together on complex tasks.
23
16
 
24
- You: _
17
+ ```
18
+ ╭─ You ────────────────────────────────────────────────────────────────────────────╮
19
+ │ Build a secure REST API with user authentication │
20
+ ╰──────────────────────────────────────────────────────────────────────────────────╯
21
+
22
+ ╭─ Orchestrator ───────────────────────────────────────────────────────────────────╮
23
+ │ Breaking down task... │
24
+ │ → Engineer: Implement REST endpoints and JWT authentication │
25
+ │ → Tester: Write API integration tests │
26
+ │ → Security: Review for OWASP vulnerabilities │
27
+ │ → Scout: Find latest best practices for JWT in 2025 │
28
+ ╰──────────────────────────────────────────────────────────────────────────────────╯
29
+
30
+ [●] Orchestrator Coordinating
31
+ [◐] Engineer Writing src/api/auth.py...
32
+ [◐] Scout Searching for JWT best practices...
33
+ [ ] Tester Waiting for implementation
34
+ [ ] Security Queued for review
25
35
  ```
26
36
 
37
+ ## Why AGENT-K?
38
+
39
+ ### The Problem
40
+
41
+ Claude is brilliant, but complex tasks often require:
42
+ - **Multiple perspectives** (implementation, testing, security)
43
+ - **Parallel work** (why write tests sequentially after code?)
44
+ - **Up-to-date information** (Claude's training data becomes stale)
45
+ - **Specialized focus** (security reviews need different prompts than coding)
46
+
47
+ ### The Solution
48
+
49
+ AGENT-K spawns specialized Claude agents that:
50
+ - **Work in parallel** on different aspects of your task
51
+ - **Coordinate automatically** through a central orchestrator
52
+ - **Stay current** with a dedicated Scout agent for real-time research
53
+ - **Follow best practices** with domain-specific system prompts
54
+
27
55
  ## Features
28
56
 
29
- - **Multi-Agent Orchestration**: Coordinate specialized agents working in parallel
30
- - **Two Modes**: Software Development and ML Research & Training
31
- - **Interactive Chat**: Works like `claude` but with a team of specialists
32
- - **Visual Mode**: tmux-based multi-pane view of all agents
33
- - **Scout Agent**: Real-time web/GitHub/paper search to stay current
34
- - **Date Awareness**: Agents know their training data may be outdated
57
+ | Feature | Description |
58
+ |---------|-------------|
59
+ | **Multi-Agent Orchestration** | Coordinate 5-6 specialized agents working in parallel |
60
+ | **Two Modes** | Software Development (default) and ML Research & Training |
61
+ | **Interactive Chat** | Familiar interface like `claude` but with a whole team |
62
+ | **Visual Mode** | tmux-based multi-pane view of all agents working |
63
+ | **Scout Agent** | Real-time web/GitHub/paper search to stay current |
64
+ | **Date Awareness** | Agents know when to verify potentially outdated info |
65
+ | **Focus Mode** | Talk directly to any specialist agent |
66
+ | **File-Based IPC** | Agents coordinate through structured JSON messages |
35
67
 
36
- ## Agents
68
+ ## Agent Teams
37
69
 
38
70
  ### Development Mode (Default)
39
- | Agent | Role |
40
- |-------|------|
41
- | **Orchestrator** | Breaks down tasks, coordinates agents |
42
- | **Engineer** | Implements code, debugging, refactoring |
43
- | **Tester** | Writes tests, validates implementations |
44
- | **Security** | Reviews for vulnerabilities, OWASP checks |
45
- | **Scout** | Searches web/GitHub for current best practices |
71
+
72
+ | Agent | Specialty |
73
+ |-------|-----------|
74
+ | **Orchestrator** | Task decomposition, coordination, result aggregation |
75
+ | **Engineer** | Code implementation, debugging, refactoring |
76
+ | **Tester** | Unit/integration tests, coverage analysis |
77
+ | **Security** | OWASP vulnerability review, secrets detection |
78
+ | **Scout** | Real-time search for current best practices |
46
79
 
47
80
  ### ML Mode (`--mode ml`)
48
- | Agent | Role |
49
- |-------|------|
50
- | **Orchestrator** | Manages ML project lifecycle |
51
- | **Researcher** | Literature review, SOTA analysis |
52
- | **ML Engineer** | Model implementation, training |
53
- | **Data Engineer** | Data pipelines, preprocessing |
54
- | **Evaluator** | Metrics, benchmarking, experiments |
55
- | **Scout** | Searches arXiv, HuggingFace, Papers With Code |
56
81
 
57
- ## Installation
82
+ | Agent | Specialty |
83
+ |-------|-----------|
84
+ | **Orchestrator** | ML project lifecycle management |
85
+ | **Researcher** | Literature review, SOTA analysis, paper summaries |
86
+ | **ML Engineer** | Model implementation, training loops, optimization |
87
+ | **Data Engineer** | Data pipelines, preprocessing, augmentation |
88
+ | **Evaluator** | Metrics, benchmarking, experiment tracking |
89
+ | **Scout** | arXiv, HuggingFace, Papers With Code search |
58
90
 
59
- ### Quick Install (Recommended)
60
- ```bash
61
- curl -sSL https://raw.githubusercontent.com/de5truct0/agentk/main/install.sh | bash
62
- ```
91
+ ## Installation
63
92
 
64
93
  ### Homebrew (macOS/Linux)
65
94
  ```bash
@@ -77,7 +106,10 @@ npm install -g agentk8
77
106
  pip install agentk8
78
107
  ```
79
108
 
80
- > **Note**: Package name is `agentk8` on all registries. The installed command is `agentk`.
109
+ ### Quick Install Script
110
+ ```bash
111
+ curl -sSL https://raw.githubusercontent.com/de5truct0/agentk/main/install.sh | bash
112
+ ```
81
113
 
82
114
  ### From Source
83
115
  ```bash
@@ -86,127 +118,216 @@ cd agentk
86
118
  make install
87
119
  ```
88
120
 
121
+ > **Note**: Package name is `agentk8` on all registries. The installed command is `agentk`.
122
+
89
123
  ## Requirements
90
124
 
91
- - **bash** 4.0+
92
- - **jq** (JSON processing)
93
- - **claude** (Claude Code CLI) - [Install here](https://claude.ai/code)
94
- - **tmux** (optional, for visual mode)
125
+ - **jq** - JSON processing (`brew install jq`)
126
+ - **claude** - Claude Code CLI ([Install here](https://claude.ai/code))
127
+ - **tmux** - Optional, for visual mode (`brew install tmux`)
95
128
 
96
- ## Usage
129
+ ## Quick Start
97
130
 
98
- ### Start Interactive Session
99
131
  ```bash
100
- agentk # Dev mode (default)
101
- agentk --mode ml # ML mode
102
- agentk --visual # With tmux panels
132
+ # Start interactive session
133
+ agentk
134
+
135
+ # Start ML research mode
136
+ agentk --mode ml
137
+
138
+ # Start with visual panels (requires tmux)
139
+ agentk --visual
140
+
141
+ # One-shot task
142
+ agentk -c "Refactor the user service to use async/await"
103
143
  ```
104
144
 
105
- ### One-Shot Mode
145
+ ## Usage
146
+
147
+ ### Interactive Session
148
+
106
149
  ```bash
107
- agentk -c "Build a REST API for user management"
150
+ $ agentk
151
+
152
+ ╭─────────────────────────────────────────────────╮
153
+ │ AGENT-K v1.0 │
154
+ ╰─────────────────────────────────────────────────╯
155
+ Mode: Software Development Mode
156
+
157
+ Type your request or /help for commands.
158
+
159
+ ╭─ You ─────────────────────────────────────────────────
160
+
108
161
  ```
109
162
 
110
163
  ### Session Commands
164
+
111
165
  | Command | Description |
112
166
  |---------|-------------|
113
- | `/status` | Show all agent states |
167
+ | `/status` | Show all agent states and current tasks |
114
168
  | `/logs <agent>` | View agent output |
115
169
  | `/kill <agent\|all>` | Stop agent(s) |
116
- | `/focus <agent>` | Talk directly to agent |
170
+ | `/focus <agent>` | Talk directly to one agent |
117
171
  | `/unfocus` | Return to orchestrator |
118
- | `/visual` | Toggle tmux view |
172
+ | `/visual` | Toggle tmux panel view |
173
+ | `/clear` | Clear screen |
119
174
  | `/help` | Show all commands |
120
175
  | `/exit` | End session |
121
176
 
122
- ### Scout Commands
177
+ ### Scout Commands (Both Modes)
178
+
123
179
  | Command | Description |
124
180
  |---------|-------------|
125
- | `/search <query>` | Web search |
126
- | `/github <query>` | Search GitHub |
127
- | `/papers <topic>` | Search papers (ML mode) |
128
- | `/libs <task>` | Find best libraries |
129
- | `/sota <topic>` | State-of-the-art |
181
+ | `/search <query>` | Web search for latest info |
182
+ | `/github <query>` | Search GitHub repos and code |
183
+ | `/papers <topic>` | Search arXiv/Semantic Scholar |
184
+ | `/libs <task>` | Find best libraries for task |
185
+ | `/sota <topic>` | Get state-of-the-art approaches |
186
+
187
+ ### ML-Specific Commands
130
188
 
131
- ### ML Commands
132
189
  | Command | Description |
133
190
  |---------|-------------|
134
- | `/experiment <name>` | Start experiment |
135
- | `/metrics` | Show metrics |
191
+ | `/experiment <name>` | Start a new experiment |
192
+ | `/metrics` | Show current training metrics |
136
193
  | `/tensorboard` | Open TensorBoard |
137
- | `/huggingface <query>` | Search HF Hub |
194
+ | `/checkpoint` | Save model state |
195
+ | `/compare <e1> <e2>` | Compare experiments |
196
+ | `/huggingface <query>` | Search HuggingFace Hub |
138
197
 
139
198
  ## Visual Mode
140
199
 
200
+ Launch with `--visual` to see all agents in a tmux layout:
201
+
141
202
  ```
142
- ┌───────────────┬───────────────┬───────────────┐
143
- ORCHESTRATOR ENGINEER TESTER
144
- ├───────────────┼───────────────┼───────────────┤
145
- SECURITY │ SCOUT [MAIN]
146
- └───────────────┴───────────────┴───────────────┘
203
+ ┌───────────────────┬───────────────────┬───────────────────┐
204
+ ORCHESTRATOR ENGINEER TESTER
205
+ │ │ │ │
206
+ Breaking down Implementing Waiting for │
207
+ │ task into │ auth module... │ implementation... │
208
+ │ subtasks... │ │ │
209
+ ├───────────────────┼───────────────────┼───────────────────┤
210
+ │ SECURITY │ SCOUT │ [MAIN] │
211
+ │ │ │ │
212
+ │ Queued for │ Searching JWT │ You: _ │
213
+ │ review │ best practices... │ │
214
+ │ │ │ │
215
+ └───────────────────┴───────────────────┴───────────────────┘
147
216
  ```
148
217
 
149
218
  ## How It Works
150
219
 
151
- 1. **You enter a request** in the interactive session
152
- 2. **Orchestrator analyzes** the task and breaks it into subtasks
153
- 3. **Specialist agents** are spawned as Claude subprocesses
154
- 4. Agents work on **your project files** in the current directory
155
- 5. **Results are aggregated** and reported back to you
220
+ ```
221
+ ┌─────────────┐
222
+ │ User │
223
+ └──────┬──────┘
224
+
225
+
226
+ ┌────────────────────────┐
227
+ │ Orchestrator │
228
+ │ (task decomposition) │
229
+ └───────────┬────────────┘
230
+
231
+ ┌────────────────────┼────────────────────┐
232
+ │ │ │
233
+ ▼ ▼ ▼
234
+ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
235
+ │ Engineer │ │ Tester │ │ Security │
236
+ │ (implements) │ │ (validates) │ │ (reviews) │
237
+ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘
238
+ │ │ │
239
+ └────────────────────┴────────────────────┘
240
+
241
+
242
+ ┌────────────────────────┐
243
+ │ File-Based IPC │
244
+ │ workspace/tasks/*.json │
245
+ └────────────────────────┘
246
+ ```
156
247
 
157
- Each agent runs as a separate `claude` CLI instance with a specialized system prompt, coordinated through file-based messaging.
248
+ 1. **You enter a request** in the interactive session
249
+ 2. **Orchestrator analyzes** and breaks it into subtasks
250
+ 3. **Specialist agents spawn** as parallel Claude subprocesses
251
+ 4. Agents work **on your actual project files**
252
+ 5. **Results aggregate** back through the orchestrator
253
+ 6. You see the **combined output** with full context
158
254
 
159
255
  ## Configuration
160
256
 
161
- Create `~/.agentk/config.sh` to customize:
257
+ Create `~/.agentk/config.sh`:
162
258
 
163
259
  ```bash
164
- # Use a different model
260
+ # Custom model (default: claude-3-sonnet)
165
261
  export AGENTK_MODEL="claude-3-opus-20240229"
166
262
 
167
- # Set log level
168
- export LOG_LEVEL="debug"
263
+ # Log level: debug, info, warn, error
264
+ export LOG_LEVEL="info"
169
265
 
170
266
  # Custom workspace location
171
- export AGENTK_WORKSPACE="/path/to/workspace"
267
+ export AGENTK_WORKSPACE="/custom/path/workspace"
268
+
269
+ # Parallel agent limit (default: 4)
270
+ export AGENTK_MAX_PARALLEL=6
172
271
  ```
173
272
 
174
273
  ## Project Structure
175
274
 
176
275
  ```
177
276
  agentk/
178
- ├── agentk # Main CLI
277
+ ├── agentk # Main CLI entry point
179
278
  ├── lib/
180
- │ ├── core.sh # Core utilities
181
- │ ├── ui.sh # Pretty output
279
+ │ ├── core.sh # Core utilities, logging, date context
280
+ │ ├── ui.sh # Terminal UI, spinners, chat boundaries
182
281
  │ ├── ipc.sh # Inter-process communication
183
- │ ├── spawn.sh # Agent spawning
282
+ │ ├── spawn.sh # Agent subprocess management
184
283
  │ └── visual.sh # tmux integration
185
284
  ├── modes/
186
285
  │ ├── shared/
187
- │ │ └── scout.md # Scout agent prompt
188
- │ ├── dev/ # Dev mode agent prompts
189
- └── ml/ # ML mode agent prompts
286
+ │ │ └── scout.md # Scout agent system prompt
287
+ │ ├── dev/ # Development mode prompts
288
+ │ ├── orchestrator.md
289
+ │ │ ├── engineer.md
290
+ │ │ ├── tester.md
291
+ │ │ └── security.md
292
+ │ └── ml/ # ML mode prompts
293
+ │ ├── orchestrator.md
294
+ │ ├── researcher.md
295
+ │ ├── ml-engineer.md
296
+ │ ├── data-engineer.md
297
+ │ └── evaluator.md
190
298
  └── workspace/ # Runtime data (gitignored)
299
+ ├── tasks/ # Task queue (JSON)
300
+ ├── results/ # Agent outputs
301
+ ├── logs/ # Agent logs
302
+ └── experiments/ # ML experiment tracking
191
303
  ```
192
304
 
193
305
  ## Known Limitations
194
306
 
195
- See [KNOWN_ISSUES.md](KNOWN_ISSUES.md) for a full list. Key limitations:
307
+ | Limitation | Workaround |
308
+ |------------|------------|
309
+ | File conflicts when agents edit same file | Use `/focus` to serialize work on critical files |
310
+ | Each agent = separate API call (cost) | Use orchestrator's judgment on when to parallelize |
311
+ | Agents don't share real-time context | Orchestrator maintains shared state in workspace |
312
+ | Rate limiting with many parallel agents | `AGENTK_MAX_PARALLEL` limits concurrent spawns |
313
+
314
+ ## Roadmap
196
315
 
197
- - **File conflicts**: Multiple agents modifying same file
198
- - **Cost**: Each agent is a separate API call
199
- - **Context isolation**: Agents don't share real-time context
200
- - **Rate limiting**: Parallel agents may hit API limits
316
+ - [ ] Web UI dashboard
317
+ - [ ] Custom agent definitions
318
+ - [ ] Persistent conversation history
319
+ - [ ] Cost tracking per agent
320
+ - [ ] Team collaboration mode
321
+ - [ ] Plugin system for custom tools
201
322
 
202
323
  ## Contributing
203
324
 
204
- Contributions welcome! Please read the contributing guidelines first.
325
+ Contributions welcome!
205
326
 
206
327
  1. Fork the repository
207
- 2. Create a feature branch
328
+ 2. Create a feature branch (`git checkout -b feature/amazing`)
208
329
  3. Make your changes
209
- 4. Run tests: `make test`
330
+ 4. Run tests (`make test`)
210
331
  5. Submit a pull request
211
332
 
212
333
  ## License
@@ -215,10 +336,18 @@ MIT License - see [LICENSE](LICENSE) for details.
215
336
 
216
337
  ## Acknowledgments
217
338
 
218
- - Inspired by [Boris Cherny's Claude Code workflow](https://x.com/bcherny)
339
+ - Inspired by [Boris Cherny's parallel Claude workflow](https://x.com/bcherny)
219
340
  - Built for the Claude Code community
220
341
  - Powered by [Anthropic's Claude](https://anthropic.com)
221
342
 
222
343
  ---
223
344
 
224
- **AGENT-K** - Because one Claude is good, but a team of Claudes is better.
345
+ <p align="center">
346
+ <strong>AGENT-K</strong> - Because one Claude is good, but a team of Claudes is better.
347
+ </p>
348
+
349
+ <p align="center">
350
+ <a href="https://github.com/de5truct0/agentk">GitHub</a> |
351
+ <a href="https://www.npmjs.com/package/agentk8">npm</a> |
352
+ <a href="https://pypi.org/project/agentk8/">PyPI</a>
353
+ </p>
package/agentk CHANGED
@@ -297,7 +297,10 @@ cmd_scout() {
297
297
  fi
298
298
 
299
299
  local scout_task="$cmd: $query"
300
- print_info "Scout is searching..."
300
+
301
+ # Show Scout response box
302
+ print_agent_response_start "Scout"
303
+ printf "${CYAN}│${RESET} Searching: %s\n" "$query"
301
304
 
302
305
  # Create task for scout
303
306
  local task_id
@@ -307,7 +310,7 @@ cmd_scout() {
307
310
  spawn_agent "scout" "$task_id" "$AGENTK_MODE"
308
311
 
309
312
  # Wait for result
310
- print_info "Waiting for Scout..."
313
+ printf "${CYAN}│${RESET} ${DIM}Processing...${RESET}\n"
311
314
  watch_task "$task_id" 120
312
315
 
313
316
  # Display result
@@ -316,9 +319,10 @@ cmd_scout() {
316
319
  if [[ -f "$result_file" ]]; then
317
320
  local output
318
321
  output=$(jq -r '.output' "$result_file")
319
- echo
320
- echo "$output"
322
+ print_chat_content "$output" "${CYAN}│${RESET}"
321
323
  fi
324
+
325
+ print_agent_response_end
322
326
  }
323
327
 
324
328
  cmd_ml() {
@@ -408,6 +412,8 @@ run_interactive() {
408
412
 
409
413
  # Check for command
410
414
  if [[ "$input" == /* ]]; then
415
+ # Close user input box for commands
416
+ print_user_message_end
411
417
  local cmd="${input%% *}"
412
418
  local args="${input#* }"
413
419
  [[ "$cmd" == "$args" ]] && args=""
@@ -415,11 +421,15 @@ run_interactive() {
415
421
  continue
416
422
  fi
417
423
 
424
+ # Close user input box
425
+ print_user_message_end
426
+
418
427
  # Regular input - send to orchestrator (or focused agent)
419
428
  local target_agent="${FOCUSED_AGENT:-orchestrator}"
420
429
 
421
- echo
422
- print_orchestrator_message "Analyzing task..."
430
+ # Show agent response box
431
+ print_agent_response_start "Orchestrator"
432
+ printf "${CYAN}│${RESET} Analyzing task...\n"
423
433
 
424
434
  # Create task
425
435
  local task_id
@@ -428,7 +438,7 @@ run_interactive() {
428
438
  # For now, spawn the agent interactively
429
439
  spawn_agent_interactive "$target_agent" "$AGENTK_MODE" "$input"
430
440
 
431
- echo
441
+ print_agent_response_end
432
442
  done
433
443
  }
434
444
 
@@ -446,15 +456,23 @@ run_one_shot() {
446
456
 
447
457
  print_banner
448
458
  print_mode_banner "$AGENTK_MODE"
449
- print_task "$prompt"
459
+
460
+ # Show user input with chat boundaries
461
+ print_user_input_box "$prompt"
450
462
 
451
463
  # Create task for orchestrator
452
464
  local task_id
453
465
  task_id=$(create_task "" "orchestrate" "orchestrator" "$prompt" 1)
454
466
 
467
+ # Show orchestrator response
468
+ print_agent_response_start "Orchestrator"
469
+ printf "${CYAN}│${RESET} Processing your request...\n"
470
+
455
471
  # Spawn orchestrator interactively
456
472
  spawn_agent_interactive "orchestrator" "$AGENTK_MODE" "$prompt"
457
473
 
474
+ print_agent_response_end
475
+
458
476
  # Cleanup
459
477
  end_session
460
478
  }
package/lib/core.sh CHANGED
@@ -8,7 +8,7 @@ set -euo pipefail
8
8
  # CONSTANTS
9
9
  # =============================================================================
10
10
 
11
- AGENTK_VERSION="1.0.2"
11
+ AGENTK_VERSION="1.0.3"
12
12
  AGENTK_ROOT="${AGENTK_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
13
13
  AGENTK_WORKSPACE="${AGENTK_ROOT}/workspace"
14
14
  CLAUDE_KNOWLEDGE_CUTOFF="2024-04"
package/lib/ui.sh CHANGED
@@ -282,41 +282,136 @@ print_progress_bar() {
282
282
  printf "${RESET} %3d%%\n" "$percent"
283
283
  }
284
284
 
285
+ # =============================================================================
286
+ # CHAT UI - Claude Code Style
287
+ # =============================================================================
288
+
289
+ # Chat message boundaries
290
+ CHAT_USER_PREFIX="╭─"
291
+ CHAT_USER_SUFFIX="─╮"
292
+ CHAT_AGENT_PREFIX="├─"
293
+ CHAT_AGENT_SUFFIX="─┤"
294
+ CHAT_END="╰"
295
+ CHAT_CONTINUE="│"
296
+
297
+ print_chat_divider() {
298
+ local width
299
+ width=$(get_terminal_width)
300
+ local line_width=$((width - 4))
301
+ printf "${DIM}%s%${line_width}s%s${RESET}\n" "├" "" "┤" | tr ' ' '─'
302
+ }
303
+
304
+ print_user_message_start() {
305
+ local width
306
+ width=$(get_terminal_width)
307
+ local line_width=$((width - 12))
308
+ echo
309
+ printf "${GREEN}╭─ You ${RESET}${DIM}"
310
+ printf "%${line_width}s" | tr ' ' '─'
311
+ printf "${RESET}\n"
312
+ }
313
+
314
+ print_user_message_end() {
315
+ local width
316
+ width=$(get_terminal_width)
317
+ printf "${DIM}╰"
318
+ printf "%$((width - 2))s" | tr ' ' '─'
319
+ printf "${RESET}\n"
320
+ }
321
+
322
+ print_agent_response_start() {
323
+ local agent="${1:-Agent}"
324
+ local width
325
+ width=$(get_terminal_width)
326
+ local agent_label=" $agent "
327
+ local line_width=$((width - ${#agent_label} - 4))
328
+ echo
329
+ printf "${CYAN}╭─${BOLD}${agent_label}${RESET}${DIM}"
330
+ printf "%${line_width}s" | tr ' ' '─'
331
+ printf "${RESET}\n"
332
+ }
333
+
334
+ print_agent_response_end() {
335
+ local width
336
+ width=$(get_terminal_width)
337
+ printf "${DIM}╰"
338
+ printf "%$((width - 2))s" | tr ' ' '─'
339
+ printf "${RESET}\n"
340
+ }
341
+
342
+ print_chat_content() {
343
+ local content="$1"
344
+ local prefix="${2:-${DIM}│${RESET}}"
345
+
346
+ # Print each line with the prefix
347
+ while IFS= read -r line; do
348
+ printf "%s %s\n" "$prefix" "$line"
349
+ done <<< "$content"
350
+ }
351
+
352
+ print_user_input_box() {
353
+ local input="$1"
354
+ print_user_message_start
355
+ print_chat_content "$input" "${GREEN}│${RESET}"
356
+ print_user_message_end
357
+ }
358
+
359
+ print_agent_response_box() {
360
+ local agent="$1"
361
+ local response="$2"
362
+ print_agent_response_start "$agent"
363
+ print_chat_content "$response" "${CYAN}│${RESET}"
364
+ print_agent_response_end
365
+ }
366
+
285
367
  # =============================================================================
286
368
  # MESSAGES
287
369
  # =============================================================================
288
370
 
289
371
  print_task() {
290
372
  local task="$1"
291
- echo
292
- echo "${BOLD}Task:${RESET} ${CYAN}\"$task\"${RESET}"
293
- echo
373
+ print_user_message_start
374
+ printf "${GREEN}│${RESET} ${BOLD}Task:${RESET} %s\n" "$task"
375
+ print_user_message_end
294
376
  }
295
377
 
296
378
  print_orchestrator_message() {
297
379
  local message="$1"
298
- echo "${MAGENTA}[Orchestrator]${RESET} $message"
380
+ print_agent_response_start "Orchestrator"
381
+ print_chat_content "$message" "${MAGENTA}│${RESET}"
382
+ print_agent_response_end
299
383
  }
300
384
 
301
385
  print_agent_message() {
302
386
  local agent="$1"
303
387
  local message="$2"
304
- echo "${CYAN}[$agent]${RESET} $message"
388
+ print_agent_response_start "$agent"
389
+ print_chat_content "$message" "${CYAN}│${RESET}"
390
+ print_agent_response_end
305
391
  }
306
392
 
307
393
  print_user_prompt() {
308
- printf "\n${GREEN}You:${RESET} "
394
+ echo
395
+ printf "${GREEN}╭─ You ────────────────────────────────────────────────${RESET}\n"
396
+ printf "${GREEN}│${RESET} "
309
397
  }
310
398
 
311
399
  print_focus_prompt() {
312
400
  local agent="$1"
313
- printf "\n${CYAN}[$agent]${RESET} ${GREEN}You:${RESET} "
401
+ echo
402
+ printf "${CYAN}╭─ ${BOLD}$agent${RESET}${CYAN} (focused) ──────────────────────────────────${RESET}\n"
403
+ printf "${CYAN}│${RESET} "
314
404
  }
315
405
 
316
406
  print_task_assignment() {
317
407
  local agent="$1"
318
408
  local task="$2"
319
- echo " ${DIM}→${RESET} ${BOLD}$agent:${RESET} $task"
409
+ echo "${CYAN}│${RESET} ${DIM}→${RESET} ${BOLD}$agent:${RESET} $task"
410
+ }
411
+
412
+ print_thinking() {
413
+ local message="${1:-Thinking...}"
414
+ printf "${DIM}│ %s${RESET}\n" "$message"
320
415
  }
321
416
 
322
417
  # =============================================================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentk8",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Multi-Agent Claude Code Terminal Suite - Orchestrate multiple Claude agents for software development and ML research",
5
5
  "keywords": [
6
6
  "claude",