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.
Files changed (78) hide show
  1. package/.parallel-codex/config.example.toml +136 -3
  2. package/README.md +299 -21
  3. package/dist/bootstrap.js +37 -17
  4. package/dist/cli-args.js +34 -3
  5. package/dist/cli-help.js +20 -0
  6. package/dist/cli-startup-preflight.js +18 -0
  7. package/dist/cli-startup-recovery.js +82 -0
  8. package/dist/cli-workspace-picker.js +330 -0
  9. package/dist/cli-workspace-transition.js +33 -0
  10. package/dist/cli-workspace.js +7 -71
  11. package/dist/cli.js +234 -24
  12. package/dist/core/collaboration-timeline.js +268 -0
  13. package/dist/core/config-errors.js +14 -0
  14. package/dist/core/config.js +297 -109
  15. package/dist/core/file-store.js +119 -6
  16. package/dist/core/lease-finalization.js +22 -0
  17. package/dist/core/paths.js +7 -0
  18. package/dist/core/process-identity.js +48 -0
  19. package/dist/core/process-mutation-turn.js +128 -0
  20. package/dist/core/process-ownership.js +276 -0
  21. package/dist/core/process-tree.js +90 -0
  22. package/dist/core/router-audit.js +155 -0
  23. package/dist/core/router-redaction.js +31 -0
  24. package/dist/core/router.js +462 -35
  25. package/dist/core/session-index.js +412 -88
  26. package/dist/core/session-manager.js +1110 -40
  27. package/dist/core/task-session-details.js +175 -0
  28. package/dist/core/task-state-machine.js +18 -0
  29. package/dist/core/workspace-commit-recovery.js +118 -0
  30. package/dist/core/workspace.js +19 -11
  31. package/dist/doctor.js +373 -34
  32. package/dist/domain/schemas.js +142 -7
  33. package/dist/orchestrator/collaboration-channel.js +289 -6
  34. package/dist/orchestrator/feature-plan.js +70 -0
  35. package/dist/orchestrator/final-acceptance.js +86 -0
  36. package/dist/orchestrator/judge-artifacts.js +236 -0
  37. package/dist/orchestrator/orchestrator.js +2086 -203
  38. package/dist/orchestrator/prompts.js +168 -5
  39. package/dist/orchestrator/supervisor-summary.js +56 -2
  40. package/dist/orchestrator/workspace-sandbox.js +927 -0
  41. package/dist/tui/App.js +3187 -161
  42. package/dist/tui/AppShell.js +196 -25
  43. package/dist/tui/CollaborationTimelineView.js +327 -0
  44. package/dist/tui/FeatureBoardView.js +232 -0
  45. package/dist/tui/InputBar.js +581 -57
  46. package/dist/tui/RouterDiagnosticsView.js +469 -0
  47. package/dist/tui/StatusBar.js +610 -57
  48. package/dist/tui/StatusDetailView.js +164 -0
  49. package/dist/tui/TaskSessionDetailView.js +222 -0
  50. package/dist/tui/TaskSessionsView.js +210 -0
  51. package/dist/tui/TerminalOutput.js +53 -9
  52. package/dist/tui/WorkerOutputView.js +1404 -161
  53. package/dist/tui/WorkerOverviewView.js +269 -0
  54. package/dist/tui/chat-history.js +25 -0
  55. package/dist/tui/chat-input.js +67 -19
  56. package/dist/tui/chat-paste.js +76 -0
  57. package/dist/tui/display-width.js +41 -3
  58. package/dist/tui/incremental-text-file.js +101 -0
  59. package/dist/tui/keyboard.js +49 -0
  60. package/dist/tui/markdown-text.js +14 -0
  61. package/dist/tui/raw-input-decoder.js +3 -0
  62. package/dist/tui/scrolling.js +2 -1
  63. package/dist/tui/status-line.js +360 -11
  64. package/dist/tui/task-memory.js +13 -1
  65. package/dist/tui/task-result.js +105 -0
  66. package/dist/tui/terminal-screen.js +13 -1
  67. package/dist/tui/theme-contrast.js +144 -0
  68. package/dist/tui/theme-preview.js +109 -0
  69. package/dist/tui/theme.js +158 -0
  70. package/dist/version.js +1 -1
  71. package/dist/workers/capabilities.js +213 -0
  72. package/dist/workers/live-probe.js +177 -0
  73. package/dist/workers/mock-adapter.js +73 -8
  74. package/dist/workers/native-attach.js +106 -16
  75. package/dist/workers/process-adapter.js +572 -77
  76. package/dist/workers/provider.js +26 -0
  77. package/dist/workers/registry.js +12 -20
  78. package/package.json +11 -2
@@ -0,0 +1,26 @@
1
+ export function workerProvider(config, id) {
2
+ const provider = config.workers[id];
3
+ if (!provider) {
4
+ throw new Error(`Worker provider is not configured: ${id}`);
5
+ }
6
+ return { id, config: provider };
7
+ }
8
+ export function workerProviders(config) {
9
+ return Object.entries(config.workers)
10
+ .map(([id, provider]) => ({ id, config: provider }))
11
+ .sort((left, right) => left.id.localeCompare(right.id));
12
+ }
13
+ export function assignableWorkerProviderIds(config) {
14
+ return workerProviders(config)
15
+ .filter((provider) => provider.config.assignable)
16
+ .map((provider) => provider.id);
17
+ }
18
+ export function workerProviderLabel(config, id) {
19
+ const provider = config.workers[id];
20
+ if (!provider) {
21
+ return id;
22
+ }
23
+ const model = provider.model.name.trim();
24
+ const remote = provider.model.provider.trim();
25
+ return [id, model, remote].filter(Boolean).join("/");
26
+ }
@@ -1,27 +1,19 @@
1
1
  import { MockWorkerAdapter } from "./mock-adapter.js";
2
2
  import { ProcessWorkerAdapter } from "./process-adapter.js";
3
+ import { workerProviders } from "./provider.js";
3
4
  export function createWorkerRegistry(config) {
4
- return new Map([
5
- ["mock", new MockWorkerAdapter()],
6
- [
7
- "codex",
8
- new ProcessWorkerAdapter(config.workers.codex.command, config.workers.codex.args, "codex", {
9
- timeoutMs: config.workers.codex.timeoutMs,
10
- idleTimeoutMs: config.workers.codex.idleTimeoutMs,
11
- firstOutputTimeoutMs: config.workers.codex.firstOutputTimeoutMs,
12
- model: config.workers.codex.model
5
+ return new Map(workerProviders(config).map(({ id, config: provider }) => [
6
+ id,
7
+ id === "mock"
8
+ ? new MockWorkerAdapter()
9
+ : new ProcessWorkerAdapter(provider.command, provider.args, id, {
10
+ timeoutMs: provider.timeoutMs,
11
+ idleTimeoutMs: provider.idleTimeoutMs,
12
+ firstOutputTimeoutMs: provider.firstOutputTimeoutMs,
13
+ model: provider.model,
14
+ capabilities: provider.capabilities
13
15
  })
14
- ],
15
- [
16
- "claude",
17
- new ProcessWorkerAdapter(config.workers.claude.command, config.workers.claude.args, "claude", {
18
- timeoutMs: config.workers.claude.timeoutMs,
19
- idleTimeoutMs: config.workers.claude.idleTimeoutMs,
20
- firstOutputTimeoutMs: config.workers.claude.firstOutputTimeoutMs,
21
- model: config.workers.claude.model
22
- })
23
- ]
24
- ]);
16
+ ]));
25
17
  }
26
18
  export function getAdapter(registry, engine) {
27
19
  const adapter = registry.get(engine);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parallel-codex-tui",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "A TypeScript TUI wrapper for routed parallel coding with Codex and Claude workers.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -24,7 +24,7 @@
24
24
  "agent-orchestration"
25
25
  ],
26
26
  "engines": {
27
- "node": ">=26.0.0"
27
+ "node": ">=24.15.0"
28
28
  },
29
29
  "bin": {
30
30
  "parallel-codex-tui": "dist/cli.js"
@@ -40,6 +40,8 @@
40
40
  "build": "tsc -p tsconfig.json",
41
41
  "postbuild": "node -e \"require('node:fs').chmodSync('dist/cli.js', 0o755)\"",
42
42
  "prepack": "npm run build",
43
+ "pretest": "node scripts/fix-node-pty-permissions.mjs",
44
+ "verify:package": "node scripts/verify-package.mjs",
43
45
  "test": "vitest run",
44
46
  "test:watch": "vitest",
45
47
  "typecheck": "tsc --noEmit -p tsconfig.typecheck.json",
@@ -48,8 +50,10 @@
48
50
  "dependencies": {
49
51
  "@iarna/toml": "^2.2.5",
50
52
  "@xterm/headless": "^6.0.0",
53
+ "chalk": "^5.3.0",
51
54
  "ink": "^5.0.1",
52
55
  "ink-text-input": "^6.0.0",
56
+ "marked": "^18.0.6",
53
57
  "node-pty": "^1.1.0",
54
58
  "react": "^18.3.1",
55
59
  "zod": "^3.25.0"
@@ -61,5 +65,10 @@
61
65
  "tsx": "^4.19.0",
62
66
  "typescript": "^5.8.0",
63
67
  "vitest": "^3.2.0"
68
+ },
69
+ "allowScripts": {
70
+ "esbuild@0.28.1": true,
71
+ "fsevents@2.3.3": true,
72
+ "node-pty@1.1.0": true
64
73
  }
65
74
  }