parallel-codex-tui 0.1.3 → 0.1.5
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/.parallel-codex/config.example.toml +136 -3
- package/README.md +299 -21
- package/dist/bootstrap.js +37 -17
- package/dist/cli-args.js +34 -3
- package/dist/cli-help.js +20 -0
- package/dist/cli-startup-preflight.js +18 -0
- package/dist/cli-startup-recovery.js +82 -0
- package/dist/cli-workspace-picker.js +330 -0
- package/dist/cli-workspace-transition.js +33 -0
- package/dist/cli-workspace.js +7 -71
- package/dist/cli.js +234 -24
- package/dist/core/collaboration-timeline.js +268 -0
- package/dist/core/config-errors.js +14 -0
- package/dist/core/config.js +297 -109
- package/dist/core/file-store.js +119 -6
- package/dist/core/lease-finalization.js +22 -0
- package/dist/core/paths.js +7 -0
- package/dist/core/process-identity.js +48 -0
- package/dist/core/process-mutation-turn.js +128 -0
- package/dist/core/process-ownership.js +276 -0
- package/dist/core/process-tree.js +90 -0
- package/dist/core/router-audit.js +155 -0
- package/dist/core/router-redaction.js +31 -0
- package/dist/core/router.js +462 -35
- package/dist/core/session-index.js +412 -88
- package/dist/core/session-manager.js +1110 -40
- package/dist/core/task-session-details.js +175 -0
- package/dist/core/task-state-machine.js +18 -0
- package/dist/core/workspace-commit-recovery.js +118 -0
- package/dist/core/workspace.js +19 -11
- package/dist/doctor.js +373 -34
- package/dist/domain/schemas.js +142 -7
- package/dist/orchestrator/collaboration-channel.js +289 -6
- package/dist/orchestrator/feature-plan.js +70 -0
- package/dist/orchestrator/final-acceptance.js +86 -0
- package/dist/orchestrator/judge-artifacts.js +236 -0
- package/dist/orchestrator/orchestrator.js +2086 -203
- package/dist/orchestrator/prompts.js +168 -5
- package/dist/orchestrator/supervisor-summary.js +56 -2
- package/dist/orchestrator/workspace-sandbox.js +927 -0
- package/dist/tui/App.js +3187 -161
- package/dist/tui/AppShell.js +196 -25
- package/dist/tui/CollaborationTimelineView.js +327 -0
- package/dist/tui/FeatureBoardView.js +232 -0
- package/dist/tui/InputBar.js +581 -57
- package/dist/tui/RouterDiagnosticsView.js +469 -0
- package/dist/tui/StatusBar.js +610 -57
- package/dist/tui/StatusDetailView.js +164 -0
- package/dist/tui/TaskSessionDetailView.js +222 -0
- package/dist/tui/TaskSessionsView.js +210 -0
- package/dist/tui/TerminalOutput.js +53 -9
- package/dist/tui/WorkerOutputView.js +1404 -161
- package/dist/tui/WorkerOverviewView.js +269 -0
- package/dist/tui/chat-history.js +25 -0
- package/dist/tui/chat-input.js +67 -19
- package/dist/tui/chat-paste.js +76 -0
- package/dist/tui/display-width.js +41 -3
- package/dist/tui/incremental-text-file.js +101 -0
- package/dist/tui/keyboard.js +49 -0
- package/dist/tui/markdown-text.js +14 -0
- package/dist/tui/raw-input-decoder.js +3 -0
- package/dist/tui/scrolling.js +2 -1
- package/dist/tui/status-line.js +360 -11
- package/dist/tui/task-memory.js +13 -1
- package/dist/tui/task-result.js +105 -0
- package/dist/tui/terminal-screen.js +13 -1
- package/dist/tui/theme-contrast.js +144 -0
- package/dist/tui/theme-preview.js +109 -0
- package/dist/tui/theme.js +158 -0
- package/dist/version.js +1 -1
- package/dist/workers/capabilities.js +213 -0
- package/dist/workers/live-probe.js +177 -0
- package/dist/workers/mock-adapter.js +73 -8
- package/dist/workers/native-attach.js +106 -16
- package/dist/workers/process-adapter.js +572 -77
- package/dist/workers/provider.js +26 -0
- package/dist/workers/registry.js +12 -20
- package/package.json +11 -2
|
@@ -3,30 +3,101 @@ defaultMode = "auto"
|
|
|
3
3
|
|
|
4
4
|
[router.codex]
|
|
5
5
|
command = "codex"
|
|
6
|
-
args = ["exec", "--skip-git-repo-check", "--sandbox", "
|
|
7
|
-
timeoutMs =
|
|
8
|
-
|
|
6
|
+
args = ["exec", "--ephemeral", "--ignore-rules", "-c", "model_reasoning_effort=low", "--skip-git-repo-check", "--sandbox", "read-only", "--color", "never", "-"]
|
|
7
|
+
timeoutMs = 30000
|
|
8
|
+
# Stop a silent Router before the total ceiling so one transient retry stays bounded.
|
|
9
|
+
firstOutputTimeoutMs = 15000
|
|
10
|
+
# Reset after every stdout/stderr chunk; timeoutMs remains the hard ceiling.
|
|
11
|
+
idleTimeoutMs = 15000
|
|
12
|
+
# Stop a noisy or malformed classifier before it can grow Router memory without bound (1 KiB..16 MiB).
|
|
13
|
+
maxOutputBytes = 1048576
|
|
14
|
+
# Retry one transient Router failure before asking the user; 1 disables automatic retry.
|
|
15
|
+
maxAttempts = 2
|
|
16
|
+
retryDelayMs = 500
|
|
17
|
+
# Active-task follow-ups fail safely to Main after this shorter Codex timeout.
|
|
18
|
+
followUpTimeoutMs = 20000
|
|
19
|
+
# Non-interactive fallback; the TUI pauses and asks before executing it.
|
|
20
|
+
fallback = "simple"
|
|
21
|
+
|
|
22
|
+
# Optional environment passed only to the Codex router process.
|
|
23
|
+
# [router.codex.env]
|
|
24
|
+
# HTTP_PROXY = "http://127.0.0.1:7890"
|
|
25
|
+
# HTTPS_PROXY = "http://127.0.0.1:7890"
|
|
26
|
+
# ALL_PROXY = "socks5h://127.0.0.1:7890"
|
|
27
|
+
# NO_PROXY = "localhost,127.0.0.1"
|
|
28
|
+
|
|
29
|
+
[orchestration]
|
|
30
|
+
# Maximum isolated Actor or Critic feature workers running at the same time (1..8).
|
|
31
|
+
# Each feature receives its own snapshot; a combined Wave Critic approves staged changes before atomic live commit.
|
|
32
|
+
maxParallelFeatures = 3
|
|
33
|
+
# Maximum Actor/Critic revision rounds before the task is stopped for manual intervention (1..10).
|
|
34
|
+
maxRevisionRounds = 3
|
|
9
35
|
|
|
10
36
|
[workers.codex]
|
|
11
37
|
command = "codex"
|
|
38
|
+
# Automated Judge/Actor/Critic runs enforce workspace-write even if private args request a broader sandbox.
|
|
12
39
|
args = ["exec", "--skip-git-repo-check", "--sandbox", "workspace-write", "--color", "never", "-"]
|
|
40
|
+
# timeoutMs is the hard ceiling; first output owns silent startup and idle starts after actual output.
|
|
41
|
+
# timeoutMs = 2700000
|
|
42
|
+
# idleTimeoutMs = 300000
|
|
13
43
|
firstOutputTimeoutMs = 120000
|
|
14
44
|
|
|
45
|
+
# Automated workers and native attach use the same model args and env tables.
|
|
46
|
+
# Model args are appended after the interactive resume args and support {model} and {provider}.
|
|
47
|
+
# [workers.codex.model]
|
|
48
|
+
# name = "gpt-5"
|
|
49
|
+
# provider = "openai"
|
|
50
|
+
# args = ["--model", "{model}"]
|
|
51
|
+
|
|
52
|
+
# [workers.codex.model.env]
|
|
53
|
+
# OPENAI_API_KEY = "{env:OPENAI_API_KEY}"
|
|
54
|
+
# HTTP_PROXY = "http://127.0.0.1:7890"
|
|
55
|
+
# HTTPS_PROXY = "http://127.0.0.1:7890"
|
|
56
|
+
# ALL_PROXY = "socks5h://127.0.0.1:7890"
|
|
57
|
+
# NO_PROXY = "localhost,127.0.0.1"
|
|
58
|
+
|
|
59
|
+
[workers.codex.capabilities]
|
|
60
|
+
# Keep "codex" for Codex-compatible CLIs. Use "generic" for wrappers with their own flags.
|
|
61
|
+
profile = "codex"
|
|
62
|
+
writableDirArgs = ["--add-dir", "{dir}"]
|
|
63
|
+
freshSessionArgs = []
|
|
64
|
+
|
|
15
65
|
[workers.codex.interactive]
|
|
16
66
|
command = "codex"
|
|
17
67
|
args = ["resume", "{sessionId}"]
|
|
68
|
+
# Used by the Task session detail view when branching from a recorded native session.
|
|
69
|
+
forkArgs = ["fork", "{sessionId}"]
|
|
18
70
|
|
|
19
71
|
[workers.codex.nativeSession]
|
|
20
72
|
fallback = "new"
|
|
21
73
|
|
|
22
74
|
[workers.claude]
|
|
23
75
|
command = "claude"
|
|
76
|
+
# Automated isolated roles enforce acceptEdits and remove permission-bypass flags.
|
|
24
77
|
args = ["--print", "--permission-mode", "acceptEdits", "--output-format", "text"]
|
|
78
|
+
# timeoutMs is the hard ceiling; first output owns silent startup and idle starts after actual output.
|
|
79
|
+
# timeoutMs = 2700000
|
|
80
|
+
# idleTimeoutMs = 300000
|
|
25
81
|
firstOutputTimeoutMs = 120000
|
|
26
82
|
|
|
83
|
+
# [workers.claude.model]
|
|
84
|
+
# name = "claude-sonnet"
|
|
85
|
+
# provider = "anthropic"
|
|
86
|
+
# args = ["--model", "{model}"]
|
|
87
|
+
|
|
88
|
+
# [workers.claude.model.env]
|
|
89
|
+
# ANTHROPIC_API_KEY = "{env:ANTHROPIC_API_KEY}"
|
|
90
|
+
|
|
91
|
+
[workers.claude.capabilities]
|
|
92
|
+
# A client-generated id makes the first Claude run reliably resumable.
|
|
93
|
+
profile = "claude"
|
|
94
|
+
writableDirArgs = ["--add-dir", "{dir}"]
|
|
95
|
+
freshSessionArgs = ["--session-id", "{sessionId}"]
|
|
96
|
+
|
|
27
97
|
[workers.claude.interactive]
|
|
28
98
|
command = "claude"
|
|
29
99
|
args = ["--resume", "{sessionId}"]
|
|
100
|
+
forkArgs = ["--resume", "{sessionId}", "--fork-session"]
|
|
30
101
|
|
|
31
102
|
[workers.claude.nativeSession]
|
|
32
103
|
fallback = "new"
|
|
@@ -35,6 +106,52 @@ fallback = "new"
|
|
|
35
106
|
command = "mock"
|
|
36
107
|
args = []
|
|
37
108
|
|
|
109
|
+
[workers.mock.capabilities]
|
|
110
|
+
profile = "generic"
|
|
111
|
+
writableDirArgs = []
|
|
112
|
+
freshSessionArgs = []
|
|
113
|
+
|
|
114
|
+
# Add any number of named Worker providers. IDs use lowercase letters, digits, or _.
|
|
115
|
+
# A profile can inherit the Codex/Claude command protocol and override only role-specific values.
|
|
116
|
+
# [workers.openai_compat]
|
|
117
|
+
# extends = "codex"
|
|
118
|
+
# command = "openai-compatible-coder"
|
|
119
|
+
# assignable = true
|
|
120
|
+
#
|
|
121
|
+
# [workers.openai_compat.model]
|
|
122
|
+
# name = "third-party-model"
|
|
123
|
+
# provider = "openai-compatible"
|
|
124
|
+
# args = ["--model", "{model}", "--provider", "{provider}"]
|
|
125
|
+
#
|
|
126
|
+
# [workers.openai_compat.model.env]
|
|
127
|
+
# OPENAI_API_KEY = "{env:OPENAI_COMPAT_API_KEY}"
|
|
128
|
+
# OPENAI_BASE_URL = "{env:OPENAI_COMPAT_BASE_URL}"
|
|
129
|
+
#
|
|
130
|
+
# [workers.openai_compat.interactive]
|
|
131
|
+
# command = "openai-compatible-coder"
|
|
132
|
+
#
|
|
133
|
+
# [workers.anthropic_compat]
|
|
134
|
+
# extends = "claude"
|
|
135
|
+
# command = "anthropic-compatible-coder"
|
|
136
|
+
#
|
|
137
|
+
# [workers.anthropic_compat.model]
|
|
138
|
+
# name = "third-party-claude-model"
|
|
139
|
+
# provider = "anthropic-compatible"
|
|
140
|
+
#
|
|
141
|
+
# [workers.anthropic_compat.model.env]
|
|
142
|
+
# ANTHROPIC_API_KEY = "{env:ANTHROPIC_COMPAT_API_KEY}"
|
|
143
|
+
# ANTHROPIC_BASE_URL = "{env:ANTHROPIC_COMPAT_BASE_URL}"
|
|
144
|
+
#
|
|
145
|
+
# [workers.anthropic_compat.interactive]
|
|
146
|
+
# command = "anthropic-compatible-coder"
|
|
147
|
+
|
|
148
|
+
# A custom CLI starts from conservative generic defaults: isolated cwd, no injected
|
|
149
|
+
# vendor flags, and native resume disabled until explicitly configured.
|
|
150
|
+
# [workers.vendor]
|
|
151
|
+
# extends = "generic"
|
|
152
|
+
# command = "vendor-coder"
|
|
153
|
+
# args = ["run", "--stdin"]
|
|
154
|
+
|
|
38
155
|
[pairing]
|
|
39
156
|
main = "claude"
|
|
40
157
|
judge = "codex"
|
|
@@ -60,3 +177,19 @@ instructions = ["Review Actor work against Judge requirements. Lead with blockin
|
|
|
60
177
|
[ui]
|
|
61
178
|
showStatusBar = true
|
|
62
179
|
autoOpenFailedWorker = true
|
|
180
|
+
theme = "codex" # codex, graphite, paper, aurora, studio
|
|
181
|
+
|
|
182
|
+
[ui.colors]
|
|
183
|
+
# Optional color overrides. Values can be Chalk color names,
|
|
184
|
+
# #rgb/#rrggbb, rgb(r,g,b), or ansi256(0..255).
|
|
185
|
+
# chrome = "ansi256(233)"
|
|
186
|
+
# surface = "ansi256(234)"
|
|
187
|
+
# rail = "ansi256(236)"
|
|
188
|
+
# successSurface = "ansi256(22)"
|
|
189
|
+
# dangerSurface = "ansi256(52)"
|
|
190
|
+
# text = "ansi256(253)"
|
|
191
|
+
# muted = "ansi256(247)"
|
|
192
|
+
# accent = "ansi256(81)"
|
|
193
|
+
# warning = "ansi256(179)"
|
|
194
|
+
# success = "ansi256(114)"
|
|
195
|
+
# danger = "ansi256(210)"
|