wiggum-cli 0.11.2 → 0.11.3

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.
@@ -18,7 +18,8 @@
18
18
  "mcp__github__projects_list",
19
19
  "Bash(mgrep:*)",
20
20
  "WebFetch(domain:coderide.ai)",
21
- "Bash(open:*)"
21
+ "Bash(open:*)",
22
+ "WebFetch(domain:ghuntley.com)"
22
23
  ]
23
24
  }
24
25
  }
@@ -79,6 +79,8 @@ CLAUDE_CMD_IMPL="claude -p --dangerously-skip-permissions --model ${MODEL:-$DEFA
79
79
  # Token tracking
80
80
  TOKENS_FILE="/tmp/ralph-loop-${1}.tokens"
81
81
  CLAUDE_OUTPUT="/tmp/ralph-loop-${1}.output"
82
+ STATUS_FILE="/tmp/ralph-loop-${1}.status"
83
+ FINAL_STATUS_FILE="/tmp/ralph-loop-${1}.final"
82
84
 
83
85
  # Initialize token tracking
84
86
  init_tokens() {
@@ -187,7 +189,7 @@ while true; do
187
189
  fi
188
190
 
189
191
  ITERATION=$((ITERATION + 1))
190
- echo "$ITERATION|$MAX_ITERATIONS|$(date +%s)" > "/tmp/ralph-loop-${FEATURE}.status"
192
+ echo "$ITERATION|$MAX_ITERATIONS|$(date +%s)" > "$STATUS_FILE"
191
193
  echo "------------------------ Iteration $ITERATION ------------------------"
192
194
 
193
195
  # Check if implementation tasks are done
@@ -249,8 +251,11 @@ export FEATURE APP_DIR SPEC_DIR PROMPTS_DIR
249
251
  cat "$PROMPTS_DIR/PROMPT_review.md" | envsubst | $CLAUDE_CMD_OPUS 2>&1 | tee "$CLAUDE_OUTPUT" || true
250
252
  parse_and_accumulate_tokens "$CLAUDE_OUTPUT"
251
253
 
254
+ # Persist final status for TUI summaries
255
+ echo "$ITERATION|$MAX_ITERATIONS|$(date +%s)|done" > "$FINAL_STATUS_FILE" 2>/dev/null || true
256
+
252
257
  # Cleanup temp files
253
- rm -f "/tmp/ralph-loop-${FEATURE}.status" 2>/dev/null || true
258
+ rm -f "$STATUS_FILE" 2>/dev/null || true
254
259
  rm -f "/tmp/ralph-loop-${FEATURE}.output" 2>/dev/null || true
255
260
 
256
261
  # Print final token usage
@@ -1 +1 @@
1
- {"version":3,"file":"loop-status.d.ts","sourceRoot":"","sources":["../../../src/tui/utils/loop-status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAcD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAuC1D;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAuCrB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CASxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQhD"}
1
+ {"version":3,"file":"loop-status.d.ts","sourceRoot":"","sources":["../../../src/tui/utils/loop-status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAcD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAyC1D;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAuCrB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CASxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQhD"}
@@ -40,12 +40,14 @@ export function detectPhase(feature) {
40
40
  */
41
41
  export function readLoopStatus(feature) {
42
42
  const statusFile = `/tmp/ralph-loop-${feature}.status`;
43
+ const finalStatusFile = `/tmp/ralph-loop-${feature}.final`;
43
44
  const tokensFile = `/tmp/ralph-loop-${feature}.tokens`;
44
45
  let iteration = 0;
45
46
  let maxIterations = 0;
46
- if (existsSync(statusFile)) {
47
+ if (existsSync(statusFile) || existsSync(finalStatusFile)) {
48
+ const fileToRead = existsSync(statusFile) ? statusFile : finalStatusFile;
47
49
  try {
48
- const content = readFileSync(statusFile, 'utf-8').trim();
50
+ const content = readFileSync(fileToRead, 'utf-8').trim();
49
51
  const parts = content.split('|');
50
52
  iteration = parseInt(parts[0] || '0', 10) || 0;
51
53
  maxIterations = parseInt(parts[1] || '0', 10) || 0;
@@ -1 +1 @@
1
- {"version":3,"file":"loop-status.js","sourceRoot":"","sources":["../../../src/tui/utils/loop-status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAkB/D;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7E,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,IAAI,gBAAgB,CAAC,mBAAmB,CAAC;QAAE,OAAO,UAAU,CAAC;IAC7D,IAAI,gBAAgB,CAAC,eAAe,CAAC;QAAE,OAAO,aAAa,CAAC;IAC5D,IAAI,gBAAgB,CAAC,kBAAkB,CAAC;QAAE,OAAO,cAAc,CAAC;IAChE,IAAI,gBAAgB,CAAC,kBAAkB,CAAC;QAAE,OAAO,WAAW,CAAC;IAC7D,IAAI,gBAAgB,CAAC,WAAW,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC3D,IAAI,gBAAgB,CAAC,oBAAoB,OAAO,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IACtE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,mBAAmB,OAAO,SAAS,CAAC;IACvD,MAAM,UAAU,GAAG,mBAAmB,OAAO,SAAS,CAAC;IAEvD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC/C,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACjD,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,gBAAgB,CAAC,oBAAoB,OAAO,EAAE,CAAC;QACxD,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;QAC3B,SAAS;QACT,aAAa;QACb,WAAW;QACX,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,OAAe,EACf,gBAAyB;IAEzB,MAAM,MAAM,GAAG,gBAAgB;QAC7B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,IAAI,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI,cAAc,CAAC;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,OAAO,yBAAyB,CAAC,CAAC;IAElF,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjC,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC7B,OAAO,EAAE,CAAC;oBACZ,CAAC;yBAAM,CAAC;wBACN,SAAS,EAAE,CAAC;oBACd,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBACrC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC7B,UAAU,EAAE,CAAC;oBACf,CAAC;yBAAM,CAAC;wBACN,YAAY,EAAE,CAAC;oBACjB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE;YACvD,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC1C,CAAC;IACD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"loop-status.js","sourceRoot":"","sources":["../../../src/tui/utils/loop-status.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wiggum-cli",
3
- "version": "0.11.2",
3
+ "version": "0.11.3",
4
4
  "description": "AI-powered feature development loop CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -79,6 +79,8 @@ CLAUDE_CMD_IMPL="claude -p --dangerously-skip-permissions --model ${MODEL:-$DEFA
79
79
  # Token tracking
80
80
  TOKENS_FILE="/tmp/ralph-loop-${1}.tokens"
81
81
  CLAUDE_OUTPUT="/tmp/ralph-loop-${1}.output"
82
+ STATUS_FILE="/tmp/ralph-loop-${1}.status"
83
+ FINAL_STATUS_FILE="/tmp/ralph-loop-${1}.final"
82
84
 
83
85
  # Initialize token tracking
84
86
  init_tokens() {
@@ -187,7 +189,7 @@ while true; do
187
189
  fi
188
190
 
189
191
  ITERATION=$((ITERATION + 1))
190
- echo "$ITERATION|$MAX_ITERATIONS|$(date +%s)" > "/tmp/ralph-loop-${FEATURE}.status"
192
+ echo "$ITERATION|$MAX_ITERATIONS|$(date +%s)" > "$STATUS_FILE"
191
193
  echo "------------------------ Iteration $ITERATION ------------------------"
192
194
 
193
195
  # Check if implementation tasks are done
@@ -249,8 +251,11 @@ export FEATURE APP_DIR SPEC_DIR PROMPTS_DIR
249
251
  cat "$PROMPTS_DIR/PROMPT_review.md" | envsubst | $CLAUDE_CMD_OPUS 2>&1 | tee "$CLAUDE_OUTPUT" || true
250
252
  parse_and_accumulate_tokens "$CLAUDE_OUTPUT"
251
253
 
254
+ # Persist final status for TUI summaries
255
+ echo "$ITERATION|$MAX_ITERATIONS|$(date +%s)|done" > "$FINAL_STATUS_FILE" 2>/dev/null || true
256
+
252
257
  # Cleanup temp files
253
- rm -f "/tmp/ralph-loop-${FEATURE}.status" 2>/dev/null || true
258
+ rm -f "$STATUS_FILE" 2>/dev/null || true
254
259
  rm -f "/tmp/ralph-loop-${FEATURE}.output" 2>/dev/null || true
255
260
 
256
261
  # Print final token usage
@@ -53,14 +53,16 @@ export function detectPhase(feature: string): string {
53
53
  */
54
54
  export function readLoopStatus(feature: string): LoopStatus {
55
55
  const statusFile = `/tmp/ralph-loop-${feature}.status`;
56
+ const finalStatusFile = `/tmp/ralph-loop-${feature}.final`;
56
57
  const tokensFile = `/tmp/ralph-loop-${feature}.tokens`;
57
58
 
58
59
  let iteration = 0;
59
60
  let maxIterations = 0;
60
61
 
61
- if (existsSync(statusFile)) {
62
+ if (existsSync(statusFile) || existsSync(finalStatusFile)) {
63
+ const fileToRead = existsSync(statusFile) ? statusFile : finalStatusFile;
62
64
  try {
63
- const content = readFileSync(statusFile, 'utf-8').trim();
65
+ const content = readFileSync(fileToRead, 'utf-8').trim();
64
66
  const parts = content.split('|');
65
67
  iteration = parseInt(parts[0] || '0', 10) || 0;
66
68
  maxIterations = parseInt(parts[1] || '0', 10) || 0;