@goodtek/vibeops 0.3.0 → 0.7.22

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/CHANGELOG.md CHANGED
@@ -4,6 +4,190 @@ All notable changes to VibeOps are documented here.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.7.22 - 2026-05-16
8
+
9
+ ### Fixed
10
+
11
+ - **Branch switch after `task add` / `start`**: governance-only stash (`docs/tasks/`, `.vibeops/`) is **restored with `git stash pop`** after `git switch`, so a newly created TASK file is not left off-disk (ENOENT on `updateInlineStatus`).
12
+
13
+ ## 0.7.21 - 2026-05-16
14
+
15
+ ### Added
16
+
17
+ - **`vibeops task status`** — human briefing (or `--json`) for the active TASK: backlog counts, Goal/Result/Test Result, Git branch alignment, Cursor artifact paths, and the same **next step** hint as `vibeops next` (without the menu).
18
+
19
+ ## 0.7.20 - 2026-05-16
20
+
21
+ ### Changed
22
+
23
+ - **`vibeops task add`** is **interactive by default** (no required flags):
24
+ - If a TASK is **In Progress**, asks whether to **`vibeops done`** it first (commit + merge + clean).
25
+ - **Just create task** — short prompt, LLM-named `TASK-NNN` file, `start`, branch checkout, **In Progress**.
26
+ - **Create plan using LLM** — Q&A → full TASK + `.vibeops/generated/task-build-TASK-NNN.md` for Cursor.
27
+ - CI: `--non-interactive` and optional `--idea`; `--dry-run` for smoke.
28
+
29
+ ## 0.7.19 - 2026-05-16
30
+
31
+ ### Added
32
+
33
+ - **`vibeops task add --idea "…"`** — writes the next `TASK-NNN-<slug>.md` as a **work-now slice** (links to the current In Progress TASK in Background when present). Does not edit `07-backlog.md`. Optional `--start`, `--parent`, `--phase`, `--dry-run`.
34
+
35
+ ## 0.7.18 - 2026-05-16
36
+
37
+ ### Fixed
38
+
39
+ - **Branch switch** stashes only **tracked** governance paths; **untracked** `.vibeops/generated/*` uses `stash -u` or is skipped so `git switch` does not fail on “did not match any file(s) known to git”.
40
+
41
+ ## 0.7.17 - 2026-05-16
42
+
43
+ ### Changed
44
+
45
+ - **`vibeops start`**, **`done`**, **`rollback`** with no task ref: use **TASK-mvp** when present; otherwise the **active / next backlog** TASK (`pickActiveTask`) — legacy projects without `TASK-mvp` no longer require `vibeops plan` first.
46
+
47
+ ## 0.7.16 - 2026-05-16
48
+
49
+ ### Changed
50
+
51
+ - **`vibeops next`** shows **Prepare git before TASK-NNN** when `start` would fail (dirty app files on `main`, etc.) instead of a failing **Start** loop.
52
+ - **`vibeops start`** prints clearer options (`commit`, `stash`, `--allow-dirty`, TASK-009 hint).
53
+
54
+ ## 0.7.15 - 2026-05-16
55
+
56
+ ### Fixed
57
+
58
+ - **Post-done cleanup** no longer runs `git switch -c` while a **merge is in progress**; auto-resolves `.vibeops/` / docs merge conflicts when possible and prompts `git commit` to finish the merge.
59
+
60
+ ## 0.7.14 - 2026-05-16
61
+
62
+ ### Fixed
63
+
64
+ - **`vibeops next`**: when Result/Test are filled and only **`.vibeops/` / docs** are dirty, shows **Finish** (`vibeops done`) instead of a stuck **Commit** loop; manual advance to Finish is preserved; Commit hints no longer say `git add -A`.
65
+
66
+ ## 0.7.13 - 2026-05-16
67
+
68
+ ### Fixed
69
+
70
+ - **`vibeops start`** / branch switch: when only governance paths are dirty (e.g. `.vibeops/state/guide.json`), auto-**stash** them before `git switch` so checkout does not fail.
71
+
72
+ ## 0.7.12 - 2026-05-16
73
+
74
+ ### Fixed
75
+
76
+ - **`vibeops start`** resumes an **existing** task branch (`git switch`) instead of failing with "Task branch already exists".
77
+ - **`vibeops next`** shows **Resume … branch** when the task branch exists but HEAD is elsewhere (e.g. stuck on `chore/vibeops-post-mvp-*`).
78
+
79
+ ## 0.7.11 - 2026-05-16
80
+
81
+ ### Fixed
82
+
83
+ - **Post-done cleanup** no longer runs `git add -A` on `node_modules/`, `.next/`, etc.; lists excluded paths and suggests `.gitignore`.
84
+ - **`runGit`** uses a larger `maxBuffer` and `git commit -q` to avoid `ERR_CHILD_PROCESS_STDIO_MAXBUFFER` on huge commits.
85
+ - **`vibeops done`** auto-commit uses the same safe path filter (not `git add -A`).
86
+
87
+ ## 0.7.10 - 2026-05-16
88
+
89
+ ### Fixed
90
+
91
+ - **`vibeops next`** stays on the current **`task/*` branch** until **`vibeops done`** (merge / Notion) — no longer jumps to the next Planned TASK when the TASK file is already **Done** but the branch is not merged.
92
+ - **Close out** step when Status is Done but you are still on the task branch; blocks starting another TASK from the manual Next flow.
93
+
94
+ ## 0.7.9 - 2026-05-16
95
+
96
+ ### Added
97
+
98
+ - **`vibeops next`** when **Result** / **Test Result** are empty or placeholders: writes **`.vibeops/generated/cursor-implement-<task>.md`** and tells you to **@-mention** that file in Cursor (ready-made implement prompt).
99
+
100
+ ## 0.7.8 - 2026-05-16
101
+
102
+ ### Fixed
103
+
104
+ - **`vibeops next`** treats `Pending.` / `TBD` / `TODO` in **Result** / **Test Result** as placeholders (no longer jumps to **Finish** right after **start**); **Implement** comes before **Commit** when sections are still empty.
105
+ - **`vibeops start`** for backlog TASKs points at the TASK file, not `mvp-build.md`.
106
+
107
+ ## 0.7.7 - 2026-05-16
108
+
109
+ ### Fixed
110
+
111
+ - **`vibeops start`** (and merge dirty checks) treat **`.vibeops/generated/`** (e.g. `next-task-suggestion.md`, done summaries) and other **`.vibeops/**`** paths like governance docs, so a dirty tree with only VibeOps artifacts no longer blocks starting the next TASK.
112
+
113
+ ## 0.7.6 - 2026-05-16
114
+
115
+ ### Fixed
116
+
117
+ - **`vibeops next`** no longer pins the guide to a stale `implement` step from `.vibeops/state/guide.json`; it re-detects from TASK + git (e.g. **Review** with Result/Test filled → **Finish** / `vibeops done`).
118
+ - **Next** on manual steps: re-checks the repo and offers **`vibeops done`** when ready; menu label distinguishes run vs advance.
119
+
120
+ ## 0.7.5 - 2026-05-16
121
+
122
+ ### Changed
123
+
124
+ - **`vibeops next`** on existing projects without `TASK-mvp`: picks the active backlog TASK (`in_progress` / `review` / next `planned`) or, when all numbered TASKs are **Done**, shows **Continue after MVP** (last TASK + `last-done-summary.md` / `next-task-suggestion.md`) instead of greenfield “run plan first”.
125
+ - **`next`** runnable steps use the resolved TASK id (`vibeops start TASK-017`, `vibeops done TASK-017`) for backlog work.
126
+
127
+ ## 0.7.4 - 2026-05-16
128
+
129
+ ### Changed
130
+
131
+ - **`vibeops done`** LLM auto-fill and next-task suggestion use the same providers as **`vibeops plan`**: **Codex OAuth** (`~/.codex/auth.json`), **Cursor Agent CLI**, then **OpenAI API key** — not only `OPENAI_API_KEY`.
132
+
133
+ ## 0.7.3 - 2026-05-16
134
+
135
+ ### Changed
136
+
137
+ - **`vibeops done`** auto-fills **Result** and **Test Result** in the TASK file (from git + optional LLM; placeholders like `(not yet)` are replaced). Use `--refresh-task-sections` to overwrite existing text, `--skip-summary` to skip.
138
+
139
+ ## 0.7.2 - 2026-05-16
140
+
141
+ ### Added
142
+
143
+ - **`vibeops done`** always writes **`.vibeops/generated/last-done-summary.md`** (plus dated archive under `done-summaries/`): TASK Result/Test Result, git log/stat, file list, patch excerpt, optional LLM narrative (`OPENAI_API_KEY`).
144
+ - **`vibeops plan`** and **`vibeops next`** include that summary when starting the next iteration (TASK-mvp + `mvp-build.md` + next-task suggestion).
145
+
146
+ ## 0.7.1 - 2026-05-16
147
+
148
+ ### Added
149
+
150
+ - **`vibeops done`** now runs **`vibeops notion sync` automatically** when Notion is enabled (`--no-notion-sync` to skip).
151
+ - **Post-done follow-up:** if the working tree is still dirty, offers a cleanup branch → commit → merge to `main`; when clean, writes **`.vibeops/generated/next-task-suggestion.md`** via OpenAI (when `OPENAI_API_KEY` is set).
152
+
153
+ ## 0.7.0 - 2026-05-16
154
+
155
+ ### Changed (breaking)
156
+
157
+ - **CLI surface reduced to the v2 MVP flow:** `init` · `plan` · `start` · `done` · `next` · `status`, plus optional `notion *`, `github *`, and `rollback`.
158
+ - **Removed:** `task *`, `agent *`, `plan --apply-planner`, legacy 20-question wizard, multi-TASK `generate` / `pull` / `add`, and agent paste prompts. Implementation is **drag `.vibeops/generated/mvp-build.md` into Cursor** only.
159
+ - **`plan`** always writes brief + `TASK-mvp` + `mvp-build.md` (no `--no-mvp`).
160
+ - **`next`** guide is MVP-only (start → implement → finish → optional Notion).
161
+
162
+ ### Removed (code)
163
+
164
+ - `src/commands/task-*.ts`, `src/commands/agent-*.ts`, `src/lib/{plan-apply-planner,prompt-builder,task-generator,task-scaffold,task-prompt,task-pull,task-add-cursor,project-docs,plan-post-apply-setup}.ts`, `src/agent/*`.
165
+
166
+ ## 0.6.0 - 2026-05-16
167
+
168
+ ### Added (v2 MVP workflow — recommended)
169
+
170
+ - **`vibeops plan`** now writes **`docs/tasks/TASK-mvp-*.md`** and **`.vibeops/generated/mvp-build.md`** (orchestration prompt to **drag into Cursor**). Skip with **`--no-mvp`**.
171
+ - Top-level **`vibeops start`** (default **TASK-mvp**) and **`vibeops done`** (Result/Test Result, optional git summary, merge to main, delete task branch).
172
+ - **`vibeops status`** / **`vibeops next`** prefer the MVP flow when **TASK-mvp** is active.
173
+
174
+ ### Note
175
+
176
+ - Legacy **`task *`**, **`--apply-planner`**, and eight-agent paste flows remain for existing projects; new work should use **plan → start → mvp-build.md in Cursor → done → next**.
177
+
178
+ ## 0.5.0 - 2026-05-16
179
+
180
+ ### Added
181
+
182
+ - **`vibeops next`**: interactive workflow guide for the active TASK — shows current step, your to-dos, suggested commands, and a **Next / Prev** menu with **Yes/No** (↑/↓). Runs `task start`, `task check`, `task done`, **`merge` (push + direct `git merge` into main + branch cleanup by default)**, `task done --finalize`, and `notion sync` when appropriate. Optional **`--merge-via-pr`** uses `gh pr create` + `gh pr merge`. Cursor implementation remains manual. Session history for Prev is in `.vibeops/state/guide.json`. Flags: `--non-interactive`, `--execute`, `--dry-run`, `--allow-dirty`, optional `[taskId]`.
183
+
184
+ ## 0.4.0 - 2026-05-13
185
+
186
+ ### Changed
187
+
188
+ - **Interactive plan LLM (`questionType`)**: system prompt prefers **`multi`** (checkbox, Space toggles) whenever several options can apply; reserve **`single`** for mutually exclusive choices. **`multi` vs `single` terminal behavior** is spelled out for the model.
189
+ - **Plan JSON parsing**: if `questionType` is missing or invalid and **two or more** `options` are present, default to **`multi`** so users get multi-select instead of a hard error or accidental single-only flow.
190
+
7
191
  ## 0.3.0 - 2026-05-13
8
192
 
9
193
  ### Changed
package/README.md CHANGED
@@ -19,7 +19,7 @@ It gives a project:
19
19
  - `docs/tasks/TASK-*.md` as the AI execution source of truth.
20
20
  - `.cursor/rules/*` and `AGENTS.md` so Cursor knows how to behave.
21
21
  - `.vibeops/agents`, `.vibeops/prompts`, `.vibeops/workflows` for reusable agent instructions.
22
- - Git task lifecycle commands for start/check/done/rollback.
22
+ - MVP workflow: `plan` → `start` → build in Cursor → `done` (Git merge included).
23
23
  - Notion metadata sync for a human dashboard.
24
24
 
25
25
  ## Why It Exists
@@ -70,22 +70,21 @@ vibeops init
70
70
  # Non-interactive Git bootstrap:
71
71
  vibeops init --git --initial-commit
72
72
 
73
- # 2. LLM planning session (OpenAI API key, Codex `codex login` / ~/.codex/auth.json, or Cursor `agent` CLI) → brief + planning prompt.
74
- # Use `vibeops plan --legacy-wizard` for the original 20-question flow.
73
+ # 2. LLM planning → brief + TASK-mvp + mvp-build.md (OpenAI, Codex OAuth, or Cursor agent CLI).
75
74
  vibeops plan
76
75
 
77
- # 3. Generate a TASK prompt or scaffold TASK markdown.
78
- vibeops task generate --dry-run
76
+ # 3. Task branch for the single MVP TASK.
77
+ vibeops start
79
78
 
80
- # 4. Start one TASK at a time.
81
- vibeops task start TASK-001
82
- vibeops task prompt TASK-001 --agent builder
79
+ # 4. Drag .vibeops/generated/mvp-build.md into a new Cursor chat and implement.
80
+
81
+ # 5. Finish: verify Result/Test Result, merge to main, delete task branch.
82
+ vibeops done
83
83
 
84
- # 5. Review and move to human review.
85
- vibeops task check TASK-001
86
- vibeops task done TASK-001
84
+ # 6. Optional: interactive nudge
85
+ vibeops next
87
86
 
88
- # 6. Optional Notion dashboard sync.
87
+ # 7. Optional Notion dashboard sync.
89
88
  vibeops notion init
90
89
  vibeops notion test
91
90
  vibeops notion sync --dry-run
@@ -101,13 +100,9 @@ cd acme-automator
101
100
 
102
101
  vibeops init --name "Acme Automator" --git --initial-commit
103
102
  vibeops plan --idea "Acme Automator: schedule and run browser automation jobs for marketing teams"
104
- vibeops task generate --dry-run
105
-
106
- vibeops task start TASK-001
107
- vibeops task prompt TASK-001 --agent builder
108
- # Paste the prompt into Cursor and let Cursor implement the TASK.
109
- vibeops task check TASK-001
110
- vibeops task done TASK-001
103
+ vibeops start
104
+ # Drag .vibeops/generated/mvp-build.md into Cursor and build the MVP.
105
+ vibeops done
111
106
  ```
112
107
 
113
108
  If a Notion dashboard is enabled:
@@ -123,31 +118,15 @@ vibeops notion sync
123
118
 
124
119
  ```text
125
120
  vibeops
126
- ├─ init [--dry-run] [--force] [--cwd <path>] [--name <projectName>]
127
- │ [--git|--no-git] [--initial-commit|--no-initial-commit]
128
- │ [--default-branch <name>] [--commit-message <message>]
129
- ├─ status [--json] [--cwd <path>]
130
- ├─ plan [--idea <text>] [--from <path>] [--output <path>] [--non-interactive] [--legacy-wizard] [--provider <id>] [--cwd <path>]
131
- ├─ agent
132
- │ ├─ list [--json] [--cwd <path>]
133
- │ ├─ show <name> [--raw] [--cwd <path>]
134
- │ └─ prompt <name> <taskId> [--context <path...>] [--cwd <path>]
135
- ├─ task
136
- │ ├─ generate [--from <path>] [--output <path>] [--count <n>] [--phase <name>] [--scaffold] [--dry-run] [--cwd <path>]
137
- │ ├─ start <taskId> [--dry-run] [--allow-dirty] [--agent <name>] [--cwd <path>]
138
- │ ├─ prompt <taskId> --agent <name> [--context <path...>] [--cwd <path>]
139
- │ ├─ check <taskId> [--strict] [--agent <name>] [--cwd <path>]
140
- │ ├─ done <taskId> [--dry-run] [--finalize] [--cwd <path>]
141
- │ ├─ rollback <taskId> [--confirm | --confirm-destructive] [--strategy <name>] [--keep-branch] [--dry-run] [--cwd <path>]
142
- │ └─ pull [--dry-run] [--json] [--status <list>] [--limit <n>] [--cwd <path>] [--verbose]
143
- ├─ notion
144
- │ ├─ init [--dry-run] [--enable] [--projects-db <id>] [--tasks-db <id>] [--non-interactive] [--cwd <path>]
145
- │ ├─ test [--json] [--debug-shape] [--cwd <path>]
146
- │ └─ sync [--dry-run] [--json] [--only-tasks] [--only-project] [--cwd <path>]
147
- └─ github
148
- ├─ status [--json] [--cwd <path>]
149
- └─ init [--dry-run] [--yes] [--owner <user>] [--repo <name>] [--public|--private]
150
- [--remote <name>] [--connect <owner/repo or url>] [--no-package-update] [--cwd <path>]
121
+ ├─ init
122
+ ├─ plan
123
+ ├─ start [mvp]
124
+ ├─ done [mvp]
125
+ ├─ next
126
+ ├─ status
127
+ ├─ rollback [mvp]
128
+ ├─ notion { init | test | sync }
129
+ └─ github { status | init }
151
130
  ```
152
131
 
153
132
  Run any command with `--help` for the option details.
@@ -160,23 +139,24 @@ Run any command with `--help` for the option details.
160
139
 
161
140
  ### Interactive Planner
162
141
 
163
- `vibeops plan` runs only inside a **VibeOps project** (expects **`.vibeops.json`** from `vibeops init`). It writes `.vibeops/brief/project-brief.md` and `.vibeops/generated/plan-prompt.md`; with **`--apply-planner`** it also writes `docs/project/*` and `docs/tasks/*` via the LLM. The command uses **OpenAI** (`OPENAI_API_KEY`), **Codex (ChatGPT OAuth)** via tokens from `codex login` (`~/.codex/auth.json`, same OAuth client as Hermes/OpenClaw `openai-codex`), or the **Cursor Agent CLI** (`agent login`). With a TTY you **always pick** among those three (each line shows ✓ or “needs setup”; Codex can start browser OAuth from that menu). Pass `--provider` to skip the menu when that path is already ready. Then pick a **model** from the provider catalog (or `--model`). Next you pick the **planning dialogue language** (preset list + Other); the LLM asks **one question per turn** in that language. Each question header shows a **rough ASCII progress line** and **ETA hint** (assumes up to ~14 steps; not a guarantee). **Multi**-choice suggestions use **checkboxes** (Space, Other, **Wrap up — draft summary now** when allowed, then **Go back** last when you can undo); **single**-choice uses **arrow select** with **Other**, wrap-up, and **Go back** last (no extra Continue step). **Text** answers: type `back` alone to go back when allowed, or `wrap` / `enough` to stop questions and ask for a draft summary from the thread so far. When the model is ready, it shows a **readable markdown summary**; you must **confirm** before the `ProjectBrief` is written. After that, **`--apply-planner`** runs the planner pass via the same provider: fills `docs/project/*` and initial `docs/tasks/*`. With a **TTY** and without **`--non-interactive`**, you are then asked **in order**: create a **git commit** (default Yes; if Git is not initialized yet, you can run **`git init`** + branch **`main`** from the same prompts), **git push** (default No; use **`--push`** to skip the question and push after a successful commit; after you choose push, you can run **`vibeops github init`** to connect or create a GitHub repo / set **`origin`**, same as the standalone command), and **Notion sync** when the brief enables it (default Yes; **`--no-notion-sync`** skips; if Notion is not configured, you can run **`vibeops notion init`** from the same flow, then sync retries once ready). In **`--non-interactive`** mode, commit runs automatically (unless **`--no-git-commit`**), push only with **`--push`**, and Notion runs when the brief enables it (unless **`--no-notion-sync`**). **`--apply-dry-run`** asks the model which files it would emit without writing. Codex defaults to ChatGPT-account models (`gpt-5.4`; override with `VIBEOPS_CODEX_MODEL`). Use `--legacy-wizard` for the fixed 20-question flow. `--non-interactive` and `--from` never call an LLM for the brief unless you add `--apply-planner` with `--provider` (and optional `--model`) for the apply step.
164
-
165
- ### Task Generator
166
-
167
- `vibeops task generate` builds a Cursor prompt for generating TASK files. With `--scaffold`, it creates placeholder TASK markdown directly. It does not call an LLM.
142
+ `vibeops plan` (requires `.vibeops.json`) runs an LLM discovery session (OpenAI, Codex OAuth, or Cursor Agent CLI), then writes:
168
143
 
169
- ### Git Task Lifecycle
144
+ - `.vibeops/brief/project-brief.md`
145
+ - `docs/tasks/TASK-mvp-*.md`
146
+ - `.vibeops/generated/mvp-build.md` — **drag this file into Cursor** to implement the MVP
170
147
 
171
- `task start`, `task prompt`, `task check`, and `task done` keep one TASK moving through `Planned → In Progress → Review → Done`. `task done` defaults to `Review`; use `--finalize` only after human review. `task start` still expects a clean tree for application code, but if the only uncommitted changes live under `docs/tasks/`, `docs/project/`, `docs/logs/`, or `.vibeops/state/`, it warns and continues so a prior doc-only finalize does not block the next TASK.
148
+ Use `--from` to regenerate MVP artifacts from an edited brief. Use `--non-interactive` in CI (placeholders only).
172
149
 
173
- ### Rollback Safety
150
+ ### MVP Git Rails
174
151
 
175
- `task rollback` prints recovery options by default. Destructive Git actions require explicit confirmation (`--confirm` or `--confirm-destructive`) and should be reviewed before use.
152
+ - `vibeops start` — task branch + Git Context on **TASK-mvp**
153
+ - `vibeops done` — verify Result/Test Result, mark Done, merge, **Notion sync** (when enabled), post-MVP dirty-tree cleanup, next-task LLM suggestion
154
+ - `vibeops next` — interactive guide (start → build → finish)
155
+ - `vibeops rollback` — advisory by default; `--confirm` / `--confirm-destructive` to execute
176
156
 
177
157
  ### Notion Dashboard Sync
178
158
 
179
- `notion init/test/sync` and `task pull` keep Notion as a metadata dashboard. VibeOps syncs project/task metadata only and never updates Notion page bodies.
159
+ `notion init/test/sync` pushes project + TASK **metadata** only (not markdown bodies).
180
160
 
181
161
  ## Runner Modes
182
162