bmalph 2.7.5 → 2.7.7
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 +20 -5
- package/dist/commands/doctor-runtime-checks.js +104 -86
- package/dist/commands/doctor-runtime-checks.js.map +1 -1
- package/dist/commands/run.js +11 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/watch.js +5 -0
- package/dist/commands/watch.js.map +1 -1
- package/dist/installer/bmad-assets.js +182 -0
- package/dist/installer/bmad-assets.js.map +1 -0
- package/dist/installer/commands.js +324 -0
- package/dist/installer/commands.js.map +1 -0
- package/dist/installer/install.js +42 -0
- package/dist/installer/install.js.map +1 -0
- package/dist/installer/metadata.js +56 -0
- package/dist/installer/metadata.js.map +1 -0
- package/dist/installer/project-files.js +169 -0
- package/dist/installer/project-files.js.map +1 -0
- package/dist/installer/ralph-assets.js +91 -0
- package/dist/installer/ralph-assets.js.map +1 -0
- package/dist/installer/template-files.js +187 -0
- package/dist/installer/template-files.js.map +1 -0
- package/dist/installer/types.js +2 -0
- package/dist/installer/types.js.map +1 -0
- package/dist/installer.js +5 -843
- package/dist/installer.js.map +1 -1
- package/dist/run/run-dashboard.js +20 -6
- package/dist/run/run-dashboard.js.map +1 -1
- package/dist/transition/artifact-loading.js +91 -0
- package/dist/transition/artifact-loading.js.map +1 -0
- package/dist/transition/context-output.js +85 -0
- package/dist/transition/context-output.js.map +1 -0
- package/dist/transition/context.js +11 -3
- package/dist/transition/context.js.map +1 -1
- package/dist/transition/fix-plan-sync.js +119 -0
- package/dist/transition/fix-plan-sync.js.map +1 -0
- package/dist/transition/orchestration.js +25 -362
- package/dist/transition/orchestration.js.map +1 -1
- package/dist/transition/specs-sync.js +78 -2
- package/dist/transition/specs-sync.js.map +1 -1
- package/dist/utils/ralph-runtime-state.js +222 -0
- package/dist/utils/ralph-runtime-state.js.map +1 -0
- package/dist/utils/state.js +17 -16
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/validate.js +16 -0
- package/dist/utils/validate.js.map +1 -1
- package/dist/watch/dashboard.js +25 -21
- package/dist/watch/dashboard.js.map +1 -1
- package/dist/watch/frame-writer.js +83 -0
- package/dist/watch/frame-writer.js.map +1 -0
- package/dist/watch/renderer.js +214 -49
- package/dist/watch/renderer.js.map +1 -1
- package/dist/watch/state-reader.js +87 -44
- package/dist/watch/state-reader.js.map +1 -1
- package/package.json +1 -1
- package/ralph/RALPH-REFERENCE.md +34 -14
- package/ralph/drivers/claude-code.sh +27 -0
- package/ralph/drivers/codex.sh +11 -0
- package/ralph/drivers/copilot.sh +11 -0
- package/ralph/drivers/cursor.sh +11 -0
- package/ralph/lib/circuit_breaker.sh +3 -3
- package/ralph/lib/date_utils.sh +28 -9
- package/ralph/lib/enable_core.sh +10 -2
- package/ralph/lib/response_analyzer.sh +252 -40
- package/ralph/ralph_import.sh +9 -1
- package/ralph/ralph_loop.sh +548 -128
- package/ralph/templates/PROMPT.md +20 -5
- package/ralph/templates/ralphrc.template +14 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-reader.js","sourceRoot":"","sources":["../../src/watch/state-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"state-reader.js","sourceRoot":"","sources":["../../src/watch/state-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AAYzC,MAAM,gBAAgB,GAAG,4DAA4D,CAAC;AACtF,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IACzD,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,GACtF,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,YAAY,CAAC,UAAU,CAAC;QACxB,sBAAsB,CAAC,UAAU,CAAC;QAClC,iBAAiB,CAAC,UAAU,CAAC;QAC7B,gBAAgB,CAAC,UAAU,CAAC;QAC5B,qBAAqB,CAAC,UAAU,CAAC;QACjC,eAAe,CAAC,UAAU,CAAC;QAC3B,cAAc,CAAC,UAAU,CAAC;QAC1B,WAAW,CAAC,UAAU,CAAC;KACxB,CAAC,CAAC;IAEL,MAAM,cAAc,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC;IAEpE,OAAO;QACL,IAAI;QACJ,cAAc;QACd,OAAO;QACP,QAAQ;QACR,SAAS;QACT,OAAO;QACP,UAAU;QACV,OAAO;QACP,cAAc;QACd,WAAW,EAAE,IAAI,IAAI,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACzB,KAAK,CAAC,6BAA6B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;QACjC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;QAC3B,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;QACnC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,iBAAiB;QACjD,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACzB,KAAK,CAAC,wCAAwC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;QACzB,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,qBAAqB;QACzD,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;QACnC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACxD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,4BAA4B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3F,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACvD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAC7B,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAClD,CAAC;QACF,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAEnE,MAAM,CAAC,GAAG,QAAmC,CAAC;QAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;QAChF,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,MAAM,sBAAsB,GAC1B,OAAO,CAAC,CAAC,yBAAyB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,qBAAqB,GACzB,OAAO,CAAC,CAAC,wBAAwB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,2BAA2B,GAC/B,OAAO,CAAC,CAAC,8BAA8B,KAAK,SAAS;YACnD,CAAC,CAAC,CAAC,CAAC,8BAA8B;YAClC,CAAC,CAAC,KAAK,CAAC;QACZ,MAAM,oBAAoB,GACxB,OAAO,CAAC,CAAC,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC;QACnF,MAAM,qBAAqB,GACzB,OAAO,CAAC,CAAC,uBAAuB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhF,OAAO;YACL,aAAa;YACb,eAAe;YACf,UAAU;YACV,OAAO;YACP,UAAU;YACV,sBAAsB;YACtB,qBAAqB;YACrB,2BAA2B;YAC3B,oBAAoB;YACpB,qBAAqB;SACtB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,iCAAiC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IAC5D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAC7B,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAC7C,CAAC;QACF,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAE/B,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,IAAI,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAExC,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5E,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,sCAAsC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAkB;IACtD,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACzB,KAAK,CAAC,gCAAgC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;QAClC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,IAAI,mBAAmB,EAAE,CAAC;gBACtC,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,mBAAmB,CAAC;gBAClD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;gBAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9D,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,4BAA4B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO;SAClB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC7B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,WAAmB,qBAAqB;IAExC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACjE,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC7B,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;gBACzC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACrC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAClE,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9D,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,+BAA+B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,KAAK,CAAC,CAAC,CAAE;gBACpB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE;gBAChB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAE;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
package/ralph/RALPH-REFERENCE.md
CHANGED
|
@@ -60,7 +60,9 @@ Environment variables > Ralph config file > script defaults
|
|
|
60
60
|
| `MAX_CALLS_PER_HOUR` | `100` | Rate limit for API calls |
|
|
61
61
|
| `CLAUDE_TIMEOUT_MINUTES` | `15` | Timeout per loop driver invocation |
|
|
62
62
|
| `CLAUDE_OUTPUT_FORMAT` | `json` | Output format (json or text) |
|
|
63
|
-
| `ALLOWED_TOOLS` | `Write,Read,Edit,
|
|
63
|
+
| `ALLOWED_TOOLS` | `Write,Read,Edit,MultiEdit,Glob,Grep,Task,TodoWrite,WebFetch,WebSearch,EnterPlanMode,ExitPlanMode,NotebookEdit,Bash` | Claude Code only. Ignored by codex, cursor, and copilot |
|
|
64
|
+
| `CLAUDE_PERMISSION_MODE` | `bypassPermissions` | Claude Code only. Prevents interactive approval workflows from blocking unattended loops without relying on beta headers |
|
|
65
|
+
| `PERMISSION_DENIAL_MODE` | `continue` | How Ralph responds to permission denials: continue, halt, or threshold |
|
|
64
66
|
| `SESSION_CONTINUITY` | `true` | Maintain context across loops |
|
|
65
67
|
| `SESSION_EXPIRY_HOURS` | `24` | Session expiration time |
|
|
66
68
|
| `RALPH_VERBOSE` | `false` | Enable verbose logging |
|
|
@@ -73,7 +75,7 @@ Environment variables > Ralph config file > script defaults
|
|
|
73
75
|
|
|
74
76
|
### Generation
|
|
75
77
|
|
|
76
|
-
bmalph copies `ralphrc.template` to `.ralph/.ralphrc` during `bmalph init`.
|
|
78
|
+
bmalph copies `ralphrc.template` to `.ralph/.ralphrc` during `bmalph init`. Untouched managed configs are updated on upgrade, while customized `.ralph/.ralphrc` files are preserved.
|
|
77
79
|
|
|
78
80
|
---
|
|
79
81
|
|
|
@@ -95,7 +97,7 @@ This applies to every driver that exposes resumable IDs today:
|
|
|
95
97
|
|
|
96
98
|
| File | Purpose |
|
|
97
99
|
|------|---------|
|
|
98
|
-
| `.ralph/.ralph_session` | Current session
|
|
100
|
+
| `.ralph/.ralph_session` | Current Ralph session state (active or reset/inactive) |
|
|
99
101
|
| `.ralph/.ralph_session_history` | History of last 50 session transitions |
|
|
100
102
|
| `.ralph/.claude_session_id` | Persisted driver session ID (shared filename for historical reasons; used by Claude Code, Codex, and Cursor) |
|
|
101
103
|
|
|
@@ -117,13 +119,23 @@ Sessions expire after 24 hours (configurable via `SESSION_EXPIRY_HOURS` in `.ral
|
|
|
117
119
|
|
|
118
120
|
### Session State Structure
|
|
119
121
|
|
|
122
|
+
Active session payload:
|
|
123
|
+
|
|
120
124
|
```json
|
|
121
125
|
{
|
|
122
126
|
"session_id": "uuid-string",
|
|
123
127
|
"created_at": "ISO-timestamp",
|
|
124
|
-
"last_used": "ISO-timestamp"
|
|
125
|
-
|
|
126
|
-
|
|
128
|
+
"last_used": "ISO-timestamp"
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Reset/inactive payload:
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"session_id": "",
|
|
137
|
+
"reset_at": "ISO-timestamp",
|
|
138
|
+
"reset_reason": "reason string"
|
|
127
139
|
}
|
|
128
140
|
```
|
|
129
141
|
|
|
@@ -156,8 +168,13 @@ The circuit breaker prevents runaway loops by detecting stagnation.
|
|
|
156
168
|
|
|
157
169
|
When the active driver is denied permission to execute commands, Ralph:
|
|
158
170
|
1. Detects permission denials from the JSON output
|
|
159
|
-
2.
|
|
160
|
-
3.
|
|
171
|
+
2. Applies `PERMISSION_DENIAL_MODE` from `.ralph/.ralphrc`
|
|
172
|
+
3. Keeps `last_action: permission_denied` visible in the status file and dashboard
|
|
173
|
+
|
|
174
|
+
`PERMISSION_DENIAL_MODE` behavior:
|
|
175
|
+
- `continue` keeps looping and logs the denial
|
|
176
|
+
- `halt` stops immediately with reason `permission_denied`
|
|
177
|
+
- `threshold` keeps looping until `CB_PERMISSION_DENIAL_THRESHOLD` opens the circuit breaker
|
|
161
178
|
|
|
162
179
|
### Auto-Recovery Cooldown
|
|
163
180
|
|
|
@@ -225,7 +242,7 @@ The coding agent should include this status block at the end of each response:
|
|
|
225
242
|
```
|
|
226
243
|
---RALPH_STATUS---
|
|
227
244
|
STATUS: IN_PROGRESS | COMPLETE | BLOCKED
|
|
228
|
-
TASKS_COMPLETED_THIS_LOOP:
|
|
245
|
+
TASKS_COMPLETED_THIS_LOOP: 0 | 1
|
|
229
246
|
FILES_MODIFIED: <number>
|
|
230
247
|
TESTS_STATUS: PASSING | FAILING | NOT_RUN
|
|
231
248
|
WORK_TYPE: IMPLEMENTATION | TESTING | DOCUMENTATION | REFACTORING
|
|
@@ -323,18 +340,21 @@ When using `--monitor` with `--live`, tmux creates a 3-pane layout:
|
|
|
323
340
|
2. Fix the underlying issue causing the error
|
|
324
341
|
3. Reset circuit breaker: `bash .ralph/ralph_loop.sh --reset-circuit`
|
|
325
342
|
|
|
326
|
-
#### Permission denied
|
|
343
|
+
#### Permission denied blocks progress
|
|
327
344
|
|
|
328
345
|
**Symptoms:** "OPEN - permission_denied" message
|
|
329
346
|
|
|
330
347
|
**Causes:**
|
|
331
348
|
- The active driver denied permission to run commands
|
|
332
|
-
- `ALLOWED_TOOLS` in `.ralph/.ralphrc` too restrictive
|
|
349
|
+
- `ALLOWED_TOOLS` in `.ralph/.ralphrc` too restrictive for Claude Code
|
|
350
|
+
- The active non-Claude driver rejected a tool under its native permission model
|
|
333
351
|
|
|
334
352
|
**Solutions:**
|
|
335
|
-
1.
|
|
336
|
-
2.
|
|
337
|
-
3.
|
|
353
|
+
1. For Claude Code, update `ALLOWED_TOOLS` in `.ralph/.ralphrc` to include needed tools
|
|
354
|
+
2. For Claude Code unattended loops, keep `CLAUDE_PERMISSION_MODE="bypassPermissions"` in `.ralph/.ralphrc`
|
|
355
|
+
3. For codex, cursor, and copilot, review the driver's native permission settings; `ALLOWED_TOOLS` is ignored
|
|
356
|
+
4. If you want unattended behavior, keep `PERMISSION_DENIAL_MODE="continue"` in `.ralph/.ralphrc`
|
|
357
|
+
5. Reset circuit breaker if needed: `bash .ralph/ralph_loop.sh --reset-circuit`
|
|
338
358
|
|
|
339
359
|
#### Session expires mid-project
|
|
340
360
|
|
|
@@ -38,6 +38,9 @@ driver_valid_tools() {
|
|
|
38
38
|
"TodoWrite"
|
|
39
39
|
"WebFetch"
|
|
40
40
|
"WebSearch"
|
|
41
|
+
"AskUserQuestion"
|
|
42
|
+
"EnterPlanMode"
|
|
43
|
+
"ExitPlanMode"
|
|
41
44
|
"Bash"
|
|
42
45
|
"Bash(git *)"
|
|
43
46
|
"Bash(npm *)"
|
|
@@ -48,6 +51,26 @@ driver_valid_tools() {
|
|
|
48
51
|
)
|
|
49
52
|
}
|
|
50
53
|
|
|
54
|
+
driver_supports_tool_allowlist() {
|
|
55
|
+
return 0
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
driver_permission_denial_help() {
|
|
59
|
+
echo " 1. Edit $RALPHRC_FILE and keep CLAUDE_PERMISSION_MODE=bypassPermissions for unattended Claude Code loops"
|
|
60
|
+
echo " 2. If Claude was denied on an interactive approval step, ALLOWED_TOOLS will not fix it"
|
|
61
|
+
echo " 3. If Claude was denied on a normal tool, update ALLOWED_TOOLS to include the required tools"
|
|
62
|
+
echo " 4. Common ALLOWED_TOOLS patterns:"
|
|
63
|
+
echo " - Bash - All shell commands"
|
|
64
|
+
echo " - Bash(node *) - All Node.js commands"
|
|
65
|
+
echo " - Bash(npm *) - All npm commands"
|
|
66
|
+
echo " - Bash(pnpm *) - All pnpm commands"
|
|
67
|
+
echo " - AskUserQuestion - Allow interactive clarification when you want pauses"
|
|
68
|
+
echo ""
|
|
69
|
+
echo "After updating $RALPHRC_FILE:"
|
|
70
|
+
echo " bash .ralph/ralph_loop.sh --reset-session # Clear stale session state"
|
|
71
|
+
echo " bmalph run # Restart the loop"
|
|
72
|
+
}
|
|
73
|
+
|
|
51
74
|
# Build the CLI command arguments
|
|
52
75
|
# Populates global CLAUDE_CMD_ARGS array
|
|
53
76
|
# Parameters:
|
|
@@ -58,6 +81,7 @@ driver_build_command() {
|
|
|
58
81
|
local prompt_file=$1
|
|
59
82
|
local loop_context=$2
|
|
60
83
|
local session_id=$3
|
|
84
|
+
local resolved_permission_mode="${CLAUDE_PERMISSION_MODE:-bypassPermissions}"
|
|
61
85
|
|
|
62
86
|
# Note: We do NOT use --dangerously-skip-permissions here. Tool permissions
|
|
63
87
|
# are controlled via --allowedTools from CLAUDE_ALLOWED_TOOLS in .ralphrc.
|
|
@@ -74,6 +98,9 @@ driver_build_command() {
|
|
|
74
98
|
CLAUDE_CMD_ARGS+=("--output-format" "json")
|
|
75
99
|
fi
|
|
76
100
|
|
|
101
|
+
# Prevent interactive approval flows from blocking unattended -p loops.
|
|
102
|
+
CLAUDE_CMD_ARGS+=("--permission-mode" "$resolved_permission_mode")
|
|
103
|
+
|
|
77
104
|
# Allowed tools
|
|
78
105
|
if [[ -n "$CLAUDE_ALLOWED_TOOLS" ]]; then
|
|
79
106
|
CLAUDE_CMD_ARGS+=("--allowedTools")
|
package/ralph/drivers/codex.sh
CHANGED
|
@@ -34,6 +34,17 @@ driver_valid_tools() {
|
|
|
34
34
|
)
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
driver_supports_tool_allowlist() {
|
|
38
|
+
return 1
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
driver_permission_denial_help() {
|
|
42
|
+
echo " - $DRIVER_DISPLAY_NAME uses its native sandbox and approval model."
|
|
43
|
+
echo " - ALLOWED_TOOLS in $RALPHRC_FILE is ignored for this driver."
|
|
44
|
+
echo " - Ralph already runs Codex with --sandbox workspace-write."
|
|
45
|
+
echo " - Review Codex approval settings, then restart the loop."
|
|
46
|
+
}
|
|
47
|
+
|
|
37
48
|
# Build Codex CLI command
|
|
38
49
|
# Codex uses: codex exec [--resume <id>] --json "prompt"
|
|
39
50
|
driver_build_command() {
|
package/ralph/drivers/copilot.sh
CHANGED
|
@@ -38,6 +38,17 @@ driver_valid_tools() {
|
|
|
38
38
|
)
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
driver_supports_tool_allowlist() {
|
|
42
|
+
return 1
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
driver_permission_denial_help() {
|
|
46
|
+
echo " - $DRIVER_DISPLAY_NAME uses its own autonomy and approval controls."
|
|
47
|
+
echo " - ALLOWED_TOOLS in $RALPHRC_FILE is ignored for this driver."
|
|
48
|
+
echo " - Ralph already runs Copilot with --no-ask-user for unattended mode."
|
|
49
|
+
echo " - Review Copilot CLI permissions, then restart the loop."
|
|
50
|
+
}
|
|
51
|
+
|
|
41
52
|
# Build Copilot CLI command
|
|
42
53
|
# Context is prepended to the prompt (same pattern as Codex driver).
|
|
43
54
|
# Uses --autopilot --yolo for autonomous mode, -s to strip stats, -p for prompt.
|
package/ralph/drivers/cursor.sh
CHANGED
|
@@ -48,6 +48,17 @@ driver_valid_tools() {
|
|
|
48
48
|
)
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
driver_supports_tool_allowlist() {
|
|
52
|
+
return 1
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
driver_permission_denial_help() {
|
|
56
|
+
echo " - $DRIVER_DISPLAY_NAME uses its native permission model."
|
|
57
|
+
echo " - ALLOWED_TOOLS in $RALPHRC_FILE is ignored for this driver."
|
|
58
|
+
echo " - Ralph already runs Cursor with --force."
|
|
59
|
+
echo " - Review Cursor permissions or approval settings, then restart the loop."
|
|
60
|
+
}
|
|
61
|
+
|
|
51
62
|
driver_build_command() {
|
|
52
63
|
local prompt_file=$1
|
|
53
64
|
local loop_context=$2
|
|
@@ -203,7 +203,7 @@ record_loop_result() {
|
|
|
203
203
|
has_permission_denials=$(jq -r '.analysis.has_permission_denials // false' "$response_analysis_file" 2>/dev/null || echo "false")
|
|
204
204
|
fi
|
|
205
205
|
|
|
206
|
-
if [[ "$has_permission_denials" == "true" ]]; then
|
|
206
|
+
if [[ "${PERMISSION_DENIAL_MODE:-halt}" == "threshold" && "$has_permission_denials" == "true" ]]; then
|
|
207
207
|
consecutive_permission_denials=$((consecutive_permission_denials + 1))
|
|
208
208
|
else
|
|
209
209
|
consecutive_permission_denials=0
|
|
@@ -248,7 +248,7 @@ record_loop_result() {
|
|
|
248
248
|
# Permission denials take highest priority (Issue #101)
|
|
249
249
|
if [[ $consecutive_permission_denials -ge $CB_PERMISSION_DENIAL_THRESHOLD ]]; then
|
|
250
250
|
new_state="$CB_STATE_OPEN"
|
|
251
|
-
reason="Permission denied in $consecutive_permission_denials consecutive loops
|
|
251
|
+
reason="Permission denied in $consecutive_permission_denials consecutive loops"
|
|
252
252
|
elif [[ $consecutive_no_progress -ge $CB_NO_PROGRESS_THRESHOLD ]]; then
|
|
253
253
|
new_state="$CB_STATE_OPEN"
|
|
254
254
|
reason="No progress detected in $consecutive_no_progress consecutive loops"
|
|
@@ -266,7 +266,7 @@ record_loop_result() {
|
|
|
266
266
|
# Permission denials take highest priority (Issue #101)
|
|
267
267
|
if [[ $consecutive_permission_denials -ge $CB_PERMISSION_DENIAL_THRESHOLD ]]; then
|
|
268
268
|
new_state="$CB_STATE_OPEN"
|
|
269
|
-
reason="Permission denied in $consecutive_permission_denials consecutive loops
|
|
269
|
+
reason="Permission denied in $consecutive_permission_denials consecutive loops"
|
|
270
270
|
elif [[ "$has_progress" == "true" ]]; then
|
|
271
271
|
new_state="$CB_STATE_CLOSED"
|
|
272
272
|
reason="Progress detected, circuit recovered"
|
package/ralph/lib/date_utils.sh
CHANGED
|
@@ -49,35 +49,37 @@ get_epoch_seconds() {
|
|
|
49
49
|
# Convert ISO 8601 timestamp to Unix epoch seconds
|
|
50
50
|
# Input: ISO timestamp (e.g., "2025-01-15T10:30:00+00:00")
|
|
51
51
|
# Returns: Unix epoch seconds on stdout
|
|
52
|
-
#
|
|
53
|
-
|
|
52
|
+
# Returns non-zero on parse failure.
|
|
53
|
+
parse_iso_to_epoch_strict() {
|
|
54
54
|
local iso_timestamp=$1
|
|
55
55
|
|
|
56
56
|
if [[ -z "$iso_timestamp" || "$iso_timestamp" == "null" ]]; then
|
|
57
|
-
|
|
58
|
-
return
|
|
57
|
+
return 1
|
|
59
58
|
fi
|
|
60
59
|
|
|
60
|
+
local normalized_iso
|
|
61
|
+
normalized_iso=$(printf '%s' "$iso_timestamp" | sed -E 's/\.([0-9]+)(Z|[+-][0-9]{2}:[0-9]{2})$/\2/')
|
|
62
|
+
|
|
61
63
|
# Try GNU date -d (Linux, macOS with Homebrew coreutils)
|
|
62
64
|
local result
|
|
63
65
|
if result=$(date -d "$iso_timestamp" +%s 2>/dev/null) && [[ "$result" =~ ^[0-9]+$ ]]; then
|
|
64
66
|
echo "$result"
|
|
65
|
-
return
|
|
67
|
+
return 0
|
|
66
68
|
fi
|
|
67
69
|
|
|
68
70
|
# Try BSD date -j (native macOS)
|
|
69
71
|
# Normalize timezone for BSD parsing (Z → +0000, ±HH:MM → ±HHMM)
|
|
70
72
|
local tz_fixed
|
|
71
|
-
tz_fixed=$(
|
|
73
|
+
tz_fixed=$(printf '%s' "$normalized_iso" | sed -E 's/Z$/+0000/; s/([+-][0-9]{2}):([0-9]{2})$/\1\2/')
|
|
72
74
|
if result=$(date -j -f "%Y-%m-%dT%H:%M:%S%z" "$tz_fixed" +%s 2>/dev/null) && [[ "$result" =~ ^[0-9]+$ ]]; then
|
|
73
75
|
echo "$result"
|
|
74
|
-
return
|
|
76
|
+
return 0
|
|
75
77
|
fi
|
|
76
78
|
|
|
77
79
|
# Fallback: manual epoch arithmetic from ISO components
|
|
78
80
|
# Parse: YYYY-MM-DDTHH:MM:SS (ignore timezone, assume UTC)
|
|
79
81
|
local year month day hour minute second
|
|
80
|
-
if [[ "$
|
|
82
|
+
if [[ "$normalized_iso" =~ ^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2}) ]]; then
|
|
81
83
|
year="${BASH_REMATCH[1]}"
|
|
82
84
|
month="${BASH_REMATCH[2]}"
|
|
83
85
|
day="${BASH_REMATCH[3]}"
|
|
@@ -88,10 +90,26 @@ parse_iso_to_epoch() {
|
|
|
88
90
|
# Use date with explicit components if available
|
|
89
91
|
if result=$(date -u -d "${year}-${month}-${day} ${hour}:${minute}:${second}" +%s 2>/dev/null) && [[ "$result" =~ ^[0-9]+$ ]]; then
|
|
90
92
|
echo "$result"
|
|
91
|
-
return
|
|
93
|
+
return 0
|
|
92
94
|
fi
|
|
93
95
|
fi
|
|
94
96
|
|
|
97
|
+
return 1
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
# Convert ISO 8601 timestamp to Unix epoch seconds
|
|
101
|
+
# Input: ISO timestamp (e.g., "2025-01-15T10:30:00+00:00")
|
|
102
|
+
# Returns: Unix epoch seconds on stdout
|
|
103
|
+
# Falls back to current epoch on parse failure (safe default)
|
|
104
|
+
parse_iso_to_epoch() {
|
|
105
|
+
local iso_timestamp=$1
|
|
106
|
+
local result
|
|
107
|
+
|
|
108
|
+
if result=$(parse_iso_to_epoch_strict "$iso_timestamp"); then
|
|
109
|
+
echo "$result"
|
|
110
|
+
return 0
|
|
111
|
+
fi
|
|
112
|
+
|
|
95
113
|
# Ultimate fallback: return current epoch (safe default)
|
|
96
114
|
date +%s
|
|
97
115
|
}
|
|
@@ -101,4 +119,5 @@ export -f get_iso_timestamp
|
|
|
101
119
|
export -f get_next_hour_time
|
|
102
120
|
export -f get_basic_timestamp
|
|
103
121
|
export -f get_epoch_seconds
|
|
122
|
+
export -f parse_iso_to_epoch_strict
|
|
104
123
|
export -f parse_iso_to_epoch
|
package/ralph/lib/enable_core.sh
CHANGED
|
@@ -527,9 +527,17 @@ ${objectives_section}
|
|
|
527
527
|
- ONE task per loop - focus on the most important thing
|
|
528
528
|
- Search the codebase before assuming something isn't implemented
|
|
529
529
|
- Write comprehensive tests with clear documentation
|
|
530
|
-
-
|
|
530
|
+
- Toggle completed story checkboxes in @fix_plan.md without rewriting story lines
|
|
531
531
|
- Commit working changes with descriptive messages
|
|
532
532
|
|
|
533
|
+
## Progress Tracking (CRITICAL)
|
|
534
|
+
- Ralph tracks progress by counting story checkboxes in @fix_plan.md
|
|
535
|
+
- When you complete a story, change \`- [ ]\` to \`- [x]\` on that exact story line
|
|
536
|
+
- Do NOT remove, rewrite, or reorder story lines in @fix_plan.md
|
|
537
|
+
- Update the checkbox before committing so the monitor updates immediately
|
|
538
|
+
- Set \`TASKS_COMPLETED_THIS_LOOP\` to the exact number of story checkboxes toggled this loop
|
|
539
|
+
- Only valid values: 0 or 1
|
|
540
|
+
|
|
533
541
|
## Testing Guidelines
|
|
534
542
|
- LIMIT testing to ~20% of your total effort per loop
|
|
535
543
|
- PRIORITIZE: Implementation > Documentation > Tests
|
|
@@ -545,7 +553,7 @@ At the end of your response, ALWAYS include this status block:
|
|
|
545
553
|
\`\`\`
|
|
546
554
|
---RALPH_STATUS---
|
|
547
555
|
STATUS: IN_PROGRESS | COMPLETE | BLOCKED
|
|
548
|
-
TASKS_COMPLETED_THIS_LOOP:
|
|
556
|
+
TASKS_COMPLETED_THIS_LOOP: 0 | 1
|
|
549
557
|
FILES_MODIFIED: <number>
|
|
550
558
|
TESTS_STATUS: PASSING | FAILING | NOT_RUN
|
|
551
559
|
WORK_TYPE: IMPLEMENTATION | TESTING | DOCUMENTATION | REFACTORING
|