agentweaver 0.1.10 → 0.1.12
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/README.md +218 -224
- package/dist/artifacts.js +109 -55
- package/dist/executors/{codex-local-executor.js → codex-executor.js} +6 -5
- package/dist/executors/configs/{codex-local-config.js → codex-config.js} +1 -1
- package/dist/executors/configs/jira-fetch-config.js +2 -0
- package/dist/executors/configs/telegram-notifier-config.js +3 -0
- package/dist/executors/fetch-gitlab-diff-executor.js +1 -1
- package/dist/executors/fetch-gitlab-review-executor.js +1 -1
- package/dist/executors/git-commit-executor.js +25 -0
- package/dist/executors/jira-fetch-executor.js +1 -0
- package/dist/executors/opencode-executor.js +22 -11
- package/dist/executors/process-executor.js +3 -0
- package/dist/executors/telegram-notifier-executor.js +54 -0
- package/dist/flow-state.js +46 -1
- package/dist/gitlab.js +13 -8
- package/dist/index.js +477 -514
- package/dist/interactive-ui.js +609 -88
- package/dist/jira.js +109 -5
- package/dist/pipeline/auto-flow.js +6 -6
- package/dist/pipeline/context.js +1 -0
- package/dist/pipeline/flow-catalog.js +34 -4
- package/dist/pipeline/flow-model-settings.js +77 -0
- package/dist/pipeline/flow-specs/auto-common.json +446 -0
- package/dist/pipeline/flow-specs/auto-golang.json +563 -0
- package/dist/pipeline/flow-specs/{bug-analyze.json → bugz/bug-analyze.json} +43 -25
- package/dist/pipeline/flow-specs/{bug-fix.json → bugz/bug-fix.json} +5 -4
- package/dist/pipeline/flow-specs/git-commit.json +196 -0
- package/dist/pipeline/flow-specs/{gitlab-diff-review.json → gitlab/gitlab-diff-review.json} +20 -50
- package/dist/pipeline/flow-specs/{gitlab-review.json → gitlab/gitlab-review.json} +65 -133
- package/dist/pipeline/flow-specs/{mr-description.json → gitlab/mr-description.json} +17 -10
- package/dist/pipeline/flow-specs/{run-go-linter-loop.json → go/run-go-linter-loop.json} +40 -14
- package/dist/pipeline/flow-specs/{run-go-tests-loop.json → go/run-go-tests-loop.json} +40 -14
- package/dist/pipeline/flow-specs/implement.json +5 -4
- package/dist/pipeline/flow-specs/plan.json +40 -148
- package/dist/pipeline/flow-specs/{review-fix.json → review/review-fix.json} +74 -13
- package/dist/pipeline/flow-specs/review/review-loop.json +282 -0
- package/dist/pipeline/flow-specs/review/review-project.json +87 -0
- package/dist/pipeline/flow-specs/review/review.json +126 -0
- package/dist/pipeline/flow-specs/task-describe.json +252 -11
- package/dist/pipeline/launch-profile-config.js +38 -0
- package/dist/pipeline/node-registry.js +75 -45
- package/dist/pipeline/nodes/build-failure-summary-node.js +16 -29
- package/dist/pipeline/nodes/build-review-fix-prompt-node.js +36 -0
- package/dist/pipeline/nodes/codex-prompt-node.js +41 -0
- package/dist/pipeline/nodes/commit-message-form-node.js +79 -0
- package/dist/pipeline/nodes/git-commit-form-node.js +138 -0
- package/dist/pipeline/nodes/git-commit-node.js +28 -0
- package/dist/pipeline/nodes/git-status-node.js +221 -0
- package/dist/pipeline/nodes/gitlab-review-artifacts-node.js +10 -6
- package/dist/pipeline/nodes/jira-context-node.js +10 -0
- package/dist/pipeline/nodes/jira-fetch-node.js +3 -0
- package/dist/pipeline/nodes/llm-prompt-node.js +62 -0
- package/dist/pipeline/nodes/plan-codex-node.js +1 -1
- package/dist/pipeline/nodes/read-file-node.js +11 -0
- package/dist/pipeline/nodes/review-findings-form-node.js +48 -14
- package/dist/pipeline/nodes/select-files-form-node.js +72 -0
- package/dist/pipeline/nodes/telegram-notifier-node.js +28 -0
- package/dist/pipeline/nodes/user-input-node.js +43 -8
- package/dist/pipeline/nodes/write-selection-file-node.js +46 -0
- package/dist/pipeline/prompt-registry.js +3 -4
- package/dist/pipeline/prompt-runtime.js +13 -3
- package/dist/pipeline/registry.js +6 -8
- package/dist/pipeline/spec-compiler.js +5 -0
- package/dist/pipeline/spec-types.js +9 -3
- package/dist/pipeline/spec-validator.js +4 -0
- package/dist/pipeline/types.js +1 -0
- package/dist/pipeline/value-resolver.js +50 -38
- package/dist/prompts.js +119 -110
- package/dist/runtime/agentweaver-home.js +8 -0
- package/dist/runtime/command-resolution.js +0 -38
- package/dist/runtime/env-loader.js +43 -0
- package/dist/runtime/process-runner.js +9 -3
- package/dist/structured-artifact-schema-registry.js +54 -0
- package/dist/structured-artifact-schemas.json +22 -20
- package/dist/structured-artifacts.js +3 -43
- package/dist/user-input.js +38 -3
- package/package.json +2 -6
- package/Dockerfile.codex +0 -56
- package/dist/executors/claude-executor.js +0 -46
- package/dist/executors/codex-docker-executor.js +0 -27
- package/dist/executors/configs/claude-config.js +0 -12
- package/dist/executors/configs/codex-docker-config.js +0 -10
- package/dist/executors/configs/verify-build-config.js +0 -7
- package/dist/executors/verify-build-executor.js +0 -123
- package/dist/pipeline/flow-specs/auto.json +0 -979
- package/dist/pipeline/flow-specs/opencode/auto-opencode.json +0 -1365
- package/dist/pipeline/flow-specs/opencode/bugz/bug-analyze-opencode.json +0 -382
- package/dist/pipeline/flow-specs/opencode/bugz/bug-fix-opencode.json +0 -56
- package/dist/pipeline/flow-specs/opencode/gitlab/gitlab-diff-review-opencode.json +0 -308
- package/dist/pipeline/flow-specs/opencode/gitlab/gitlab-review-opencode.json +0 -437
- package/dist/pipeline/flow-specs/opencode/gitlab/mr-description-opencode.json +0 -117
- package/dist/pipeline/flow-specs/opencode/go/run-go-linter-loop-opencode.json +0 -321
- package/dist/pipeline/flow-specs/opencode/go/run-go-tests-loop-opencode.json +0 -321
- package/dist/pipeline/flow-specs/opencode/implement-opencode.json +0 -64
- package/dist/pipeline/flow-specs/opencode/plan-opencode.json +0 -603
- package/dist/pipeline/flow-specs/opencode/review/review-fix-opencode.json +0 -209
- package/dist/pipeline/flow-specs/opencode/review/review-opencode.json +0 -452
- package/dist/pipeline/flow-specs/opencode/task-describe-opencode.json +0 -148
- package/dist/pipeline/flow-specs/review-project.json +0 -243
- package/dist/pipeline/flow-specs/review.json +0 -312
- package/dist/pipeline/flows/preflight-flow.js +0 -19
- package/dist/pipeline/nodes/claude-prompt-node.js +0 -54
- package/dist/pipeline/nodes/codex-docker-prompt-node.js +0 -32
- package/dist/pipeline/nodes/codex-local-prompt-node.js +0 -32
- package/dist/pipeline/nodes/review-claude-node.js +0 -38
- package/dist/pipeline/nodes/review-reply-codex-node.js +0 -40
- package/dist/pipeline/nodes/verify-build-node.js +0 -15
- package/dist/runtime/docker-runtime.js +0 -51
- package/docker-compose.yml +0 -445
- package/verify_build.sh +0 -105
package/README.md
CHANGED
|
@@ -2,81 +2,99 @@
|
|
|
2
2
|
|
|
3
3
|
`AgentWeaver` is a TypeScript/Node.js CLI for harness engineering around coding agents.
|
|
4
4
|
|
|
5
|
-
It
|
|
5
|
+
It is built around declarative workflow specs. A flow describes phases and steps in JSON, runtime nodes implement behavior in TypeScript, and artifacts on disk make runs resumable, inspectable, and operationally manageable from the TUI.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Typical usage looks like:
|
|
8
8
|
|
|
9
9
|
`plan -> implement -> run-go-linter-loop -> run-go-tests-loop -> review -> review-fix`
|
|
10
10
|
|
|
11
|
-
The
|
|
11
|
+
The important part is not that exact chain. The point is that AgentWeaver lets you design, operate, and evolve durable agent harnesses instead of accumulating one-off prompts and shell glue.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- with artifacts that survive restarts and let runs resume from the right point
|
|
15
|
-
- with a TUI for semi-automatic operation and visibility
|
|
16
|
-
- with an `auto` mode for fully automated flows without manual handoff
|
|
13
|
+
## What It Does
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
- Fetches Jira issue context by issue key or browse URL
|
|
16
|
+
- Fetches GitLab merge request diff and review data into reusable artifacts
|
|
17
|
+
- Runs Codex-, OpenCode-, and process-backed stages through a common pipeline runtime
|
|
18
|
+
- Persists artifacts and compact flow execution state under the current project scope
|
|
19
|
+
- Supports both operator-driven work in a TUI and end-to-end automation flows
|
|
20
|
+
- Resumes interrupted declarative flows when required artifacts and launch profile still match
|
|
19
21
|
|
|
20
|
-
##
|
|
22
|
+
## Harness Engineering Focus
|
|
23
|
+
|
|
24
|
+
AgentWeaver is not positioned as a thin wrapper around one agent call. It is meant for harness engineering:
|
|
21
25
|
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
- Isolates workflows by scope: for Jira-backed runs this is usually the issue key, otherwise it defaults to `<git-branch>--<worktree-hash>`
|
|
27
|
-
- Persists compact `auto` pipeline state on disk so runs can resume without keeping full agent transcripts
|
|
28
|
-
- Uses Docker runtime services for isolated Codex execution and build verification
|
|
26
|
+
- workflows are modeled explicitly as phases, steps, prompts, params, expectations, and artifacts
|
|
27
|
+
- execution logic is isolated into reusable nodes and executors instead of being embedded in ad-hoc scripts
|
|
28
|
+
- artifacts on disk are the contract between stages, which makes runs reviewable and restartable
|
|
29
|
+
- the same workflow model can be used in direct CLI mode, interactive TUI mode, and resumable automation flows
|
|
29
30
|
|
|
30
|
-
In
|
|
31
|
+
In practice, this means you can treat an agent workflow like an engineered system: versioned, inspectable, repeatable, and debuggable.
|
|
31
32
|
|
|
32
|
-
##
|
|
33
|
+
## Core Concepts
|
|
33
34
|
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
35
|
+
- `flow spec`: declarative JSON under `src/pipeline/flow-specs/` or project-local `.agentweaver/.flows/`
|
|
36
|
+
- `node`: reusable runtime unit from `src/pipeline/nodes/`
|
|
37
|
+
- `executor`: integration layer for Jira, Codex, OpenCode, GitLab, shell/process execution, Telegram notifications, and related actions
|
|
38
|
+
- `scope`: isolated workspace key for artifacts and flow state; usually based on Jira task, otherwise derived from git context
|
|
39
|
+
- `artifact`: file produced or consumed by flows, used as the stable contract between stages
|
|
40
|
+
- `flow state`: compact persisted execution metadata used for resume/restart in long-running flows such as `auto-golang`
|
|
38
41
|
|
|
39
|
-
##
|
|
42
|
+
## Declarative Workflow Model
|
|
40
43
|
|
|
41
|
-
The
|
|
44
|
+
The center of the system is the declarative flow spec:
|
|
42
45
|
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
- `
|
|
46
|
+
- phases define the workflow structure visible to operators
|
|
47
|
+
- steps define execution units inside each phase
|
|
48
|
+
- prompt bindings define how agent instructions are assembled
|
|
49
|
+
- params define node runtime inputs
|
|
50
|
+
- expectations define postconditions
|
|
51
|
+
- `after` actions update runtime state without introducing ad-hoc imperative glue
|
|
49
52
|
|
|
50
|
-
This keeps
|
|
53
|
+
This keeps workflow design in JSON while keeping implementation details in typed runtime code.
|
|
51
54
|
|
|
52
55
|
## Repository Layout
|
|
53
56
|
|
|
54
|
-
- `src
|
|
55
|
-
- `src/
|
|
56
|
-
- `src/
|
|
57
|
-
-
|
|
58
|
-
- `src/pipeline/nodes/` — reusable
|
|
59
|
-
- `src/
|
|
60
|
-
- `src/
|
|
61
|
-
- `src/
|
|
62
|
-
- `src/
|
|
63
|
-
- `
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
|
|
69
|
-
- `
|
|
70
|
-
- `
|
|
71
|
-
- `
|
|
57
|
+
- `src/index.ts` — CLI entrypoint, interactive mode bootstrap, and top-level orchestration
|
|
58
|
+
- `src/executors/` — first-class executors
|
|
59
|
+
- `src/executors/configs/` — data-only default executor configs
|
|
60
|
+
- `src/pipeline/` — declarative flow loading, compilation, validation, runtime, and built-in flow specs
|
|
61
|
+
- `src/pipeline/nodes/` — reusable runtime nodes used by flow specs
|
|
62
|
+
- `src/runtime/` — shared runtime services such as command resolution and subprocess execution
|
|
63
|
+
- `src/interactive-ui.ts` — full-screen interactive UI
|
|
64
|
+
- `src/markdown.ts` — markdown rendering for terminal output
|
|
65
|
+
- `src/structured-artifact-schemas.json` — schemas for machine-readable artifacts
|
|
66
|
+
- `tests/` — automated tests for pipeline behavior
|
|
67
|
+
|
|
68
|
+
## Built-In Flows
|
|
69
|
+
|
|
70
|
+
User-invokable built-in commands currently map to these flow specs:
|
|
71
|
+
|
|
72
|
+
- `plan`
|
|
73
|
+
- `task-describe`
|
|
74
|
+
- `implement`
|
|
75
|
+
- `review`
|
|
76
|
+
- `review-fix`
|
|
77
|
+
- `review-loop`
|
|
78
|
+
- `bug-analyze`
|
|
79
|
+
- `bug-fix`
|
|
80
|
+
- `git-commit`
|
|
81
|
+
- `gitlab-diff-review`
|
|
82
|
+
- `gitlab-review`
|
|
83
|
+
- `mr-description`
|
|
84
|
+
- `run-go-tests-loop`
|
|
85
|
+
- `run-go-linter-loop`
|
|
86
|
+
- `auto-golang`
|
|
87
|
+
- `auto-common`
|
|
88
|
+
|
|
89
|
+
There are also built-in nested/helper flows that are loaded declaratively but are not direct top-level CLI commands, for example `review-project`.
|
|
72
90
|
|
|
73
91
|
## Requirements
|
|
74
92
|
|
|
75
93
|
- Node.js `>= 18.19.0`
|
|
76
94
|
- npm
|
|
77
|
-
-
|
|
78
|
-
- `
|
|
79
|
-
-
|
|
95
|
+
- `codex` CLI for Codex-backed stages
|
|
96
|
+
- `opencode` CLI if you use OpenCode-backed stages
|
|
97
|
+
- access to Jira and/or GitLab when the selected flow needs them
|
|
80
98
|
|
|
81
99
|
## Installation
|
|
82
100
|
|
|
@@ -87,226 +105,226 @@ npm install
|
|
|
87
105
|
npm run build
|
|
88
106
|
```
|
|
89
107
|
|
|
90
|
-
|
|
108
|
+
Run from source:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
node dist/index.js --help
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Global install after publishing:
|
|
91
115
|
|
|
92
116
|
```bash
|
|
93
117
|
npm install -g agentweaver
|
|
118
|
+
agentweaver --help
|
|
94
119
|
```
|
|
95
120
|
|
|
96
|
-
One-off usage after
|
|
121
|
+
One-off usage after publishing:
|
|
97
122
|
|
|
98
123
|
```bash
|
|
99
124
|
npx agentweaver --help
|
|
100
125
|
```
|
|
101
126
|
|
|
102
|
-
## Environment
|
|
127
|
+
## Environment Loading
|
|
103
128
|
|
|
104
|
-
|
|
129
|
+
AgentWeaver loads environment variables from two optional `.env` files:
|
|
105
130
|
|
|
106
|
-
|
|
131
|
+
1. `~/.agentweaver/.env`
|
|
132
|
+
2. `<project>/.agentweaver/.env`
|
|
133
|
+
|
|
134
|
+
Priority is:
|
|
135
|
+
|
|
136
|
+
1. shell environment
|
|
137
|
+
2. project-local `.agentweaver/.env`
|
|
138
|
+
3. global `~/.agentweaver/.env`
|
|
139
|
+
|
|
140
|
+
The directory `~/.agentweaver` is created automatically on startup. Missing `.env` files are allowed.
|
|
141
|
+
|
|
142
|
+
`AGENTWEAVER_HOME` is only used to override the package installation/home directory used by the CLI. It is not the same thing as `~/.agentweaver`.
|
|
143
|
+
|
|
144
|
+
## Environment Variables
|
|
145
|
+
|
|
146
|
+
Required for Jira-backed flows:
|
|
147
|
+
|
|
148
|
+
- `JIRA_API_KEY` — Jira API token
|
|
107
149
|
|
|
108
150
|
Common optional variables:
|
|
109
151
|
|
|
110
|
-
- `
|
|
111
|
-
- `
|
|
112
|
-
- `
|
|
113
|
-
- `
|
|
152
|
+
- `JIRA_USERNAME` — required for Jira Cloud Basic auth
|
|
153
|
+
- `JIRA_AUTH_MODE` — `auto`, `basic`, or `bearer`
|
|
154
|
+
- `JIRA_BASE_URL` — required when passing only an issue key such as `DEMO-123`
|
|
155
|
+
- `GITLAB_TOKEN` — token for GitLab review-related flows
|
|
156
|
+
- `AGENTWEAVER_HOME` — override package home/installation directory
|
|
114
157
|
- `CODEX_BIN` — override `codex` executable path
|
|
115
|
-
- `
|
|
116
|
-
- `
|
|
117
|
-
- `
|
|
158
|
+
- `CODEX_MODEL` — fallback model for Codex-backed executors
|
|
159
|
+
- `OPENCODE_BIN` — override `opencode` executable path
|
|
160
|
+
- `OPENCODE_MODEL` — fallback model for OpenCode-backed executors
|
|
118
161
|
|
|
119
|
-
Example
|
|
162
|
+
Example:
|
|
120
163
|
|
|
121
164
|
```bash
|
|
122
165
|
JIRA_API_KEY=your-jira-api-token
|
|
166
|
+
JIRA_USERNAME=your.name@company.com
|
|
167
|
+
JIRA_AUTH_MODE=auto
|
|
123
168
|
JIRA_BASE_URL=https://jira.example.com
|
|
169
|
+
GITLAB_TOKEN=your-gitlab-token
|
|
124
170
|
AGENTWEAVER_HOME=/absolute/path/to/AgentWeaver
|
|
125
171
|
CODEX_BIN=codex
|
|
126
|
-
CLAUDE_BIN=claude
|
|
127
172
|
CODEX_MODEL=gpt-5.4
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
GONOSUMDB=gitlab.example.org/*
|
|
131
|
-
GONOPROXY=gitlab.example.org/*
|
|
132
|
-
GIT_ALLOW_PROTOCOL=file:https:ssh
|
|
173
|
+
OPENCODE_BIN=opencode
|
|
174
|
+
OPENCODE_MODEL=minimax-coding-plan/MiniMax-M2.7
|
|
133
175
|
```
|
|
134
176
|
|
|
135
|
-
##
|
|
177
|
+
## TUI-First Operations
|
|
136
178
|
|
|
137
|
-
|
|
179
|
+
The full-screen TUI is not a cosmetic wrapper. It is the operator console for the harness:
|
|
138
180
|
|
|
139
|
-
-
|
|
140
|
-
-
|
|
141
|
-
-
|
|
181
|
+
- browse built-in and project-local workflows
|
|
182
|
+
- launch flows in the current scope
|
|
183
|
+
- inspect progress by phase and step
|
|
184
|
+
- follow activity, prompts, summaries, and statuses
|
|
185
|
+
- operate resumable flows without losing the execution model
|
|
142
186
|
|
|
143
|
-
|
|
187
|
+
The CLI remains important for direct execution and automation, but the TUI is where the harness becomes an operational system rather than a set of commands.
|
|
144
188
|
|
|
145
|
-
|
|
146
|
-
agentweaver plan DEMO-3288
|
|
147
|
-
agentweaver plan
|
|
148
|
-
agentweaver bug-analyze DEMO-3288
|
|
149
|
-
agentweaver bug-fix DEMO-3288
|
|
150
|
-
agentweaver gitlab-diff-review
|
|
151
|
-
agentweaver gitlab-review
|
|
152
|
-
agentweaver mr-description DEMO-3288
|
|
153
|
-
agentweaver task-describe DEMO-3288
|
|
154
|
-
agentweaver implement DEMO-3288
|
|
155
|
-
agentweaver review
|
|
156
|
-
agentweaver review DEMO-3288
|
|
157
|
-
agentweaver review --scope release-prep
|
|
158
|
-
agentweaver run-go-tests-loop DEMO-3288
|
|
159
|
-
agentweaver run-go-tests-loop
|
|
160
|
-
agentweaver run-go-linter-loop DEMO-3288
|
|
161
|
-
agentweaver auto DEMO-3288
|
|
162
|
-
```
|
|
189
|
+
## CLI Usage
|
|
163
190
|
|
|
164
|
-
|
|
191
|
+
Interactive mode:
|
|
165
192
|
|
|
166
193
|
```bash
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
node dist/index.js bug-fix DEMO-3288
|
|
171
|
-
node dist/index.js gitlab-diff-review
|
|
172
|
-
node dist/index.js gitlab-review
|
|
173
|
-
node dist/index.js mr-description DEMO-3288
|
|
174
|
-
node dist/index.js task-describe DEMO-3288
|
|
175
|
-
node dist/index.js review
|
|
176
|
-
node dist/index.js auto DEMO-3288
|
|
194
|
+
agentweaver
|
|
195
|
+
agentweaver DEMO-1234
|
|
196
|
+
agentweaver --force DEMO-1234
|
|
177
197
|
```
|
|
178
198
|
|
|
179
|
-
|
|
199
|
+
Direct flow execution:
|
|
180
200
|
|
|
181
201
|
```bash
|
|
182
|
-
agentweaver DEMO-
|
|
183
|
-
agentweaver
|
|
202
|
+
agentweaver plan DEMO-1234
|
|
203
|
+
agentweaver task-describe DEMO-1234
|
|
204
|
+
agentweaver implement DEMO-1234
|
|
205
|
+
agentweaver review DEMO-1234
|
|
206
|
+
agentweaver review-fix DEMO-1234
|
|
207
|
+
agentweaver review-loop DEMO-1234
|
|
208
|
+
agentweaver bug-analyze DEMO-1234
|
|
209
|
+
agentweaver bug-fix DEMO-1234
|
|
210
|
+
agentweaver git-commit DEMO-1234
|
|
211
|
+
agentweaver gitlab-diff-review
|
|
212
|
+
agentweaver gitlab-review
|
|
213
|
+
agentweaver mr-description DEMO-1234
|
|
214
|
+
agentweaver run-go-tests-loop DEMO-1234
|
|
215
|
+
agentweaver run-go-linter-loop DEMO-1234
|
|
216
|
+
agentweaver auto-golang DEMO-1234
|
|
217
|
+
agentweaver auto-common DEMO-1234
|
|
184
218
|
```
|
|
185
219
|
|
|
186
|
-
|
|
220
|
+
From a source checkout:
|
|
187
221
|
|
|
188
222
|
```bash
|
|
189
|
-
|
|
223
|
+
node dist/index.js plan DEMO-1234
|
|
224
|
+
node dist/index.js implement DEMO-1234
|
|
225
|
+
node dist/index.js review DEMO-1234
|
|
226
|
+
node dist/index.js auto-golang DEMO-1234
|
|
227
|
+
node dist/index.js auto-common DEMO-1234
|
|
190
228
|
```
|
|
191
229
|
|
|
192
230
|
Useful commands:
|
|
193
231
|
|
|
194
232
|
```bash
|
|
195
233
|
agentweaver --help
|
|
196
|
-
agentweaver
|
|
197
|
-
agentweaver auto-
|
|
198
|
-
agentweaver auto-
|
|
234
|
+
agentweaver --version
|
|
235
|
+
agentweaver auto-golang --help-phases
|
|
236
|
+
agentweaver auto-common --help-phases
|
|
237
|
+
agentweaver auto-golang --from <phase> DEMO-1234
|
|
238
|
+
agentweaver auto-status DEMO-1234
|
|
239
|
+
agentweaver auto-reset DEMO-1234
|
|
199
240
|
```
|
|
200
241
|
|
|
201
242
|
Notes:
|
|
202
243
|
|
|
203
|
-
- `--
|
|
204
|
-
-
|
|
205
|
-
-
|
|
206
|
-
-
|
|
207
|
-
- `--
|
|
208
|
-
-
|
|
244
|
+
- `--dry` fetches required context but prints launch commands instead of running Codex/OpenCode steps
|
|
245
|
+
- `--verbose` streams child process stdout/stderr in direct CLI mode
|
|
246
|
+
- `--prompt <text>` appends extra instructions to the prompt
|
|
247
|
+
- `--scope <name>` is supported by scope-flexible flows such as `implement`, `review`, `review-fix`, `review-loop`, `run-go-tests-loop`, `run-go-linter-loop`, `gitlab-review`, and `gitlab-diff-review`
|
|
248
|
+
- `--md-lang <en|ru>` currently applies to `plan`
|
|
249
|
+
- `--force` only affects interactive mode and forces regeneration of task summary in Jira-backed flows
|
|
250
|
+
- Jira-backed flows ask for Jira input interactively when it is omitted
|
|
251
|
+
- `task-describe` can also work from manual task description input without Jira
|
|
252
|
+
- `gitlab-review` and `gitlab-diff-review` ask for a GitLab merge request URL interactively
|
|
253
|
+
- `auto-status` and `auto-reset` currently operate on persisted state for `auto-golang`
|
|
209
254
|
|
|
210
|
-
|
|
255
|
+
## `auto-golang` and `auto-common`
|
|
211
256
|
|
|
212
|
-
|
|
213
|
-
agentweaver auto DEMO-3288
|
|
214
|
-
agentweaver auto-status DEMO-3288
|
|
215
|
-
agentweaver auto-reset DEMO-3288
|
|
216
|
-
```
|
|
257
|
+
`auto-golang` is the main resumable end-to-end automation flow. It stores persisted execution state and supports:
|
|
217
258
|
|
|
218
|
-
|
|
259
|
+
- phase listing via `--help-phases`
|
|
260
|
+
- restart from a specific phase via `--from <phase>`
|
|
261
|
+
- status inspection via `auto-status`
|
|
262
|
+
- reset via `auto-reset`
|
|
263
|
+
- resume validation against saved launch profile and required artifacts
|
|
219
264
|
|
|
220
|
-
|
|
265
|
+
`auto-common` is a separate built-in automation flow with its own phase list, but it does not currently have dedicated `auto-status` or `auto-reset` commands.
|
|
221
266
|
|
|
222
|
-
|
|
267
|
+
## Launch Profiles and Resume
|
|
223
268
|
|
|
224
|
-
|
|
225
|
-
- current progress for the selected flow
|
|
226
|
-
- activity log
|
|
227
|
-
- task summary pane
|
|
228
|
-
- keyboard navigation between panes
|
|
269
|
+
Interactive flow runs can ask for an LLM launch profile: executor plus model. That selection is persisted with resumable flow state.
|
|
229
270
|
|
|
230
|
-
|
|
271
|
+
Resume is allowed only when:
|
|
231
272
|
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
- `q` or `Ctrl+C` — exit
|
|
273
|
+
- the flow state exists for the current scope
|
|
274
|
+
- the saved launch profile matches the requested one
|
|
275
|
+
- required artifacts from completed steps are still present and valid
|
|
276
|
+
- Jira-backed flows still have the Jira context they need
|
|
237
277
|
|
|
238
|
-
|
|
278
|
+
If those checks fail, the runtime requires a restart instead of resuming.
|
|
239
279
|
|
|
240
|
-
|
|
241
|
-
- project-local flows are loaded from `.agentweaver/.flows/*.json`
|
|
242
|
-
- project-local flows are shown in a different color in the `Flows` pane
|
|
243
|
-
- when a project-local flow is selected, the description pane also shows its source file path
|
|
244
|
-
- if a local flow conflicts with a built-in flow id or uses unknown `node` / `executor` / `prompt` / `schema` types, interactive startup fails fast with a validation error
|
|
280
|
+
## Artifacts and Scope
|
|
245
281
|
|
|
246
|
-
|
|
282
|
+
Artifacts and flow state are stored under the current project scope. In practice:
|
|
247
283
|
|
|
248
|
-
-
|
|
249
|
-
-
|
|
250
|
-
-
|
|
284
|
+
- Jira-backed runs usually use the Jira issue key as scope
|
|
285
|
+
- non-Jira runs can fall back to a git-derived scope
|
|
286
|
+
- `--scope <name>` lets you override the default for supported commands
|
|
251
287
|
|
|
252
|
-
|
|
288
|
+
The runtime uses artifacts as the contract between stages, including markdown outputs and structured JSON files validated against schemas.
|
|
253
289
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
Main services:
|
|
257
|
-
|
|
258
|
-
- `codex` — interactive Codex container
|
|
259
|
-
- `codex-exec` — non-interactive `codex exec`
|
|
260
|
-
- `verify-build` — project verification script inside container
|
|
261
|
-
- `run-go-tests` — isolated `run_go_tests.py` execution inside container
|
|
262
|
-
- `run-go-linter` — isolated `run_go_linter.py` execution inside container
|
|
263
|
-
- `run-go-coverage` — isolated `run_go_coverage.sh` execution inside container
|
|
264
|
-
- `codex-login` — interactive login container
|
|
265
|
-
- `dockerd` — internal Docker daemon for testcontainers/build flows
|
|
266
|
-
|
|
267
|
-
Typical login flow:
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
PROJECT_DIR="$PWD" docker compose -f "$AGENTWEAVER_HOME/docker-compose.yml" run --rm codex-login
|
|
271
|
-
```
|
|
290
|
+
## Interactive TUI
|
|
272
291
|
|
|
273
|
-
|
|
292
|
+
Running without a command opens the full-screen TUI. It acts as the operator console for the harness: browsing flows, launching them in scope, following activity, and reviewing summaries.
|
|
274
293
|
|
|
275
|
-
|
|
276
|
-
PROJECT_DIR="$PWD" docker compose -f "$AGENTWEAVER_HOME/docker-compose.yml" run --rm codex
|
|
277
|
-
```
|
|
294
|
+
Current navigation:
|
|
278
295
|
|
|
279
|
-
|
|
296
|
+
- `Up` / `Down` — move in the flow tree
|
|
297
|
+
- `Left` / `Right` — collapse or expand folders
|
|
298
|
+
- `Enter` — toggle folder or run selected flow
|
|
299
|
+
- `Tab` / `Shift+Tab` — switch panes
|
|
300
|
+
- `PgUp` / `PgDn` / `Home` / `End` — scroll focused pane
|
|
301
|
+
- `h` — open help
|
|
302
|
+
- `q` or `Ctrl+C` — exit
|
|
280
303
|
|
|
281
|
-
|
|
282
|
-
PROJECT_DIR="$PWD" docker compose -f "$AGENTWEAVER_HOME/docker-compose.yml" run --rm \
|
|
283
|
-
-e CODEX_PROMPT="Review the project and fix failing tests" \
|
|
284
|
-
codex-exec
|
|
285
|
-
```
|
|
304
|
+
Flow discovery behavior:
|
|
286
305
|
|
|
287
|
-
|
|
306
|
+
- built-in flows are loaded from `src/pipeline/flow-specs/`
|
|
307
|
+
- project-local flows are loaded from `.agentweaver/.flows/`
|
|
308
|
+
- both built-in and project-local flow specs are validated at load time
|
|
309
|
+
- duplicate flow ids fail fast
|
|
310
|
+
- project-local flows are shown separately in the UI
|
|
288
311
|
|
|
289
|
-
|
|
290
|
-
PROJECT_DIR="$PWD" docker compose -f "$AGENTWEAVER_HOME/docker-compose.yml" run --rm verify-build
|
|
291
|
-
```
|
|
312
|
+
## Project-Local Flows
|
|
292
313
|
|
|
293
|
-
|
|
314
|
+
You can add project-specific flow specs under:
|
|
294
315
|
|
|
295
316
|
```bash
|
|
296
|
-
|
|
317
|
+
.agentweaver/.flows/**/*.json
|
|
297
318
|
```
|
|
298
319
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
```bash
|
|
302
|
-
PROJECT_DIR="$PWD" docker compose -f "$AGENTWEAVER_HOME/docker-compose.yml" run --rm run-go-linter
|
|
303
|
-
```
|
|
320
|
+
Project-local flows:
|
|
304
321
|
|
|
305
|
-
|
|
322
|
+
- are discovered recursively
|
|
323
|
+
- get their flow id from the relative path without `.json`
|
|
324
|
+
- share the same validator and runtime as built-in flows
|
|
325
|
+
- cannot conflict with an existing built-in or other discovered flow id
|
|
306
326
|
|
|
307
|
-
|
|
308
|
-
PROJECT_DIR="$PWD" docker compose -f "$AGENTWEAVER_HOME/docker-compose.yml" run --rm run-go-coverage
|
|
309
|
-
```
|
|
327
|
+
Nested `flow-run` steps can reference built-in or project-local specs by file name, as long as the name resolves unambiguously.
|
|
310
328
|
|
|
311
329
|
## Development
|
|
312
330
|
|
|
@@ -335,37 +353,13 @@ Run from source in dev mode:
|
|
|
335
353
|
npm run dev -- --help
|
|
336
354
|
```
|
|
337
355
|
|
|
338
|
-
|
|
356
|
+
Recommended smoke checks:
|
|
339
357
|
|
|
340
358
|
```bash
|
|
341
359
|
node dist/index.js --help
|
|
342
|
-
node dist/index.js auto --help-phases
|
|
343
|
-
node dist/index.js
|
|
344
|
-
node dist/index.js
|
|
345
|
-
node dist/index.js
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
## Publishing
|
|
349
|
-
|
|
350
|
-
The package is prepared for npm publication and currently includes:
|
|
351
|
-
|
|
352
|
-
- npm bin entry: `agentweaver`
|
|
353
|
-
- `prepublishOnly` build/typecheck
|
|
354
|
-
- tarball filtering through `files`
|
|
355
|
-
- public publish config
|
|
356
|
-
|
|
357
|
-
Publish flow:
|
|
358
|
-
|
|
359
|
-
```bash
|
|
360
|
-
npm login
|
|
361
|
-
npm publish
|
|
360
|
+
node dist/index.js auto-golang --help-phases
|
|
361
|
+
node dist/index.js auto-common --help-phases
|
|
362
|
+
node dist/index.js plan --dry DEMO-1234
|
|
363
|
+
node dist/index.js implement --dry DEMO-1234
|
|
364
|
+
node dist/index.js review --dry DEMO-1234
|
|
362
365
|
```
|
|
363
|
-
|
|
364
|
-
If you want a public package, verify the package name and license before publishing.
|
|
365
|
-
|
|
366
|
-
## Security Notes
|
|
367
|
-
|
|
368
|
-
- the Codex container does not receive host `docker.sock`
|
|
369
|
-
- Docker access for tests goes through isolated `dockerd`
|
|
370
|
-
- secure Git protocols only: `ssh` and `https`
|
|
371
|
-
- `dockerd` runs privileged because DinD requires it; this is still safer than exposing host Docker directly
|