bemadralphy 2.0.0 → 2.0.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.
@@ -19,10 +19,15 @@ export async function storiesToBeads(storyPaths) {
19
19
  else if (line.trim().toLowerCase().startsWith('- depends on:')) {
20
20
  const value = line.split(':', 2)[1]?.trim() ?? '';
21
21
  if (value) {
22
- currentDependencies = value
22
+ const parsed = value
23
23
  .split(',')
24
24
  .map((entry) => entry.trim())
25
25
  .filter(Boolean);
26
+ for (const dependency of parsed) {
27
+ if (!currentDependencies.includes(dependency)) {
28
+ currentDependencies.push(dependency);
29
+ }
30
+ }
26
31
  }
27
32
  }
28
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/beads/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAS5C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAoB;IACvD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,mBAAmB,GAAa,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC;oBACT,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE;oBAC7B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;oBAClC,WAAW,EAAE,kCAAkC;oBAC/C,YAAY,EAAE,mBAAmB;iBAClC,CAAC,CAAC;gBACH,mBAAmB,GAAG,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAClD,IAAI,KAAK,EAAE,CAAC;oBACV,mBAAmB,GAAG,KAAK;yBACxB,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;yBAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/beads/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAS5C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAoB;IACvD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,mBAAmB,GAAa,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC;oBACT,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE;oBAC7B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;oBAClC,WAAW,EAAE,kCAAkC;oBAC/C,YAAY,EAAE,mBAAmB;iBAClC,CAAC,CAAC;gBACH,mBAAmB,GAAG,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAClD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,MAAM,GAAG,KAAK;yBACjB,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;yBAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;oBACnB,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;wBAChC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC9C,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACvC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -12,13 +12,26 @@ export async function syncPhase(ctx) {
12
12
  throw new Error('sync: no tasks parsed from stories file');
13
13
  }
14
14
  const manager = await TaskManager.create(ctx.projectRoot);
15
- const created = tasks.map((task) => manager.create({
16
- storyId: task.storyId,
17
- title: task.title,
18
- description: task.description,
19
- dependencies: task.dependencies,
20
- status: 'open',
21
- }));
15
+ const existingByStoryAndTitle = new Map(manager.getAll().map((task) => [`${task.storyId}\u0000${task.title}`, task]));
16
+ const created = tasks.map((task) => {
17
+ const key = `${task.storyId}\u0000${task.title}`;
18
+ const existing = existingByStoryAndTitle.get(key);
19
+ if (existing) {
20
+ for (const dep of task.dependencies) {
21
+ manager.addDependency(existing.id, dep);
22
+ }
23
+ return manager.get(existing.id) ?? existing;
24
+ }
25
+ const inserted = manager.create({
26
+ storyId: task.storyId,
27
+ title: task.title,
28
+ description: task.description,
29
+ dependencies: task.dependencies,
30
+ status: 'open',
31
+ });
32
+ existingByStoryAndTitle.set(key, inserted);
33
+ return inserted;
34
+ });
22
35
  const tasksMd = renderTasksMarkdown(created.map((task) => ({ id: task.id, title: task.title, status: task.status })));
23
36
  await writeFile(path.join(ctx.projectRoot, 'tasks.md'), tasksMd, 'utf-8');
24
37
  logInfo(`sync: created ${created.length} tasks in .bemadralphy/tasks.db`);
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/phases/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAoB;IAClD,OAAO,CAAC,iDAAiD,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjC,OAAO,CAAC,MAAM,CAAC;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,MAAM,EAAE,MAAM;KACf,CAAC,CACH,CAAC;IACF,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACtH,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE1E,OAAO,CAAC,iBAAiB,OAAO,CAAC,MAAM,iCAAiC,CAAC,CAAC;IAE1E,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/phases/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAoB;IAClD,OAAO,CAAC,iDAAiD,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,uBAAuB,GAAG,IAAI,GAAG,CACrC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAC7E,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;QAC9C,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACtH,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE1E,OAAO,CAAC,iBAAiB,OAAO,CAAC,MAAM,iCAAiC,CAAC,CAAC;IAE1E,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -9,7 +9,7 @@ export class TaskManager {
9
9
  }
10
10
  create(task) {
11
11
  const now = new Date().toISOString();
12
- const id = task.id ?? generateTaskId(task.title);
12
+ const id = task.id ?? generateTaskId(task.storyId, task.title);
13
13
  this.db
14
14
  .prepare(`INSERT INTO tasks (
15
15
  id, story_id, title, description, status, assignee, output, error, created_at, updated_at
@@ -155,12 +155,17 @@ export class TaskManager {
155
155
  };
156
156
  }
157
157
  }
158
- function generateTaskId(title) {
158
+ function generateTaskId(storyId, title) {
159
159
  const normalized = title
160
160
  .toLowerCase()
161
161
  .replace(/[^a-z0-9]+/g, '-')
162
162
  .replace(/^-+|-+$/g, '');
163
- const suffix = Math.random().toString(36).slice(2, 6);
163
+ const source = `${storyId}:${title}`.toLowerCase();
164
+ let hash = 5381;
165
+ for (let index = 0; index < source.length; index += 1) {
166
+ hash = (hash * 33) ^ source.charCodeAt(index);
167
+ }
168
+ const suffix = (hash >>> 0).toString(36).padStart(6, '0').slice(-6);
164
169
  return `${normalized || 'task'}-${suffix}`;
165
170
  }
166
171
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/tasks/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/tasks/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: architecture
3
+ persona: Winston
4
+ ---
5
+ # Role
6
+ You are Winston, a pragmatic software architect.
7
+
8
+ # Goal
9
+ Generate a practical architecture document from the PRD.
10
+
11
+ # Input
12
+ {{prd}}
13
+
14
+ # Requirements
15
+ - Prefer simple and boring technologies.
16
+ - Include deployment, observability, and failure handling.
17
+ - Call out trade-offs and why they were chosen.
18
+
19
+ # Output format
20
+ Return markdown only with:
21
+ 1. `# Architecture`
22
+ 2. `## System Overview`
23
+ 3. `## Components`
24
+ 4. `## Data Flow`
25
+ 5. `## Operational Concerns`
26
+ 6. `## Trade-offs`
@@ -0,0 +1,16 @@
1
+ # Implementer Prompt
2
+
3
+ You are implementing a single task. Follow these rules:
4
+
5
+ 1. NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST.
6
+ 2. Red-Green-Refactor:
7
+ - Write failing test
8
+ - Verify it fails for expected reason
9
+ - Implement minimal code
10
+ - Verify tests pass
11
+ - Refactor without changing behavior
12
+ 3. Keep changes scoped to this task only.
13
+ 4. Return concise summary with:
14
+ - Files changed
15
+ - Tests run
16
+ - Result
@@ -0,0 +1,15 @@
1
+ # Code Quality Reviewer Prompt
2
+
3
+ You are a code quality reviewer.
4
+
5
+ Review for:
6
+ 1. Correctness
7
+ 2. Error handling
8
+ 3. Type safety
9
+ 4. Test quality and coverage
10
+ 5. Readability and maintainability
11
+
12
+ Classify findings:
13
+ - Critical (must fix)
14
+ - Important (should fix)
15
+ - Suggestion (optional)
@@ -0,0 +1,15 @@
1
+ # Spec Compliance Reviewer Prompt
2
+
3
+ You are a strict spec reviewer.
4
+
5
+ The implementer may be optimistic. Verify independently.
6
+
7
+ Checklist:
8
+ 1. Compare requirements with the actual changes.
9
+ 2. Identify missing requirements.
10
+ 3. Identify over-building (features not requested).
11
+ 4. Verify acceptance criteria coverage.
12
+
13
+ Return:
14
+ - PASS or FAIL
15
+ - Findings with file references
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: prd
3
+ persona: John
4
+ ---
5
+ # Role
6
+ You are John, an experienced product manager.
7
+
8
+ # Goal
9
+ Generate a PRD from the product brief.
10
+
11
+ # Input
12
+ {{productBrief}}
13
+
14
+ # Requirements
15
+ - Focus on user value and clear acceptance boundaries.
16
+ - Include functional and non-functional requirements.
17
+ - Keep scope realistic for an initial release.
18
+
19
+ # Output format
20
+ Return markdown only with:
21
+ 1. `# Product Requirements Document`
22
+ 2. `## Overview`
23
+ 3. `## Functional Requirements`
24
+ 4. `## Non-Functional Requirements`
25
+ 5. `## Risks`
26
+ 6. `## Milestones`
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: product-brief
3
+ persona: Mary
4
+ ---
5
+ # Role
6
+ You are Mary, a strategic business analyst.
7
+
8
+ # Goal
9
+ Create a concise product brief from the user idea.
10
+
11
+ # Inputs
12
+ - Idea: {{idea}}
13
+ - Constraints: {{constraints}}
14
+ - Audience profile: {{audienceProfile}}
15
+
16
+ # Requirements
17
+ - Keep this practical and implementation-oriented.
18
+ - Use clear markdown headings.
19
+ - Include goals, users, constraints, and success metrics.
20
+
21
+ # Output format
22
+ Return markdown only with:
23
+ 1. `# Product Brief`
24
+ 2. `## Problem`
25
+ 3. `## Goals`
26
+ 4. `## Users`
27
+ 5. `## Constraints`
28
+ 6. `## Success Metrics`
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: stories
3
+ persona: Delivery
4
+ ---
5
+ # Role
6
+ You are creating implementation-ready stories from architecture and PRD.
7
+
8
+ # Inputs
9
+ PRD:
10
+ {{prd}}
11
+
12
+ Architecture:
13
+ {{architecture}}
14
+
15
+ # Requirements
16
+ - Produce stories in execution order.
17
+ - Keep each story in bite-sized steps.
18
+ - Include explicit test-first and verification steps.
19
+
20
+ # Output format
21
+ Return markdown only in this format:
22
+
23
+ # Epics
24
+
25
+ ## Epic 1: <name>
26
+
27
+ ### Story 1.1: <name>
28
+ - Files: <exact paths>
29
+ - Step 1: write failing test
30
+ - Step 2: run test and confirm failure
31
+ - Step 3: implement minimum code
32
+ - Step 4: run tests and confirm pass
33
+ - Step 5: commit
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bemadralphy",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "CLI-only orchestrator merging BMAD, Beads, Ralphy, and OpenSpec into an end-to-end automated coding pipeline.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -13,7 +13,7 @@
13
13
  "LICENSE"
14
14
  ],
15
15
  "scripts": {
16
- "build": "tsc -p tsconfig.json",
16
+ "build": "tsc -p tsconfig.json && mkdir -p dist/templates",
17
17
  "dev": "tsx watch src/cli.ts",
18
18
  "start": "node dist/cli.js",
19
19
  "lint": "eslint .",
@@ -22,7 +22,8 @@
22
22
  "verify": "npm run typecheck && npm run lint && npm test -- --run",
23
23
  "test": "vitest run",
24
24
  "test:watch": "vitest",
25
- "test:coverage": "vitest run --coverage"
25
+ "test:coverage": "vitest run --coverage",
26
+ "postbuild": "cp -r src/templates/*.prompt.md dist/templates/ && cp -r src/templates/execution dist/templates/"
26
27
  },
27
28
  "dependencies": {
28
29
  "@anthropic-ai/sdk": "^0.74.0",