bmalph 2.6.0 → 2.7.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 +33 -31
- package/bmad/lite/create-prd.md +145 -0
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/check-updates.js +1 -1
- package/dist/commands/check-updates.js.map +1 -1
- package/dist/commands/doctor-checks.js +103 -0
- package/dist/commands/doctor-checks.js.map +1 -0
- package/dist/commands/doctor-health-checks.js +101 -0
- package/dist/commands/doctor-health-checks.js.map +1 -0
- package/dist/commands/doctor-runtime-checks.js +143 -0
- package/dist/commands/doctor-runtime-checks.js.map +1 -0
- package/dist/commands/doctor.js +5 -369
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/implement.js +9 -14
- package/dist/commands/implement.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.js +4 -44
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/upgrade.js +1 -1
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/installer.js +321 -50
- package/dist/installer.js.map +1 -1
- package/dist/platform/aider.js +1 -1
- package/dist/platform/aider.js.map +1 -1
- package/dist/platform/claude-code.js +1 -1
- package/dist/platform/codex.js +3 -3
- package/dist/platform/codex.js.map +1 -1
- package/dist/platform/copilot.js +1 -1
- package/dist/platform/copilot.js.map +1 -1
- package/dist/platform/cursor.js +5 -4
- package/dist/platform/cursor.js.map +1 -1
- package/dist/platform/doctor-checks.js +16 -7
- package/dist/platform/doctor-checks.js.map +1 -1
- package/dist/platform/instructions-snippet.js +37 -38
- package/dist/platform/instructions-snippet.js.map +1 -1
- package/dist/platform/types.js +9 -1
- package/dist/platform/types.js.map +1 -1
- package/dist/platform/windsurf.js +1 -1
- package/dist/platform/windsurf.js.map +1 -1
- package/dist/reset.js +18 -7
- package/dist/reset.js.map +1 -1
- package/dist/run/ralph-process.js +14 -8
- package/dist/run/ralph-process.js.map +1 -1
- package/dist/transition/artifact-scan.js +3 -13
- package/dist/transition/artifact-scan.js.map +1 -1
- package/dist/transition/orchestration.js +16 -26
- package/dist/transition/orchestration.js.map +1 -1
- package/dist/transition/specs-index.js +4 -4
- package/dist/transition/specs-index.js.map +1 -1
- package/dist/transition/tech-stack.js +1 -1
- package/dist/transition/tech-stack.js.map +1 -1
- package/dist/utils/artifact-definitions.js +19 -0
- package/dist/utils/artifact-definitions.js.map +1 -0
- package/dist/utils/constants.js +4 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/file-system.js +1 -1
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/format-status.js +31 -0
- package/dist/utils/format-status.js.map +1 -0
- package/dist/utils/json.js +3 -0
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/validate.js +12 -15
- package/dist/utils/validate.js.map +1 -1
- package/dist/watch/dashboard.js +22 -11
- package/dist/watch/dashboard.js.map +1 -1
- package/dist/watch/renderer.js +1 -15
- package/dist/watch/renderer.js.map +1 -1
- package/package.json +2 -2
- package/ralph/drivers/cursor.sh +90 -0
- package/ralph/ralph_loop.sh +20 -13
- package/ralph/templates/ralphrc.template +1 -1
- package/dist/platform/index.js +0 -4
- package/dist/platform/index.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bmalph",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"description": "Unified AI Development Framework - BMAD phases with Ralph execution loop",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"fmt:fix": "prettier --write .",
|
|
23
23
|
"type-check": "tsc --noEmit",
|
|
24
24
|
"ci": "npm run type-check && npm run lint && npm run fmt:check && npm run build && npm run test:all",
|
|
25
|
-
"prepublishOnly": "npm run lint && npm run build && npm test",
|
|
25
|
+
"prepublishOnly": "npm run lint && npm run build && npm run test:all",
|
|
26
26
|
"update-bundled": "bash scripts/update-bundled.sh"
|
|
27
27
|
},
|
|
28
28
|
"keywords": [
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Cursor CLI driver for Ralph (EXPERIMENTAL)
|
|
3
|
+
# Provides platform-specific CLI invocation logic for Cursor CLI.
|
|
4
|
+
#
|
|
5
|
+
# Known limitations:
|
|
6
|
+
# - CLI is in beta — binary name and flags may change
|
|
7
|
+
# - NDJSON stream format assumes {type: "text", content: "..."} events
|
|
8
|
+
# - Session ID capture from output not yet validated
|
|
9
|
+
|
|
10
|
+
driver_name() {
|
|
11
|
+
echo "cursor"
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
driver_display_name() {
|
|
15
|
+
echo "Cursor CLI"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
driver_cli_binary() {
|
|
19
|
+
echo "agent"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
driver_min_version() {
|
|
23
|
+
echo "0.1.0"
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
driver_check_available() {
|
|
27
|
+
command -v "$(driver_cli_binary)" &>/dev/null
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
# Cursor CLI tool names
|
|
31
|
+
driver_valid_tools() {
|
|
32
|
+
VALID_TOOL_PATTERNS=(
|
|
33
|
+
"file_edit"
|
|
34
|
+
"file_read"
|
|
35
|
+
"file_write"
|
|
36
|
+
"terminal"
|
|
37
|
+
"search"
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
# Build Cursor CLI command
|
|
42
|
+
# Context is prepended to the prompt (same pattern as Codex/Copilot drivers).
|
|
43
|
+
# Uses --print for headless mode, --force for autonomous execution,
|
|
44
|
+
# --output-format stream-json for NDJSON streaming.
|
|
45
|
+
driver_build_command() {
|
|
46
|
+
local prompt_file=$1
|
|
47
|
+
local loop_context=$2
|
|
48
|
+
local session_id=$3
|
|
49
|
+
|
|
50
|
+
CLAUDE_CMD_ARGS=("$(driver_cli_binary)")
|
|
51
|
+
|
|
52
|
+
if [[ ! -f "$prompt_file" ]]; then
|
|
53
|
+
echo "ERROR: Prompt file not found: $prompt_file" >&2
|
|
54
|
+
return 1
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
# Headless mode
|
|
58
|
+
CLAUDE_CMD_ARGS+=("--print")
|
|
59
|
+
|
|
60
|
+
# Autonomous execution
|
|
61
|
+
CLAUDE_CMD_ARGS+=("--force")
|
|
62
|
+
|
|
63
|
+
# NDJSON streaming output
|
|
64
|
+
CLAUDE_CMD_ARGS+=("--output-format" "stream-json")
|
|
65
|
+
|
|
66
|
+
# Session resume — gated on CLAUDE_USE_CONTINUE to respect --no-continue flag
|
|
67
|
+
if [[ "$CLAUDE_USE_CONTINUE" == "true" && -n "$session_id" ]]; then
|
|
68
|
+
CLAUDE_CMD_ARGS+=("--resume" "$session_id")
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
# Build prompt with context prepended
|
|
72
|
+
local prompt_content
|
|
73
|
+
prompt_content=$(cat "$prompt_file")
|
|
74
|
+
if [[ -n "$loop_context" ]]; then
|
|
75
|
+
prompt_content="$loop_context
|
|
76
|
+
|
|
77
|
+
$prompt_content"
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
CLAUDE_CMD_ARGS+=("$prompt_content")
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
driver_supports_sessions() {
|
|
84
|
+
return 0 # true — Cursor supports --resume
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
# Cursor CLI outputs NDJSON events
|
|
88
|
+
driver_stream_filter() {
|
|
89
|
+
echo 'select(.type == "text") | .content // empty'
|
|
90
|
+
}
|
package/ralph/ralph_loop.sh
CHANGED
|
@@ -378,19 +378,26 @@ update_status() {
|
|
|
378
378
|
local last_action=$3
|
|
379
379
|
local status=$4
|
|
380
380
|
local exit_reason=${5:-""}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
381
|
+
|
|
382
|
+
jq -n \
|
|
383
|
+
--arg timestamp "$(get_iso_timestamp)" \
|
|
384
|
+
--argjson loop_count "$loop_count" \
|
|
385
|
+
--argjson calls_made "$calls_made" \
|
|
386
|
+
--argjson max_calls "$MAX_CALLS_PER_HOUR" \
|
|
387
|
+
--arg last_action "$last_action" \
|
|
388
|
+
--arg status "$status" \
|
|
389
|
+
--arg exit_reason "$exit_reason" \
|
|
390
|
+
--arg next_reset "$(get_next_hour_time)" \
|
|
391
|
+
'{
|
|
392
|
+
timestamp: $timestamp,
|
|
393
|
+
loop_count: $loop_count,
|
|
394
|
+
calls_made_this_hour: $calls_made,
|
|
395
|
+
max_calls_per_hour: $max_calls,
|
|
396
|
+
last_action: $last_action,
|
|
397
|
+
status: $status,
|
|
398
|
+
exit_reason: $exit_reason,
|
|
399
|
+
next_reset: $next_reset
|
|
400
|
+
}' > "$STATUS_FILE"
|
|
394
401
|
}
|
|
395
402
|
|
|
396
403
|
# Check if we can make another call
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# PLATFORM DRIVER
|
|
11
11
|
# =============================================================================
|
|
12
12
|
|
|
13
|
-
# Platform driver for Ralph loop (claude-code, codex, or
|
|
13
|
+
# Platform driver for Ralph loop (claude-code, codex, copilot, or cursor)
|
|
14
14
|
PLATFORM_DRIVER="${PLATFORM_DRIVER:-claude-code}"
|
|
15
15
|
|
|
16
16
|
# =============================================================================
|
package/dist/platform/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
|