opencode-athena 0.8.1 → 0.9.0-beta.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/README.md CHANGED
@@ -180,6 +180,56 @@ Agents are recommended based on finding types:
180
180
  - **Quick Review [Q]**: Accept Phase 1 findings, skip discussion. Best for low-severity issues.
181
181
  - **Full Discussion [D]**: Run Phases 2-3 with parallel agents and informed discussion. Best for complex or high-severity findings.
182
182
 
183
+ ## BMAD ↔ Todo Sync
184
+
185
+ Athena automatically synchronizes BMAD story checkboxes with oh-my-opencode's todo tool:
186
+
187
+ - **Automatic population**: Story tasks appear in your todo list when loading a story
188
+ - **Two-way sync**: Marking todos complete updates BMAD file checkboxes
189
+ - **Athena-themed format**: `[2.3ΔAC1] Task description`
190
+ - **Compaction-safe**: Works seamlessly after session compaction
191
+ - **Story context**: Prefix tells you where to look for full details
192
+
193
+ ### How It Works
194
+
195
+ ```
196
+ ┌─────────────────────────────────────────────────────────────────────────┐
197
+ │ WRITE-THROUGH CACHE MODEL │
198
+ ├─────────────────────────────────────────────────────────────────────────┤
199
+ │ │
200
+ │ BMAD Files (Source of Truth) Todo Cache (Session View) │
201
+ │ ┌─────────────────────────┐ ┌─────────────────────────┐ │
202
+ │ │ story-2-3.md │ │ [2.3ΔAC1] Login ○ │ │
203
+ │ │ - [ ] AC1: Login │◄────────│ [2.3ΔAC2] Logout ✓ │ │
204
+ │ │ - [x] AC2: Logout │ Write │ [2.3ΔTask1] Tests ○ │ │
205
+ │ │ - [ ] Task: Add tests │ back │ │ │
206
+ │ └─────────────────────────┘ └─────────────────────────┘ │
207
+ │ │
208
+ └─────────────────────────────────────────────────────────────────────────┘
209
+ ```
210
+
211
+ When you call `athena_get_story`, todos are extracted from the story file's checkboxes and returned in a format ready for `todowrite`. Marking a todo complete automatically updates the corresponding checkbox in the BMAD file.
212
+
213
+ ### Todo Format
214
+
215
+ | BMAD Section | Todo Prefix | Example |
216
+ |--------------|-------------|---------|
217
+ | Acceptance Criteria | `AC{n}` | `[2.3ΔAC1] Users can login` |
218
+ | Tasks/Subtasks | `Task{n}` | `[2.3ΔTask3] Write tests` |
219
+ | Implementation Notes | `Fix{n}` | `[2.3ΔFix2] Hardcoded secret` |
220
+
221
+ ### Configuration
222
+
223
+ Todo sync is enabled by default. To disable:
224
+
225
+ ```json
226
+ {
227
+ "features": {
228
+ "todoSync": false
229
+ }
230
+ }
231
+ ```
232
+
183
233
  ## Configuration
184
234
 
185
235
  Configuration files are stored in `~/.config/opencode/`:
@@ -115,6 +115,34 @@ This is a **fresh implementation** - proceed with the normal workflow:
115
115
  - Verify implementation (Step 4)
116
116
  - Complete the story (Step 5)
117
117
 
118
+ ## Step 1.5: Sync Todos (Automatic)
119
+
120
+ When `athena_get_story` returns, it includes a `todos` section with BMAD tasks formatted for the todo list.
121
+
122
+ **Call todowrite to populate your task list:**
123
+
124
+ ```
125
+ todowrite({
126
+ todos: [
127
+ // Use the todos array from athena_get_story response
128
+ ]
129
+ })
130
+ ```
131
+
132
+ This syncs the BMAD story checkboxes to your todo list:
133
+ - `[2.3ΔAC1] Implement login endpoint` → Acceptance Criterion 1
134
+ - `[2.3ΔTask3] Write integration tests` → Task 3
135
+ - `[2.3ΔFix2] Hardcoded JWT secret` → Implementation Notes finding
136
+
137
+ **As you complete tasks:**
138
+ - Mark todos complete via `todowrite`
139
+ - The BMAD file checkboxes update automatically
140
+ - Progress is preserved even after session compaction
141
+
142
+ **Need more context on a task?**
143
+ - The prefix tells you where to look: `[2.3ΔAC1]` → Story 2.3, AC section
144
+ - Read the story file: `docs/stories/story-2-3.md`
145
+
118
146
  ## Step 2: Plan Your Approach
119
147
 
120
148
  Before diving into code, plan your implementation strategy:
package/dist/cli/index.js CHANGED
@@ -954,7 +954,8 @@ var FeaturesSchema = z.object({
954
954
  contextMonitor: z.boolean(),
955
955
  commentChecker: z.boolean(),
956
956
  lspTools: z.boolean(),
957
- autoGitOperations: z.boolean().default(false)
957
+ autoGitOperations: z.boolean().default(false),
958
+ todoSync: z.boolean().default(true)
958
959
  });
959
960
  var McpsSchema = z.object({
960
961
  context7: z.boolean(),
@@ -1447,7 +1448,8 @@ function featuresToFlags(enabledFeatures) {
1447
1448
  contextMonitor: enabledFeatures.includes("context-monitor"),
1448
1449
  commentChecker: enabledFeatures.includes("comment-checker"),
1449
1450
  lspTools: enabledFeatures.includes("lsp-tools"),
1450
- autoGitOperations: enabledFeatures.includes("auto-git-operations")
1451
+ autoGitOperations: enabledFeatures.includes("auto-git-operations"),
1452
+ todoSync: true
1451
1453
  };
1452
1454
  }
1453
1455
  function mcpsToFlags(mcps) {
@@ -1711,7 +1713,8 @@ function buildMinimalConfig(answers) {
1711
1713
  contextMonitor: features.enabledFeatures.includes("context-monitor"),
1712
1714
  commentChecker: features.enabledFeatures.includes("comment-checker"),
1713
1715
  lspTools: features.enabledFeatures.includes("lsp-tools"),
1714
- autoGitOperations: false
1716
+ autoGitOperations: false,
1717
+ todoSync: true
1715
1718
  },
1716
1719
  mcps: {
1717
1720
  context7: features.mcps.includes("context7"),
@@ -2330,6 +2333,18 @@ var MIGRATIONS = [
2330
2333
  }
2331
2334
  return { ...config, bmad: { ...bmad, paths } };
2332
2335
  }
2336
+ },
2337
+ {
2338
+ fromVersion: "0.8.0",
2339
+ toVersion: "0.9.0",
2340
+ description: "Add BMAD todo sync feature flag: todoSync",
2341
+ migrateAthena: (config) => {
2342
+ const features = config.features || {};
2343
+ if (features.todoSync === void 0) {
2344
+ features.todoSync = true;
2345
+ }
2346
+ return { ...config, features };
2347
+ }
2333
2348
  }
2334
2349
  ];
2335
2350
  function migrateLegacyFiles() {