@parallel-cli/parallel 0.4.1 → 0.4.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/CHANGELOG.md +116 -0
- package/README.md +136 -131
- package/dist/commands.js +17 -4
- package/dist/config.js +218 -63
- package/dist/controller.js +13 -11
- package/dist/i18n.js +64 -20
- package/dist/index.js +5 -2
- package/dist/pricing.js +162 -54
- package/dist/ui/App.js +141 -56
- package/dist/ui/CommandInput.js +42 -17
- package/dist/ui/SettingsPanel.js +153 -31
- package/dist/ui/Wizard.js +33 -3
- package/dist/ui/views.js +15 -6
- package/package.json +10 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Parallel are documented here.
|
|
4
|
+
|
|
5
|
+
## 0.4.3 - 2026-06-23
|
|
6
|
+
|
|
7
|
+
### 0.4.3 Added
|
|
8
|
+
|
|
9
|
+
- Added a guided provider setup flow in both first-run wizard and settings: provider, model, endpoint review, API key, then save/default selection.
|
|
10
|
+
- Added endpoint review and endpoint editing for provider presets and configured providers.
|
|
11
|
+
- Added first-class local/no-key provider semantics for Ollama and vLLM/SGLang.
|
|
12
|
+
- Added `/project` and `/folder` commands to reopen the project picker or switch project folder from inside the TUI.
|
|
13
|
+
- Added `/wizard` and `/setup` commands to relaunch setup without restarting with `--first-run`.
|
|
14
|
+
- Added keyboard selection for slash command and `@agent` suggestions.
|
|
15
|
+
- Added viewport/windowing support for long wizard/settings lists.
|
|
16
|
+
- Added Up/Down scrolling for long static views such as `/help`.
|
|
17
|
+
- Added `CHANGELOG.md` to public release documentation.
|
|
18
|
+
|
|
19
|
+
### 0.4.3 Changed
|
|
20
|
+
|
|
21
|
+
- Refreshed the provider and model catalog across 29 presets.
|
|
22
|
+
- Refreshed built-in pricing entries and made pricing lookup case-insensitive.
|
|
23
|
+
- Reworked settings provider details to expose model changes, endpoint editing, key changes, key clearing, default selection, pricing, and removal.
|
|
24
|
+
- Hid `/key` from visible help/autocomplete; provider keys are now guided through `/settings`.
|
|
25
|
+
- Updated CLI help, TUI help, and README to document current commands and provider flows.
|
|
26
|
+
- Updated the hardcoded TUI header version to `0.4.3`.
|
|
27
|
+
- Corrected npm metadata to point at `Nil06/parallel-cli`.
|
|
28
|
+
|
|
29
|
+
### 0.4.3 Fixed
|
|
30
|
+
|
|
31
|
+
- Fixed preset providers skipping model selection and endpoint review before API key entry.
|
|
32
|
+
- Fixed session settings accidentally behaving like global provider mutation in several flows.
|
|
33
|
+
- Fixed bare model IDs containing `:` such as `qwen3-coder:480b`.
|
|
34
|
+
- Fixed stale default provider normalization during config load and provider removal.
|
|
35
|
+
- Fixed `DEEPSEEK_API_KEY` overriding whichever provider happened to be default; it now targets DeepSeek only.
|
|
36
|
+
- Fixed local endpoints being blocked by missing API keys.
|
|
37
|
+
- Fixed sensitive `/key ...` entries being stored in input history.
|
|
38
|
+
- Fixed tiny pseudo-TTY dimensions causing negative string repeat values in the TUI header.
|
|
39
|
+
|
|
40
|
+
## 0.4.2 - 2026-06-22
|
|
41
|
+
|
|
42
|
+
### 0.4.2 Added
|
|
43
|
+
|
|
44
|
+
- Expanded provider presets from 18 to 29.
|
|
45
|
+
- Added new provider categories: Western, Chinese, Gateways, Inference, and Local.
|
|
46
|
+
- Added MiniMax, Z.ai / GLM, Alibaba / Qwen, Moonshot / Kimi, Xiaomi / MiMo, StepFun, SiliconFlow, Atlas Cloud, Requesty, Vercel AI Gateway, and vLLM/SGLang presets.
|
|
47
|
+
- Added provider category metadata for cleaner Wizard and Settings grouping.
|
|
48
|
+
- Added a larger built-in model pricing catalog.
|
|
49
|
+
|
|
50
|
+
### 0.4.2 Changed
|
|
51
|
+
|
|
52
|
+
- Reworked the README provider section to be provider-agnostic instead of DeepSeek-centered.
|
|
53
|
+
- Updated provider tables, endpoint documentation, and model catalog references.
|
|
54
|
+
- Removed internal docs from remote tracking and kept them out of the public package.
|
|
55
|
+
|
|
56
|
+
### 0.4.2 Fixed
|
|
57
|
+
|
|
58
|
+
- Fixed Settings showing only configured providers instead of all presets in the Providers submenu.
|
|
59
|
+
- Fixed README coherence around provider count, missing commands, approvals, repository metadata, and environment variables.
|
|
60
|
+
|
|
61
|
+
## 0.4.1 - 2026-06-22
|
|
62
|
+
|
|
63
|
+
### 0.4.1 Added
|
|
64
|
+
|
|
65
|
+
- Added 10 new provider presets.
|
|
66
|
+
- Added Ollama as a first-class local preset with automatic connectivity check and model detection.
|
|
67
|
+
- Added custom provider setup for any OpenAI-compatible endpoint.
|
|
68
|
+
- Added provider removal from Settings.
|
|
69
|
+
|
|
70
|
+
### 0.4.1 Changed
|
|
71
|
+
|
|
72
|
+
- Redesigned the provider wizard around grouped provider categories.
|
|
73
|
+
- Reorganized Settings so provider keys, models, pricing, add/remove, and defaults are managed under a Providers submenu.
|
|
74
|
+
- Reduced Settings root menu complexity.
|
|
75
|
+
|
|
76
|
+
## 0.4.0 - 2026-06-22
|
|
77
|
+
|
|
78
|
+
### 0.4.0 Added
|
|
79
|
+
|
|
80
|
+
- Added explicit agent modes: `/ask`, `/task`, and `/plan`.
|
|
81
|
+
- Added aliases `/a`, `/t`, and `/p`.
|
|
82
|
+
- Added dedicated agent terminals through `parallel attach`.
|
|
83
|
+
- Added automatic dedicated terminal opening with `/attach on`.
|
|
84
|
+
- Added focus mode for routing plain input to one agent.
|
|
85
|
+
- Added live telemetry in the hub and attached terminals.
|
|
86
|
+
- Added structured timeline presentation for agent activity.
|
|
87
|
+
- Added UI translations for English, French, Spanish, and Chinese.
|
|
88
|
+
- Added color-coded system messages by severity.
|
|
89
|
+
- Added safer test script behavior when local tests are absent.
|
|
90
|
+
|
|
91
|
+
### 0.4.0 Changed
|
|
92
|
+
|
|
93
|
+
- Redesigned the control room UI with a compact ASCII header and improved agent rows.
|
|
94
|
+
- Reworked command grouping and alias resolution.
|
|
95
|
+
- Reworked attached terminal command handling around modern agent modes.
|
|
96
|
+
- Kept source tests local/internal instead of remote-tracked.
|
|
97
|
+
|
|
98
|
+
### 0.4.0 Removed
|
|
99
|
+
|
|
100
|
+
- Removed the visible `/spawn` command in favor of `/task`.
|
|
101
|
+
|
|
102
|
+
### 0.4.0 Fixed
|
|
103
|
+
|
|
104
|
+
- Fixed missing i18n strings in commands.
|
|
105
|
+
- Fixed several TUI layout issues around headers, root height, arrow focus guards, and small terminals.
|
|
106
|
+
- Fixed rapid repeated `/pause` behavior.
|
|
107
|
+
|
|
108
|
+
## 0.3.3 - 2026-06-12
|
|
109
|
+
|
|
110
|
+
### 0.3.3 Added
|
|
111
|
+
|
|
112
|
+
- Initial public release.
|
|
113
|
+
- Added the Parallel TUI control room for running multiple coding agents on one project.
|
|
114
|
+
- Added OpenAI-compatible provider configuration.
|
|
115
|
+
- Added session state, agent coordination, shared notes, file activity, diffs, approvals, and basic command dispatch.
|
|
116
|
+
- Added npm binaries: `parallel` and `prl`.
|
package/README.md
CHANGED
|
@@ -2,41 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
Real-time multi-agent coding from one terminal control room.
|
|
4
4
|
|
|
5
|
-
Parallel lets you run several AI coding agents on the same repository at the same time. Each agent has its own task, mode,
|
|
5
|
+
Parallel lets you run several AI coding agents on the same repository at the same time. Each agent has its own task, mode, live activity timeline, model, and shared session context. The TUI stays keyboard-first so you can launch work, inspect progress, answer approvals, steer agents, and review changes without leaving the terminal.
|
|
6
6
|
|
|
7
|
-
> One hub. Many agents. Shared context.
|
|
7
|
+
> One hub. Many agents. Shared context. Human in control.
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/@parallel-cli/parallel)
|
|
10
10
|

|
|
11
11
|

|
|
12
12
|

|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Highlights
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
- ask one agent to audit while another implements
|
|
19
|
-
- run a plan-first agent before allowing edits
|
|
20
|
-
- keep a test-focused agent watching regressions
|
|
21
|
-
- steer any agent live without stopping the others
|
|
22
|
-
- open a dedicated terminal for deep scrollback on one agent
|
|
23
|
-
|
|
24
|
-
The philosophy is simple: agents can move in parallel, but the human keeps the control room.
|
|
25
|
-
|
|
26
|
-
## Features
|
|
27
|
-
|
|
28
|
-
- Launch agents in three explicit modes: `/ask`, `/task`, and `/plan`.
|
|
16
|
+
- Run multiple agents in parallel on one project.
|
|
17
|
+
- Choose explicit modes: `/ask`, `/task`, and `/plan`.
|
|
29
18
|
- Type plain text to launch a task agent immediately.
|
|
30
|
-
-
|
|
31
|
-
- Open
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
- Track token usage and estimated cost per agent and per session.
|
|
19
|
+
- Steer one agent with `@a1 ...` or broadcast with `@all ...`.
|
|
20
|
+
- Open dedicated agent terminals with native scrollback.
|
|
21
|
+
- Review agents, notes, file activity, diffs, cost, skills, specialists, and saved sessions from the TUI.
|
|
22
|
+
- Configure OpenAI-compatible providers through a guided wizard and settings panel.
|
|
23
|
+
- Use 29 provider presets across Western, Chinese, Gateway, Inference, and Local categories.
|
|
24
|
+
- Support local no-key endpoints such as Ollama and vLLM/SGLang.
|
|
25
|
+
- Keep shell execution controlled with `ask`, `auto-safe`, or `yolo` approvals.
|
|
26
|
+
- Save and restore project sessions.
|
|
27
|
+
- Run headless multi-agent jobs for CI or scripts.
|
|
40
28
|
|
|
41
29
|
## Install
|
|
42
30
|
|
|
@@ -44,7 +32,7 @@ Requirements:
|
|
|
44
32
|
|
|
45
33
|
- Node.js 18 or newer
|
|
46
34
|
- Linux or macOS
|
|
47
|
-
- An API key for
|
|
35
|
+
- An API key for a cloud provider, or a local OpenAI-compatible endpoint
|
|
48
36
|
|
|
49
37
|
Install from npm:
|
|
50
38
|
|
|
@@ -52,7 +40,7 @@ Install from npm:
|
|
|
52
40
|
npm install -g @parallel-cli/parallel
|
|
53
41
|
```
|
|
54
42
|
|
|
55
|
-
Run
|
|
43
|
+
Run inside a project:
|
|
56
44
|
|
|
57
45
|
```bash
|
|
58
46
|
parallel
|
|
@@ -66,7 +54,15 @@ prl
|
|
|
66
54
|
|
|
67
55
|
## Quick Start
|
|
68
56
|
|
|
69
|
-
On first launch, Parallel opens a setup wizard
|
|
57
|
+
On first launch, Parallel opens a setup wizard:
|
|
58
|
+
|
|
59
|
+
1. Choose language.
|
|
60
|
+
2. Choose the project folder.
|
|
61
|
+
3. Restore a saved session or start a new one.
|
|
62
|
+
4. Choose a provider.
|
|
63
|
+
5. Choose the model.
|
|
64
|
+
6. Review or edit the endpoint.
|
|
65
|
+
7. Enter the provider API key if required.
|
|
70
66
|
|
|
71
67
|
After setup, type a task and press Enter:
|
|
72
68
|
|
|
@@ -74,7 +70,7 @@ After setup, type a task and press Enter:
|
|
|
74
70
|
> refactor the API client and update the tests
|
|
75
71
|
```
|
|
76
72
|
|
|
77
|
-
Plain text launches a `/task` agent.
|
|
73
|
+
Plain text launches a `/task` agent. You can launch another agent while the first is still working:
|
|
78
74
|
|
|
79
75
|
```text
|
|
80
76
|
> add regression coverage for auth middleware
|
|
@@ -88,7 +84,7 @@ Use explicit modes when intent matters:
|
|
|
88
84
|
/task builder implement the approved plan
|
|
89
85
|
```
|
|
90
86
|
|
|
91
|
-
|
|
87
|
+
Steer a running agent:
|
|
92
88
|
|
|
93
89
|
```text
|
|
94
90
|
@a1 also handle empty response bodies
|
|
@@ -106,7 +102,7 @@ Broadcast to every agent:
|
|
|
106
102
|
| --- | --- | --- |
|
|
107
103
|
| `/ask` | Questions, reviews, audits, tradeoffs | Answers and advises without editing files. |
|
|
108
104
|
| `/task` | Implementation work | Executes, edits, validates, and summarizes. |
|
|
109
|
-
| `/plan` | Risky or unclear work | Inspects first,
|
|
105
|
+
| `/plan` | Risky or unclear work | Inspects first, presents a plan, then edits only after approval. |
|
|
110
106
|
|
|
111
107
|
Aliases:
|
|
112
108
|
|
|
@@ -118,28 +114,40 @@ Plain text is equivalent to `/task`.
|
|
|
118
114
|
|
|
119
115
|
## Control Room
|
|
120
116
|
|
|
121
|
-
The main TUI is the Parallel hub. It is designed to answer
|
|
117
|
+
The main TUI is the Parallel hub. It is designed to answer:
|
|
122
118
|
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
119
|
+
- what needs your input
|
|
120
|
+
- which agents are working
|
|
121
|
+
- what each agent just did
|
|
122
|
+
- what changed in the project
|
|
123
|
+
- what model, provider, shell mode, and cost are active
|
|
127
124
|
|
|
128
|
-
|
|
125
|
+
Common hub commands:
|
|
129
126
|
|
|
130
127
|
```text
|
|
131
128
|
/agents agent overview
|
|
132
129
|
/focus a1 inspect and steer one agent
|
|
133
130
|
/raw toggle raw detail in focus view
|
|
134
|
-
/board shared blackboard, claims, file activity
|
|
131
|
+
/board shared blackboard, claims, notes, file activity
|
|
135
132
|
/diff live diff history
|
|
136
133
|
/cost token and cost breakdown
|
|
137
134
|
/sessions saved sessions
|
|
138
135
|
/settings global settings
|
|
139
136
|
/settings-session session-only settings
|
|
137
|
+
/project [folder] change project folder
|
|
138
|
+
/wizard rerun setup wizard
|
|
140
139
|
```
|
|
141
140
|
|
|
142
|
-
|
|
141
|
+
Keyboard behavior:
|
|
142
|
+
|
|
143
|
+
- `/` opens slash command suggestions.
|
|
144
|
+
- Up/Down selects suggestions when a suggestion menu is open.
|
|
145
|
+
- Enter accepts the selected suggestion.
|
|
146
|
+
- Tab or Right accepts the best completion.
|
|
147
|
+
- Up/Down scrolls long views such as `/help`.
|
|
148
|
+
- Escape returns to the agents view or clears the input.
|
|
149
|
+
|
|
150
|
+
Best terminal size is around `120x34`. Parallel adapts to smaller terminals, but the hub is most readable with enough width for model, folder, status, and agent summaries.
|
|
143
151
|
|
|
144
152
|
## Dedicated Agent Terminals
|
|
145
153
|
|
|
@@ -153,7 +161,7 @@ Attached terminals show:
|
|
|
153
161
|
|
|
154
162
|
- the selected agent's live timeline
|
|
155
163
|
- native terminal scrollback
|
|
156
|
-
- model, elapsed time,
|
|
164
|
+
- model, elapsed time, context, and cost
|
|
157
165
|
- other agents' current state
|
|
158
166
|
- approval and question prompts for that agent
|
|
159
167
|
- an input that steers that agent directly
|
|
@@ -176,40 +184,47 @@ Toggle automatic agent terminals from the hub:
|
|
|
176
184
|
/attach off
|
|
177
185
|
```
|
|
178
186
|
|
|
179
|
-
##
|
|
187
|
+
## Providers And Models
|
|
180
188
|
|
|
181
|
-
Parallel
|
|
189
|
+
Parallel works with OpenAI-compatible chat completions and tool calling. It ships with 29 presets:
|
|
182
190
|
|
|
183
|
-
|
|
184
|
-
/
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
191
|
+
- Western: OpenAI, Anthropic, Google Gemini, xAI Grok, Mistral, Cohere, Perplexity
|
|
192
|
+
- Chinese: DeepSeek, MiniMax, Z.ai / GLM, Alibaba / Qwen, Moonshot / Kimi, Xiaomi / MiMo, StepFun
|
|
193
|
+
- Gateways: OpenRouter, SiliconFlow, Atlas Cloud, Requesty, Vercel AI Gateway
|
|
194
|
+
- Inference: Groq, Cerebras, Together AI, Fireworks, DeepInfra, Novita, Hyperbolic, SambaNova
|
|
195
|
+
- Local: Ollama, vLLM / SGLang
|
|
188
196
|
|
|
189
|
-
|
|
190
|
-
| --- | --- |
|
|
191
|
-
| `ask` | Ask before shell commands unless explicitly allowed. |
|
|
192
|
-
| `auto-safe` | Auto-approve safe inspection/build/test commands; ask for risky commands. |
|
|
193
|
-
| `yolo` | Auto-approve every shell command. Intended for trusted/headless usage only. |
|
|
197
|
+
Provider setup is guided in both the first-run wizard and `/settings`:
|
|
194
198
|
|
|
195
|
-
|
|
199
|
+
1. Pick a provider preset or custom provider.
|
|
200
|
+
2. Pick the model.
|
|
201
|
+
3. Review or edit the endpoint.
|
|
202
|
+
4. Enter the provider API key if the provider requires one.
|
|
203
|
+
5. Save globally or use the provider/model for the current session.
|
|
196
204
|
|
|
197
|
-
|
|
205
|
+
Local providers such as Ollama and vLLM/SGLang do not require an API key. You can still review and edit their endpoints.
|
|
198
206
|
|
|
199
|
-
|
|
207
|
+
Useful settings commands:
|
|
200
208
|
|
|
201
|
-
```
|
|
202
|
-
|
|
209
|
+
```text
|
|
210
|
+
/settings global language, providers, keys, defaults, approvals
|
|
211
|
+
/settings-session temporary model, provider, approvals, sound
|
|
212
|
+
/model show current session model
|
|
213
|
+
/model provider:id switch model for this session
|
|
214
|
+
/doctor check provider/model/API key readiness
|
|
203
215
|
```
|
|
204
216
|
|
|
205
|
-
|
|
217
|
+
Configuration is stored in `~/.parallel/config.json`.
|
|
206
218
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
219
|
+
Environment variables:
|
|
220
|
+
|
|
221
|
+
| Variable | Purpose |
|
|
222
|
+
| --- | --- |
|
|
223
|
+
| `PARALLEL_API_KEY` | API key for the current default provider. |
|
|
224
|
+
| `DEEPSEEK_API_KEY` | API key for the DeepSeek provider only. |
|
|
225
|
+
| `PARALLEL_BASE_URL` | Override the default provider base URL. |
|
|
226
|
+
| `PARALLEL_MODEL` | Override the session model. |
|
|
227
|
+
| `PARALLEL_NO_ALT_SCREEN=1` | Disable the alternate terminal screen. |
|
|
213
228
|
|
|
214
229
|
## Commands
|
|
215
230
|
|
|
@@ -238,6 +253,8 @@ Headless mode:
|
|
|
238
253
|
| `/resume <agent\|all>` | Resume paused agents. |
|
|
239
254
|
| `/stop <agent\|all>` | Stop running agents. |
|
|
240
255
|
| `/clear` | Remove finished agents from the current display. |
|
|
256
|
+
| `/raw` | Toggle conversation-raw view. |
|
|
257
|
+
| `/copy` | Copy the latest completed result to clipboard. |
|
|
241
258
|
|
|
242
259
|
### Git Safety
|
|
243
260
|
|
|
@@ -256,6 +273,7 @@ Headless mode:
|
|
|
256
273
|
| `/notes` | Full notes history. |
|
|
257
274
|
| `/diff` | Live diff history. |
|
|
258
275
|
| `/cost` | Token and cost breakdown. |
|
|
276
|
+
| `/status` | Session model, approval mode, agents, cost snapshot. |
|
|
259
277
|
| `/skills` | Available skills. |
|
|
260
278
|
| `/specialists` | Available specialists. |
|
|
261
279
|
| `/save [name]` | Save the current session. |
|
|
@@ -263,62 +281,65 @@ Headless mode:
|
|
|
263
281
|
| `/session <n\|latest>` | Restore a saved session. |
|
|
264
282
|
| `/restore <agent>` | Relaunch a restored agent with its conversation history. |
|
|
265
283
|
|
|
266
|
-
### Settings
|
|
284
|
+
### Settings And Exit
|
|
267
285
|
|
|
268
286
|
| Command | Description |
|
|
269
287
|
| --- | --- |
|
|
270
288
|
| `/model [[provider:]model]` | Show or switch the session model. |
|
|
271
|
-
| `/
|
|
272
|
-
| `/approvals <ask\|auto-safe\|yolo>` | Set shell approvals for this session. |
|
|
289
|
+
| `/approvals <ask\|auto\|auto-safe\|yolo>` | Set shell approvals for this session. |
|
|
273
290
|
| `/sound <on\|off>` | Toggle terminal bell notifications. |
|
|
274
291
|
| `/settings` | Edit global language, providers, keys, defaults, and approvals. |
|
|
275
292
|
| `/settings-session` | Edit session-only model, approvals, and sound. |
|
|
293
|
+
| `/project [folder]` | Change project folder or reopen the folder picker. |
|
|
294
|
+
| `/folder [folder]` | Alias for `/project`. |
|
|
295
|
+
| `/wizard` | Relaunch the setup wizard. |
|
|
296
|
+
| `/setup` | Alias for `/wizard`. |
|
|
276
297
|
| `/doctor` | Check provider, key, and model configuration. |
|
|
277
298
|
| `/help` | Full command reference. |
|
|
278
299
|
| `/quit` | Save the session and exit. |
|
|
279
300
|
|
|
280
301
|
When there is exactly one agent, commands such as `/undo`, `/focus`, `/pause`, `/resume`, `/stop`, and `/commit` can omit the agent name.
|
|
281
302
|
|
|
282
|
-
##
|
|
283
|
-
|
|
284
|
-
Parallel ships with **18 pre-configured cloud providers** with verified endpoints and curated model lists, plus **Ollama** for local models with automatic model detection. All providers use OpenAI-compatible chat completions with tool calling. You can also add any custom OpenAI-compatible endpoint.
|
|
303
|
+
## Shell Approvals
|
|
285
304
|
|
|
286
|
-
|
|
305
|
+
Parallel separates agent modes from shell approval behavior.
|
|
287
306
|
|
|
288
|
-
|
|
307
|
+
```text
|
|
308
|
+
/approvals ask
|
|
309
|
+
/approvals auto-safe
|
|
310
|
+
/approvals yolo
|
|
311
|
+
```
|
|
289
312
|
|
|
290
|
-
|
|
|
313
|
+
| Mode | Behavior |
|
|
291
314
|
| --- | --- |
|
|
292
|
-
| `
|
|
293
|
-
| `
|
|
294
|
-
| `
|
|
295
|
-
| `PARALLEL_MODEL` | Override the session model. |
|
|
296
|
-
| `PARALLEL_NO_ALT_SCREEN=1` | Disable the alternate terminal screen. |
|
|
315
|
+
| `ask` | Ask before shell commands unless explicitly allowed. |
|
|
316
|
+
| `auto-safe` | Auto-approve safe inspection/build/test commands and ask for risky commands. |
|
|
317
|
+
| `yolo` | Auto-approve every shell command. Intended for trusted/headless usage only. |
|
|
297
318
|
|
|
298
|
-
|
|
319
|
+
`auto` is accepted as a compatibility spelling for `auto-safe`.
|
|
320
|
+
|
|
321
|
+
## Sessions, Skills, And Specialists
|
|
322
|
+
|
|
323
|
+
Parallel stores project state under `.parallel/` in the selected project directory. That includes saved sessions, memory, skills, specialists, and session socket state.
|
|
299
324
|
|
|
300
|
-
|
|
325
|
+
Skills are markdown instruction files agents can load with the `load_skill` tool or that you can force-load with `#skill-name` in a task:
|
|
301
326
|
|
|
302
|
-
|
|
327
|
+
```text
|
|
328
|
+
> add Redis-backed caching for expensive lookups #redis
|
|
329
|
+
```
|
|
303
330
|
|
|
304
|
-
|
|
331
|
+
Skill locations:
|
|
305
332
|
|
|
306
333
|
- Global skills: `~/.parallel/skills/`
|
|
307
334
|
- Project skills: `.parallel/skills/`
|
|
308
335
|
|
|
309
|
-
Specialists are
|
|
336
|
+
Specialists are reusable personas with optional pinned models.
|
|
310
337
|
|
|
311
|
-
|
|
338
|
+
Specialist locations:
|
|
312
339
|
|
|
313
340
|
- Global specialists: `~/.parallel/specialists/`
|
|
314
341
|
- Project specialists: `.parallel/specialists/`
|
|
315
342
|
|
|
316
|
-
Example task with a forced skill:
|
|
317
|
-
|
|
318
|
-
```text
|
|
319
|
-
> add Redis-backed caching for expensive lookups #redis
|
|
320
|
-
```
|
|
321
|
-
|
|
322
343
|
## How Parallel Avoids Lost Work
|
|
323
344
|
|
|
324
345
|
Parallel does not lock files. Instead, each agent tracks the last version it read.
|
|
@@ -332,58 +353,42 @@ When an agent writes a file:
|
|
|
332
353
|
|
|
333
354
|
This keeps agents moving without allowing silent overwrites.
|
|
334
355
|
|
|
335
|
-
##
|
|
336
|
-
|
|
337
|
-
The runtime is intentionally small:
|
|
356
|
+
## Headless Mode
|
|
338
357
|
|
|
339
|
-
|
|
340
|
-
- `src/controller.ts`: session state, agents, approvals, questions, terminals, commits, and restores.
|
|
341
|
-
- `src/coordination/blackboard.ts`: shared live state for agents, logs, notes, file activity, claims, and diffs.
|
|
342
|
-
- `src/agents/agent.ts`: agent loop, mode instructions, live context injection, and completion.
|
|
343
|
-
- `src/agents/tools.ts`: file, shell, note, skill, memory, and question tools.
|
|
344
|
-
- `src/server.ts`: Unix socket bridge for dedicated agent terminals.
|
|
345
|
-
- `src/ui/`: Ink components for the hub, timelines, settings, prompts, and attach UI.
|
|
346
|
-
- `src/commands.ts`: hub command registry, hidden compatibility commands, aliases, and dispatch.
|
|
347
|
-
- `src/config.ts` and `src/i18n.ts`: provider/session config and translations.
|
|
358
|
+
For CI and scripts, run without the TUI:
|
|
348
359
|
|
|
349
|
-
|
|
360
|
+
```bash
|
|
361
|
+
parallel --headless "fix lint failures" "update tests" --json
|
|
362
|
+
```
|
|
350
363
|
|
|
351
|
-
|
|
364
|
+
Headless mode:
|
|
352
365
|
|
|
353
|
-
-
|
|
354
|
-
-
|
|
355
|
-
-
|
|
356
|
-
-
|
|
357
|
-
-
|
|
358
|
-
-
|
|
366
|
+
- runs one agent per task
|
|
367
|
+
- uses the current folder as the project root
|
|
368
|
+
- uses `yolo` shell approvals
|
|
369
|
+
- auto-answers agent questions with the recommended option
|
|
370
|
+
- saves the session
|
|
371
|
+
- exits non-zero if any agent does not finish successfully
|
|
359
372
|
|
|
360
|
-
|
|
373
|
+
## Package Contents
|
|
361
374
|
|
|
362
|
-
|
|
363
|
-
- **System messages color-coded by severity** — green for success, yellow for warnings, red for errors, gray for informational. Applied across all ~40 system messages in every command.
|
|
364
|
-
- **UI fully internationalized** — all wizard screens, menus, and prompts now available in English, French, Spanish, and Chinese (zh).
|
|
365
|
-
- **AgentHub header indicators** — the hub header now shows the active mode, model, and context usage at a glance.
|
|
366
|
-
- **Fixed `/pause` double-call** — rapid consecutive `/pause` invocations no longer trigger the action twice.
|
|
375
|
+
The npm package is intentionally small. It publishes the compiled runtime and public release docs only:
|
|
367
376
|
|
|
368
|
-
|
|
377
|
+
- `dist/`
|
|
378
|
+
- `README.md`
|
|
379
|
+
- `CHANGELOG.md`
|
|
380
|
+
- `LICENSE`
|
|
369
381
|
|
|
370
|
-
|
|
371
|
-
npm install
|
|
372
|
-
npm run build
|
|
373
|
-
npm test
|
|
374
|
-
```
|
|
382
|
+
Internal development files such as source tests and design docs are not part of the npm package.
|
|
375
383
|
|
|
376
|
-
|
|
384
|
+
## Changelog
|
|
377
385
|
|
|
378
|
-
|
|
379
|
-
npm link
|
|
380
|
-
parallel --help
|
|
381
|
-
```
|
|
386
|
+
See [`CHANGELOG.md`](CHANGELOG.md).
|
|
382
387
|
|
|
383
|
-
|
|
388
|
+
## Links
|
|
384
389
|
|
|
385
|
-
- npm: https://www.npmjs.com/package/@parallel-cli/parallel
|
|
386
|
-
- GitHub: https://github.com/Nil06/parallel-cli
|
|
390
|
+
- npm: [@parallel-cli/parallel](https://www.npmjs.com/package/@parallel-cli/parallel)
|
|
391
|
+
- GitHub: [Nil06/parallel-cli](https://github.com/Nil06/parallel-cli)
|
|
387
392
|
|
|
388
393
|
## License
|
|
389
394
|
|
package/dist/commands.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Controller, normalizeShellApprovalMode } from './controller.js';
|
|
2
2
|
import { createSkillTemplate, createSpecialistTemplate } from './skills.js';
|
|
3
|
+
import { providerReady } from './config.js';
|
|
3
4
|
import { t } from './i18n.js';
|
|
4
5
|
// Grouped by intent so /help reads as a story: create agents → steer them →
|
|
5
6
|
// inspect the session → git safety net → session & config → exit.
|
|
@@ -41,11 +42,13 @@ export const COMMANDS = [
|
|
|
41
42
|
{ name: '/restore', args: '<agent>', descKey: 'cmd.restore', group: 'git' },
|
|
42
43
|
// config
|
|
43
44
|
{ name: '/model', args: '[[provider:]model]', descKey: 'cmd.model', group: 'settings' },
|
|
44
|
-
{ name: '/key', args: '<key>', descKey: 'cmd.key', group: 'settings' },
|
|
45
|
+
{ name: '/key', args: '<key>', descKey: 'cmd.key', group: 'settings', hidden: true },
|
|
45
46
|
{ name: '/approvals', args: '<ask|auto|auto-safe|yolo>', descKey: 'cmd.approvals', group: 'settings' },
|
|
46
47
|
{ name: '/sound', args: '<on|off>', descKey: 'cmd.sound', group: 'settings' },
|
|
47
48
|
{ name: '/settings', args: '', descKey: 'cmd.settings', group: 'settings' },
|
|
48
49
|
{ name: '/settings-session', args: '', descKey: 'cmd.ssettings', group: 'settings', aliases: ['/ssettings'] },
|
|
50
|
+
{ name: '/project', args: '[folder]', descKey: 'cmd.project', group: 'settings', aliases: ['/folder'] },
|
|
51
|
+
{ name: '/wizard', args: '', descKey: 'cmd.wizard', group: 'settings', aliases: ['/setup'] },
|
|
49
52
|
{ name: '/doctor', args: '', descKey: 'cmd.doctor', group: 'settings' },
|
|
50
53
|
// exit
|
|
51
54
|
{ name: '/help', args: '', descKey: 'cmd.help', group: 'other' },
|
|
@@ -75,7 +78,7 @@ function spawnFrom(arg, ctl, ui, images, specialist, mode = 'task') {
|
|
|
75
78
|
const p = ctl.sessionProvider();
|
|
76
79
|
if (!p)
|
|
77
80
|
return ui.system(t('m.missingProvider'), 'error');
|
|
78
|
-
if (!p
|
|
81
|
+
if (!providerReady(p))
|
|
79
82
|
return ui.system(t('m.missingKey', { name: p.name }), 'error');
|
|
80
83
|
if (!ctl.session.model && !p.defaultModel && !p.models[0])
|
|
81
84
|
return ui.system(t('m.missingModel', { name: p.name }), 'error');
|
|
@@ -155,7 +158,11 @@ export function executeInput(raw, ctl, ui, images) {
|
|
|
155
158
|
? '/settings-session'
|
|
156
159
|
: rawCmd.toLowerCase() === '/exit'
|
|
157
160
|
? '/quit'
|
|
158
|
-
: rawCmd
|
|
161
|
+
: rawCmd.toLowerCase() === '/folder'
|
|
162
|
+
? '/project'
|
|
163
|
+
: rawCmd.toLowerCase() === '/setup'
|
|
164
|
+
? '/wizard'
|
|
165
|
+
: rawCmd;
|
|
159
166
|
const arg = rest.join(' ').trim();
|
|
160
167
|
switch (cmd.toLowerCase()) {
|
|
161
168
|
case '/ask': {
|
|
@@ -311,7 +318,7 @@ export function executeInput(raw, ctl, ui, images) {
|
|
|
311
318
|
const p = ctl.sessionProvider();
|
|
312
319
|
if (!p)
|
|
313
320
|
return ui.system(t('m.missingProvider'), 'error');
|
|
314
|
-
if (!p
|
|
321
|
+
if (!providerReady(p))
|
|
315
322
|
return ui.system(t('m.missingKey', { name: p.name }), 'error');
|
|
316
323
|
if (!ctl.session.model && !p.defaultModel && !p.models[0])
|
|
317
324
|
return ui.system(t('m.missingModel', { name: p.name }), 'error');
|
|
@@ -468,6 +475,12 @@ export function executeInput(raw, ctl, ui, images) {
|
|
|
468
475
|
case '/settings-session':
|
|
469
476
|
ui.setView('settings-session');
|
|
470
477
|
return;
|
|
478
|
+
case '/project':
|
|
479
|
+
ui.openProject?.(arg || undefined);
|
|
480
|
+
return;
|
|
481
|
+
case '/wizard':
|
|
482
|
+
ui.openWizard?.();
|
|
483
|
+
return;
|
|
471
484
|
// SESSION-only approvals & sound (global defaults editable in /settings).
|
|
472
485
|
case '/approvals': {
|
|
473
486
|
const mode = normalizeShellApprovalMode(arg);
|