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.
- package/README.md +23 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/orchestrator.d.ts +3 -1
- package/dist/orchestrator.js +21 -0
- package/dist/orchestrator.js.map +1 -1
- package/dist/phases/execute.js +11 -8
- package/dist/phases/execute.js.map +1 -1
- package/dist/phases/index.d.ts +1 -1
- package/dist/phases/index.js.map +1 -1
- package/dist/phases/intake.js +63 -3
- package/dist/phases/intake.js.map +1 -1
- package/dist/phases/types.d.ts +4 -0
- package/dist/state.d.ts +2 -0
- package/dist/state.js.map +1 -1
- package/dist/swarm/detector.d.ts +5 -1
- package/dist/swarm/detector.js +29 -4
- package/dist/swarm/detector.js.map +1 -1
- package/dist/swarm/types.d.ts +7 -0
- package/package.json +1 -1
- package/dist/beads/parse-tasks.d.ts +0 -2
- package/dist/beads/parse-tasks.js +0 -12
- package/dist/beads/parse-tasks.js.map +0 -1
- package/dist/docs/pr-body.d.ts +0 -8
- package/dist/docs/pr-body.js +0 -11
- package/dist/docs/pr-body.js.map +0 -1
- package/dist/engines/cli.d.ts +0 -14
- package/dist/engines/cli.js +0 -72
- package/dist/engines/cli.js.map +0 -1
- package/dist/engines/prompt-template.d.ts +0 -2
- package/dist/engines/prompt-template.js +0 -96
- package/dist/engines/prompt-template.js.map +0 -1
- package/dist/engines/stub.d.ts +0 -2
- package/dist/engines/stub.js +0 -17
- package/dist/engines/stub.js.map +0 -1
- package/dist/git/worktrees.d.ts +0 -11
- package/dist/git/worktrees.js +0 -63
- package/dist/git/worktrees.js.map +0 -1
- package/dist/planning/bmad.d.ts +0 -3
- package/dist/planning/bmad.js +0 -20
- package/dist/planning/bmad.js.map +0 -1
- package/dist/pr/create.d.ts +0 -2
- package/dist/pr/create.js +0 -65
- package/dist/pr/create.js.map +0 -1
- package/dist/quality/gates.d.ts +0 -12
- package/dist/quality/gates.js +0 -54
- package/dist/quality/gates.js.map +0 -1
- package/dist/release.d.ts +0 -3
- package/dist/release.js +0 -88
- package/dist/release.js.map +0 -1
- package/dist/specs/changes.d.ts +0 -7
- package/dist/specs/changes.js +0 -20
- package/dist/specs/changes.js.map +0 -1
- package/dist/specs/merge-summary.d.ts +0 -2
- package/dist/specs/merge-summary.js +0 -19
- package/dist/specs/merge-summary.js.map +0 -1
- package/dist/swarm/native.d.ts +0 -14
- package/dist/swarm/native.js +0 -112
- package/dist/swarm/native.js.map +0 -1
- package/dist/swarm/parse.d.ts +0 -5
- package/dist/swarm/parse.js +0 -20
- package/dist/swarm/parse.js.map +0 -1
- package/dist/tasks/output.d.ts +0 -7
- package/dist/tasks/output.js +0 -15
- package/dist/tasks/output.js.map +0 -1
- package/dist/utils/failures.d.ts +0 -2
- package/dist/utils/failures.js +0 -22
- package/dist/utils/failures.js.map +0 -1
- package/dist/utils/resume.d.ts +0 -1
- package/dist/utils/resume.js +0 -14
- package/dist/utils/resume.js.map +0 -1
- package/dist/utils/retry.d.ts +0 -1
- package/dist/utils/retry.js +0 -19
- 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
|
+
[](https://www.npmjs.com/package/bemadralphy)
|
|
10
|
+
[](https://www.npmjs.com/package/bemadralphy)
|
|
7
11
|
[](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"}
|
package/dist/orchestrator.d.ts
CHANGED
|
@@ -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';
|
package/dist/orchestrator.js
CHANGED
|
@@ -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
|
package/dist/orchestrator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,aAAa,EACb,SAAS,EACT,WAAW,
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/phases/execute.js
CHANGED
|
@@ -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 {
|
|
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
|
|
21
|
-
|
|
22
|
-
|
|
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,
|
|
27
|
+
await runClaudeTeamsBatch(ctx.projectRoot, policy.maxParallel);
|
|
25
28
|
}
|
|
26
29
|
else if (engineName === 'kimi') {
|
|
27
|
-
await runKimiParlBatch(ctx.projectRoot,
|
|
30
|
+
await runKimiParlBatch(ctx.projectRoot, policy.maxParallel);
|
|
28
31
|
}
|
|
29
32
|
else if (engineName === 'codex') {
|
|
30
|
-
await runCodexAgentsBatch(ctx.projectRoot,
|
|
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":"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,
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/phases/execute.ts"],"names":[],"mappings":"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"}
|
package/dist/phases/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/phases/index.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/phases/intake.js
CHANGED
|
@@ -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:
|
|
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;
|
|
1
|
+
{"version":3,"file":"intake.js","sourceRoot":"","sources":["../../src/phases/intake.ts"],"names":[],"mappings":"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"}
|
package/dist/phases/types.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/swarm/detector.d.ts
CHANGED
|
@@ -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;
|
package/dist/swarm/detector.js
CHANGED
|
@@ -7,10 +7,35 @@ export function detectSwarmCapability(engineName) {
|
|
|
7
7
|
return { supportsNative: adapter.hasNativeSwarm };
|
|
8
8
|
}
|
|
9
9
|
export function resolveSwarmMode(engineName, override) {
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
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,
|
|
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"}
|
package/dist/swarm/types.d.ts
CHANGED
|
@@ -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,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"}
|
package/dist/docs/pr-body.d.ts
DELETED
package/dist/docs/pr-body.js
DELETED
|
@@ -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
|
package/dist/docs/pr-body.js.map
DELETED
|
@@ -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"}
|
package/dist/engines/cli.d.ts
DELETED
|
@@ -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 {};
|
package/dist/engines/cli.js
DELETED
|
@@ -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
|
package/dist/engines/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/engines/cli.ts"],"names":[],"mappings":"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"}
|