beflow 0.1.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.
- package/LICENSE +21 -0
- package/README.md +121 -0
- package/config.example.json +68 -0
- package/config.schema.json +413 -0
- package/package.json +72 -0
- package/src/agent/acpx.ts +197 -0
- package/src/agent/driver.ts +38 -0
- package/src/agent/events.ts +228 -0
- package/src/agent/issuefence.ts +42 -0
- package/src/agent/report.ts +44 -0
- package/src/cli.ts +910 -0
- package/src/config/load.ts +45 -0
- package/src/config/persist.ts +58 -0
- package/src/config/schema.ts +181 -0
- package/src/config/store.ts +119 -0
- package/src/core/accept.ts +25 -0
- package/src/core/continuation.ts +57 -0
- package/src/core/deadletter.ts +55 -0
- package/src/core/decision.ts +8 -0
- package/src/core/doctor.ts +223 -0
- package/src/core/drift.ts +59 -0
- package/src/core/gc.ts +223 -0
- package/src/core/inputquality.ts +30 -0
- package/src/core/issuetemplate.ts +175 -0
- package/src/core/mcp.ts +191 -0
- package/src/core/newissue.ts +343 -0
- package/src/core/notify.ts +151 -0
- package/src/core/prompts.ts +165 -0
- package/src/core/qualitygate.ts +70 -0
- package/src/core/queue.ts +40 -0
- package/src/core/review.ts +266 -0
- package/src/core/run.ts +1075 -0
- package/src/core/runstore.ts +144 -0
- package/src/core/runsview.ts +111 -0
- package/src/core/setup.ts +203 -0
- package/src/core/sla.ts +39 -0
- package/src/core/template.ts +65 -0
- package/src/core/watch.ts +825 -0
- package/src/core/worktree.ts +74 -0
- package/src/core/writeback.ts +88 -0
- package/src/index.ts +154 -0
- package/src/model/types.ts +35 -0
- package/src/prompts/defaults/continuation.md +9 -0
- package/src/prompts/defaults/implement.md +13 -0
- package/src/prompts/defaults/issue-enrich.md +30 -0
- package/src/prompts/defaults/issues/bug.md +35 -0
- package/src/prompts/defaults/issues/feature.md +24 -0
- package/src/prompts/defaults/issues/generic.md +16 -0
- package/src/prompts/defaults/issues/spike.md +24 -0
- package/src/prompts/defaults/report.md +20 -0
- package/src/prompts/defaults/review.md +34 -0
- package/src/prompts/defaults/spec.md +11 -0
- package/src/prompts/defaults/task.md +6 -0
- package/src/prompts/defaults/triage.md +11 -0
- package/src/prompts/text-modules.d.ts +4 -0
- package/src/resolve/jobkind.ts +11 -0
- package/src/resolve/metadata.ts +103 -0
- package/src/resolve/precedence.ts +104 -0
- package/src/trackers/factory.ts +17 -0
- package/src/trackers/linear/adapter.ts +416 -0
- package/src/trackers/linear/client.ts +264 -0
- package/src/trackers/linear/map.ts +113 -0
- package/src/trackers/linear/types.ts +44 -0
- package/src/trackers/marker.ts +20 -0
- package/src/trackers/plane/adapter.ts +754 -0
- package/src/trackers/plane/client.ts +302 -0
- package/src/trackers/plane/map.ts +168 -0
- package/src/trackers/plane/types.ts +134 -0
- package/src/trackers/tracker.ts +135 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Islam Nofl
|
|
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
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# beflow
|
|
2
|
+
|
|
3
|
+
**An AI-agent orchestration CLI that drives your issue tracker's backlog to
|
|
4
|
+
shipped PRs.**
|
|
5
|
+
|
|
6
|
+
beflow turns work items on a project board ([Plane](https://plane.so) or
|
|
7
|
+
[Linear](https://linear.app)) into agent-driven pull requests. You stay the
|
|
8
|
+
captain — decide, review, merge; beflow runs the crew — investigate, spec,
|
|
9
|
+
build, open PRs — and keeps the board in sync.
|
|
10
|
+
|
|
11
|
+
The agent is **tracker-blind**. All tracker I/O happens at the boundaries of a
|
|
12
|
+
run: beflow resolves a task + a repo + a contract, hands them to a coding-agent
|
|
13
|
+
CLI, and writes the structured result back to the board. The agent never knows
|
|
14
|
+
which tracker it's serving, so the same agent works across Plane and Linear.
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
Tracker adapter beflow core Agent adapter
|
|
18
|
+
(Plane | Linear) ──fetch──▶ resolve repo+agent ──run──▶ (claude | …)
|
|
19
|
+
▲ +job kind+run mode │
|
|
20
|
+
└────────────────── write back report ◀────────────────┘
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Requirements
|
|
26
|
+
|
|
27
|
+
- **[Bun](https://bun.sh)** ≥ 1.0 — beflow runs on the Bun runtime.
|
|
28
|
+
- A **coding-agent CLI** that speaks [ACP](https://agentclientprotocol.com)
|
|
29
|
+
(e.g. `claude`) plus [`acpx`](https://www.npmjs.com/package/acpx) (fetched
|
|
30
|
+
automatically via `bunx`).
|
|
31
|
+
- **`git`** and the **`gh`** CLI (for the PR step).
|
|
32
|
+
- A **Plane** or **Linear** workspace and a personal API token.
|
|
33
|
+
|
|
34
|
+
## Install
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
bun add -g beflow # or: npm i -g beflow
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
beflow is invoked with the Bun runtime, so Bun must be on your PATH. To run from
|
|
41
|
+
source instead:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
git clone https://github.com/corrm/beflow.git
|
|
45
|
+
cd beflow
|
|
46
|
+
bun install
|
|
47
|
+
bun run build # optional: compile a standalone ./dist/beflow binary
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Quickstart
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# 1. Create your config from the template and edit it
|
|
54
|
+
cp config.example.json config.json
|
|
55
|
+
|
|
56
|
+
# 2. Put your tracker API token in a gitignored .env
|
|
57
|
+
cp .env.example .env # then fill in PLANE_API_KEY or LINEAR_API_KEY
|
|
58
|
+
|
|
59
|
+
# 3. Check your environment
|
|
60
|
+
beflow doctor
|
|
61
|
+
|
|
62
|
+
# 4. Provision the project's board (states, labels, types, modules)
|
|
63
|
+
beflow setup APP
|
|
64
|
+
|
|
65
|
+
# 5. Run a work item, or let the daemon drive the queue
|
|
66
|
+
beflow run APP-42 --auto
|
|
67
|
+
beflow watch APP
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
See the [config reference](docs/config.md) for every setting and
|
|
71
|
+
[`config.example.json`](config.example.json) for a complete starting point.
|
|
72
|
+
|
|
73
|
+
## Run modes
|
|
74
|
+
|
|
75
|
+
| Mode | Flag | What it is |
|
|
76
|
+
| ---------- | ---------------------------- | ------------------------------------------------------------------------------------------------------ |
|
|
77
|
+
| Autonomous | `beflow run APP-42 --auto` | Headless. Isolated git worktree; for an implement job, opens a PR and moves the item to **In Review**. |
|
|
78
|
+
| Supervised | `beflow run APP-42 --attend` | Interactive via acpx — you approve actions as they happen. |
|
|
79
|
+
| Open | `beflow run APP-42 --open` | Runs in the agent's own native TUI; you're present for a multi-turn session. |
|
|
80
|
+
|
|
81
|
+
Runs are **resumable**: each persists a run record and keeps its worktree until
|
|
82
|
+
the item is Done, so an interrupted run picks up where it left off.
|
|
83
|
+
|
|
84
|
+
## The board is the control center
|
|
85
|
+
|
|
86
|
+
beflow drives a simple board and you steer from it:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
Backlog → Todo → In Progress → In Review → Done (+ Needs Input, Cancelled)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
`beflow watch` polls the queue and dispatches Todo items up to your WIP limit,
|
|
93
|
+
advances merged PRs to **Done**, reworks items you label `changes-requested`,
|
|
94
|
+
and answers items in **Needs Input** when you reply. See the
|
|
95
|
+
[lifecycle](docs/lifecycle.md) and [operating model](docs/OPERATING-MODEL.md).
|
|
96
|
+
|
|
97
|
+
## Commands
|
|
98
|
+
|
|
99
|
+
`run` · `watch` · `setup`/`update` · `new` · `accept` · `review` · `queue` ·
|
|
100
|
+
`runs` · `doctor` · `gc`
|
|
101
|
+
|
|
102
|
+
Full details — flags, examples, behavior — in the
|
|
103
|
+
**[command reference](docs/commands.md)**. Every command also supports `--help`.
|
|
104
|
+
|
|
105
|
+
## Documentation
|
|
106
|
+
|
|
107
|
+
- [Command reference](docs/commands.md) — every command and flag
|
|
108
|
+
- [Config reference](docs/config.md) — every `config.json` setting
|
|
109
|
+
- [Design](docs/DESIGN.md) — architecture and the run pipeline
|
|
110
|
+
- [Lifecycle](docs/lifecycle.md) — the board as the control center
|
|
111
|
+
- [Operating model](docs/OPERATING-MODEL.md) — the queue-based workflow
|
|
112
|
+
- [Resolution](docs/resolution.md) — how agent / mode / repo / job kind are chosen
|
|
113
|
+
- [Prompts](docs/prompts.md) — prompt templates and overrides
|
|
114
|
+
- [Issue templates](docs/issue-templates.md) — authoring work items with `beflow new`
|
|
115
|
+
- [Adapters](docs/adapters.md) — writing a tracker adapter
|
|
116
|
+
- [MCP](docs/mcp.md) — per-run MCP servers
|
|
117
|
+
- [ACP events](docs/acp-events.md) — the agent event stream beflow consumes
|
|
118
|
+
|
|
119
|
+
## License
|
|
120
|
+
|
|
121
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./config.schema.json",
|
|
3
|
+
"tracker": "plane",
|
|
4
|
+
"trackers": {
|
|
5
|
+
"plane": {
|
|
6
|
+
"baseUrl": "https://api.plane.so",
|
|
7
|
+
"workspaceSlug": "your-workspace",
|
|
8
|
+
"apiKeyEnv": "PLANE_API_KEY"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"defaults": {
|
|
12
|
+
"agent": "claude",
|
|
13
|
+
"runMode": "supervised"
|
|
14
|
+
},
|
|
15
|
+
"worktrees": {
|
|
16
|
+
"dir": "~/.beflow/worktrees"
|
|
17
|
+
},
|
|
18
|
+
"runs": {
|
|
19
|
+
"dir": "~/.beflow/runs"
|
|
20
|
+
},
|
|
21
|
+
"tools": {
|
|
22
|
+
"acpx": ["bunx", "acpx"]
|
|
23
|
+
},
|
|
24
|
+
"prompts": {
|
|
25
|
+
"dir": "~/.beflow/prompts"
|
|
26
|
+
},
|
|
27
|
+
"agents": {
|
|
28
|
+
"claude": {
|
|
29
|
+
"command": "claude",
|
|
30
|
+
"args": ["--dangerously-skip-permissions"],
|
|
31
|
+
"acpCommand": "bunx",
|
|
32
|
+
"acpArgs": ["@agentclientprotocol/claude-agent-acp"],
|
|
33
|
+
"model": "claude-opus-4-8"
|
|
34
|
+
},
|
|
35
|
+
"omp": {
|
|
36
|
+
"command": "omp",
|
|
37
|
+
"acpArgs": ["acp"]
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"workspace": {
|
|
41
|
+
"id": "<workspace-uuid>",
|
|
42
|
+
"slug": "your-workspace"
|
|
43
|
+
},
|
|
44
|
+
"projects": {
|
|
45
|
+
"APP": {
|
|
46
|
+
"name": "My App",
|
|
47
|
+
"plane_project_id": "<project-uuid>",
|
|
48
|
+
"root": "/path/to/project",
|
|
49
|
+
"default_repo": "main_repo",
|
|
50
|
+
"limits": {
|
|
51
|
+
"inReview": 5,
|
|
52
|
+
"inProgress": 3
|
|
53
|
+
},
|
|
54
|
+
"repos": {
|
|
55
|
+
"main_repo": "/path/to/project/main_repo",
|
|
56
|
+
"website": "/path/to/project/website"
|
|
57
|
+
},
|
|
58
|
+
"module_repo_map": {
|
|
59
|
+
"GUI": "main_repo",
|
|
60
|
+
"Website": "website"
|
|
61
|
+
},
|
|
62
|
+
"defaults": {
|
|
63
|
+
"agent": "claude",
|
|
64
|
+
"runMode": "supervised"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/BeflowConfig",
|
|
3
|
+
"definitions": {
|
|
4
|
+
"BeflowConfig": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"$schema": {
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
"_comment": {
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"tracker": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"enum": ["plane", "linear"]
|
|
16
|
+
},
|
|
17
|
+
"trackers": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"properties": {
|
|
20
|
+
"linear": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"properties": {
|
|
23
|
+
"apiKeyEnv": {
|
|
24
|
+
"type": "string"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"required": ["apiKeyEnv"],
|
|
28
|
+
"additionalProperties": false
|
|
29
|
+
},
|
|
30
|
+
"plane": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"properties": {
|
|
33
|
+
"baseUrl": {
|
|
34
|
+
"type": "string"
|
|
35
|
+
},
|
|
36
|
+
"workspaceSlug": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
},
|
|
39
|
+
"apiKeyEnv": {
|
|
40
|
+
"type": "string"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"required": ["baseUrl", "workspaceSlug", "apiKeyEnv"],
|
|
44
|
+
"additionalProperties": false
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"additionalProperties": false
|
|
48
|
+
},
|
|
49
|
+
"defaults": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"properties": {
|
|
52
|
+
"agent": {
|
|
53
|
+
"type": "string"
|
|
54
|
+
},
|
|
55
|
+
"runMode": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"enum": ["autonomous", "supervised"]
|
|
58
|
+
},
|
|
59
|
+
"assignee": {
|
|
60
|
+
"type": "string"
|
|
61
|
+
},
|
|
62
|
+
"deadLetter": {
|
|
63
|
+
"type": "object",
|
|
64
|
+
"properties": {
|
|
65
|
+
"maxAttempts": {
|
|
66
|
+
"type": "number"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"additionalProperties": false
|
|
70
|
+
},
|
|
71
|
+
"inputQuality": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"properties": {
|
|
74
|
+
"minBodyChars": {
|
|
75
|
+
"type": "number"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"additionalProperties": false
|
|
79
|
+
},
|
|
80
|
+
"linkedContext": {
|
|
81
|
+
"type": "boolean"
|
|
82
|
+
},
|
|
83
|
+
"onManualMove": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"enum": ["yield", "abort"],
|
|
86
|
+
"default": "yield"
|
|
87
|
+
},
|
|
88
|
+
"qualityGate": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"properties": {
|
|
91
|
+
"commands": {
|
|
92
|
+
"type": "array",
|
|
93
|
+
"items": {
|
|
94
|
+
"type": "string"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"additionalProperties": false
|
|
99
|
+
},
|
|
100
|
+
"review": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"properties": {
|
|
103
|
+
"enabled": {
|
|
104
|
+
"type": "boolean"
|
|
105
|
+
},
|
|
106
|
+
"postToPr": {
|
|
107
|
+
"type": "boolean"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"additionalProperties": false
|
|
111
|
+
},
|
|
112
|
+
"routing": {
|
|
113
|
+
"type": "object",
|
|
114
|
+
"properties": {
|
|
115
|
+
"implement": {
|
|
116
|
+
"type": "string"
|
|
117
|
+
},
|
|
118
|
+
"spec": {
|
|
119
|
+
"type": "string"
|
|
120
|
+
},
|
|
121
|
+
"triage": {
|
|
122
|
+
"type": "string"
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"additionalProperties": false
|
|
126
|
+
},
|
|
127
|
+
"sla": {
|
|
128
|
+
"type": "object",
|
|
129
|
+
"properties": {
|
|
130
|
+
"inReviewMinutes": {
|
|
131
|
+
"type": "number"
|
|
132
|
+
},
|
|
133
|
+
"needsInputMinutes": {
|
|
134
|
+
"type": "number"
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"additionalProperties": false
|
|
138
|
+
},
|
|
139
|
+
"telemetry": {
|
|
140
|
+
"type": "object",
|
|
141
|
+
"properties": {
|
|
142
|
+
"inComment": {
|
|
143
|
+
"type": "boolean"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"additionalProperties": false
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"required": ["agent", "runMode"],
|
|
150
|
+
"additionalProperties": false
|
|
151
|
+
},
|
|
152
|
+
"worktrees": {
|
|
153
|
+
"type": "object",
|
|
154
|
+
"properties": {
|
|
155
|
+
"dir": {
|
|
156
|
+
"type": "string"
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"required": ["dir"],
|
|
160
|
+
"additionalProperties": false
|
|
161
|
+
},
|
|
162
|
+
"mcp": {
|
|
163
|
+
"type": "object",
|
|
164
|
+
"properties": {
|
|
165
|
+
"enabled": {
|
|
166
|
+
"type": "boolean",
|
|
167
|
+
"default": false
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
"additionalProperties": false
|
|
171
|
+
},
|
|
172
|
+
"runs": {
|
|
173
|
+
"type": "object",
|
|
174
|
+
"properties": {
|
|
175
|
+
"dir": {
|
|
176
|
+
"type": "string"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"required": ["dir"],
|
|
180
|
+
"additionalProperties": false
|
|
181
|
+
},
|
|
182
|
+
"tools": {
|
|
183
|
+
"type": "object",
|
|
184
|
+
"properties": {
|
|
185
|
+
"acpx": {
|
|
186
|
+
"type": "array",
|
|
187
|
+
"items": {
|
|
188
|
+
"type": "string"
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"additionalProperties": false
|
|
193
|
+
},
|
|
194
|
+
"prompts": {
|
|
195
|
+
"type": "object",
|
|
196
|
+
"properties": {
|
|
197
|
+
"dir": {
|
|
198
|
+
"type": "string"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"required": ["dir"],
|
|
202
|
+
"additionalProperties": false
|
|
203
|
+
},
|
|
204
|
+
"workspace": {
|
|
205
|
+
"type": "object",
|
|
206
|
+
"properties": {
|
|
207
|
+
"id": {
|
|
208
|
+
"type": "string"
|
|
209
|
+
},
|
|
210
|
+
"slug": {
|
|
211
|
+
"type": "string"
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
"required": ["id", "slug"],
|
|
215
|
+
"additionalProperties": false
|
|
216
|
+
},
|
|
217
|
+
"projects": {
|
|
218
|
+
"type": "object",
|
|
219
|
+
"additionalProperties": {
|
|
220
|
+
"type": "object",
|
|
221
|
+
"properties": {
|
|
222
|
+
"default_repo": {
|
|
223
|
+
"type": "string"
|
|
224
|
+
},
|
|
225
|
+
"defaults": {
|
|
226
|
+
"type": "object",
|
|
227
|
+
"properties": {
|
|
228
|
+
"agent": {
|
|
229
|
+
"type": "string"
|
|
230
|
+
},
|
|
231
|
+
"runMode": {
|
|
232
|
+
"type": "string",
|
|
233
|
+
"enum": ["autonomous", "supervised"]
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
"additionalProperties": false
|
|
237
|
+
},
|
|
238
|
+
"ci": {
|
|
239
|
+
"type": "object",
|
|
240
|
+
"properties": {
|
|
241
|
+
"autoReworkOnRed": {
|
|
242
|
+
"type": "boolean"
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
"additionalProperties": false
|
|
246
|
+
},
|
|
247
|
+
"deadLetter": {
|
|
248
|
+
"type": "object",
|
|
249
|
+
"properties": {
|
|
250
|
+
"maxAttempts": {
|
|
251
|
+
"type": "number"
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
"additionalProperties": false
|
|
255
|
+
},
|
|
256
|
+
"inputQuality": {
|
|
257
|
+
"type": "object",
|
|
258
|
+
"properties": {
|
|
259
|
+
"minBodyChars": {
|
|
260
|
+
"type": "number"
|
|
261
|
+
}
|
|
262
|
+
},
|
|
263
|
+
"additionalProperties": false
|
|
264
|
+
},
|
|
265
|
+
"limits": {
|
|
266
|
+
"type": "object",
|
|
267
|
+
"properties": {
|
|
268
|
+
"inReview": {
|
|
269
|
+
"type": "number"
|
|
270
|
+
},
|
|
271
|
+
"inProgress": {
|
|
272
|
+
"type": "number"
|
|
273
|
+
},
|
|
274
|
+
"maxRunMinutes": {
|
|
275
|
+
"type": "number"
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
"additionalProperties": false
|
|
279
|
+
},
|
|
280
|
+
"module_repo_map": {
|
|
281
|
+
"type": "object",
|
|
282
|
+
"additionalProperties": {
|
|
283
|
+
"type": "string"
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"name": {
|
|
287
|
+
"type": "string"
|
|
288
|
+
},
|
|
289
|
+
"plane_project_id": {
|
|
290
|
+
"type": "string"
|
|
291
|
+
},
|
|
292
|
+
"qualityGate": {
|
|
293
|
+
"type": "object",
|
|
294
|
+
"properties": {
|
|
295
|
+
"commands": {
|
|
296
|
+
"type": "array",
|
|
297
|
+
"items": {
|
|
298
|
+
"type": "string"
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
"additionalProperties": false
|
|
303
|
+
},
|
|
304
|
+
"repos": {
|
|
305
|
+
"type": "object",
|
|
306
|
+
"additionalProperties": {
|
|
307
|
+
"type": "string"
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
"review": {
|
|
311
|
+
"type": "object",
|
|
312
|
+
"properties": {
|
|
313
|
+
"enabled": {
|
|
314
|
+
"type": "boolean"
|
|
315
|
+
},
|
|
316
|
+
"postToPr": {
|
|
317
|
+
"type": "boolean"
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
"additionalProperties": false
|
|
321
|
+
},
|
|
322
|
+
"root": {
|
|
323
|
+
"type": "string"
|
|
324
|
+
},
|
|
325
|
+
"routing": {
|
|
326
|
+
"type": "object",
|
|
327
|
+
"properties": {
|
|
328
|
+
"implement": {
|
|
329
|
+
"type": "string"
|
|
330
|
+
},
|
|
331
|
+
"spec": {
|
|
332
|
+
"type": "string"
|
|
333
|
+
},
|
|
334
|
+
"triage": {
|
|
335
|
+
"type": "string"
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
"additionalProperties": false
|
|
339
|
+
},
|
|
340
|
+
"scheduling": {
|
|
341
|
+
"type": "object",
|
|
342
|
+
"properties": {
|
|
343
|
+
"activeCycleOnly": {
|
|
344
|
+
"type": "boolean"
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
"additionalProperties": false
|
|
348
|
+
},
|
|
349
|
+
"sla": {
|
|
350
|
+
"type": "object",
|
|
351
|
+
"properties": {
|
|
352
|
+
"inReviewMinutes": {
|
|
353
|
+
"type": "number"
|
|
354
|
+
},
|
|
355
|
+
"needsInputMinutes": {
|
|
356
|
+
"type": "number"
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
"additionalProperties": false
|
|
360
|
+
},
|
|
361
|
+
"telemetry": {
|
|
362
|
+
"type": "object",
|
|
363
|
+
"properties": {
|
|
364
|
+
"inComment": {
|
|
365
|
+
"type": "boolean"
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
"additionalProperties": false
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
"required": ["default_repo", "module_repo_map", "name", "repos", "root"],
|
|
372
|
+
"additionalProperties": false
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
"agents": {
|
|
376
|
+
"type": "object",
|
|
377
|
+
"additionalProperties": {
|
|
378
|
+
"type": "object",
|
|
379
|
+
"properties": {
|
|
380
|
+
"command": {
|
|
381
|
+
"type": "string"
|
|
382
|
+
},
|
|
383
|
+
"args": {
|
|
384
|
+
"type": "array",
|
|
385
|
+
"items": {
|
|
386
|
+
"type": "string"
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
"acpCommand": {
|
|
390
|
+
"type": "string"
|
|
391
|
+
},
|
|
392
|
+
"acpArgs": {
|
|
393
|
+
"type": "array",
|
|
394
|
+
"items": {
|
|
395
|
+
"type": "string"
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
"model": {
|
|
399
|
+
"type": "string"
|
|
400
|
+
},
|
|
401
|
+
"permissionPolicy": {}
|
|
402
|
+
},
|
|
403
|
+
"required": ["command"],
|
|
404
|
+
"additionalProperties": false
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
"required": ["tracker", "trackers", "defaults", "workspace", "projects"],
|
|
409
|
+
"additionalProperties": false
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
413
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "beflow",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "An AI-agent orchestration CLI that drives your issue tracker's backlog to shipped PRs.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"acp",
|
|
7
|
+
"agent",
|
|
8
|
+
"ai",
|
|
9
|
+
"automation",
|
|
10
|
+
"bun",
|
|
11
|
+
"cli",
|
|
12
|
+
"issue-tracker",
|
|
13
|
+
"linear",
|
|
14
|
+
"orchestration",
|
|
15
|
+
"plane"
|
|
16
|
+
],
|
|
17
|
+
"homepage": "https://github.com/corrm/beflow#readme",
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/corrm/beflow/issues"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"author": "CorrM (Islam Nofl)",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git+https://github.com/corrm/beflow.git"
|
|
26
|
+
},
|
|
27
|
+
"bin": {
|
|
28
|
+
"beflow": "./src/cli.ts"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"src",
|
|
32
|
+
"config.example.json",
|
|
33
|
+
"config.schema.json",
|
|
34
|
+
"README.md",
|
|
35
|
+
"LICENSE"
|
|
36
|
+
],
|
|
37
|
+
"type": "module",
|
|
38
|
+
"module": "src/index.ts",
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"typecheck": "tsc --noEmit",
|
|
44
|
+
"lint": "oxlint",
|
|
45
|
+
"lint:fix": "oxlint --fix",
|
|
46
|
+
"fmt": "oxfmt",
|
|
47
|
+
"fmt:check": "oxfmt --check",
|
|
48
|
+
"check": "oxfmt --check . && oxlint && tsc --noEmit && bun test",
|
|
49
|
+
"test": "bun test",
|
|
50
|
+
"start": "bun src/cli.ts",
|
|
51
|
+
"build": "bun build --compile --outfile dist/beflow ./src/cli.ts",
|
|
52
|
+
"gen:schema": "bun scripts/gen-config-schema.ts"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@clack/prompts": "^1.5.1",
|
|
56
|
+
"@linear/sdk": "^86.0.0",
|
|
57
|
+
"citty": "^0.2.2",
|
|
58
|
+
"yaml": "^2.9.0",
|
|
59
|
+
"zod": "^3.23.8"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"bun-types": "^1.1.0",
|
|
63
|
+
"oxfmt": "^0.54.0",
|
|
64
|
+
"oxlint": "^1.69.0",
|
|
65
|
+
"oxlint-tsgolint": "^0.23.0",
|
|
66
|
+
"typescript": "^6.0.3",
|
|
67
|
+
"zod-to-json-schema": "^3.25.2"
|
|
68
|
+
},
|
|
69
|
+
"engines": {
|
|
70
|
+
"bun": ">=1.0.0"
|
|
71
|
+
}
|
|
72
|
+
}
|