kaizen-agent 1.11.1 → 1.12.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/README.md CHANGED
@@ -171,6 +171,46 @@ kaizen Done, and reviewed. Two things found:
171
171
 
172
172
  <img src="https://raw.githubusercontent.com/hfadhlullah/kaizen/c858bb6d666a65780d09c06032c8819489b87da5/assets/board.png" alt="kaizen web board" width="760">
173
173
 
174
+ ## Kaizen Bot
175
+
176
+ A chat front end for your board, with AI teammates for every division. Ask **Chief** what's
177
+ waiting on you, what's running, and what a plan or review says. Hand Sales Outbound,
178
+ Marketing, Customer Service or Account Manager their team's asks, and they turn them into board ideas
179
+ and runs. The board still does the real work: plan, approval, build, review.
180
+
181
+ - **Nothing happens behind your back.** An agent may read the board, add an idea or a note, remember a fact and draft a message. Starting a run, approving a plan or fixing findings waits on a card until you click Approve. It never turns on Yolo and never commits.
182
+ - **Nothing is ever sent.** Emails, posts and replies are drafts: approve one, then copy it or export them all as Markdown.
183
+ - **Teammates and routines.** One agent can ask another, and any agent can run a task on a schedule: *every weekday at 7, brief me on the board*.
184
+
185
+ <img src="https://raw.githubusercontent.com/hfadhlullah/kaizen/main/assets/bot.png" alt="Kaizen Bot: Account Manager holds a drafted email on a card until you approve it" width="760">
186
+
187
+ Kaizen Bot lives in the repo's `bot/` folder, not the npm package. With the board running (`kaizen web`):
188
+
189
+ ```sh
190
+ git clone https://github.com/hfadhlullah/kaizen && cd kaizen/bot
191
+ cp .env.example .env # set PROVIDER, MODEL and that provider's key
192
+ bun start # http://127.0.0.1:7430
193
+ ```
194
+
195
+ ### Download the app
196
+
197
+ Kaizen Bot also runs as a single app file for Linux, macOS and Windows, with no Bun or repo needed.
198
+ Download yours from the [latest release](https://github.com/hfadhlullah/kaizen/releases/latest)
199
+ (or build all five with `bun run build` in `bot/`):
200
+
201
+ | OS | File |
202
+ |---|---|
203
+ | Linux | `kaizen-bot-linux-x64`, `kaizen-bot-linux-arm64` |
204
+ | macOS | `kaizen-bot-darwin-arm64` (Apple Silicon), `kaizen-bot-darwin-x64` (Intel) |
205
+ | Windows | `kaizen-bot-windows-x64.exe` |
206
+
207
+ Open it. The first time, it creates `~/.kaizen-bot/.env` for your provider and key. After that it
208
+ starts the board if `kaizen` is installed, and opens the chat in its own window. The files are
209
+ unsigned, so macOS and Windows warn on first open. How to get past that is in
210
+ [Download the app](https://github.com/hfadhlullah/kaizen/blob/main/bot/README.md#download-the-app).
211
+
212
+ Anthropic, OpenAI and Requesty are supported. Setup, privacy and settings are in the [Kaizen Bot README](https://github.com/hfadhlullah/kaizen/blob/main/bot/README.md).
213
+
174
214
  ## Commands
175
215
 
176
216
  | Command | |
@@ -193,6 +233,7 @@ In a terminal: `kaizen` (dashboard), `kaizen web` (board), `kaizen settings`, `k
193
233
  ## Learn more
194
234
 
195
235
  - **[The guide](https://github.com/hfadhlullah/kaizen/blob/main/docs/guide.md)**: the board, request sources, notebook, settings, installer flags, uninstall
236
+ - [Kaizen Bot](https://github.com/hfadhlullah/kaizen/blob/main/bot/README.md): the chat front end, its agents, routines and privacy
196
237
  - [`spec.md`](https://github.com/hfadhlullah/kaizen/blob/main/skills/kaizen/spec.md): the contract every stage follows
197
238
  - [`adapters.md`](https://github.com/hfadhlullah/kaizen/blob/main/skills/kaizen/adapters.md): running outside Claude Code, with Codex and Antigravity as the worked examples. OpenCode, Cursor and Gemini CLI load the same skill folder
198
239
  - Found a bug? `kaizen issue`, or *Report an issue* on the board, opens a GitHub bug form with your system details filled in. Nothing is sent until you press Submit on GitHub.
@@ -165,10 +165,15 @@ Write `01-plan.md` with exactly these sections:
165
165
  - **Track** — one or two sentences opening the plan: what kind of work this is, the
166
166
  deliverable, what done means, what wrong means. Stated as your reading of the
167
167
  request, so it can be corrected in a breath.
168
- - **Framing** — the problem in your own words: what is wrong now, what would be true
169
- instead, and why it matters. Then the approach you chose, and the alternatives you
170
- rejected with one line each on why. This section is what the human checks first; if
171
- your restatement is off, everything after it is off too.
168
+ - **Framing** — the problem in your own words, as short labelled bullets, not a
169
+ paragraph: **Problem** (what is wrong now, as the user meets it), **Fix** (what will
170
+ be true instead, and the approach you chose), **Rejected** (each alternative, one
171
+ line on why). This section is what the human checks first; if your restatement is
172
+ off, everything after it is off too.
173
+ - **Work list** — the plan in plain bullets, one line per thing that will actually be
174
+ done, no jargon. It sits right after Framing and is shown again right before the
175
+ builder starts, so write it for someone who has not read the rest of the plan. Five
176
+ bullets is usually plenty; if it needs fifteen, the run is too big.
172
177
  - **Goal** — one paragraph in the user's terms describing what will be true when done.
173
178
  - **Scope** — bullets for what is included, then an explicit **Not included** list.
174
179
  - **Reuse** — existing material to build on: `path:line` for code, a section or page
@@ -182,10 +187,6 @@ Write `01-plan.md` with exactly these sections:
182
187
  it unaided for a runbook. Real and checkable, never a placeholder.
183
188
  - **Risks** — what could break, what is irreversible, what needs a backup or
184
189
  migration first. Call out anything touching data, auth, or production config.
185
- - **Work list** — the plan in plain bullets, one line per thing that will actually be
186
- done, no jargon. This is shown to the user right before the builder starts, so
187
- write it for someone who has not read the rest of the plan. Five bullets is usually
188
- plenty; if it needs fifteen, the run is too big.
189
190
  - **Open questions** — every assumption that survived your analysis. Leave the list
190
191
  empty only if it genuinely is.
191
192
 
@@ -210,6 +211,13 @@ Write `01-plan.md` with exactly these sections:
210
211
  run's backlog, so write each as a standalone one-liner that still makes sense read
211
212
  months later with no plan around it.
212
213
 
214
+ Write Track, Framing, Work list, Goal, Scope, Risks and Out of scope suggestions for a
215
+ person deciding whether to approve, often on a narrow panel: everyday words, short
216
+ sentences, one idea per bullet, things named by what the user sees rather than by
217
+ function, file, CSS value or gate id. Code names, `path:line` and gate ids belong in
218
+ Reuse, Steps and Verification, where the builder and reviewer need them exact. If a
219
+ sentence only makes sense to someone who has read the code, it is in the wrong section.
220
+
213
221
  ## The goals are the user's, the solution is yours
214
222
 
215
223
  Expanding a one-liner into a clear problem statement is your job. Deciding what is
package/cli/release.sh CHANGED
@@ -26,6 +26,16 @@ if gh release view "$tag" >/dev/null 2>&1; then
26
26
  exit 0
27
27
  fi
28
28
 
29
+ # Kaizen Bot as one app file per OS, attached so users can download it. A failed
30
+ # build still publishes the release, just without the app files.
31
+ rm -rf bot/dist
32
+ assets=""
33
+ if (cd bot && bun run build >/dev/null 2>&1); then
34
+ assets="$(ls bot/dist/kaizen-bot-* 2>/dev/null)"
35
+ else
36
+ echo "release: Kaizen Bot app build failed, releasing without it"
37
+ fi
38
+
29
39
  # --generate-notes only lists pull requests, and this repo merges none, so the
30
40
  # notes are built here: the title from the release commit's subject, the body from
31
41
  # every commit since the previous tag with its message, oldest first.
@@ -38,7 +48,7 @@ git log --reverse --format='### %s%n%n%b' ${prev:+"$prev.."}"$tag" \
38
48
  | grep -vE '^### Release [0-9.]+:' \
39
49
  | cat -s > "$notes"
40
50
  [ -n "$prev" ] && printf '\n**Full Changelog**: https://github.com/hfadhlullah/kaizen/compare/%s...%s\n' "$prev" "$tag" >> "$notes"
41
- err="$(gh release create "$tag" --title "$title" --notes-file "$notes" 2>&1 >/dev/null)" \
51
+ err="$(gh release create "$tag" --title "$title" --notes-file "$notes" $assets 2>&1 >/dev/null)" \
42
52
  && echo "release: published $tag https://github.com/hfadhlullah/kaizen/releases/tag/$tag" \
43
53
  || echo "release: tag pushed, release not created: $err"
44
54
  rm -f "$notes"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kaizen-agent",
3
- "version": "1.11.1",
3
+ "version": "1.12.1",
4
4
  "description": "Staged workflow for AI agents — code, writing, research, operations: plan, human approval, build, independent review, bounded fix loop.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -44,10 +44,17 @@ scope suggestions* for a separate decision.
44
44
 
45
45
  The planner reads code but writes none. Its plan must contain:
46
46
 
47
- 0. **Framing** — the problem in the planner's own words: what is wrong now, what
48
- would be true instead, why it matters, the approach chosen, and the alternatives
49
- rejected with a reason each. The human checks this first; a wrong restatement
50
- makes everything after it wrong.
47
+ 0. **Framing** — the problem in the planner's own words, as a few short labelled
48
+ bullets rather than a paragraph: **Problem** (what is wrong now, as the user meets
49
+ it), **Fix** (what will be true instead, and the approach), **Rejected** (each
50
+ alternative with its reason, one line), then the track in one line. The human
51
+ checks this first; a wrong restatement makes everything after it wrong.
52
+
53
+ Right below it, the **Work list**: plain bullets, one line per thing that will
54
+ actually be done, written for someone who has not read the rest of the plan.
55
+ Five bullets is usually plenty. It sits second so the reader learns what will
56
+ happen before the detail; the plan approval shows it verbatim and the builder
57
+ tracks progress against it.
51
58
  1. **Goal** — one paragraph, in the user's terms, on what will be true when done.
52
59
  2. **Scope** — what is included, and an explicit *not included* list. The second list
53
60
  is what prevents the builder from wandering.
@@ -115,12 +122,22 @@ installs packages.
115
122
  fix loop reads it again per iteration, so a line written once is read five or six
116
123
  times. Sections 3 to 6 — the material to reuse, the file manifest, the steps, the
117
124
  verification — earn their length: they are what stop every later stage searching the
118
- material again, and cutting them costs more than it saves. Sections 0, 1, 8 and 10 are
119
- read once by a human at the approval and should be as short as they can be and still
120
- be correct: a paragraph of framing, a paragraph of goal, the risks that are real, the
125
+ material again, and cutting them costs more than it saves. Sections 0 (Framing and the
126
+ Work list), 1, 8 and 10 are read once by a human at the approval and should be as
127
+ short as they can be and still be correct: a few labelled lines of framing, a short
128
+ work list, a paragraph of goal, the risks that are real, the
121
129
  questions that are open. An alternative rejected gets a line saying what and why, not
122
130
  a case against it.
123
131
 
132
+ **Write the parts a person reads for a person.** Framing, the Work list, Goal, Scope,
133
+ Risks and Out of scope suggestions are read by someone deciding whether to approve,
134
+ often on a narrow panel. Write them in everyday words: short sentences, one idea per
135
+ bullet, things named by what the user sees ("the chat bubble", "the Plan tab") rather
136
+ than by function, file, CSS value or gate id. Code names, `path:line` and gate ids
137
+ belong in Reuse, the File manifest, Steps and Verification, where the builder and
138
+ reviewer need them exact. If a sentence only makes sense to someone who has read the
139
+ code, it is in the wrong section.
140
+
124
141
  A plan whose framing is longer than its steps is a plan that spent the run's budget
125
142
  explaining itself.
126
143
 
@@ -133,8 +150,8 @@ Controlled by `approvals.plan` (default on), skipped in `auto`.
133
150
  Present to the user, in this order:
134
151
 
135
152
  1. The track, the goal, and the top risk — a few lines, not the whole plan file.
136
- 2. **The work list**, verbatim from the plan: plain bullets of what will actually be
137
- done. This is the last thing the user sees before anything is produced, so it must
153
+ 2. **The work list**, verbatim from the plan, where it sits right after Framing:
154
+ plain bullets of what will actually be done. This is the last thing the user sees before anything is produced, so it must
138
155
  be readable on its own, without the plan's reasoning around it.
139
156
  3. The open questions, **as a pick list** — see below.
140
157