opencode-athena 0.8.1-beta.3 → 0.8.1-beta.4

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
@@ -334,6 +334,75 @@ Version control is critical. Automatic commits can:
334
334
 
335
335
  With `autoGitOperations: false`, agents track progress via `athena_update_status()` instead, which updates `sprint-status.yaml` without git operations.
336
336
 
337
+ ### BMAD Path Overrides
338
+
339
+ By default, Athena auto-detects BMAD file locations using BMAD METHOD v6 conventions. However, you can override any file path if your project uses non-standard locations or naming conventions.
340
+
341
+ **Automatic detection features:**
342
+ - ✅ Case-insensitive search (finds `prd.md`, `PRD.md`, `Prd.md`)
343
+ - ✅ Multiple search paths (planning-artifacts, docs, sprint-artifacts)
344
+ - ✅ Nested vs flat story structures
345
+
346
+ **Override paths when needed:**
347
+
348
+ ```json
349
+ {
350
+ "bmad": {
351
+ "paths": {
352
+ "stories": "custom/stories",
353
+ "sprintStatus": "custom/sprint.yaml",
354
+ "prd": "planning/requirements.md",
355
+ "architecture": "design/system-arch.md",
356
+ "epics": "backlog/epic-list.md"
357
+ }
358
+ }
359
+ }
360
+ ```
361
+
362
+ **Available path overrides:**
363
+
364
+ | Field | Default Detection | Example Override |
365
+ |-------|-------------------|------------------|
366
+ | `stories` | `docs/implementation-artifacts/stories/` or `docs/sprint-artifacts/` (flat structure) | `"dev/user-stories"` |
367
+ | `sprintStatus` | `sprint-status.yaml` in implementation or sprint artifacts | `"status/current-sprint.yaml"` |
368
+ | `prd` | `PRD.md` (case-insensitive) in planning artifacts or docs | `"planning/product-requirements.md"` |
369
+ | `architecture` | `architecture.md` (case-insensitive) in planning artifacts or docs | `"docs/system-design.md"` |
370
+ | `epics` | `epics.md` (case-insensitive) in planning artifacts or docs | `"backlog/epic-definitions.md"` |
371
+
372
+ **Path format:**
373
+ - All paths are relative to project root
374
+ - Use forward slashes (`/`) even on Windows
375
+ - Set to `null` to use automatic detection (default)
376
+
377
+ **Use case example:**
378
+
379
+ If your project has a non-standard structure:
380
+ ```
381
+ my-project/
382
+ ├── planning/
383
+ │ ├── requirements.md # Instead of PRD.md
384
+ │ └── system-design.md # Instead of architecture.md
385
+ └── dev/
386
+ ├── sprint-status.yaml
387
+ └── stories/
388
+ ├── story-1-1.md
389
+ └── story-1-2.md
390
+ ```
391
+
392
+ Configure overrides:
393
+ ```json
394
+ {
395
+ "bmad": {
396
+ "paths": {
397
+ "stories": "dev/stories",
398
+ "sprintStatus": "dev/sprint-status.yaml",
399
+ "prd": "planning/requirements.md",
400
+ "architecture": "planning/system-design.md"
401
+ }
402
+ }
403
+ }
404
+ ```
405
+
337
406
  ## GitHub Copilot Support
338
407
 
339
408
  Athena supports GitHub Copilot as a model provider, allowing you to use Claude, GPT, and Gemini models through your Copilot subscription. This is especially useful for enterprise users who only have access to LLMs through Copilot.
@@ -140,6 +140,37 @@
140
140
  "default": 3,
141
141
  "minimum": 0,
142
142
  "maximum": 10
143
+ },
144
+ "paths": {
145
+ "type": "object",
146
+ "description": "Optional path overrides for BMAD artifacts (null = auto-detect)",
147
+ "properties": {
148
+ "stories": {
149
+ "type": ["string", "null"],
150
+ "description": "Custom path to stories directory (null = auto-detect nested or flat structure)",
151
+ "default": null
152
+ },
153
+ "sprintStatus": {
154
+ "type": ["string", "null"],
155
+ "description": "Custom path to sprint-status.yaml file (null = auto-detect with case-insensitive search)",
156
+ "default": null
157
+ },
158
+ "prd": {
159
+ "type": ["string", "null"],
160
+ "description": "Custom path to PRD.md file (null = auto-detect with case-insensitive search)",
161
+ "default": null
162
+ },
163
+ "architecture": {
164
+ "type": ["string", "null"],
165
+ "description": "Custom path to architecture.md file (null = auto-detect with case-insensitive search)",
166
+ "default": null
167
+ },
168
+ "epics": {
169
+ "type": ["string", "null"],
170
+ "description": "Custom path to epics.md file (null = auto-detect with case-insensitive search)",
171
+ "default": null
172
+ }
173
+ }
143
174
  }
144
175
  },
145
176
  "required": ["defaultTrack", "autoStatusUpdate", "parallelStoryLimit"]
package/dist/cli/index.js CHANGED
@@ -937,7 +937,14 @@ var SubscriptionSchema = z.object({
937
937
  var BmadConfigSchema = z.object({
938
938
  defaultTrack: z.enum(["quick-flow", "bmad-method", "enterprise"]),
939
939
  autoStatusUpdate: z.boolean(),
940
- parallelStoryLimit: z.number().int().min(0).max(10)
940
+ parallelStoryLimit: z.number().int().min(0).max(10),
941
+ paths: z.object({
942
+ stories: z.string().nullable().optional().describe("Custom path to stories directory (null = auto-detect)"),
943
+ sprintStatus: z.string().nullable().optional().describe("Custom path to sprint-status.yaml file (null = auto-detect)"),
944
+ prd: z.string().nullable().optional().describe("Custom path to PRD.md file (null = auto-detect)"),
945
+ architecture: z.string().nullable().optional().describe("Custom path to architecture.md file (null = auto-detect)"),
946
+ epics: z.string().nullable().optional().describe("Custom path to epics.md file (null = auto-detect)")
947
+ }).optional()
941
948
  });
942
949
  var FeaturesSchema = z.object({
943
950
  bmadBridge: z.boolean(),
@@ -1485,7 +1492,14 @@ function generateAthenaConfig(answers) {
1485
1492
  bmad: {
1486
1493
  defaultTrack: methodology.defaultTrack,
1487
1494
  autoStatusUpdate: methodology.autoStatusUpdate,
1488
- parallelStoryLimit: advanced.parallelStoryLimit ?? 3
1495
+ parallelStoryLimit: advanced.parallelStoryLimit ?? 3,
1496
+ paths: {
1497
+ stories: null,
1498
+ sprintStatus: null,
1499
+ prd: null,
1500
+ architecture: null,
1501
+ epics: null
1502
+ }
1489
1503
  },
1490
1504
  features: featuresToFlags(features.enabledFeatures),
1491
1505
  mcps: mcpsToFlags(features.mcps)
@@ -2294,6 +2308,28 @@ var MIGRATIONS = [
2294
2308
  toVersion: "0.7.0",
2295
2309
  description: "Reorganize athena files into dedicated directory",
2296
2310
  migrateAthena: (config) => config
2311
+ },
2312
+ {
2313
+ fromVersion: "0.7.0",
2314
+ toVersion: "0.8.0",
2315
+ description: "Add BMAD path overrides: sprintStatus, prd, architecture, epics",
2316
+ migrateAthena: (config) => {
2317
+ const bmad = config.bmad || {};
2318
+ const paths = bmad.paths || {};
2319
+ if (paths.sprintStatus === void 0) {
2320
+ paths.sprintStatus = null;
2321
+ }
2322
+ if (paths.prd === void 0) {
2323
+ paths.prd = null;
2324
+ }
2325
+ if (paths.architecture === void 0) {
2326
+ paths.architecture = null;
2327
+ }
2328
+ if (paths.epics === void 0) {
2329
+ paths.epics = null;
2330
+ }
2331
+ return { ...config, bmad: { ...bmad, paths } };
2332
+ }
2297
2333
  }
2298
2334
  ];
2299
2335
  function migrateLegacyFiles() {