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 +69 -0
- package/config/schemas/athena.schema.json +31 -0
- package/dist/cli/index.js +38 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +54 -0
- package/dist/index.js +61 -19
- package/dist/index.js.map +1 -1
- package/dist/plugin/index.js +61 -19
- package/dist/plugin/index.js.map +1 -1
- package/package.json +1 -1
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() {
|