bemadralphy 0.1.0 → 0.2.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.
Files changed (74) hide show
  1. package/README.md +23 -0
  2. package/dist/cli.js +2 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/orchestrator.d.ts +3 -1
  5. package/dist/orchestrator.js +21 -0
  6. package/dist/orchestrator.js.map +1 -1
  7. package/dist/phases/execute.js +11 -8
  8. package/dist/phases/execute.js.map +1 -1
  9. package/dist/phases/index.d.ts +1 -1
  10. package/dist/phases/index.js.map +1 -1
  11. package/dist/phases/intake.js +63 -3
  12. package/dist/phases/intake.js.map +1 -1
  13. package/dist/phases/types.d.ts +4 -0
  14. package/dist/state.d.ts +2 -0
  15. package/dist/state.js.map +1 -1
  16. package/dist/swarm/detector.d.ts +5 -1
  17. package/dist/swarm/detector.js +29 -4
  18. package/dist/swarm/detector.js.map +1 -1
  19. package/dist/swarm/types.d.ts +7 -0
  20. package/package.json +1 -1
  21. package/dist/beads/parse-tasks.d.ts +0 -2
  22. package/dist/beads/parse-tasks.js +0 -12
  23. package/dist/beads/parse-tasks.js.map +0 -1
  24. package/dist/docs/pr-body.d.ts +0 -8
  25. package/dist/docs/pr-body.js +0 -11
  26. package/dist/docs/pr-body.js.map +0 -1
  27. package/dist/engines/cli.d.ts +0 -14
  28. package/dist/engines/cli.js +0 -72
  29. package/dist/engines/cli.js.map +0 -1
  30. package/dist/engines/prompt-template.d.ts +0 -2
  31. package/dist/engines/prompt-template.js +0 -96
  32. package/dist/engines/prompt-template.js.map +0 -1
  33. package/dist/engines/stub.d.ts +0 -2
  34. package/dist/engines/stub.js +0 -17
  35. package/dist/engines/stub.js.map +0 -1
  36. package/dist/git/worktrees.d.ts +0 -11
  37. package/dist/git/worktrees.js +0 -63
  38. package/dist/git/worktrees.js.map +0 -1
  39. package/dist/planning/bmad.d.ts +0 -3
  40. package/dist/planning/bmad.js +0 -20
  41. package/dist/planning/bmad.js.map +0 -1
  42. package/dist/pr/create.d.ts +0 -2
  43. package/dist/pr/create.js +0 -65
  44. package/dist/pr/create.js.map +0 -1
  45. package/dist/quality/gates.d.ts +0 -12
  46. package/dist/quality/gates.js +0 -54
  47. package/dist/quality/gates.js.map +0 -1
  48. package/dist/release.d.ts +0 -3
  49. package/dist/release.js +0 -88
  50. package/dist/release.js.map +0 -1
  51. package/dist/specs/changes.d.ts +0 -7
  52. package/dist/specs/changes.js +0 -20
  53. package/dist/specs/changes.js.map +0 -1
  54. package/dist/specs/merge-summary.d.ts +0 -2
  55. package/dist/specs/merge-summary.js +0 -19
  56. package/dist/specs/merge-summary.js.map +0 -1
  57. package/dist/swarm/native.d.ts +0 -14
  58. package/dist/swarm/native.js +0 -112
  59. package/dist/swarm/native.js.map +0 -1
  60. package/dist/swarm/parse.d.ts +0 -5
  61. package/dist/swarm/parse.js +0 -20
  62. package/dist/swarm/parse.js.map +0 -1
  63. package/dist/tasks/output.d.ts +0 -7
  64. package/dist/tasks/output.js +0 -15
  65. package/dist/tasks/output.js.map +0 -1
  66. package/dist/utils/failures.d.ts +0 -2
  67. package/dist/utils/failures.js +0 -22
  68. package/dist/utils/failures.js.map +0 -1
  69. package/dist/utils/resume.d.ts +0 -1
  70. package/dist/utils/resume.js +0 -14
  71. package/dist/utils/resume.js.map +0 -1
  72. package/dist/utils/retry.d.ts +0 -1
  73. package/dist/utils/retry.js +0 -19
  74. package/dist/utils/retry.js.map +0 -1
package/README.md CHANGED
@@ -2,8 +2,12 @@
2
2
 
3
3
  **Be**(ads) + (B)**Mad** + **Ralphy** + [OpenSpec](https://github.com/Fission-AI/OpenSpec) — four tools, one pipeline, zero gaps. **CLI-only.**
4
4
 
5
+ BeMadRalphy is a product-delivery operating system for AI-assisted teams: methodology first, code generation second.
6
+
5
7
  > End-to-end automated coding: idea in → planning → task graph → swarm-aware execution → living specs → deployment.
6
8
 
9
+ [![npm version](https://img.shields.io/npm/v/bemadralphy.svg)](https://www.npmjs.com/package/bemadralphy)
10
+ [![npm downloads](https://img.shields.io/npm/dm/bemadralphy.svg)](https://www.npmjs.com/package/bemadralphy)
7
11
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
8
12
 
9
13
  ## Status
@@ -41,6 +45,14 @@ BeMadRalphy is a CLI orchestrator that merges:
41
45
 
42
46
  Into a single, seamless pipeline that takes you from a rough idea to a deployed, documented, and tested codebase — with minimal human intervention.
43
47
 
48
+ ### Positioning and ICP
49
+
50
+ - Primary ICP: product teams of 2-10 engineers shipping continuously
51
+ - Secondary ICPs: solo builders and agencies operating repeatable delivery workflows
52
+ - Differentiation: not "write code faster," but "ship products systematically" via BMAD-driven intent-to-delivery
53
+
54
+ For full positioning rationale and risk mitigation strategy, see [`docs/positioning.md`](docs/positioning.md).
55
+
44
56
  ---
45
57
 
46
58
  ## The 9-Phase Pipeline
@@ -157,6 +169,9 @@ npx bemadralphy run
157
169
  # Run with specific options
158
170
  npx bemadralphy run --mode auto --engine claude --max-parallel 5 --budget 50
159
171
 
172
+ # Run with execution/audience profiles
173
+ npx bemadralphy run --execution-profile safe --audience-profile product-team
174
+
160
175
  # Explore before planning (optional)
161
176
  npx bemadralphy explore "How should I structure authentication?"
162
177
 
@@ -301,11 +316,19 @@ cost_usd: 3.47
301
316
  | `--engine <name>` | AI engine to use |
302
317
  | `--planning-engine <name>` | Override engine for planning phase only |
303
318
  | `--max-parallel N` | Max parallel tasks (default: 3) |
319
+ | `--execution-profile <profile>` | Guardrails profile: `safe\|balanced\|fast` |
320
+ | `--audience-profile <profile>` | ICP profile: `solo-dev\|agency-team\|product-team\|enterprise-team` |
304
321
  | `--budget N` | Cost cap in USD |
305
322
  | `--brownfield` | Force brownfield mode |
306
323
  | `--swarm native\|process\|off` | Override swarm detection |
307
324
  | `--create-pr` | Create PRs for each task |
308
325
 
326
+ ### Execution profiles
327
+
328
+ - `safe`: single-lane execution defaults, process-mode bias, lowest coordination risk
329
+ - `balanced` (default): controlled concurrency for day-to-day product work
330
+ - `fast`: maximum requested concurrency for throughput-focused runs
331
+
309
332
  ---
310
333
 
311
334
  ## Installation
package/dist/cli.js CHANGED
@@ -19,6 +19,8 @@ program
19
19
  .option('--engine <name>', 'AI engine to use')
20
20
  .option('--planning-engine <name>', 'Override engine for planning phase only')
21
21
  .option('--max-parallel <n>', 'Max parallel tasks', (v) => Number(v), 3)
22
+ .option('--execution-profile <profile>', 'Execution guardrails profile: safe|balanced|fast', 'balanced')
23
+ .option('--audience-profile <profile>', 'Target audience profile: solo-dev|agency-team|product-team|enterprise-team')
22
24
  .option('--budget <usd>', 'Cost cap in USD', (v) => Number(v))
23
25
  .option('--brownfield', 'Force brownfield mode', false)
24
26
  .option('--swarm <mode>', 'Override swarm detection: native|process|off')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,eAAe,EAAE,uCAAuC,EAAE,QAAQ,CAAC;KAC1E,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,MAAM,CAAC,0BAA0B,EAAE,yCAAyC,CAAC;KAC7E,MAAM,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACvE,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC7D,MAAM,CAAC,cAAc,EAAE,uBAAuB,EAAE,KAAK,CAAC;KACtD,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;KACxE,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,KAAK,CAAC;KACnD,MAAM,CAAC,WAAW,EAAE,2BAA2B,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;IAC9B,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,eAAe,EAAE,uCAAuC,EAAE,QAAQ,CAAC;KAC1E,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,MAAM,CAAC,0BAA0B,EAAE,yCAAyC,CAAC;KAC7E,MAAM,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACvE,MAAM,CACL,+BAA+B,EAC/B,kDAAkD,EAClD,UAAU,CACX;KACA,MAAM,CACL,8BAA8B,EAC9B,4EAA4E,CAC7E;KACA,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC7D,MAAM,CAAC,cAAc,EAAE,uBAAuB,EAAE,KAAK,CAAC;KACtD,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;KACxE,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,KAAK,CAAC;KACnD,MAAM,CAAC,WAAW,EAAE,2BAA2B,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;IAC9B,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1,9 +1,11 @@
1
- import { type PipelineMode } from './phases/index.js';
1
+ import { type AudienceProfile, type ExecutionProfile, type PipelineMode } from './phases/index.js';
2
2
  export type RunOptions = {
3
3
  mode: PipelineMode;
4
4
  engine?: string;
5
5
  planningEngine?: string;
6
6
  maxParallel: number;
7
+ executionProfile?: ExecutionProfile;
8
+ audienceProfile?: AudienceProfile;
7
9
  budget?: number;
8
10
  brownfield: boolean;
9
11
  swarm?: 'native' | 'process' | 'off';
@@ -42,6 +42,8 @@ export async function runInit(projectRoot = process.cwd()) {
42
42
  }
43
43
  export async function runPipeline(options) {
44
44
  const projectRoot = options.projectRoot ?? process.cwd();
45
+ const executionProfile = normalizeExecutionProfile(options.executionProfile);
46
+ const audienceProfile = normalizeAudienceProfile(options.audienceProfile);
45
47
  const context = {
46
48
  runId: new Date().toISOString(),
47
49
  mode: options.mode,
@@ -50,6 +52,8 @@ export async function runPipeline(options) {
50
52
  engine: options.engine,
51
53
  planningEngine: options.planningEngine,
52
54
  maxParallel: options.maxParallel,
55
+ executionProfile,
56
+ audienceProfile,
53
57
  budget: options.budget,
54
58
  brownfield: options.brownfield,
55
59
  swarm: options.swarm,
@@ -93,7 +97,24 @@ function stateFrom(ctx, phase) {
93
97
  phase,
94
98
  mode: ctx.mode,
95
99
  engine: ctx.engine,
100
+ executionProfile: ctx.executionProfile,
101
+ audienceProfile: ctx.audienceProfile,
96
102
  startedAt: ctx.runId,
97
103
  };
98
104
  }
105
+ function normalizeExecutionProfile(value) {
106
+ if (value === 'safe' || value === 'balanced' || value === 'fast') {
107
+ return value;
108
+ }
109
+ return 'balanced';
110
+ }
111
+ function normalizeAudienceProfile(value) {
112
+ if (value === 'solo-dev' ||
113
+ value === 'agency-team' ||
114
+ value === 'product-team' ||
115
+ value === 'enterprise-team') {
116
+ return value;
117
+ }
118
+ return undefined;
119
+ }
99
120
  //# sourceMappingURL=orchestrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { engineAdapters } from '../engines/index.js';
2
2
  import { runClaudeTeamsBatch } from '../swarm/claude-teams.js';
3
3
  import { runCodexAgentsBatch } from '../swarm/codex-sdk.js';
4
- import { resolveSwarmMode } from '../swarm/detector.js';
4
+ import { resolveExecutionPolicy } from '../swarm/detector.js';
5
5
  import { runKimiParlBatch } from '../swarm/kimi-parl.js';
6
6
  import { BeadsWriter } from '../beads/writer.js';
7
7
  import { assertCommandExists, runCommand } from '../utils/exec.js';
@@ -17,23 +17,26 @@ export async function executePhase(ctx) {
17
17
  if (!adapter) {
18
18
  throw new Error(`execute: unknown engine "${engineName}"`);
19
19
  }
20
- const swarmMode = resolveSwarmMode(engineName, ctx.swarm);
21
- logInfo(`execute: engine=${engineName} swarm=${swarmMode}`);
22
- if (swarmMode === 'native') {
20
+ const policy = resolveExecutionPolicy(engineName, ctx.executionProfile ?? 'balanced', {
21
+ swarmOverride: ctx.swarm,
22
+ requestedParallel: ctx.maxParallel,
23
+ });
24
+ logInfo(`execute: engine=${engineName} profile=${policy.profile} swarm=${policy.swarmMode} maxParallel=${policy.maxParallel}`);
25
+ if (policy.swarmMode === 'native') {
23
26
  if (engineName === 'claude') {
24
- await runClaudeTeamsBatch(ctx.projectRoot, ctx.maxParallel ?? 3);
27
+ await runClaudeTeamsBatch(ctx.projectRoot, policy.maxParallel);
25
28
  }
26
29
  else if (engineName === 'kimi') {
27
- await runKimiParlBatch(ctx.projectRoot, ctx.maxParallel ?? 3);
30
+ await runKimiParlBatch(ctx.projectRoot, policy.maxParallel);
28
31
  }
29
32
  else if (engineName === 'codex') {
30
- await runCodexAgentsBatch(ctx.projectRoot, ctx.maxParallel ?? 3);
33
+ await runCodexAgentsBatch(ctx.projectRoot, policy.maxParallel);
31
34
  }
32
35
  else {
33
36
  await runBdReadyLoop(ctx, adapter);
34
37
  }
35
38
  }
36
- else if (swarmMode === 'process') {
39
+ else if (policy.swarmMode === 'process') {
37
40
  await runBdReadyLoop(ctx, adapter);
38
41
  }
39
42
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/phases/execute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/phases/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAoB;IACrD,OAAO,CAAC,+CAA+C,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;IAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,IAAI,UAAU,EAAE;QACpF,aAAa,EAAE,GAAG,CAAC,KAAK;QACxB,iBAAiB,EAAE,GAAG,CAAC,WAAW;KACnC,CAAC,CAAC;IACH,OAAO,CACL,mBAAmB,UAAU,YAAY,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,SAAS,gBAAgB,MAAM,CAAC,WAAW,EAAE,CACtH,CAAC;IAEF,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YACjC,MAAM,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAClC,MAAM,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,GAAoB,EACpB,OAAwC;IAExC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;IACjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,CAAC,IAAI,sCAAsC,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,mBAAmB,CAAC,IAAI,EAAE,wCAAwC,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC,CAAC;YACzD,OAAO,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC"}
@@ -6,5 +6,5 @@ export { postPhase } from './post.js';
6
6
  export { scaffoldPhase } from './scaffold.js';
7
7
  export { steeringPhase } from './steering.js';
8
8
  export { syncPhase } from './sync.js';
9
- export type { PipelineContext, PipelineMode } from './types.js';
9
+ export type { AudienceProfile, ExecutionProfile, PipelineContext, PipelineMode, } from './types.js';
10
10
  export { verifyPhase } from './verify.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/phases/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/phases/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -13,9 +13,11 @@ export async function intakePhase(ctx) {
13
13
  }
14
14
  const fileContents = await readFile(sourceFile, 'utf-8');
15
15
  const { frontmatter, body } = parseFrontmatter(fileContents);
16
+ const normalizedDecisions = normalizeIntakeDecisions(frontmatter, ctx.audienceProfile);
17
+ const audienceProfile = normalizedDecisions.audience_profile;
16
18
  const intakeData = {
17
19
  sourceFile: path.basename(sourceFile),
18
- frontmatter,
20
+ frontmatter: normalizedDecisions,
19
21
  body,
20
22
  createdAt: new Date().toISOString(),
21
23
  };
@@ -25,12 +27,12 @@ export async function intakePhase(ctx) {
25
27
  const intakeYaml = stringify({
26
28
  source_file: intakeData.sourceFile,
27
29
  created_at: intakeData.createdAt,
28
- decisions: intakeData.frontmatter,
30
+ decisions: normalizedDecisions,
29
31
  idea: intakeData.body.trim(),
30
32
  });
31
33
  await writeFile(intakePath, intakeYaml, 'utf-8');
32
34
  logInfo(`intake written to ${intakePath}`);
33
- return { ...ctx, intakePath, intake: intakeData };
35
+ return { ...ctx, intakePath, intake: intakeData, audienceProfile };
34
36
  }
35
37
  async function resolveIdeaFile(ideaPath, planPath) {
36
38
  if (await exists(ideaPath)) {
@@ -64,4 +66,62 @@ function parseFrontmatter(contents) {
64
66
  const parsed = (parse(rawFrontmatter) ?? {});
65
67
  return { frontmatter: parsed, body };
66
68
  }
69
+ function normalizeIntakeDecisions(frontmatter, existingAudienceProfile) {
70
+ const audienceProfile = existingAudienceProfile ?? inferAudienceProfile(frontmatter) ?? 'product-team';
71
+ return {
72
+ ...frontmatter,
73
+ audience_profile: audienceProfile,
74
+ team_size: normalizeTeamSize(frontmatter['team_size']),
75
+ delivery_velocity: normalizeDeliveryVelocity(frontmatter['delivery_velocity']),
76
+ };
77
+ }
78
+ function inferAudienceProfile(frontmatter) {
79
+ const candidates = [
80
+ frontmatter['audience_profile'],
81
+ frontmatter['audience'],
82
+ frontmatter['icp'],
83
+ frontmatter['target_audience'],
84
+ ];
85
+ for (const candidate of candidates) {
86
+ const normalized = normalizeAudienceProfile(candidate);
87
+ if (normalized) {
88
+ return normalized;
89
+ }
90
+ }
91
+ return undefined;
92
+ }
93
+ function normalizeAudienceProfile(value) {
94
+ if (typeof value !== 'string') {
95
+ return undefined;
96
+ }
97
+ const lowered = value.trim().toLowerCase();
98
+ if (['solo', 'solo-dev', 'indie', 'freelancer'].includes(lowered)) {
99
+ return 'solo-dev';
100
+ }
101
+ if (['agency', 'agency-team', 'consultancy'].includes(lowered)) {
102
+ return 'agency-team';
103
+ }
104
+ if (['enterprise', 'enterprise-team', 'large-team'].includes(lowered)) {
105
+ return 'enterprise-team';
106
+ }
107
+ if (['product-team', 'product', 'startup', 'team'].includes(lowered)) {
108
+ return 'product-team';
109
+ }
110
+ return undefined;
111
+ }
112
+ function normalizeTeamSize(value) {
113
+ if (typeof value === 'number' && Number.isFinite(value)) {
114
+ return String(Math.max(1, Math.floor(value)));
115
+ }
116
+ if (typeof value === 'string' && value.trim().length > 0) {
117
+ return value.trim();
118
+ }
119
+ return '2-10';
120
+ }
121
+ function normalizeDeliveryVelocity(value) {
122
+ if (typeof value === 'string' && value.trim().length > 0) {
123
+ return value.trim();
124
+ }
125
+ return '1-3 features/week';
126
+ }
67
127
  //# sourceMappingURL=intake.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intake.js","sourceRoot":"","sources":["../../src/phases/intake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAoB;IACpD,OAAO,CAAC,yDAAyD,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE7D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAe;QAC7B,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACrC,WAAW;QACX,IAAI;QACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,SAAS,CAAC;QAC3B,WAAW,EAAE,UAAU,CAAC,UAAU;QAClC,UAAU,EAAE,UAAU,CAAC,SAAS;QAChC,SAAS,EAAE,UAAU,CAAC,WAAW;QACjC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE;KAC7B,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAEjD,OAAO,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,QAAgB;IAC/D,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,UAAkB;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IAIxC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC;IAC3E,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAA4B,CAAC;IACxE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"intake.js","sourceRoot":"","sources":["../../src/phases/intake.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export type PipelineMode = 'auto' | 'hybrid' | 'supervised';
2
+ export type ExecutionProfile = 'safe' | 'balanced' | 'fast';
3
+ export type AudienceProfile = 'solo-dev' | 'agency-team' | 'product-team' | 'enterprise-team';
2
4
  export type IntakeData = {
3
5
  sourceFile: string;
4
6
  frontmatter: Record<string, unknown>;
@@ -15,6 +17,8 @@ export type PipelineContext = {
15
17
  engine?: string;
16
18
  planningEngine?: string;
17
19
  maxParallel?: number;
20
+ executionProfile?: ExecutionProfile;
21
+ audienceProfile?: AudienceProfile;
18
22
  budget?: number;
19
23
  brownfield?: boolean;
20
24
  swarm?: 'native' | 'process' | 'off';
package/dist/state.d.ts CHANGED
@@ -2,6 +2,8 @@ export type PipelineState = {
2
2
  phase: string;
3
3
  mode: 'auto' | 'hybrid' | 'supervised';
4
4
  engine?: string;
5
+ executionProfile?: 'safe' | 'balanced' | 'fast';
6
+ audienceProfile?: 'solo-dev' | 'agency-team' | 'product-team' | 'enterprise-team';
5
7
  lastGate?: string;
6
8
  tasksCompleted?: number;
7
9
  tasksTotal?: number;
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAaxC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAAmB;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAQ,KAAK,CAAC,GAAG,CAAmB,IAAI,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAAmB,EAAE,KAAoB;IACvE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAexC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAAmB;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAQ,KAAK,CAAC,GAAG,CAAmB,IAAI,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAAmB,EAAE,KAAoB;IACvE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC"}
@@ -1,3 +1,7 @@
1
- import type { SwarmCapability, SwarmMode } from './types.js';
1
+ import type { ExecutionPolicy, ExecutionProfile, SwarmCapability, SwarmMode } from './types.js';
2
2
  export declare function detectSwarmCapability(engineName: string): SwarmCapability;
3
3
  export declare function resolveSwarmMode(engineName: string, override?: SwarmMode): SwarmMode;
4
+ export declare function resolveExecutionPolicy(engineName: string, profile?: ExecutionProfile, options?: {
5
+ swarmOverride?: SwarmMode;
6
+ requestedParallel?: number;
7
+ }): ExecutionPolicy;
@@ -7,10 +7,35 @@ export function detectSwarmCapability(engineName) {
7
7
  return { supportsNative: adapter.hasNativeSwarm };
8
8
  }
9
9
  export function resolveSwarmMode(engineName, override) {
10
- if (override) {
11
- return override;
12
- }
10
+ return resolveExecutionPolicy(engineName, 'balanced', { swarmOverride: override }).swarmMode;
11
+ }
12
+ export function resolveExecutionPolicy(engineName, profile = 'balanced', options = {}) {
13
13
  const capability = detectSwarmCapability(engineName);
14
- return capability.supportsNative ? 'native' : 'process';
14
+ const maxParallel = resolveMaxParallel(profile, options.requestedParallel);
15
+ const profileSwarmMode = profile === 'safe' ? 'process' : capability.supportsNative ? 'native' : 'process';
16
+ const swarmMode = options.swarmOverride ?? profileSwarmMode;
17
+ return {
18
+ profile,
19
+ swarmMode,
20
+ maxParallel: swarmMode === 'off' ? 1 : maxParallel,
21
+ capability,
22
+ };
23
+ }
24
+ function resolveMaxParallel(profile, requestedParallel) {
25
+ const sanitized = sanitizeParallel(requestedParallel);
26
+ if (profile === 'safe') {
27
+ return 1;
28
+ }
29
+ if (profile === 'balanced') {
30
+ return Math.min(sanitized, 2);
31
+ }
32
+ return sanitized;
33
+ }
34
+ function sanitizeParallel(value) {
35
+ if (typeof value !== 'number' || Number.isNaN(value) || !Number.isFinite(value)) {
36
+ return 3;
37
+ }
38
+ const normalized = Math.floor(value);
39
+ return normalized > 0 ? normalized : 1;
15
40
  }
16
41
  //# sourceMappingURL=detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/swarm/detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,QAAoB;IACvE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACrD,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/swarm/detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,QAAoB;IACvE,OAAO,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,UAA4B,UAAU,EACtC,UAGI,EAAE;IAEN,MAAM,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3G,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,IAAI,gBAAgB,CAAC;IAC5D,OAAO;QACL,OAAO;QACP,SAAS;QACT,WAAW,EAAE,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;QAClD,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAyB,EAAE,iBAA0B;IAC/E,MAAM,SAAS,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAChF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -1,5 +1,12 @@
1
1
  export type SwarmMode = 'native' | 'process' | 'off';
2
+ export type ExecutionProfile = 'safe' | 'balanced' | 'fast';
2
3
  export type SwarmCapability = {
3
4
  supportsNative: boolean;
4
5
  reason?: string;
5
6
  };
7
+ export type ExecutionPolicy = {
8
+ profile: ExecutionProfile;
9
+ swarmMode: SwarmMode;
10
+ maxParallel: number;
11
+ capability: SwarmCapability;
12
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bemadralphy",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
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",
@@ -1,2 +0,0 @@
1
- import type { TaskSummary } from './tasks-md.js';
2
- export declare function parseTasksMarkdown(contents: string): TaskSummary[];
@@ -1,12 +0,0 @@
1
- export function parseTasksMarkdown(contents) {
2
- const lines = contents.split(/\r?\n/).filter((line) => line.startsWith('|'));
3
- const rows = lines
4
- .map((line) => line.split('|').map((part) => part.trim()))
5
- .filter((parts) => parts.length >= 4 && parts[1] !== 'ID' && parts[1] !== '---');
6
- return rows.map((parts) => ({
7
- id: parts[1],
8
- title: parts[2],
9
- status: parts[3],
10
- }));
11
- }
12
- //# sourceMappingURL=parse-tasks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-tasks.js","sourceRoot":"","sources":["../../src/beads/parse-tasks.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,KAAK;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACzD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1B,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACf,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;KACjB,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -1,8 +0,0 @@
1
- export type PrBodyInput = {
2
- title: string;
3
- summary: string;
4
- changes: string[];
5
- tests: string[];
6
- linkedIssues?: string[];
7
- };
8
- export declare function generatePrBody(input: PrBodyInput): string;
@@ -1,11 +0,0 @@
1
- export function generatePrBody(input) {
2
- const lines = [];
3
- lines.push('## Summary', '', input.summary, '');
4
- lines.push('## Changes', '', ...input.changes.map((c) => `- ${c}`), '');
5
- lines.push('## Tests', '', ...input.tests.map((t) => `- ${t}`), '');
6
- if (input.linkedIssues && input.linkedIssues.length > 0) {
7
- lines.push('## Linked Issues', '', ...input.linkedIssues.map((i) => `- ${i}`), '');
8
- }
9
- return lines.join('\n');
10
- }
11
- //# sourceMappingURL=pr-body.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pr-body.js","sourceRoot":"","sources":["../../src/docs/pr-body.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpE,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,14 +0,0 @@
1
- import type { EngineAdapter } from './types.js';
2
- type CliAdapterConfig = {
3
- name: string;
4
- hasNativeSwarm: boolean;
5
- permissionFlags?: string[];
6
- defaultCommand: string;
7
- envCommand: string;
8
- envArgs: string;
9
- };
10
- export declare function createCliAdapter(config: CliAdapterConfig): EngineAdapter;
11
- export declare function resolveCommand(config: CliAdapterConfig): string;
12
- export declare function resolveArgs(config: CliAdapterConfig, prompt: string, promptFile: string, taskId: string): string[];
13
- export declare function parseArgsEnv(raw?: string): string[] | null;
14
- export {};
@@ -1,72 +0,0 @@
1
- import { mkdir, writeFile } from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { commandExists, runCommand } from '../utils/exec.js';
4
- import { logInfo } from '../utils/logging.js';
5
- import { renderTaskPrompt } from './prompt-template.js';
6
- export function createCliAdapter(config) {
7
- return {
8
- name: config.name,
9
- hasNativeSwarm: config.hasNativeSwarm,
10
- permissionFlags: config.permissionFlags ?? [],
11
- async checkAvailable() {
12
- const command = resolveCommand(config);
13
- return commandExists(command);
14
- },
15
- async execute(task, options) {
16
- const command = resolveCommand(config);
17
- const cwd = options.cwd ?? process.cwd();
18
- const prompt = await renderTaskPrompt(cwd, task);
19
- const promptFile = await writePromptFile(cwd, task.id, prompt);
20
- const args = resolveArgs(config, prompt, promptFile, task.id);
21
- try {
22
- const { stdout, stderr } = await runCommand(command, args, cwd);
23
- const output = stdout.trim() ? stdout : stderr;
24
- return { status: 'success', output };
25
- }
26
- catch (error) {
27
- const message = error instanceof Error ? error.message : String(error);
28
- logInfo(`engine "${config.name}" failed: ${message}`);
29
- return { status: 'failed', error: message };
30
- }
31
- },
32
- };
33
- }
34
- export function resolveCommand(config) {
35
- return process.env[config.envCommand] ?? config.defaultCommand;
36
- }
37
- export function resolveArgs(config, prompt, promptFile, taskId) {
38
- const raw = process.env[config.envArgs];
39
- const args = parseArgsEnv(raw) ?? ['--prompt-file', '{promptFile}'];
40
- return args.map((arg) => arg
41
- .replaceAll('{prompt}', prompt)
42
- .replaceAll('{promptFile}', promptFile)
43
- .replaceAll('{taskId}', taskId));
44
- }
45
- export function parseArgsEnv(raw) {
46
- if (!raw || !raw.trim()) {
47
- return null;
48
- }
49
- const trimmed = raw.trim();
50
- if (trimmed.startsWith('[')) {
51
- try {
52
- const parsed = JSON.parse(trimmed);
53
- if (Array.isArray(parsed)) {
54
- return parsed.map((item) => String(item));
55
- }
56
- return null;
57
- }
58
- catch {
59
- return null;
60
- }
61
- }
62
- return trimmed.split(/\s+/).filter(Boolean);
63
- }
64
- async function writePromptFile(projectRoot, taskId, prompt) {
65
- const dir = path.join(projectRoot, '.bemadralphy', 'prompts');
66
- await mkdir(dir, { recursive: true });
67
- const safeId = taskId.replace(/[^a-zA-Z0-9._-]+/g, '_');
68
- const promptPath = path.join(dir, `${safeId}.md`);
69
- await writeFile(promptPath, `${prompt}\n`, 'utf-8');
70
- return promptPath;
71
- }
72
- //# sourceMappingURL=cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/engines/cli.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { EngineTask } from './types.js';
2
- export declare function renderTaskPrompt(projectRoot: string, task: EngineTask): Promise<string>;