@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 +21 -52
- package/README.md +399 -61
- package/install.js +1 -1
- package/lib.js +73 -41
- package/package.json +24 -24
- package/run-compozy.js +2 -2
package/LICENSE
CHANGED
|
@@ -1,52 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
<
|
|
3
|
-
<
|
|
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="
|
|
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
|
-
|
|
16
|
-
|
|
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
|
-
##
|
|
29
|
+
## ✨ Highlights
|
|
19
30
|
|
|
20
|
-
|
|
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
|
-
##
|
|
42
|
+
## 📦 Installation
|
|
23
43
|
|
|
24
|
-
|
|
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
|
-
|
|
46
|
+
#### NPM
|
|
33
47
|
|
|
34
|
-
|
|
48
|
+
```bash
|
|
49
|
+
npm install -g @compozy/cli
|
|
50
|
+
```
|
|
35
51
|
|
|
36
|
-
|
|
52
|
+
#### From Source
|
|
37
53
|
|
|
38
54
|
```bash
|
|
39
|
-
|
|
40
|
-
|
|
55
|
+
git clone git@github.com:compozy/compozy.git
|
|
56
|
+
cd compozy && make verify && go build ./cmd/compozy
|
|
41
57
|
```
|
|
42
58
|
|
|
43
|
-
|
|
59
|
+
Then install bundled skills into your AI agents:
|
|
44
60
|
|
|
45
61
|
```bash
|
|
46
|
-
|
|
47
|
-
#
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
61
|
-
compozy
|
|
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
|
-
|
|
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
|
-
|
|
286
|
+
</details>
|
|
67
287
|
|
|
68
|
-
|
|
288
|
+
<details>
|
|
289
|
+
<summary><code>compozy start</code> — Execute PRD task files</summary>
|
|
69
290
|
|
|
70
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
362
|
+
</details>
|
|
91
363
|
|
|
92
|
-
|
|
364
|
+
<details>
|
|
365
|
+
<summary><strong>Go Package Usage</strong> — Use Compozy as a library in your own tools</summary>
|
|
93
366
|
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
437
|
+
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
100
438
|
|
|
101
|
-
|
|
439
|
+
## 📄 License
|
|
102
440
|
|
|
103
|
-
|
|
441
|
+
[MIT](LICENSE)
|
package/install.js
CHANGED
package/lib.js
CHANGED
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
// This file was generated by GoReleaser. DO NOT EDIT.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
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
|
-
|
|
134
|
+
break;
|
|
136
135
|
case "zip":
|
|
137
|
-
|
|
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
|
-
|
|
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
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
-
|
|
198
|
-
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
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
|
-
|
|
207
|
-
|
|
208
|
-
reject(
|
|
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
|
-
|
|
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
|
-
"
|
|
4
|
-
"
|
|
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": "^
|
|
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.
|
|
31
|
-
"url": "https://github.com/compozy/compozy/releases/download/v0.
|
|
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": "
|
|
38
|
+
"digest": "409f6227202f1bcb68043db8bc83596cbb19c6cfc23372a8b1572556f3d355a6"
|
|
39
39
|
},
|
|
40
|
-
"wrappedIn": "compozy_0.
|
|
40
|
+
"wrappedIn": "compozy_0.1.1_darwin_arm64"
|
|
41
41
|
},
|
|
42
42
|
"darwin-x64": {
|
|
43
|
-
"name": "compozy_0.
|
|
44
|
-
"url": "https://github.com/compozy/compozy/releases/download/v0.
|
|
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": "
|
|
51
|
+
"digest": "adebad59585fc44280b3ba856fa4017af5b26d29b300aac1169af7d0403a4593"
|
|
52
52
|
},
|
|
53
|
-
"wrappedIn": "compozy_0.
|
|
53
|
+
"wrappedIn": "compozy_0.1.1_darwin_x86_64"
|
|
54
54
|
},
|
|
55
55
|
"linux-arm64": {
|
|
56
|
-
"name": "compozy_0.
|
|
57
|
-
"url": "https://github.com/compozy/compozy/releases/download/v0.
|
|
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": "
|
|
64
|
+
"digest": "1862ae5939045bb5ff94ddda895eaecdc5d252b97a7f554931bc51676db33efa"
|
|
65
65
|
},
|
|
66
|
-
"wrappedIn": "compozy_0.
|
|
66
|
+
"wrappedIn": "compozy_0.1.1_linux_arm64"
|
|
67
67
|
},
|
|
68
68
|
"linux-x64": {
|
|
69
|
-
"name": "compozy_0.
|
|
70
|
-
"url": "https://github.com/compozy/compozy/releases/download/v0.
|
|
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": "
|
|
77
|
+
"digest": "c04f42fa77e98f4761388d29eb2606a1108e1ab990c506f60c5fd6a2cdd7cbe0"
|
|
78
78
|
},
|
|
79
|
-
"wrappedIn": "compozy_0.
|
|
79
|
+
"wrappedIn": "compozy_0.1.1_linux_x86_64"
|
|
80
80
|
},
|
|
81
81
|
"win32-x64": {
|
|
82
|
-
"name": "compozy_0.
|
|
83
|
-
"url": "https://github.com/compozy/compozy/releases/download/v0.
|
|
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": "
|
|
90
|
+
"digest": "c288decdc04ab60c40e74efd12dc53587395f8c222b9253f9e653e2e1943ed6a"
|
|
91
91
|
},
|
|
92
|
-
"wrappedIn": "compozy_0.
|
|
92
|
+
"wrappedIn": "compozy_0.1.1_windows_x86_64"
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
}
|
package/run-compozy.js
CHANGED