@compozy/cli 0.0.19 → 0.1.1

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/LICENSE CHANGED
@@ -1,52 +1,21 @@
1
- Business Source License 1.1 (Variante Personalizada para Compozy)
2
-
3
- License text copyright © 2017 MariaDB Corporation Ab, All Rights Reserved.
4
- “Business Source License” is a trademark of MariaDB Corporation Ab.
5
-
6
- Parameters
7
-
8
- Licensor: NauckGroupt LTDA
9
-
10
- Licensed Work: Compozy Version 1.0
11
-
12
- The Licensed Work is © 2025 NauckGroupt LTDA
13
-
14
- Additional Use Grant: You may use the Licensed Work in production for any purpose, including deploying workflows generated by Compozy to production environments using provided Dockerfiles for commercial use. However, you may not provide automated deployment platforms or cloud hosting services that enable third parties to automatically deploy, host, or manage instances of the Licensed Work (similar to services like Vercel for automated deployments). This restriction does not apply to internal use, personal projects, non-commercial hosting, or manual deployments of generated workflows.
15
-
16
- Change Date: 2029-07-28 (4 anos após a data de lançamento inicial em 28 de julho de 2025)
17
-
18
- Change License: Apache License, Version 2.0
19
-
20
- Terms
21
-
22
- The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and make non-production use of the Licensed Work. The Licensor may make an Additional Use Grant, above, permitting limited production use.
23
-
24
- Effective on the Change Date, or the fourth anniversary of the first publicly available distribution of a specific version of the Licensed Work under this License, whichever comes first, the Licensor hereby grants you rights under the terms of the Change License, and the rights granted in the paragraph above terminate.
25
-
26
- If your use of the Licensed Work does not comply with the requirements currently in effect as described in this License, you must purchase a commercial license from the Licensor, its affiliated entities, or authorized resellers, or you must refrain from using the Licensed Work.
27
-
28
- All copies of the original and modified Licensed Work, and derivative works of the Licensed Work, are subject to this License. This License applies separately for each version of the Licensed Work and the Change Date may vary for each version of the Licensed Work released by Licensor.
29
-
30
- You must conspicuously display this License on each original or modified copy of the Licensed Work. If you receive the Licensed Work in original or modified form from a third party, the terms and conditions set forth in this License apply to your use of that work.
31
-
32
- Any use of the Licensed Work in violation of this License will automatically terminate your rights under this License for the current and all other versions of the Licensed Work.
33
-
34
- This License does not grant you any right in any trademark or logo of Licensor or its affiliates (provided that you may use a trademark or logo of Licensor as expressly required by this License).
35
-
36
- TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE.
37
-
38
- Covenants of Licensor
39
-
40
- In consideration of the right to use this License’s text and the “Business Source License” name and trademark, Licensor covenants to the Compozy community, and to all other recipients of the licensed work to be provided by Licensor:
41
-
42
- 1. To specify as the Change License the Apache License Version 2.0 or any later version.
43
-
44
- 2. To either: (a) specify an additional grant of rights to use that does not impose any additional restriction on the right granted in this License, as the Additional Use Grant; or (b) insert the text “None”.
45
-
46
- 3. To specify a Change Date.
47
-
48
- 4. Not to modify this License in any other way.
49
-
50
- Notice
51
-
52
- The Business Source License (this document, or the “License”) is not an Open Source license. However, the Licensed Work will eventually be made available under an Open Source License, as stated in this License.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 NauckGroup LTDA
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,103 +1,441 @@
1
1
  <div align="center">
2
- <img src="./docs/public/banner.png" alt="Compozy Logo" width="100%">
3
- <br>
4
- <br>
2
+ <h1>Compozy</h1>
3
+ <p><strong>Orchestrate AI coding agents from idea to shipped code — in a single pipeline.</strong></p>
5
4
  <p>
6
5
  <a href="https://github.com/compozy/compozy/actions/workflows/ci.yml">
7
- <img src="https://github.com/compozy/compozy/actions/workflows/ci.yml/badge.svg" alt="Build Status">
6
+ <img src="https://github.com/compozy/compozy/actions/workflows/ci.yml/badge.svg" alt="CI">
8
7
  </a>
9
8
  <a href="https://pkg.go.dev/github.com/compozy/compozy">
10
9
  <img src="https://pkg.go.dev/badge/github.com/compozy/compozy.svg" alt="Go Reference">
11
10
  </a>
11
+ <a href="https://goreportcard.com/report/github.com/compozy/compozy">
12
+ <img src="https://goreportcard.com/badge/github.com/compozy/compozy" alt="Go Report Card">
13
+ </a>
14
+ <a href="LICENSE">
15
+ <img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT">
16
+ </a>
17
+ <a href="https://github.com/compozy/compozy/releases">
18
+ <img src="https://img.shields.io/github/v/release/compozy/compozy?include_prereleases" alt="Release">
19
+ </a>
12
20
  </p>
13
21
  </div>
14
22
 
15
- > [!WARNING]
16
- > ✨ Alpha Release is Here! This project is currently in alpha. Please use with caution, as it may contain bugs and undergo significant changes.
23
+ One CLI to replace scattered prompts, manual task tracking, and copy-paste review cycles. Compozy drives the full lifecycle of AI-assisted development: product ideation, technical specification, task breakdown with codebase-informed enrichment, concurrent execution across agents, and automated PR review remediation.
24
+
25
+ <div align="center">
26
+ <img src="imgs/screenshot.png" alt="Compozy Agent Loop" width="100%">
27
+ </div>
17
28
 
18
- ## Next-level Agentic Orchestration Platform
29
+ ## Highlights
19
30
 
20
- **Compozy** orchestrates multi-agent AI systems with ease. Compozy's enterprise-grade platform uses declarative YAML to deliver scalable, reliable, and cost-efficient distributed workflows, simplifying complex fan-outs, debugging, and monitoring for production-ready automation.
31
+ - **One command, 40+ agents.** Install bundled skills into Claude Code, Codex, Cursor, Droid, OpenCode, Pi, and 40+ other agents and editors with `compozy setup` — no npm, pipx, or external tools required.
32
+ - **Idea to code in 5 steps.** Structured pipeline: PRD → TechSpec → Tasks → Execution → Review. Each phase produces plain markdown artifacts that feed into the next.
33
+ - **Codebase-aware enrichment.** Tasks aren't generic prompts. Compozy spawns parallel agents to explore your codebase, discover patterns, and ground every task in real project context.
34
+ - **Multi-agent execution.** Run tasks through Claude Code, Codex, Cursor, Droid, OpenCode, or Pi — just change `--ide`. Concurrent batch processing with configurable timeouts, retries, and exponential backoff, all with a live terminal UI.
35
+ - **Workflow memory between runs.** Agents inherit context from every previous task — decisions, learnings, errors, and handoffs. Two-tier markdown memory with automatic compaction keeps context fresh without manual bookkeeping.
36
+ - **Provider-agnostic reviews.** Fetch review comments from CodeRabbit, GitHub, or run AI-powered reviews internally. All normalize to the same format. Provider threads resolve automatically after fixes.
37
+ - **Markdown everywhere.** PRDs, specs, tasks, reviews, and ADRs are human-readable markdown files. Version-controlled, diffable, editable between steps. No vendor lock-in.
38
+ - **Frontmatter for machine-readable metadata.** Tasks and review issues keep parseable metadata in standard YAML frontmatter instead of custom XML tags.
39
+ - **Single binary, local-first.** Compiles to one Go binary with zero runtime dependencies. Your code and data stay on your machine.
40
+ - **Embeddable.** Use as a standalone CLI or import as a Go package into your own tools.
21
41
 
22
- ## Key Features
42
+ ## 📦 Installation
23
43
 
24
- - **Declarative Workflows**: Define complex AI workflows with simple, human-readable YAML.
25
- - **Developer-Focused**: A comprehensive CLI with hot-reloading for a seamless development experience.
26
- - **Advanced Task Orchestration**: 8 powerful task types including parallel, sequential, and conditional execution.
27
- - **Extensible Tools**: Write custom tools in TypeScript/JavaScript to extend agent capabilities.
28
- - **Multi-Model Support**: Integrates with 8+ LLM providers like OpenAI, Anthropic, Google, Cerebras, and local models.
29
- - **Enterprise-Ready**: With Temporal behind the scenes, Compozy is built for production with persistence, monitoring, and security features.
30
- - **High Performance**: Built with Go at its core, Compozy delivers exceptional speed and efficiency.
44
+ #### Homebrew
31
45
 
32
- ## 🚀 Getting Started
46
+ #### NPM
33
47
 
34
- Get up and running with Compozy in just a few minutes.
48
+ ```bash
49
+ npm install -g @compozy/cli
50
+ ```
35
51
 
36
- ### Install via Homebrew (macOS/Linux)
52
+ #### From Source
37
53
 
38
54
  ```bash
39
- brew tap compozy/homebrew-compozy
40
- brew install compozy
55
+ git clone git@github.com:compozy/compozy.git
56
+ cd compozy && make verify && go build ./cmd/compozy
41
57
  ```
42
58
 
43
- ### Install via NPM
59
+ Then install bundled skills into your AI agents:
44
60
 
45
61
  ```bash
46
- npm install -g @compozy/cli
47
- # Or with Yarn
48
- yarn global add @compozy/cli
49
- # Or with pnpm
50
- pnpm add -g @compozy/cli
62
+ compozy setup # interactive — pick agents and skills
63
+ compozy setup --all # install everything to every detected agent
64
+ ```
65
+
66
+ ## 🔄 How It Works
67
+
68
+ ```
69
+ compozy setup Install skills (once per project)
70
+
71
+
72
+ /cy-create-prd user-auth .compozy/tasks/user-auth/_prd.md
73
+ │ + Architecture Decision Records
74
+
75
+ /cy-create-techspec user-auth .compozy/tasks/user-auth/_techspec.md
76
+
77
+
78
+ /cy-create-tasks user-auth .compozy/tasks/user-auth/task_01.md … task_N.md
79
+
80
+
81
+ compozy sync --name user-auth Refresh task workflow _meta.md
82
+
83
+
84
+ compozy start --name user-auth AI agents execute each task
85
+ │ ↕ .compozy/tasks/user-auth/memory/
86
+
87
+
88
+ compozy fetch-reviews / /cy-review-round .compozy/tasks/user-auth/reviews-001/
89
+
90
+
91
+ compozy fix-reviews --name user-auth Issues triaged, fixed, resolved
92
+
93
+
94
+ Repeat until clean → Ship
95
+ ```
96
+
97
+ Every artifact is a plain markdown file in `.compozy/tasks/<name>/`. You can read, edit, or version-control any of them between steps.
98
+
99
+ Task and review issue files use YAML frontmatter for parseable metadata such as `status`, `domain`, `severity`, and `provider_ref`. Task workflow `_meta.md` files can be refreshed explicitly with `compozy sync`. If you have an older project with XML-tagged artifacts, run `compozy migrate` once before using `start` or `fix-reviews`.
100
+
101
+ ## 🚀 Quick Start
102
+
103
+ This walkthrough builds a feature called **user-auth** from idea to shipped code.
104
+
105
+ ### 1. Install skills
106
+
107
+ ```bash
108
+ compozy setup --all --yes
109
+ ```
110
+
111
+ Auto-detects installed agents and copies (or symlinks) skills into their configuration directories.
112
+
113
+ ### 2. Create a PRD
114
+
115
+ Inside your AI agent (Claude Code, Codex, Cursor, OpenCode, Pi, etc.):
116
+
117
+ ```
118
+ /cy-create-prd user-auth
119
+ ```
120
+
121
+ Interactive brainstorming session — asks clarifying questions, spawns parallel agents to research your codebase and the web, produces a business-focused PRD with ADRs.
122
+
123
+ ### 3. Create a TechSpec
124
+
125
+ ```
126
+ /cy-create-techspec user-auth
127
+ ```
128
+
129
+ Reads your PRD, explores the codebase architecture, asks technical clarification questions. Produces architecture specs, API designs, and data models.
130
+
131
+ ### 4. Break down into tasks
132
+
133
+ ```
134
+ /cy-create-tasks user-auth
135
+ ```
136
+
137
+ Analyzes both documents, explores your codebase for relevant files and patterns, produces individually executable task files with status tracking, context, and acceptance criteria.
138
+
139
+ ### 5. Execute tasks
140
+
141
+ ```bash
142
+ compozy start --name user-auth --ide claude
143
+ ```
144
+
145
+ Each pending task is processed sequentially — the agent reads the spec, implements the code, validates it, and updates the task status. Use `--dry-run` to preview prompts without executing.
146
+
147
+ ### 6. Review
148
+
149
+ **Option A** — AI-powered review inside your agent:
150
+
151
+ ```
152
+ /cy-review-round user-auth
153
+ ```
154
+
155
+ **Option B** — Fetch from an external provider:
156
+
157
+ ```bash
158
+ compozy fetch-reviews --provider coderabbit --pr 42 --name user-auth
159
+ ```
160
+
161
+ Both produce the same output: `.compozy/tasks/user-auth/reviews-001/issue_*.md`
162
+
163
+ ### 7. Fix review issues
164
+
165
+ ```bash
166
+ compozy fix-reviews --name user-auth --ide claude --concurrent 2 --batch-size 3
167
+ ```
168
+
169
+ Agents triage each issue as valid or invalid, implement fixes for valid issues, and update statuses. Provider threads are resolved automatically.
170
+
171
+ ### 8. Iterate and ship
172
+
173
+ Repeat steps 6–7. Each cycle creates a new review round (`reviews-002/`, `reviews-003/`), preserving full history. When clean — merge and ship.
174
+
175
+ ## 🧩 Skills
176
+
177
+ Compozy bundles 8 skills that its workflows depend on. They run inside your AI agent — no context switching to external tools.
178
+
179
+ | Skill | Purpose |
180
+ | --- | --- |
181
+ | `cy-create-prd` | Interactive brainstorming → Product Requirements Document with ADRs |
182
+ | `cy-create-techspec` | PRD → Technical Specification with architecture exploration |
183
+ | `cy-create-tasks` | PRD + TechSpec → Independently implementable task files |
184
+ | `cy-execute-task` | Executes one task end-to-end: implement, validate, track, commit |
185
+ | `cy-workflow-memory` | Maintains cross-task context so agents pick up where the last one left off |
186
+ | `cy-review-round` | Comprehensive code review → structured issue files |
187
+ | `cy-fix-reviews` | Triage, fix, verify, and resolve review issues |
188
+ | `cy-final-verify` | Enforces verification evidence before any completion claim |
189
+
190
+ ### 🧠 Workflow Memory
191
+
192
+ When agents execute tasks, context gets lost between runs — decisions made, errors hit, patterns discovered. Compozy solves this with a two-tier memory system that gives each agent a running history of the workflow.
193
+
194
+ Every task execution automatically bootstraps two markdown files inside `.compozy/tasks/<name>/memory/`:
195
+
196
+ | File | Scope | What goes here |
197
+ | --- | --- | --- |
198
+ | `MEMORY.md` | Cross-task, shared | Architecture decisions, discovered patterns, open risks, handoffs between tasks |
199
+ | `task_01.md` | Single task | Objective snapshot, files touched, errors hit, what's ready for the next run |
200
+
201
+ **How it works:**
202
+
203
+ 1. Before a task runs, Compozy creates the memory directory and scaffolds both files with section templates if they don't exist yet.
204
+ 2. The agent reads both memory files before writing any code — treating them as mandatory context, not optional notes.
205
+ 3. During execution, the agent keeps task memory current: decisions, learnings, errors, and corrections.
206
+ 4. Only durable, cross-task context gets promoted to shared memory. Task-local details stay in the task file.
207
+ 5. Before completion, the agent updates memory with anything that helps the next run start faster.
208
+
209
+ **Automatic compaction.** Memory files have soft limits (150 lines / 12 KB for shared, 200 lines / 16 KB per task). When a file exceeds its threshold, Compozy flags it for compaction — the agent trims noise and repetition while preserving active risks, decisions, and handoffs.
210
+
211
+ **No duplication.** Memory files don't copy what's already in the repo, git history, PRD, or task specs. They capture only what would otherwise be lost between runs: the *why* behind decisions, surprising findings, and context that makes the next agent immediately productive.
212
+
213
+ The `cy-workflow-memory` skill handles all of this automatically when referenced in task prompts. No manual setup required — just run `compozy start` and agents inherit context from every previous run.
214
+
215
+ ### 🤖 Supported Agents
216
+
217
+ **Execution** (`compozy start`, `compozy fix-reviews`) — 6 agents that can run tasks:
218
+
219
+ | Agent | `--ide` flag |
220
+ | --- | --- |
221
+ | Claude Code | `claude` |
222
+ | Codex | `codex` |
223
+ | Cursor | `cursor` |
224
+ | Droid | `droid` |
225
+ | OpenCode | `opencode` |
226
+ | Pi | `pi` |
227
+
228
+ **Skill installation** (`compozy setup`) — 40+ agents and editors, including Claude Code, Codex, Cursor, Droid, OpenCode, Pi, Gemini CLI, GitHub Copilot, Windsurf, Amp, Continue, Goose, Roo Code, Augment, Kiro CLI, Cline, and many more. Run `compozy setup` to see all detected agents on your system.
229
+
230
+ When installing to multiple agents, Compozy offers two modes:
231
+
232
+ - **Symlink** *(default)* — One canonical copy with symlinks from each agent directory. All agents stay in sync.
233
+ - **Copy** — Independent copies per agent. Use `--copy` when symlinks are not supported.
234
+
235
+ ## 📖 CLI Reference
236
+
237
+ <details>
238
+ <summary><code>compozy setup</code> — Install bundled skills for supported agents</summary>
239
+
240
+ ```bash
241
+ compozy setup [flags]
51
242
  ```
52
243
 
53
- ### Quick Start
244
+ | Flag | Default | Description |
245
+ | --- | --- | --- |
246
+ | `--agent`, `-a` | | Target agent name (repeatable) |
247
+ | `--skill`, `-s` | | Skill name to install (repeatable) |
248
+ | `--global`, `-g` | `false` | Install to user directory instead of project |
249
+ | `--copy` | `false` | Copy files instead of symlinking |
250
+ | `--list`, `-l` | `false` | List bundled skills without installing |
251
+ | `--yes`, `-y` | `false` | Skip confirmation prompts |
252
+ | `--all` | `false` | Install all skills to all agents |
253
+
254
+ </details>
255
+
256
+ <details>
257
+ <summary><code>compozy migrate</code> — Convert legacy XML-tagged artifacts to frontmatter</summary>
54
258
 
55
259
  ```bash
56
- # Create a new project
57
- compozy init my-ai-app
58
- cd my-ai-app
260
+ compozy migrate [flags]
261
+ ```
262
+
263
+ | Flag | Default | Description |
264
+ | --- | --- | --- |
265
+ | `--root-dir` | `.compozy/tasks` | Workflow root to scan recursively |
266
+ | `--name` | | Restrict migration to one workflow name |
267
+ | `--tasks-dir` | | Restrict migration to one task workflow directory |
268
+ | `--reviews-dir` | | Restrict migration to one review round directory |
269
+ | `--dry-run` | `false` | Preview migrations without writing files |
270
+
271
+ </details>
59
272
 
60
- # Start the development server
61
- compozy dev
273
+ <details>
274
+ <summary><code>compozy sync</code> — Refresh task workflow metadata files</summary>
275
+
276
+ ```bash
277
+ compozy sync [flags]
62
278
  ```
63
279
 
64
- > **Note**: When using MCP tools in standalone mode, ensure `mcp_proxy.port` is set to a fixed port (not 0). See [MCP Configuration](./docs/content/docs/core/configuration/project-setup.mdx) for details.
280
+ | Flag | Default | Description |
281
+ | --- | --- | --- |
282
+ | `--root-dir` | `.compozy/tasks` | Workflow root to scan |
283
+ | `--name` | | Restrict sync to one workflow name |
284
+ | `--tasks-dir` | | Restrict sync to one task workflow directory |
65
285
 
66
- For a complete walkthrough, check out our [**Quick Start Guide**](./docs/content/docs/core/getting-started/quick-start.mdx).
286
+ </details>
67
287
 
68
- ## 📚 Documentation
288
+ <details>
289
+ <summary><code>compozy start</code> — Execute PRD task files</summary>
69
290
 
70
- Our documentation website is the best place to find comprehensive information, tutorials, and API references.
291
+ ```bash
292
+ compozy start [flags]
293
+ ```
294
+
295
+ Running `compozy start` with no flags opens the interactive form automatically.
296
+
297
+ | Flag | Default | Description |
298
+ | --- | --- | --- |
299
+ | `--name` | | Workflow name (`.compozy/tasks/<name>`) |
300
+ | `--tasks-dir` | | Path to tasks directory |
301
+ | `--ide` | `codex` | Agent: `claude`, `codex`, `cursor`, `droid`, `opencode`, `pi` |
302
+ | `--model` | *(per IDE)* | Model override |
303
+ | `--reasoning-effort` | `medium` | `low`, `medium`, `high`, `xhigh` |
304
+ | `--timeout` | `10m` | Activity timeout per job |
305
+ | `--max-retries` | `0` | Retry failed jobs N times |
306
+ | `--retry-backoff-multiplier` | `1.5` | Timeout multiplier per retry |
307
+ | `--tail-lines` | `30` | Log lines shown per job in UI |
308
+ | `--add-dir` | | Additional directories to allow (repeatable) |
309
+ | `--auto-commit` | `false` | Auto-commit after each task |
310
+ | `--include-completed` | `false` | Re-run completed tasks |
311
+ | `--dry-run` | `false` | Preview prompts without executing |
312
+
313
+ </details>
314
+
315
+ <details>
316
+ <summary><code>compozy fetch-reviews</code> — Fetch review comments into a review round</summary>
317
+
318
+ ```bash
319
+ compozy fetch-reviews [flags]
320
+ ```
321
+
322
+ Running `compozy fetch-reviews` with no flags opens the interactive form automatically.
323
+
324
+ | Flag | Default | Description |
325
+ | --- | --- | --- |
326
+ | `--provider` | | Review provider (`coderabbit`, etc.) |
327
+ | `--pr` | | Pull request number |
328
+ | `--name` | | Workflow name |
329
+ | `--round` | `0` | Round number (auto-increments if omitted) |
330
+
331
+ </details>
332
+
333
+ <details>
334
+ <summary><code>compozy fix-reviews</code> — Dispatch AI agents to remediate review issues</summary>
335
+
336
+ ```bash
337
+ compozy fix-reviews [flags]
338
+ ```
71
339
 
72
- | Section | Description |
73
- | ----------------------------------------------------------------------------------- | ------------------------------------------------ |
74
- | 🚀 **[Getting Started](./docs/content/docs/core/getting-started/installation.mdx)** | Installation, setup, and your first workflow |
75
- | 🛠️ **[Configuration](./docs/content/docs/core/configuration/project-setup.mdx)** | Project, runtime, and provider configuration |
76
- | 🎨 **[Template Engine](./docs/content/docs/core/yaml-templates/overview.mdx)** | Dynamic YAML configuration with templating |
77
- | 🤖 **[Agents](./docs/content/docs/core/agents/overview.mdx)** | Building and configuring AI agents |
78
- | ⚙️ **[Tasks](./docs/content/docs/core/tasks/overview.mdx)** | Orchestrating operations with various task types |
79
- | 🔧 **[Tools](./docs/content/docs/core/tools/overview.mdx)** | Extending agent capabilities with custom tools |
80
- | 🧠 **[Memory & Context](./docs/content/docs/core/memory/overview.mdx)** | Managing agent memory and conversation context |
81
- | 🔌 **[MCP Integration](./docs/content/docs/core/mcp/overview.mdx)** | Model Context Protocol for external tool servers |
82
- | 📡 **[Signal System](./docs/content/docs/core/signals/overview.mdx)** | Event-driven communication between components |
83
- | 🚀 **[Deployment](./docs/content/docs/core/deployment/docker.mdx)** | Deploy Compozy to production environments |
84
- | 💻 **[CLI Reference](./docs/content/docs/cli/overview.mdx)** | Command-line interface reference |
85
- | 📋 **[Schema Definition](./docs/content/docs/schema/project.mdx)** | YAML schema definitions for all components |
86
- | 🔌 **[API Reference](./docs/content/docs/api/overview.mdx)** | REST API for programmatic access |
340
+ Running `compozy fix-reviews` with no flags opens the interactive form automatically.
87
341
 
88
- **[➡️ Explore the full documentation](./docs/content/docs/core/index.mdx)**
342
+ | Flag | Default | Description |
343
+ | --- | --- | --- |
344
+ | `--name` | | Workflow name |
345
+ | `--round` | `0` | Round number (latest if omitted) |
346
+ | `--reviews-dir` | | Override review directory path |
347
+ | `--ide` | `codex` | Agent: `claude`, `codex`, `cursor`, `droid`, `opencode`, `pi` |
348
+ | `--model` | *(per IDE)* | Model override |
349
+ | `--batch-size` | `1` | Issues per batch |
350
+ | `--concurrent` | `1` | Parallel batches |
351
+ | `--grouped` | `false` | Generate grouped issue summaries |
352
+ | `--include-resolved` | `false` | Re-process resolved issues |
353
+ | `--reasoning-effort` | `medium` | `low`, `medium`, `high`, `xhigh` |
354
+ | `--timeout` | `10m` | Activity timeout per job |
355
+ | `--max-retries` | `0` | Retry failed jobs N times |
356
+ | `--retry-backoff-multiplier` | `1.5` | Timeout multiplier per retry |
357
+ | `--tail-lines` | `30` | Log lines shown per job in UI |
358
+ | `--add-dir` | | Additional directories to allow (repeatable) |
359
+ | `--auto-commit` | `false` | Auto-commit after each batch |
360
+ | `--dry-run` | `false` | Preview prompts without executing |
89
361
 
90
- ## 🤝 Community & Contributing
362
+ </details>
91
363
 
92
- We welcome contributions from the community! Whether it's reporting a bug, suggesting a feature, or submitting a pull request, your input is valuable.
364
+ <details>
365
+ <summary><strong>Go Package Usage</strong> — Use Compozy as a library in your own tools</summary>
93
366
 
94
- - **[GitHub Issues](https://github.com/compozy/compozy/issues)**: Report bugs and request features.
95
- - **[Contributing Guide](./CONTRIBUTING.md)**: Learn how to contribute to the project.
367
+ ```go
368
+ // Prepare work without executing
369
+ prep, err := compozy.Prepare(context.Background(), compozy.Config{
370
+ Name: "multi-repo",
371
+ TasksDir: ".compozy/tasks/multi-repo",
372
+ Mode: compozy.ModePRDTasks,
373
+ DryRun: true,
374
+ })
375
+
376
+ // Fetch reviews and run remediation
377
+ _, _ = compozy.FetchReviews(context.Background(), compozy.Config{
378
+ Name: "my-feature",
379
+ Provider: "coderabbit",
380
+ PR: "259",
381
+ })
382
+
383
+ // Preview a legacy artifact migration
384
+ _, _ = compozy.Migrate(context.Background(), compozy.MigrationConfig{
385
+ DryRun: true,
386
+ })
387
+
388
+ _ = compozy.Run(context.Background(), compozy.Config{
389
+ Name: "my-feature",
390
+ Mode: compozy.ModePRReview,
391
+ IDE: compozy.IDECodex,
392
+ ReasoningEffort: "medium",
393
+ })
394
+
395
+ // Embed the Cobra command in another CLI
396
+ root := command.New()
397
+ _ = root.Execute()
398
+ ```
399
+
400
+ </details>
401
+
402
+ <details>
403
+ <summary><strong>Project Layout</strong></summary>
404
+
405
+ ```
406
+ cmd/compozy/ CLI entry point
407
+ command/ Public Cobra wrapper for embedding
408
+ internal/cli/ Cobra flags, interactive form, CLI glue
409
+ internal/core/ Internal facade for preparation and execution
410
+ agent/ IDE command validation and process construction
411
+ memory/ Workflow memory bootstrapping, inspection, and compaction detection
412
+ model/ Shared runtime data structures
413
+ plan/ Input discovery, filtering, grouping, batch prep
414
+ prompt/ Prompt builders emitting runtime context + skill names
415
+ run/ Execution pipeline, logging, shutdown, Bubble Tea UI
416
+ internal/setup/ Bundled skill installer (agent detection, symlink/copy)
417
+ internal/version/ Build metadata
418
+ skills/ Bundled installable skills
419
+ .compozy/tasks/ Default workflow artifact root (PRDs, TechSpecs, tasks, ADRs, reviews)
420
+ ```
421
+
422
+ </details>
423
+
424
+ ## 🛠️ Development
425
+
426
+ ```bash
427
+ make verify # Full pipeline: fmt → lint → test → build
428
+ make fmt # Format code
429
+ make lint # Lint (zero tolerance)
430
+ make test # Tests with race detector
431
+ make build # Compile binary
432
+ make deps # Tidy and verify modules
433
+ ```
96
434
 
97
- ---
435
+ ## 🤝 Contributing
98
436
 
99
- ## 🔐 License
437
+ Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
100
438
 
101
- This project is licensed under the Business Source License 1.1 (BUSL-1.1). See the [LICENSE](LICENSE) file for details.
439
+ ## 📄 License
102
440
 
103
- <p align="center">Made with ❤️ by the Compozy Team</p>
441
+ [MIT](LICENSE)
package/install.js CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  // This file was generated by GoReleaser. DO NOT EDIT.
4
4
 
5
- const { install } = require("./lib.js");
5
+ import { install } from "./lib.js";
6
6
  install();
package/lib.js CHANGED
@@ -1,22 +1,21 @@
1
1
  // This file was generated by GoReleaser. DO NOT EDIT.
2
- const { archives } = require("./package.json");
3
- const fs = require("fs");
4
- const crypto = require("crypto");
5
- const path = require("path");
6
- const JSZip = require("jszip");
7
- const tar = require("tar");
8
- const axios = require("axios");
9
- const ProxyAgent = require("proxy-agent");
10
- const { spawnSync } = require("child_process");
11
-
12
- const proxyUrl =
13
- process.env.HTTPS_PROXY ||
14
- process.env.https_proxy ||
15
- process.env.HTTP_PROXY ||
16
- process.env.http_proxy ||
17
- null;
18
-
19
- const agent = proxyUrl ? new ProxyAgent(proxyUrl) : undefined;
2
+ import fs from "fs";
3
+ import crypto from "crypto";
4
+ import http from "http";
5
+ import https from "https";
6
+ import path from "path";
7
+ import JSZip from "jszip";
8
+ import { x as tarExtract } from "tar";
9
+ import { ProxyAgent } from "proxy-agent";
10
+ import { spawnSync } from "child_process";
11
+ import { fileURLToPath } from "url";
12
+
13
+ const { archives, name, version } = JSON.parse(
14
+ fs.readFileSync(new URL("./package.json", import.meta.url), "utf8"),
15
+ );
16
+
17
+ const agent = new ProxyAgent();
18
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
20
19
 
21
20
  const getArchive = () => {
22
21
  let target = `${process.platform}-${process.arch}`;
@@ -37,7 +36,7 @@ async function extractTar(tarPath, binaries, dir, wrappedIn) {
37
36
  )
38
37
  : binaries;
39
38
 
40
- await tar.x({
39
+ await tarExtract({
41
40
  file: tarPath,
42
41
  cwd: dir,
43
42
  filter: (path) => filesToExtract.includes(path),
@@ -132,23 +131,25 @@ const install = async () => {
132
131
  const bin = path.join(binDir, archive.bins[0]);
133
132
  fs.copyFileSync(archivePath, bin);
134
133
  fs.chmodSync(bin, 0o755);
135
- return;
134
+ break;
136
135
  case "zip":
137
- return extractZip(
136
+ await extractZip(
138
137
  archivePath,
139
138
  archive.bins,
140
139
  binDir,
141
140
  archive.wrappedIn,
142
141
  );
142
+ break;
143
143
  case "tar":
144
144
  case "tar.gz":
145
145
  case "tgz":
146
- return extractTar(
146
+ await extractTar(
147
147
  archivePath,
148
148
  archive.bins,
149
149
  binDir,
150
150
  archive.wrappedIn,
151
151
  );
152
+ break;
152
153
  case "tar.zst":
153
154
  case "tzst":
154
155
  case "tar.xz":
@@ -156,6 +157,7 @@ const install = async () => {
156
157
  default:
157
158
  throw new Error(`unsupported format: ${archive.format}`);
158
159
  }
160
+ console.log(`Installed ${name} ${version} to ${binDir}`);
159
161
  } catch (err) {
160
162
  throw new Error(`Installation failed: ${err.message}`);
161
163
  }
@@ -177,7 +179,7 @@ const verify = (filename, checksum) => {
177
179
  }
178
180
  };
179
181
 
180
- const download = async (url, filename) => {
182
+ const download = async (url, filename, maxRedirects = 10) => {
181
183
  try {
182
184
  console.log(`Downloading ${url} to ${filename}...`);
183
185
  const dir = path.dirname(filename);
@@ -185,27 +187,56 @@ const download = async (url, filename) => {
185
187
  fs.mkdirSync(dir, { recursive: true });
186
188
  }
187
189
 
188
- const response = await axios({
189
- method: "GET",
190
- url: url,
191
- responseType: "stream",
192
- timeout: 300000, // 5min
193
- httpAgent: agent,
194
- httpsAgent: agent,
195
- });
190
+ return new Promise((resolve, reject) => {
191
+ const parsedUrl = new URL(url);
192
+ const mod = parsedUrl.protocol === "https:" ? https : http;
196
193
 
197
- const writer = fs.createWriteStream(filename);
198
- response.data.pipe(writer);
194
+ const request = mod.get(url, { agent }, (response) => {
195
+ if (
196
+ response.statusCode >= 300 &&
197
+ response.statusCode < 400 &&
198
+ response.headers.location
199
+ ) {
200
+ if (maxRedirects <= 0) {
201
+ reject(new Error("Too many redirects"));
202
+ return;
203
+ }
204
+ download(response.headers.location, filename, maxRedirects - 1)
205
+ .then(resolve)
206
+ .catch(reject);
207
+ return;
208
+ }
199
209
 
200
- return new Promise((resolve, reject) => {
201
- writer.on("finish", () => {
202
- console.log(`Download complete: ${filename}`);
203
- resolve(dir);
210
+ if (response.statusCode !== 200) {
211
+ reject(
212
+ new Error(
213
+ `HTTP ${response.statusCode}: ${response.statusMessage}`,
214
+ ),
215
+ );
216
+ return;
217
+ }
218
+
219
+ const writer = fs.createWriteStream(filename);
220
+ response.pipe(writer);
221
+
222
+ writer.on("finish", () => {
223
+ console.log(`Download complete: ${filename}`);
224
+ resolve(dir);
225
+ });
226
+
227
+ writer.on("error", (err) => {
228
+ console.error(`Error writing file: ${err.message}`);
229
+ reject(err);
230
+ });
231
+ });
232
+
233
+ request.on("error", (err) => {
234
+ reject(new Error(`Request failed: ${err.message}`));
204
235
  });
205
236
 
206
- writer.on("error", (err) => {
207
- console.error(`Error writing file: ${err.message}`);
208
- reject(err);
237
+ request.setTimeout(300000, () => {
238
+ request.destroy();
239
+ reject(new Error("Request timed out"));
209
240
  });
210
241
  });
211
242
  } catch (err) {
@@ -220,8 +251,9 @@ function exists(archive) {
220
251
  return archive.bins.every((bin) => fs.existsSync(path.join(binDir, bin)));
221
252
  }
222
253
 
223
- module.exports = {
254
+ export {
224
255
  install,
225
256
  run,
226
257
  getArchive,
258
+ download,
227
259
  };
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@compozy/cli",
3
- "version": "0.0.19",
4
- "description": "Next-level Agentic Orchestration Platform",
3
+ "type": "module",
4
+ "version": "0.1.1",
5
+ "description": "Compozy CLI",
5
6
  "scripts": {
6
7
  "postinstall": "node install.js",
7
8
  "run": "node run-compozy.js"
@@ -20,76 +21,75 @@
20
21
  "compozy": "run-compozy.js"
21
22
  },
22
23
  "dependencies": {
23
- "axios": "^1.8.2",
24
24
  "jszip": "^3.10.1",
25
- "proxy-agent": "^6.5.0",
25
+ "proxy-agent": "^7.0.0",
26
26
  "tar": "^7.4.3"
27
27
  },
28
28
  "archives": {
29
29
  "darwin-arm64": {
30
- "name": "compozy_0.0.19_darwin_arm64.tar.gz",
31
- "url": "https://github.com/compozy/compozy/releases/download/v0.0.19/compozy_0.0.19_darwin_arm64.tar.gz",
30
+ "name": "compozy_0.1.1_darwin_arm64.tar.gz",
31
+ "url": "https://github.com/compozy/compozy/releases/download/v0.1.1/compozy_0.1.1_darwin_arm64.tar.gz",
32
32
  "bins": [
33
33
  "compozy"
34
34
  ],
35
35
  "format": "tar.gz",
36
36
  "checksum": {
37
37
  "algorithm": "sha256",
38
- "digest": "0fbde8049e8f12418b22d6714cdf74451c278cde3d82471a1d8c5a4ad06eff03"
38
+ "digest": "409f6227202f1bcb68043db8bc83596cbb19c6cfc23372a8b1572556f3d355a6"
39
39
  },
40
- "wrappedIn": "compozy_0.0.19_darwin_arm64"
40
+ "wrappedIn": "compozy_0.1.1_darwin_arm64"
41
41
  },
42
42
  "darwin-x64": {
43
- "name": "compozy_0.0.19_darwin_x86_64.tar.gz",
44
- "url": "https://github.com/compozy/compozy/releases/download/v0.0.19/compozy_0.0.19_darwin_x86_64.tar.gz",
43
+ "name": "compozy_0.1.1_darwin_x86_64.tar.gz",
44
+ "url": "https://github.com/compozy/compozy/releases/download/v0.1.1/compozy_0.1.1_darwin_x86_64.tar.gz",
45
45
  "bins": [
46
46
  "compozy"
47
47
  ],
48
48
  "format": "tar.gz",
49
49
  "checksum": {
50
50
  "algorithm": "sha256",
51
- "digest": "252ffe5bf2a315583df8140b20a99301b9e645fe94fb75b813d06c7342e88b77"
51
+ "digest": "adebad59585fc44280b3ba856fa4017af5b26d29b300aac1169af7d0403a4593"
52
52
  },
53
- "wrappedIn": "compozy_0.0.19_darwin_x86_64"
53
+ "wrappedIn": "compozy_0.1.1_darwin_x86_64"
54
54
  },
55
55
  "linux-arm64": {
56
- "name": "compozy_0.0.19_linux_arm64.tar.gz",
57
- "url": "https://github.com/compozy/compozy/releases/download/v0.0.19/compozy_0.0.19_linux_arm64.tar.gz",
56
+ "name": "compozy_0.1.1_linux_arm64.tar.gz",
57
+ "url": "https://github.com/compozy/compozy/releases/download/v0.1.1/compozy_0.1.1_linux_arm64.tar.gz",
58
58
  "bins": [
59
59
  "compozy"
60
60
  ],
61
61
  "format": "tar.gz",
62
62
  "checksum": {
63
63
  "algorithm": "sha256",
64
- "digest": "044a8a4193fd57d57dd4216a48a8c7295fb38b4d32e8257a1956446c175ccb63"
64
+ "digest": "1862ae5939045bb5ff94ddda895eaecdc5d252b97a7f554931bc51676db33efa"
65
65
  },
66
- "wrappedIn": "compozy_0.0.19_linux_arm64"
66
+ "wrappedIn": "compozy_0.1.1_linux_arm64"
67
67
  },
68
68
  "linux-x64": {
69
- "name": "compozy_0.0.19_linux_x86_64.tar.gz",
70
- "url": "https://github.com/compozy/compozy/releases/download/v0.0.19/compozy_0.0.19_linux_x86_64.tar.gz",
69
+ "name": "compozy_0.1.1_linux_x86_64.tar.gz",
70
+ "url": "https://github.com/compozy/compozy/releases/download/v0.1.1/compozy_0.1.1_linux_x86_64.tar.gz",
71
71
  "bins": [
72
72
  "compozy"
73
73
  ],
74
74
  "format": "tar.gz",
75
75
  "checksum": {
76
76
  "algorithm": "sha256",
77
- "digest": "550f3e911e7c4c7b7a9202e0298f1f2e5e205e4aba0d0276d79b6f0044f1d9f2"
77
+ "digest": "c04f42fa77e98f4761388d29eb2606a1108e1ab990c506f60c5fd6a2cdd7cbe0"
78
78
  },
79
- "wrappedIn": "compozy_0.0.19_linux_x86_64"
79
+ "wrappedIn": "compozy_0.1.1_linux_x86_64"
80
80
  },
81
81
  "win32-x64": {
82
- "name": "compozy_0.0.19_windows_x86_64.zip",
83
- "url": "https://github.com/compozy/compozy/releases/download/v0.0.19/compozy_0.0.19_windows_x86_64.zip",
82
+ "name": "compozy_0.1.1_windows_x86_64.zip",
83
+ "url": "https://github.com/compozy/compozy/releases/download/v0.1.1/compozy_0.1.1_windows_x86_64.zip",
84
84
  "bins": [
85
85
  "compozy.exe"
86
86
  ],
87
87
  "format": "zip",
88
88
  "checksum": {
89
89
  "algorithm": "sha256",
90
- "digest": "b7bc6eab030054a666fa69ce83069649f105fe80bc53942f28d74559d4499243"
90
+ "digest": "c288decdc04ab60c40e74efd12dc53587395f8c222b9253f9e653e2e1943ed6a"
91
91
  },
92
- "wrappedIn": "compozy_0.0.19_windows_x86_64"
92
+ "wrappedIn": "compozy_0.1.1_windows_x86_64"
93
93
  }
94
94
  }
95
95
  }
package/run-compozy.js CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  // This file was generated by GoReleaser. DO NOT EDIT.
4
4
 
5
- const { run } = require("./lib.js");
6
- run("compozy");
5
+ import { run } from "./lib.js";
6
+ run("compozy").then((code) => process.exit(code));