claude-fsd 1.6.1 → 1.6.2
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.
|
@@ -15,11 +15,16 @@ command_exists() {
|
|
|
15
15
|
check_dependencies() {
|
|
16
16
|
local missing_deps=()
|
|
17
17
|
|
|
18
|
-
# Check for claude (
|
|
18
|
+
# Check for claude (required)
|
|
19
19
|
if ! command_exists claude; then
|
|
20
20
|
missing_deps+=("claude")
|
|
21
21
|
fi
|
|
22
22
|
|
|
23
|
+
# Check for jq (required for JSON output parsing)
|
|
24
|
+
if ! command_exists jq; then
|
|
25
|
+
missing_deps+=("jq")
|
|
26
|
+
fi
|
|
27
|
+
|
|
23
28
|
# Show critical errors
|
|
24
29
|
if [ ${#missing_deps[@]} -ne 0 ]; then
|
|
25
30
|
echo -e "${RED}❌ Missing required dependencies:${NC}"
|
|
@@ -27,6 +32,8 @@ check_dependencies() {
|
|
|
27
32
|
echo -e " - $dep"
|
|
28
33
|
if [ "$dep" = "claude" ]; then
|
|
29
34
|
echo -e " Install from: https://docs.anthropic.com/en/docs/claude-code"
|
|
35
|
+
elif [ "$dep" = "jq" ]; then
|
|
36
|
+
echo -e " Install: brew install jq (macOS) or apt install jq (Linux)"
|
|
30
37
|
fi
|
|
31
38
|
done
|
|
32
39
|
echo
|
package/bin/claudefsd-dev
CHANGED
|
@@ -271,8 +271,9 @@ IMPORTANT: You must ACTUALLY IMPLEMENT tasks, not just describe what should be d
|
|
|
271
271
|
echo "=== OUTPUT ===" >> $LOGFILE
|
|
272
272
|
|
|
273
273
|
# Run claude and append output to the log file
|
|
274
|
+
# Raw JSON goes to log, filtered text to screen
|
|
274
275
|
echo -e "\033[36mRunning development with $CLAUDE_MODEL model...\033[0m"
|
|
275
|
-
time claude --model $CLAUDE_MODEL --
|
|
276
|
+
time claude --model $CLAUDE_MODEL --print --verbose --output-format=stream-json --include-partial-messages --dangerously-skip-permissions -p "$DEVELOPMENT_PROMPT" 2>&1 | tee -a $LOGFILE | jq --unbuffered -r 'if .type == "assistant" then (.message.content[]? | if .type == "text" then .text elif .type == "tool_use" then "\n[TOOL: " + .name + "]\n" else empty end) // empty elif .type == "stream_event" and .event == "content_block_start" and .content_block.type == "tool_use" then "\n[TOOL: " + .content_block.name + "]\n" elif .type == "result" then "\n=== RESULT ===\n" + (.result // "no result") else empty end'
|
|
276
277
|
|
|
277
278
|
# Extract what task was worked on from the developer's output
|
|
278
279
|
DEVELOPER_OUTPUT=$(sed -n '/=== OUTPUT ===/,$p' $LOGFILE)
|
|
@@ -324,8 +325,9 @@ Be thorough but concise in your code review."
|
|
|
324
325
|
echo "=== OUTPUT ===" >> $VERIFIER_LOGFILE
|
|
325
326
|
|
|
326
327
|
# Run verifier
|
|
328
|
+
# Raw JSON goes to log, filtered text to screen
|
|
327
329
|
echo -e "\033[36mRunning verifier with $CLAUDE_MODEL model...\033[0m"
|
|
328
|
-
time claude --model $CLAUDE_MODEL --
|
|
330
|
+
time claude --model $CLAUDE_MODEL --print --verbose --output-format=stream-json --include-partial-messages --dangerously-skip-permissions -p "$VERIFIER_PROMPT" 2>&1 | tee -a $VERIFIER_LOGFILE | jq --unbuffered -r 'if .type == "assistant" then (.message.content[]? | if .type == "text" then .text elif .type == "tool_use" then "\n[TOOL: " + .name + "]\n" else empty end) // empty elif .type == "stream_event" and .event == "content_block_start" and .content_block.type == "tool_use" then "\n[TOOL: " + .content_block.name + "]\n" elif .type == "result" then "\n=== RESULT ===\n" + (.result // "no result") else empty end'
|
|
329
331
|
|
|
330
332
|
# Extract verifier output for the tester
|
|
331
333
|
VERIFIER_OUTPUT=$(sed -n '/=== OUTPUT ===/,$p' $VERIFIER_LOGFILE)
|
|
@@ -399,8 +401,9 @@ If ALL tasks in the plan are complete AND all tests pass, output: <VERIFIED_ALL_
|
|
|
399
401
|
echo "=== OUTPUT ===" >> $TESTER_LOGFILE
|
|
400
402
|
|
|
401
403
|
# Run tester
|
|
404
|
+
# Raw JSON goes to log, filtered text to screen
|
|
402
405
|
echo -e "\033[36mRunning tester with $CLAUDE_MODEL model...\033[0m"
|
|
403
|
-
time claude --model $CLAUDE_MODEL --
|
|
406
|
+
time claude --model $CLAUDE_MODEL --print --verbose --output-format=stream-json --include-partial-messages --dangerously-skip-permissions -p "$TESTER_PROMPT" 2>&1 | tee -a $TESTER_LOGFILE | jq --unbuffered -r 'if .type == "assistant" then (.message.content[]? | if .type == "text" then .text elif .type == "tool_use" then "\n[TOOL: " + .name + "]\n" else empty end) // empty elif .type == "stream_event" and .event == "content_block_start" and .content_block.type == "tool_use" then "\n[TOOL: " + .content_block.name + "]\n" elif .type == "result" then "\n=== RESULT ===\n" + (.result // "no result") else empty end'
|
|
404
407
|
|
|
405
408
|
# Check if tests failed
|
|
406
409
|
if sed -n '/=== OUTPUT ===/,$p' $TESTER_LOGFILE | grep -q "<TESTS_FAILED>"; then
|