@oxgeneral/orch 0.2.0

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 (87) hide show
  1. package/LICENSE +21 -0
  2. package/dist/App-CPQPQTZU.js +4751 -0
  3. package/dist/agent-J62U7ABO.js +157 -0
  4. package/dist/chunk-2B32FPEB.js +11 -0
  5. package/dist/chunk-2B32FPEB.js.map +1 -0
  6. package/dist/chunk-2VSAM7RH.js +166 -0
  7. package/dist/chunk-33QNTNR6.js +46 -0
  8. package/dist/chunk-45K2XID7.js +29 -0
  9. package/dist/chunk-6GFVB6EK.js +101 -0
  10. package/dist/chunk-6HENRUYZ.js +2 -0
  11. package/dist/chunk-6HENRUYZ.js.map +1 -0
  12. package/dist/chunk-AELEEEV3.js +92 -0
  13. package/dist/chunk-AELEEEV3.js.map +1 -0
  14. package/dist/chunk-CHIP7O6V.js +83 -0
  15. package/dist/chunk-CIIE6LNG.js +217 -0
  16. package/dist/chunk-E3TCKHU6.js +13 -0
  17. package/dist/chunk-E3TCKHU6.js.map +1 -0
  18. package/dist/chunk-ED47GL3F.js +29 -0
  19. package/dist/chunk-HNKJ4IF7.js +177 -0
  20. package/dist/chunk-HXYAZGLP.js +15 -0
  21. package/dist/chunk-IRN2U2NE.js +79 -0
  22. package/dist/chunk-IZYSGYXG.js +2 -0
  23. package/dist/chunk-IZYSGYXG.js.map +1 -0
  24. package/dist/chunk-O5AO5QIR.js +76 -0
  25. package/dist/chunk-P6ATSXGL.js +107 -0
  26. package/dist/chunk-PBFE5V3G.js +2 -0
  27. package/dist/chunk-PBFE5V3G.js.map +1 -0
  28. package/dist/chunk-PNE6LQRF.js +5 -0
  29. package/dist/chunk-POUC4CPC.js +2 -0
  30. package/dist/chunk-POUC4CPC.js.map +1 -0
  31. package/dist/chunk-TX7WOFCW.js +59 -0
  32. package/dist/chunk-VTA74YWX.js +291 -0
  33. package/dist/chunk-XI4TU6VU.js +50 -0
  34. package/dist/chunk-ZU6AY2VU.js +2 -0
  35. package/dist/chunk-ZU6AY2VU.js.map +1 -0
  36. package/dist/claude-GH6P2DC5.js +4 -0
  37. package/dist/claude-S47YTIHU.js +2 -0
  38. package/dist/claude-S47YTIHU.js.map +1 -0
  39. package/dist/cli.js +205 -0
  40. package/dist/codex-2CH57B7G.js +2 -0
  41. package/dist/codex-2CH57B7G.js.map +1 -0
  42. package/dist/codex-U7LTJTX6.js +115 -0
  43. package/dist/config-VN4MYHSY.js +75 -0
  44. package/dist/container-74P43KDY.js +1532 -0
  45. package/dist/context-EPHCF34F.js +83 -0
  46. package/dist/cursor-3DI5GKRF.js +92 -0
  47. package/dist/cursor-QFUNKPCQ.js +2 -0
  48. package/dist/cursor-QFUNKPCQ.js.map +1 -0
  49. package/dist/doctor-BK46WCQ5.js +67 -0
  50. package/dist/doctor-service-A34DHPKI.js +2 -0
  51. package/dist/doctor-service-NTWBWOM2.js +2 -0
  52. package/dist/doctor-service-NTWBWOM2.js.map +1 -0
  53. package/dist/goal-KGAIM3ZK.js +110 -0
  54. package/dist/index.d.ts +1356 -0
  55. package/dist/index.js +6 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/init-QBWCEDCI.js +152 -0
  58. package/dist/logs-PYEKMQE2.js +207 -0
  59. package/dist/msg-BBIPCGDO.js +95 -0
  60. package/dist/orchestrator-TAFBYQQ5.js +2 -0
  61. package/dist/orchestrator-TAFBYQQ5.js.map +1 -0
  62. package/dist/orchestrator-VGYKSOZJ.js +1292 -0
  63. package/dist/output-5VQVCJ2K.js +2 -0
  64. package/dist/process-manager-HUVNAPQV.js +2 -0
  65. package/dist/process-manager-TLZOTO4Y.js +2 -0
  66. package/dist/process-manager-TLZOTO4Y.js.map +1 -0
  67. package/dist/registry-PQWRVNF2.js +2 -0
  68. package/dist/registry-UQAHK77P.js +2 -0
  69. package/dist/registry-UQAHK77P.js.map +1 -0
  70. package/dist/run-4GSZFGQZ.js +95 -0
  71. package/dist/shell-5ZNXFGXV.js +3 -0
  72. package/dist/shell-OGTSH4RJ.js +3 -0
  73. package/dist/shell-OGTSH4RJ.js.map +1 -0
  74. package/dist/status-KIISF542.js +56 -0
  75. package/dist/task-NUCRHYW7.js +209 -0
  76. package/dist/team-IBUP5XV4.js +97 -0
  77. package/dist/template-engine-322SCRR6.js +2 -0
  78. package/dist/template-engine-322SCRR6.js.map +1 -0
  79. package/dist/template-engine-3CDRZNMJ.js +3 -0
  80. package/dist/tui-WWZA73IO.js +225 -0
  81. package/dist/update-RJ4IYACQ.js +64 -0
  82. package/dist/update-check-4RV7Z6WT.js +2 -0
  83. package/dist/workspace-manager-47KI7B27.js +179 -0
  84. package/dist/workspace-manager-7M46ESUL.js +2 -0
  85. package/dist/workspace-manager-7M46ESUL.js.map +1 -0
  86. package/package.json +79 -0
  87. package/readme.md +270 -0
package/readme.md ADDED
@@ -0,0 +1,270 @@
1
+ <p align="center">
2
+ <img src="assets/logo.svg" alt="ORCH" height="60" />
3
+ <p align="center">
4
+ <strong>Stop babysitting AI agents. Start orchestrating them.</strong><br/>
5
+ One CLI to run Claude, Codex, Cursor, and shell scripts as a team — in parallel, with retries, from your terminal.
6
+ </p>
7
+ <p align="center">
8
+ <a href="https://github.com/oxgeneral/ORCH/stargazers"><img src="https://img.shields.io/github/stars/oxgeneral/ORCH?style=social" alt="GitHub Stars" /></a>
9
+ <a href="https://landing-xi-murex.vercel.app/"><img src="https://img.shields.io/badge/website-landing-amber" alt="Website" /></a>
10
+ <a href="https://github.com/oxgeneral/ORCH/packages"><img src="https://img.shields.io/badge/npm-@oxgeneral/orch-cb0000" alt="GitHub Packages" /></a>
11
+ <a href="#get-started-in-30-seconds"><img src="https://img.shields.io/badge/setup-one%20command-brightgreen" alt="One command setup" /></a>
12
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License" /></a>
13
+ <a href="#development"><img src="https://img.shields.io/badge/tests-844%20passing-brightgreen" alt="Tests" /></a>
14
+ <a href="#architecture"><img src="https://img.shields.io/badge/TypeScript-strict-blue" alt="TypeScript strict" /></a>
15
+ </p>
16
+ </p>
17
+
18
+ ---
19
+
20
+ <p align="center">
21
+ <img src="assets/screenshot-tui.png" alt="ORCH TUI Dashboard — real-time task monitoring, agent activity feed, and keyboard-driven controls" width="100%" />
22
+ <br/>
23
+ <em>Real-time TUI dashboard: tasks running, agents working, activity streaming — all from one terminal.</em>
24
+ </p>
25
+
26
+ ---
27
+
28
+ ## You know the pain
29
+
30
+ You have 3 AI assistants open. Claude is implementing auth in one terminal. Codex is writing tests in another. A shell script runs migrations somewhere else.
31
+
32
+ You're the human router — switching tabs, copy-pasting context, manually tracking who's doing what, restarting crashed agents.
33
+
34
+ **That's not engineering. That's babysitting.**
35
+
36
+ ## What if your AI agents worked like a real team?
37
+
38
+ ```
39
+ $ orch run --all
40
+
41
+ orch · watching · 3 running · 0 queued
42
+
43
+ 14:32 ▶ Backend A → "Implement OAuth2 flow"
44
+ 14:32 ▶ Backend B → "Write API integration tests"
45
+ 14:32 ▶ QA → "Verify auth edge cases"
46
+ 14:35 ✓ Backend B DONE (3m 12s · 4,200 tokens)
47
+ 14:38 ✓ Backend A DONE (6m 44s · 8,100 tokens)
48
+ 14:39 ↻ QA RETRY attempt 2 · found regression
49
+ 14:41 ✓ QA DONE (2m 15s · 2,800 tokens)
50
+ ```
51
+
52
+ One command. Three agents. Zero tab-switching.
53
+
54
+ ## Get started in 30 seconds
55
+
56
+ ### Option 1: Install from GitHub Packages
57
+
58
+ ```bash
59
+ npm install -g @oxgeneral/orch --registry=https://npm.pkg.github.com
60
+
61
+ cd ~/your-project
62
+ orch
63
+ ```
64
+
65
+ ### Option 2: Clone and build
66
+
67
+ ```bash
68
+ git clone https://github.com/oxgeneral/ORCH.git && cd ORCH
69
+ npm install && npm run build
70
+
71
+ # Go to your project and launch
72
+ cd ~/your-project
73
+ orch
74
+ ```
75
+
76
+ That's it. The TUI opens, you add agents and tasks right from the dashboard — no CLI memorization needed.
77
+
78
+ **Requirements:** Node.js >= 20
79
+
80
+ ## Why teams choose ORCH
81
+
82
+ ### Parallel execution that actually works
83
+ Run up to N agents simultaneously. ORCH handles dispatching, slot management, and prevents double-assignments. You set `max_concurrent_agents: 5` and forget about it.
84
+
85
+ ### Agents that don't give up
86
+ Failed? ORCH retries with exponential backoff. Stalled? Automatic detection kills the zombie and re-queues. Crashed? The next tick picks it up. Your tasks finish even when individual runs fail.
87
+
88
+ ### A real state machine, not a TODO list
89
+ ```
90
+ todo → in_progress → review → done
91
+ ↘ retrying → in_progress
92
+ ↘ failed
93
+ ```
94
+ Every transition is validated. No task gets lost. No agent runs something that's already done.
95
+
96
+ ### Real-time dashboard in your terminal
97
+ ```bash
98
+ orch # launches TUI
99
+ ```
100
+ Full-screen Ink/React dashboard with:
101
+ - Live task & agent status with three tabs: **Tasks**, **Agents**, **Goals**
102
+ - Activity feed with token counts
103
+ - Keyboard-driven: create tasks, assign agents, approve reviews — without leaving the terminal
104
+ - Command bar with `/task add`, `/agent add`, tab completion
105
+
106
+ ### Goals — strategic direction for your agents
107
+ Define high-level goals and let ORCH autonomously generate tasks to achieve them. Goals have statuses (`active`, `paused`, `achieved`, `abandoned`), can be assigned to specific agents, and appear in a dedicated TUI tab for tracking.
108
+
109
+ ### Teams — organize agents into squads
110
+ Group agents into teams with a lead, shared task pools, and auto-claiming. Each team member has a role and badge. The lead coordinates work distribution, and the team pool keeps related tasks together.
111
+
112
+ ### Inter-agent messaging
113
+ Agents communicate through direct messages and broadcasts. Send context between agents, coordinate across teams, and keep everyone in sync — all via CLI or programmatically during runs.
114
+
115
+ ### Reactive dispatch
116
+ No more waiting for the next 30-second poll cycle. When a task is created, ORCH dispatches it immediately (500ms debounce). Your agents start working in under a second.
117
+
118
+ ### Autonomous mode
119
+ Set a goal, and ORCH generates work for idle agents automatically. Goal-directed task creation means your team stays productive without manual task assignment.
120
+
121
+ ### Shared context store
122
+ A key-value store for inter-agent data exchange. Agents save results, share findings, and build on each other's work — with optional TTL for ephemeral data.
123
+
124
+ ### Global config & settings wizard
125
+ Configure activity filters, display preferences, and agent defaults through the TUI settings wizard or `orch config edit`. No manual YAML editing required.
126
+
127
+ ### Zero infrastructure
128
+ All state lives in `.orchestry/` — YAML configs, JSON state, JSONL event logs. No database. No cloud. No Docker. `git clone` and you're running.
129
+
130
+ ### Works with any AI tool
131
+ | Adapter | What it runs |
132
+ |---------|-------------|
133
+ | `claude` | Claude Code CLI (`claude --print`) |
134
+ | `codex` | OpenAI Codex CLI (`codex exec --json`) |
135
+ | `cursor` | Cursor Agent CLI (headless mode) |
136
+ | `shell` | Any command: `npm test`, `python bot.py`, custom scripts |
137
+
138
+ ## Full CLI reference
139
+
140
+ ```bash
141
+ # Setup
142
+ orch init # Initialize project
143
+ orch doctor # System diagnostics
144
+
145
+ # Tasks
146
+ orch task add "Title" -p 1 # Create task (priority 1-4)
147
+ orch task list # List all tasks
148
+ orch task list --status todo # Filter by status
149
+ orch task assign <task> <agent> # Manual assignment
150
+ orch task cancel <task> # Cancel running task
151
+
152
+ # Agents
153
+ orch agent add <name> --adapter claude --role "Role description"
154
+ orch agent list # Status of all agents
155
+ orch agent disable/enable <id> # Toggle availability
156
+
157
+ # Teams
158
+ orch team create <name> --lead <agent-id> # Create a team
159
+ orch team list # List all teams
160
+ orch team join <team-id> <agent-id> # Add agent to team
161
+ orch team leave <team-id> <agent-id> # Remove agent from team
162
+ orch team set-lead <team-id> <agent-id> # Transfer lead role
163
+ orch team add-task <team-id> <task-id> # Add task to team pool
164
+ orch team disband <id> # Disband a team
165
+
166
+ # Messaging
167
+ orch msg send <agent-id> "message" -s "subject" # Direct message
168
+ orch msg broadcast "message" -s "subject" # Broadcast to all
169
+ orch msg broadcast "message" --team <team-id> # Broadcast to team
170
+ orch msg inbox <agent-id> # View inbox
171
+
172
+ # Goals
173
+ orch goal add "Title" --description "desc" # Create a goal
174
+ orch goal list # List all goals
175
+ orch goal list --status active # Filter by status
176
+ orch goal show <id> # Goal details
177
+ orch goal status <id> achieved # Change status
178
+ orch goal update <id> --title "New title" # Update fields
179
+ orch goal delete <id> # Delete a goal
180
+
181
+ # Shared Context
182
+ orch context set <key> <value> # Store shared data
183
+ orch context get <key> # Retrieve shared data
184
+ orch context list # List all entries
185
+
186
+ # Execution
187
+ orch run <task-id> # Run single task
188
+ orch run --all # Run everything
189
+ orch run --watch # Daemon mode
190
+
191
+ # Monitoring
192
+ orch status # Quick overview
193
+ orch logs <run-id> # View run logs
194
+ orch tui # Interactive dashboard
195
+
196
+ # Config
197
+ orch config edit # Open in $EDITOR
198
+
199
+ # Updates
200
+ orch update # Check for and install latest version
201
+ ```
202
+
203
+ **Aliases:** `orchestry`, `orch`, `ao`
204
+
205
+ ## Architecture
206
+
207
+ Clean DDD with dependency injection — no frameworks, no decorators, pure TypeScript:
208
+
209
+ ```
210
+ src/
211
+ ├── domain/ # Models & state machine
212
+ │ ├── task.ts # Task entity, priorities, statuses
213
+ │ ├── agent.ts # Agent entity, stats, badges
214
+ │ ├── run.ts # Run entity, event types
215
+ │ ├── goal.ts # Goal entity, statuses
216
+ │ ├── team.ts # Team entity, members, pools
217
+ │ ├── message.ts # Message entity, channels
218
+ │ ├── config.ts # Project config schema
219
+ │ ├── global-config.ts # Global user settings
220
+ │ ├── default-agents.ts # Default agent definitions
221
+ │ ├── transitions.ts # State machine transitions
222
+ │ ├── scope.ts # File scope matching
223
+ │ ├── state.ts # Orchestrator state
224
+ │ ├── events.ts # Event type definitions
225
+ │ └── errors.ts # Domain error types
226
+ ├── application/ # Orchestrator engine, services, event bus
227
+ ├── infrastructure/
228
+ │ ├── adapters/ # Claude, Codex, Cursor, Shell (pluggable)
229
+ │ ├── storage/ # File-based (YAML/JSON/JSONL)
230
+ │ ├── process/ # PID management, graceful kill
231
+ │ ├── template/ # LiquidJS template engine
232
+ │ └── workspace/ # Isolation modes (shared/worktree/isolated)
233
+ ├── cli/ # Commander.js commands
234
+ └── tui/ # Ink + React dashboard
235
+ ```
236
+
237
+ ## Development
238
+
239
+ ```bash
240
+ npm run dev # Run via tsx
241
+ npm run build # Build ESM + DTS
242
+ npm test # 844 tests via Vitest
243
+ npm run typecheck # Strict TypeScript
244
+ ```
245
+
246
+ **Performance:** CLI startup is ~40% faster thanks to lazy command imports — heavy dependencies (orchestrator, adapters, LiquidJS) are loaded only when the relevant subcommand is invoked. `--help` and lightweight commands like `task list` skip the full container entirely.
247
+
248
+ ## Community
249
+
250
+ We just hit **10 stars** — small number, real users. Every star so far came from someone who actually runs multi-agent workflows and needed something better than tab-switching.
251
+
252
+ **Next milestone: 25 stars** — when we get there, we'll add a public "Used by" showcase. If you're already running ORCH in your workflow, [open an issue](https://github.com/oxgeneral/ORCH/issues) and tell us — you'll be first on the list.
253
+
254
+ If ORCH saves you time, let others find it too:
255
+
256
+ - **⭐ Star the repo** — helps other developers find ORCH: [github.com/oxgeneral/ORCH](https://github.com/oxgeneral/ORCH)
257
+ - **Open an issue** if something breaks or could be better
258
+ - **Submit a PR** — see [CONTRIBUTING.md](CONTRIBUTING.md)
259
+
260
+ ## Used by / Early Adopters
261
+
262
+ > This section will be filled as the community grows. Using ORCH in your project? [Let us know](https://github.com/oxgeneral/ORCH/issues/new?title=Using+ORCH+in+production&body=Tell+us+about+your+setup) — we'd love to feature you here.
263
+
264
+ <!-- ADOPTERS_START -->
265
+ *Be the first to add your project here — open an issue with "Using ORCH in production".*
266
+ <!-- ADOPTERS_END -->
267
+
268
+ ## License
269
+
270
+ [MIT](LICENSE) — use it however you want.