@kestrel-agents/ruhroh 0.5.0-beta.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.
Files changed (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +114 -0
  3. package/assets/ruhroh-badge.png +0 -0
  4. package/assets/ruhroh-logo.png +0 -0
  5. package/dist/adapters.d.ts +97 -0
  6. package/dist/adapters.d.ts.map +1 -0
  7. package/dist/adapters.js +21 -0
  8. package/dist/adapters.js.map +1 -0
  9. package/dist/builtin-scenarios.d.ts +8 -0
  10. package/dist/builtin-scenarios.d.ts.map +1 -0
  11. package/dist/builtin-scenarios.js +22 -0
  12. package/dist/builtin-scenarios.js.map +1 -0
  13. package/dist/cli.d.ts +30 -0
  14. package/dist/cli.d.ts.map +1 -0
  15. package/dist/cli.js +313 -0
  16. package/dist/cli.js.map +1 -0
  17. package/dist/env.d.ts +6 -0
  18. package/dist/env.d.ts.map +1 -0
  19. package/dist/env.js +66 -0
  20. package/dist/env.js.map +1 -0
  21. package/dist/generate.d.ts +32 -0
  22. package/dist/generate.d.ts.map +1 -0
  23. package/dist/generate.js +231 -0
  24. package/dist/generate.js.map +1 -0
  25. package/dist/harbor.d.ts +28 -0
  26. package/dist/harbor.d.ts.map +1 -0
  27. package/dist/harbor.js +47 -0
  28. package/dist/harbor.js.map +1 -0
  29. package/dist/index.d.ts +8 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +8 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/results.d.ts +66 -0
  34. package/dist/results.d.ts.map +1 -0
  35. package/dist/results.js +31 -0
  36. package/dist/results.js.map +1 -0
  37. package/dist/scenarios.d.ts +61 -0
  38. package/dist/scenarios.d.ts.map +1 -0
  39. package/dist/scenarios.js +69 -0
  40. package/dist/scenarios.js.map +1 -0
  41. package/package.json +66 -0
  42. package/python/ruhroh/__init__.py +5 -0
  43. package/python/ruhroh/harbor_agent.py +345 -0
  44. package/python/ruhroh/loop_controller.py +783 -0
  45. package/python/ruhroh/setup.sh +12 -0
  46. package/scenarios/grocery-budget-planner/instruction.md +1 -0
  47. package/scenarios/grocery-budget-planner/scenario.json +44 -0
  48. package/scenarios/nextjs-task-board/instruction.md +1 -0
  49. package/scenarios/nextjs-task-board/scenario.json +45 -0
  50. package/scenarios/shift-coverage-planner/assets/prompt-assets/shift-coverage/coverage-rules.json +29 -0
  51. package/scenarios/shift-coverage-planner/assets/prompt-assets/shift-coverage/employees.csv +8 -0
  52. package/scenarios/shift-coverage-planner/assets/prompt-assets/shift-coverage/existing-schedule.csv +9 -0
  53. package/scenarios/shift-coverage-planner/assets/prompt-assets/shift-coverage/shift-requirements.csv +8 -0
  54. package/scenarios/shift-coverage-planner/assets/prompt-assets/shift-coverage/time-off-requests.csv +5 -0
  55. package/scenarios/shift-coverage-planner/instruction.md +1 -0
  56. package/scenarios/shift-coverage-planner/scenario.json +47 -0
  57. package/scenarios/simple-newsletter/instruction.md +1 -0
  58. package/scenarios/simple-newsletter/scenario.json +40 -0
  59. package/scenarios/vite-csv-reconciliation/assets/prompt-assets/csv-reconciliation-people/source-a.csv +9 -0
  60. package/scenarios/vite-csv-reconciliation/assets/prompt-assets/csv-reconciliation-people/source-b.csv +9 -0
  61. package/scenarios/vite-csv-reconciliation/instruction.md +1 -0
  62. package/scenarios/vite-csv-reconciliation/scenario.json +48 -0
  63. package/scenarios/vite-sprint-planner/instruction.md +1 -0
  64. package/scenarios/vite-sprint-planner/scenario.json +45 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,kBAAkB,EAA6B,MAAM,eAAe,CAAC;AAmC9H,MAAM,aAAc,SAAQ,KAAK;CAAG;AAEpC,MAAM,UAAU,kBAAkB,CAAC,IAAc,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IAC5E,MAAM,OAAO,GAAqB;QAChC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,QAAQ;QACnB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,WAAW,CAAC;QAC/D,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC;QACvD,IAAI,EAAE,OAAO;KACd,CAAC;IAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,UAAU,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;YACtB,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,aAAa,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YAC9B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,OAAO,CAAC,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;YACzB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;YAC/B,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YAC7B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACrE,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YAC9B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACtE,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAC3B,OAAO,CAAC,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5E,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9C,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAC3B,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAChD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc,EAAE,IAAiB;IAClE,IAAI,OAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,OAAO,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAA8B,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;QAClG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChG,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,QAAgC,CAAC;IACrC,IAAI,CAAC;QACH,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChG,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,qBAAqB,CAAC;YACtC,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,OAAO,CAAC,YAAY;YAChC,eAAe,EAAE,+BAA+B;YAChD,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QACH,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAiC,CAAC;IACtC,IAAI,CAAC;QACH,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChG,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACrG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpG,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE;YACzD,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,OAAO,CAAC,UAAU,MAAM,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9G,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,eAAe,CAAC,MAA8B,EAAE,OAAyB;IAChF,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;QAChF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,aAAa,CACpB,SAA2B,EAC3B,OAAyB,EACzB,WAAmB,EACnB,OAAiC;IAEjC,OAAO,yBAAyB,CAAC;QAC/B,SAAS;QACT,OAAO,EAAE,OAAO,CAAC,SAAS;QAC1B,WAAW;QACX,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,eAAe,EAAE,+BAA+B;QAChD,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAyB,EACzB,GAAW,EACX,GAAsB;IAEtB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACxC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO;YACL,SAAS;YACT,GAAG,EAAE;gBACH,GAAG,GAAG;gBACN,wBAAwB,EAAE,OAAO;aAClC;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjH,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC;IACnG,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAsB;IACxD,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAC7C,OAAO;QACL,GAAG,GAAG;QACN,UAAU,EAAE,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAC5E,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,EAAE;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa,EAAE,GAAW;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,6BAA6B,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,IAAc,EAAE,KAAa,EAAE,GAAW;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,IAAc;IACpD,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAgC;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG;QACZ,UAAU,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QACjC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;QACjE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QAC9D,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;KAC/D,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,89BAA89B,CAAC;AACx+B,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACrD,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED,IAAI,qBAAqB,EAAE,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClH,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC;IACtD,CAAC;AACH,CAAC"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare const RUHROH_AGENT_ENV_KEYS: readonly ["OPENAI_API_KEY", "OPENAI_MODEL", "OPENAI_BASE_URL", "OPENAI_ORG_ID", "OPENAI_PROJECT_ID", "OPENROUTER_API_KEY", "OPENROUTER_MODEL", "OPENROUTER_BASE_URL", "OPENROUTER_SITE_URL", "OPENROUTER_APP_NAME", "ANTHROPIC_API_KEY", "ANTHROPIC_MODEL", "ANTHROPIC_BASE_URL", "ANTHROPIC_VERSION", "TAVILY_API_KEY", "KCHAT_MODEL_PROVIDER", "KCHAT_MODEL", "KCHAT_MODEL_TIMEOUT_MS", "KCHAT_MODEL_RETRY_COUNT", "RUHROH_MODEL_PROVIDER", "RUHROH_MODEL", "RUHROH_AGENT_MODEL", "RUHROH_EVAL_MODEL", "RUHROH_EVAL_MODEL_TIMEOUT_MS", "RUHROH_EVAL_MODEL_RETRY_COUNT", "RUHROH_EVAL_RESULT_FIXTURE", "RUHROH_EVAL_RESULT_FIXTURE_PATH", "RUHROH_EVAL_MAX_STEPS", "RUHROH_ITERATION_TIMEOUT_SEC", "RUHROH_AGENT_TIMEOUT_SEC", "RUHROH_INSTALL_TIMEOUT_SEC", "RUHROH_RUN_AGENT_ADAPTER", "RUHROH_RUN_AGENT_COMMAND", "RUHROH_RUN_AGENT_COMPLETION_PROTOCOL", "RUHROH_EVAL_COMMAND"];
2
+ export declare const RUHROH_RUNNER_ENV_KEYS: readonly ["OPENAI_API_KEY", "OPENAI_MODEL", "OPENAI_BASE_URL", "OPENAI_ORG_ID", "OPENAI_PROJECT_ID", "OPENROUTER_API_KEY", "OPENROUTER_MODEL", "OPENROUTER_BASE_URL", "OPENROUTER_SITE_URL", "OPENROUTER_APP_NAME", "ANTHROPIC_API_KEY", "ANTHROPIC_MODEL", "ANTHROPIC_BASE_URL", "ANTHROPIC_VERSION", "TAVILY_API_KEY", "KCHAT_MODEL_PROVIDER", "KCHAT_MODEL", "KCHAT_MODEL_TIMEOUT_MS", "KCHAT_MODEL_RETRY_COUNT", "RUHROH_MODEL_PROVIDER", "RUHROH_MODEL", "RUHROH_AGENT_MODEL", "RUHROH_EVAL_MODEL", "RUHROH_EVAL_MODEL_TIMEOUT_MS", "RUHROH_EVAL_MODEL_RETRY_COUNT", "RUHROH_EVAL_RESULT_FIXTURE", "RUHROH_EVAL_RESULT_FIXTURE_PATH", "RUHROH_EVAL_MAX_STEPS", "RUHROH_ITERATION_TIMEOUT_SEC", "RUHROH_AGENT_TIMEOUT_SEC", "RUHROH_INSTALL_TIMEOUT_SEC", "RUHROH_RUN_AGENT_ADAPTER", "RUHROH_RUN_AGENT_COMMAND", "RUHROH_RUN_AGENT_COMPLETION_PROTOCOL", "RUHROH_EVAL_COMMAND", "RUHROH_HARBOR_COMMAND_TIMEOUT_MS", "RUHROH_REPO_ROOT"];
3
+ export declare function buildAgentEnvArgs(env: NodeJS.ProcessEnv, keys?: readonly string[]): string[];
4
+ export declare function redactEnvAssignment(assignment: string): string;
5
+ export declare function filterForwardedEnv(env: NodeJS.ProcessEnv, keys?: readonly string[]): NodeJS.ProcessEnv;
6
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,s1BAoCxB,CAAC;AAEX,eAAO,MAAM,sBAAsB,84BAIzB,CAAC;AAEX,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,GAAE,SAAS,MAAM,EAA0B,GAAG,MAAM,EAAE,CAKnH;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,GAAE,SAAS,MAAM,EAA2B,GAC/C,MAAM,CAAC,UAAU,CAQnB"}
package/dist/env.js ADDED
@@ -0,0 +1,66 @@
1
+ export const RUHROH_AGENT_ENV_KEYS = [
2
+ "OPENAI_API_KEY",
3
+ "OPENAI_MODEL",
4
+ "OPENAI_BASE_URL",
5
+ "OPENAI_ORG_ID",
6
+ "OPENAI_PROJECT_ID",
7
+ "OPENROUTER_API_KEY",
8
+ "OPENROUTER_MODEL",
9
+ "OPENROUTER_BASE_URL",
10
+ "OPENROUTER_SITE_URL",
11
+ "OPENROUTER_APP_NAME",
12
+ "ANTHROPIC_API_KEY",
13
+ "ANTHROPIC_MODEL",
14
+ "ANTHROPIC_BASE_URL",
15
+ "ANTHROPIC_VERSION",
16
+ "TAVILY_API_KEY",
17
+ "KCHAT_MODEL_PROVIDER",
18
+ "KCHAT_MODEL",
19
+ "KCHAT_MODEL_TIMEOUT_MS",
20
+ "KCHAT_MODEL_RETRY_COUNT",
21
+ "RUHROH_MODEL_PROVIDER",
22
+ "RUHROH_MODEL",
23
+ "RUHROH_AGENT_MODEL",
24
+ "RUHROH_EVAL_MODEL",
25
+ "RUHROH_EVAL_MODEL_TIMEOUT_MS",
26
+ "RUHROH_EVAL_MODEL_RETRY_COUNT",
27
+ "RUHROH_EVAL_RESULT_FIXTURE",
28
+ "RUHROH_EVAL_RESULT_FIXTURE_PATH",
29
+ "RUHROH_EVAL_MAX_STEPS",
30
+ "RUHROH_ITERATION_TIMEOUT_SEC",
31
+ "RUHROH_AGENT_TIMEOUT_SEC",
32
+ "RUHROH_INSTALL_TIMEOUT_SEC",
33
+ "RUHROH_RUN_AGENT_ADAPTER",
34
+ "RUHROH_RUN_AGENT_COMMAND",
35
+ "RUHROH_RUN_AGENT_COMPLETION_PROTOCOL",
36
+ "RUHROH_EVAL_COMMAND",
37
+ ];
38
+ export const RUHROH_RUNNER_ENV_KEYS = [
39
+ ...RUHROH_AGENT_ENV_KEYS,
40
+ "RUHROH_HARBOR_COMMAND_TIMEOUT_MS",
41
+ "RUHROH_REPO_ROOT",
42
+ ];
43
+ export function buildAgentEnvArgs(env, keys = RUHROH_AGENT_ENV_KEYS) {
44
+ return keys.flatMap((key) => {
45
+ const value = env[key];
46
+ return value === undefined || value === "" ? [] : ["--agent-env", `${key}=\${${key}}`];
47
+ });
48
+ }
49
+ export function redactEnvAssignment(assignment) {
50
+ const index = assignment.indexOf("=");
51
+ if (index < 0) {
52
+ return assignment;
53
+ }
54
+ const key = assignment.slice(0, index);
55
+ return `${key}=\${${key}}`;
56
+ }
57
+ export function filterForwardedEnv(env, keys = RUHROH_RUNNER_ENV_KEYS) {
58
+ const forwarded = {};
59
+ for (const key of keys) {
60
+ if (env[key] !== undefined) {
61
+ forwarded[key] = env[key];
62
+ }
63
+ }
64
+ return forwarded;
65
+ }
66
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,oBAAoB;IACpB,mBAAmB;IACnB,gBAAgB;IAChB,sBAAsB;IACtB,aAAa;IACb,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,cAAc;IACd,oBAAoB;IACpB,mBAAmB;IACnB,8BAA8B;IAC9B,+BAA+B;IAC/B,4BAA4B;IAC5B,iCAAiC;IACjC,uBAAuB;IACvB,8BAA8B;IAC9B,0BAA0B;IAC1B,4BAA4B;IAC5B,0BAA0B;IAC1B,0BAA0B;IAC1B,sCAAsC;IACtC,qBAAqB;CACb,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,GAAG,qBAAqB;IACxB,kCAAkC;IAClC,kBAAkB;CACV,CAAC;AAEX,MAAM,UAAU,iBAAiB,CAAC,GAAsB,EAAE,OAA0B,qBAAqB;IACvG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAsB,EACtB,OAA0B,sBAAsB;IAEhD,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { type RuhrohScenario, type RuhrohScenarioSource } from "./scenarios.js";
2
+ export interface LoadedRuhrohScenario {
3
+ scenario: RuhrohScenario;
4
+ source: RuhrohScenarioSource;
5
+ }
6
+ export interface GenerateHarborTaskInput {
7
+ scenario: RuhrohScenario;
8
+ scenarioDir: string;
9
+ outputRoot: string;
10
+ agentImportPath?: string | undefined;
11
+ artifacts?: readonly string[] | undefined;
12
+ }
13
+ export interface GenerateHarborTaskResult {
14
+ scenarioId: string;
15
+ taskDir: string;
16
+ filesWritten: string[];
17
+ }
18
+ export interface GenerateHarborDatasetInput {
19
+ scenarios: LoadedRuhrohScenario[];
20
+ outputRoot: string;
21
+ agentImportPath?: string | undefined;
22
+ artifacts?: readonly string[] | undefined;
23
+ }
24
+ export interface GenerateHarborDatasetResult {
25
+ datasetPath: string;
26
+ tasks: GenerateHarborTaskResult[];
27
+ }
28
+ export declare function discoverRuhrohScenarios(scenarioRoot: string): RuhrohScenarioSource[];
29
+ export declare function loadRuhrohScenario(input: string | RuhrohScenarioSource): LoadedRuhrohScenario;
30
+ export declare function generateHarborDataset(input: GenerateHarborDatasetInput): GenerateHarborDatasetResult;
31
+ export declare function generateHarborTask(input: GenerateHarborTaskInput): GenerateHarborTaskResult;
32
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,wBAAwB,EAAE,CAAC;CACnC;AAkBD,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAcpF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,GAAG,oBAAoB,CAe7F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,2BAA2B,CAcpG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CA2B3F"}
@@ -0,0 +1,231 @@
1
+ import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { RUHROH_ARTIFACTS, RUHROH_HARBOR_AGENT_IMPORT_PATH } from "./harbor.js";
4
+ import { validateRuhrohScenario } from "./scenarios.js";
5
+ export function discoverRuhrohScenarios(scenarioRoot) {
6
+ const root = path.resolve(scenarioRoot);
7
+ if (!existsSync(root)) {
8
+ return [];
9
+ }
10
+ const directScenarioPath = path.join(root, "scenario.json");
11
+ if (existsSync(directScenarioPath)) {
12
+ return [scenarioSourceFromDir(root)];
13
+ }
14
+ return readdirSync(root, { withFileTypes: true })
15
+ .filter((entry) => entry.isDirectory())
16
+ .map((entry) => scenarioSourceFromDir(path.join(root, entry.name)))
17
+ .filter((source) => existsSync(source.scenarioPath))
18
+ .sort((left, right) => left.scenarioDir.localeCompare(right.scenarioDir));
19
+ }
20
+ export function loadRuhrohScenario(input) {
21
+ const source = typeof input === "string" ? scenarioSourceFromDir(path.resolve(input)) : input;
22
+ const raw = readJsonRecord(source.scenarioPath);
23
+ const userPrompt = readUserPrompt(raw, source);
24
+ const scenario = {
25
+ ...raw,
26
+ version: raw.version,
27
+ userPrompt,
28
+ run: readRunDefaults(raw),
29
+ };
30
+ const errors = validateRuhrohScenario(scenario);
31
+ if (errors.length > 0) {
32
+ throw new Error(`Invalid Ruhroh scenario ${source.scenarioPath}: ${errors.join("; ")}`);
33
+ }
34
+ return { scenario, source };
35
+ }
36
+ export function generateHarborDataset(input) {
37
+ const tasks = input.scenarios.map((loaded) => generateHarborTask({
38
+ scenario: loaded.scenario,
39
+ scenarioDir: loaded.source.scenarioDir,
40
+ outputRoot: input.outputRoot,
41
+ agentImportPath: input.agentImportPath,
42
+ artifacts: input.artifacts,
43
+ }));
44
+ return {
45
+ datasetPath: path.join(path.resolve(input.outputRoot), "harbor"),
46
+ tasks,
47
+ };
48
+ }
49
+ export function generateHarborTask(input) {
50
+ const outputRoot = path.resolve(input.outputRoot);
51
+ const taskDir = path.join(outputRoot, "harbor", "tasks", input.scenario.id);
52
+ const filesWritten = [];
53
+ const writeText = (relativePath, content, mode) => {
54
+ const filePath = path.join(taskDir, relativePath);
55
+ mkdirSync(path.dirname(filePath), { recursive: true });
56
+ writeFileSync(filePath, content, { encoding: "utf8", mode });
57
+ filesWritten.push(filePath);
58
+ };
59
+ mkdirSync(taskDir, { recursive: true });
60
+ mkdirSync(path.join(taskDir, "assets"), { recursive: true });
61
+ writeText("instruction.md", `${input.scenario.userPrompt.trim()}\n`);
62
+ writeText("task.toml", renderTaskToml(input));
63
+ writeText("tests/test.sh", renderGenericVerifier(), 0o755);
64
+ writeText("environment/Dockerfile", renderDockerfile());
65
+ writeText("solution/solve.sh", renderSolveScript(), 0o755);
66
+ const assetsDir = path.join(input.scenarioDir, "assets");
67
+ if (existsSync(assetsDir) && statSync(assetsDir).isDirectory()) {
68
+ const targetAssetsDir = path.join(taskDir, "assets");
69
+ cpSync(assetsDir, targetAssetsDir, { recursive: true, force: true });
70
+ filesWritten.push(...listFiles(targetAssetsDir));
71
+ }
72
+ return { scenarioId: input.scenario.id, taskDir, filesWritten: [...new Set(filesWritten)].sort() };
73
+ }
74
+ function scenarioSourceFromDir(scenarioDir) {
75
+ const instructionPath = path.join(scenarioDir, "instruction.md");
76
+ const assetsDir = path.join(scenarioDir, "assets");
77
+ return {
78
+ scenarioDir,
79
+ scenarioPath: path.join(scenarioDir, "scenario.json"),
80
+ ...(existsSync(instructionPath) ? { instructionPath } : {}),
81
+ ...(existsSync(assetsDir) ? { assetsDir } : {}),
82
+ };
83
+ }
84
+ function readUserPrompt(raw, source) {
85
+ if (typeof raw.userPrompt === "string") {
86
+ return raw.userPrompt;
87
+ }
88
+ const promptPath = typeof raw.userPromptPath === "string"
89
+ ? path.resolve(source.scenarioDir, raw.userPromptPath)
90
+ : source.instructionPath;
91
+ if (promptPath === undefined || !existsSync(promptPath)) {
92
+ throw new Error(`Ruhroh scenario ${source.scenarioPath} is missing userPrompt or userPromptPath`);
93
+ }
94
+ return readFileSync(promptPath, "utf8").trim();
95
+ }
96
+ function readRunDefaults(raw) {
97
+ if (isRecord(raw.run)) {
98
+ return {
99
+ ...(typeof raw.run.mode === "string" ? { mode: raw.run.mode } : {}),
100
+ timeoutSeconds: typeof raw.run.timeoutSeconds === "number" ? raw.run.timeoutSeconds : 600,
101
+ };
102
+ }
103
+ const legacyDriver = isRecord(raw.driver) ? raw.driver : {};
104
+ return {
105
+ ...(typeof legacyDriver.mode === "string" ? { mode: legacyDriver.mode } : {}),
106
+ timeoutSeconds: typeof legacyDriver.timeoutSeconds === "number" ? legacyDriver.timeoutSeconds : 600,
107
+ };
108
+ }
109
+ function readJsonRecord(filePath) {
110
+ const parsed = JSON.parse(readFileSync(filePath, "utf8"));
111
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
112
+ throw new Error(`Expected JSON object in ${filePath}`);
113
+ }
114
+ return parsed;
115
+ }
116
+ function isRecord(value) {
117
+ return typeof value === "object" && value !== null && !Array.isArray(value);
118
+ }
119
+ function renderTaskToml(input) {
120
+ const artifacts = input.artifacts ?? RUHROH_ARTIFACTS;
121
+ return [
122
+ 'schema_version = "1.3"',
123
+ "artifacts = [",
124
+ ...artifacts.map((artifact) => ` ${tomlString(artifact)},`),
125
+ "]",
126
+ "",
127
+ "[task]",
128
+ `name = ${tomlString(`ruhroh/${input.scenario.id}`)}`,
129
+ `description = ${tomlString(`Ruhroh scenario: ${input.scenario.title}`)}`,
130
+ 'authors = [{ name = "Ruhroh" }]',
131
+ `keywords = ${tomlStringArray(["ruhroh", input.scenario.tier, input.scenario.kind])}`,
132
+ "",
133
+ "[metadata]",
134
+ `scenario_id = ${tomlString(input.scenario.id)}`,
135
+ `agent_import_path = ${tomlString(input.agentImportPath ?? RUHROH_HARBOR_AGENT_IMPORT_PATH)}`,
136
+ "",
137
+ "[verifier]",
138
+ "timeout_sec = 600.0",
139
+ "",
140
+ "[verifier.env]",
141
+ "",
142
+ "[agent]",
143
+ `timeout_sec = ${input.scenario.run.timeoutSeconds.toFixed(1)}`,
144
+ "",
145
+ "[environment]",
146
+ 'network_mode = "public"',
147
+ "build_timeout_sec = 600.0",
148
+ 'os = "linux"',
149
+ "mcp_servers = []",
150
+ "",
151
+ "[environment.env]",
152
+ "",
153
+ "[solution.env]",
154
+ "",
155
+ ].join("\n");
156
+ }
157
+ function renderGenericVerifier() {
158
+ return `#!/bin/bash
159
+ set -euo pipefail
160
+
161
+ mkdir -p /logs/verifier
162
+
163
+ if python3 - <<'PY'
164
+ import json
165
+ from pathlib import Path
166
+
167
+ path = Path("/installed-agent/ruhroh-loop-result.json")
168
+ if not path.exists():
169
+ raise SystemExit("missing Ruhroh result artifact")
170
+
171
+ result = json.loads(path.read_text(encoding="utf-8"))
172
+ if result.get("status") != "completed":
173
+ raise SystemExit(f"Ruhroh did not complete: {result.get('status')} {result.get('failure_kind')}")
174
+ if result.get("failure_kind") not in (None, "none"):
175
+ raise SystemExit(f"Ruhroh reported failure_kind={result.get('failure_kind')}")
176
+ if result.get("score") != 1:
177
+ raise SystemExit(f"Ruhroh score was not 1: {result.get('score')}")
178
+ if result.get("implementationIterationsUsed", 0) < 1:
179
+ raise SystemExit("Ruhroh did not record implementation iterations")
180
+ if not isinstance(result.get("implementationRuns"), list):
181
+ raise SystemExit("Ruhroh result is missing implementationRuns")
182
+ eval_result = result.get("evalResult")
183
+ if not isinstance(eval_result, dict) or eval_result.get("version") != "ruhroh_eval_result_v1":
184
+ raise SystemExit("Ruhroh result is missing evalResult")
185
+ if eval_result.get("status") != "passed":
186
+ raise SystemExit(f"Ruhroh eval-agent did not pass: {eval_result.get('status')}")
187
+ PY
188
+ then
189
+ echo 1 > /logs/verifier/reward.txt
190
+ else
191
+ echo 0 > /logs/verifier/reward.txt
192
+ exit 1
193
+ fi
194
+ `;
195
+ }
196
+ function renderDockerfile() {
197
+ return `FROM ubuntu:24.04
198
+
199
+ RUN apt-get update \\
200
+ && apt-get install -y --no-install-recommends bash ca-certificates python3 \\
201
+ && rm -rf /var/lib/apt/lists/*
202
+ `;
203
+ }
204
+ function renderSolveScript() {
205
+ return `#!/bin/bash
206
+ set -euo pipefail
207
+
208
+ echo "Ruhroh benchmark tasks are solved by the installed agent."
209
+ `;
210
+ }
211
+ function tomlString(value) {
212
+ return JSON.stringify(value);
213
+ }
214
+ function tomlStringArray(values) {
215
+ return `[${values.map(tomlString).join(", ")}]`;
216
+ }
217
+ function listFiles(root) {
218
+ const files = [];
219
+ for (const entry of readdirSync(root, { withFileTypes: true })) {
220
+ const fullPath = path.join(root, entry.name);
221
+ if (entry.isDirectory()) {
222
+ files.push(...listFiles(fullPath));
223
+ continue;
224
+ }
225
+ if (entry.isFile()) {
226
+ files.push(fullPath);
227
+ }
228
+ }
229
+ return files.sort();
230
+ }
231
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { RuhrohScenario } from "./scenarios.js";
2
+ export declare const DEFAULT_RUHROH_DATASET_PATH = ".generated/ruhroh/harbor";
3
+ export declare const RUHROH_HARBOR_AGENT_IMPORT_PATH = "ruhroh.harbor_agent:RuhrohHarborAgent";
4
+ export declare const RUHROH_ARTIFACTS: readonly ["/installed-agent/ruhroh-loop-result.json", "/installed-agent/ruhroh-loop-iterations.jsonl", "/installed-agent/ruhroh-loop-journey.json", "/installed-agent/ruhroh-loop-eval.json", "/installed-agent/ruhroh-loop-bridge.jsonl", "/installed-agent/ruhroh-workspace.tar.gz", "/installed-agent/ruhroh-loop-events.tar.gz", "/installed-agent/ruhroh-loop-transcripts.tar.gz"];
5
+ export interface BuildRuhrohHarborCommandInput {
6
+ scenario: Pick<RuhrohScenario, "id" | "loop">;
7
+ adapter: string;
8
+ datasetPath: string;
9
+ iterations?: number | undefined;
10
+ env?: NodeJS.ProcessEnv | undefined;
11
+ agentImportPath?: string | undefined;
12
+ artifacts?: readonly string[] | undefined;
13
+ }
14
+ export interface RuhrohHarborCommand {
15
+ scenarioId: string;
16
+ args: string[];
17
+ }
18
+ export declare function buildRuhrohHarborCommand(input: BuildRuhrohHarborCommandInput): RuhrohHarborCommand;
19
+ export declare function buildRuhrohHarborCommands(input: {
20
+ scenarios: Array<Pick<RuhrohScenario, "id" | "loop">>;
21
+ adapter: string;
22
+ datasetPath: string;
23
+ iterations?: number | undefined;
24
+ env?: NodeJS.ProcessEnv | undefined;
25
+ agentImportPath?: string | undefined;
26
+ artifacts?: readonly string[] | undefined;
27
+ }): RuhrohHarborCommand[];
28
+ //# sourceMappingURL=harbor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harbor.d.ts","sourceRoot":"","sources":["../src/harbor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AACtE,eAAO,MAAM,+BAA+B,0CAA0C,CAAC;AACvF,eAAO,MAAM,gBAAgB,yXASnB,CAAC;AAEX,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,GAAG,mBAAmB,CAoBlG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC3C,GAAG,mBAAmB,EAAE,CAYxB"}
package/dist/harbor.js ADDED
@@ -0,0 +1,47 @@
1
+ import path from "node:path";
2
+ import { buildAgentEnvArgs } from "./env.js";
3
+ export const DEFAULT_RUHROH_DATASET_PATH = ".generated/ruhroh/harbor";
4
+ export const RUHROH_HARBOR_AGENT_IMPORT_PATH = "ruhroh.harbor_agent:RuhrohHarborAgent";
5
+ export const RUHROH_ARTIFACTS = [
6
+ "/installed-agent/ruhroh-loop-result.json",
7
+ "/installed-agent/ruhroh-loop-iterations.jsonl",
8
+ "/installed-agent/ruhroh-loop-journey.json",
9
+ "/installed-agent/ruhroh-loop-eval.json",
10
+ "/installed-agent/ruhroh-loop-bridge.jsonl",
11
+ "/installed-agent/ruhroh-workspace.tar.gz",
12
+ "/installed-agent/ruhroh-loop-events.tar.gz",
13
+ "/installed-agent/ruhroh-loop-transcripts.tar.gz",
14
+ ];
15
+ export function buildRuhrohHarborCommand(input) {
16
+ const taskPath = path.join(input.datasetPath, "tasks", input.scenario.id);
17
+ return {
18
+ scenarioId: input.scenario.id,
19
+ args: [
20
+ "run",
21
+ "--path",
22
+ taskPath,
23
+ "--agent-import-path",
24
+ input.agentImportPath ?? RUHROH_HARBOR_AGENT_IMPORT_PATH,
25
+ "--n-concurrent",
26
+ "1",
27
+ "--agent-env",
28
+ `RUHROH_MAX_ITERATIONS=${String(input.iterations ?? input.scenario.loop.defaultMaxIterations)}`,
29
+ "--agent-env",
30
+ `RUHROH_RUN_AGENT_ADAPTER=${input.adapter}`,
31
+ ...buildAgentEnvArgs(input.env ?? process.env),
32
+ ...(input.artifacts ?? RUHROH_ARTIFACTS).flatMap((artifact) => ["--artifact", artifact]),
33
+ ],
34
+ };
35
+ }
36
+ export function buildRuhrohHarborCommands(input) {
37
+ return input.scenarios.map((scenario) => buildRuhrohHarborCommand({
38
+ scenario,
39
+ adapter: input.adapter,
40
+ datasetPath: input.datasetPath,
41
+ iterations: input.iterations,
42
+ env: input.env,
43
+ agentImportPath: input.agentImportPath,
44
+ artifacts: input.artifacts,
45
+ }));
46
+ }
47
+ //# sourceMappingURL=harbor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harbor.js","sourceRoot":"","sources":["../src/harbor.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,CAAC,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AACtE,MAAM,CAAC,MAAM,+BAA+B,GAAG,uCAAuC,CAAC;AACvF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,0CAA0C;IAC1C,+CAA+C;IAC/C,2CAA2C;IAC3C,wCAAwC;IACxC,2CAA2C;IAC3C,0CAA0C;IAC1C,4CAA4C;IAC5C,iDAAiD;CACzC,CAAC;AAiBX,MAAM,UAAU,wBAAwB,CAAC,KAAoC;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;QAC7B,IAAI,EAAE;YACJ,KAAK;YACL,QAAQ;YACR,QAAQ;YACR,qBAAqB;YACrB,KAAK,CAAC,eAAe,IAAI,+BAA+B;YACxD,gBAAgB;YAChB,GAAG;YACH,aAAa;YACb,yBAAyB,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC/F,aAAa;YACb,4BAA4B,KAAK,CAAC,OAAO,EAAE;YAC3C,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;YAC9C,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;SACzF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAQzC;IACC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtC,wBAAwB,CAAC;QACvB,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from "./adapters.js";
2
+ export * from "./builtin-scenarios.js";
3
+ export * from "./env.js";
4
+ export * from "./generate.js";
5
+ export * from "./harbor.js";
6
+ export * from "./results.js";
7
+ export * from "./scenarios.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export * from "./adapters.js";
2
+ export * from "./builtin-scenarios.js";
3
+ export * from "./env.js";
4
+ export * from "./generate.js";
5
+ export * from "./harbor.js";
6
+ export * from "./results.js";
7
+ export * from "./scenarios.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,66 @@
1
+ import type { RuhrohEvidenceRef, RunAgentArtifactManifest } from "./adapters.js";
2
+ export type RuhrohEvalStatus = "passed" | "failed" | "review" | "infra_failed";
3
+ export type RuhrohEvalConfidence = "low" | "medium" | "high";
4
+ export interface RuhrohEvalCommandRecord {
5
+ command: string;
6
+ exitCode: number;
7
+ summary: string;
8
+ }
9
+ export interface RuhrohEvalResult {
10
+ version: "ruhroh_eval_result_v1";
11
+ status: RuhrohEvalStatus;
12
+ goalMet: boolean;
13
+ confidence: RuhrohEvalConfidence;
14
+ reasons: string[];
15
+ unmetCriteria: string[];
16
+ evidenceRefs: RuhrohEvidenceRef[];
17
+ commandsRun: RuhrohEvalCommandRecord[];
18
+ artifacts: Record<string, string>;
19
+ finalSummary: string;
20
+ repairBrief?: string | undefined;
21
+ }
22
+ export interface RuhrohLoopResult {
23
+ version: "ruhroh_loop_result_v1";
24
+ adapter: string;
25
+ dataset: string;
26
+ scenarioId: string;
27
+ task_id: string;
28
+ status: "completed" | "failed";
29
+ failure_kind: string;
30
+ failureBucket: string;
31
+ score: number;
32
+ iterationsUsed: number;
33
+ implementationIterationsUsed: number;
34
+ implementationStoppedReason: string;
35
+ stoppedReason: string;
36
+ duration_ms: number;
37
+ runAgent: RunAgentArtifactManifest;
38
+ runAgentAdapterId: string;
39
+ continuityLevel: string;
40
+ sessionHandle: string;
41
+ runIds: string[];
42
+ implementationRuns: Array<Record<string, unknown>>;
43
+ evalResult?: RuhrohEvalResult | undefined;
44
+ artifactPaths?: Record<string, string> | undefined;
45
+ failure_details?: Record<string, unknown> | undefined;
46
+ }
47
+ export interface RuhrohVerdict {
48
+ status: "completed" | "failed";
49
+ failure_kind: string;
50
+ score: number;
51
+ }
52
+ export declare function scoreForEvalStatus(status: RuhrohEvalStatus): number;
53
+ export declare function mapEvalResultToVerdict(evalResult: Pick<RuhrohEvalResult, "status">): RuhrohVerdict;
54
+ export declare function mapRuntimeFailureToVerdict(implementationRuns: Array<{
55
+ status?: string | undefined;
56
+ failureKind?: string | undefined;
57
+ }>, options?: {
58
+ ignoredFailureKinds?: string[] | undefined;
59
+ }): RuhrohVerdict | undefined;
60
+ export declare function deriveRuhrohVerdict(implementationRuns: Array<{
61
+ status?: string | undefined;
62
+ failureKind?: string | undefined;
63
+ }>, evalResult: Pick<RuhrohEvalResult, "status">, options?: {
64
+ ignoredFailureKinds?: string[] | undefined;
65
+ }): RuhrohVerdict;
66
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export function scoreForEvalStatus(status) {
2
+ return status === "passed" ? 1 : 0;
3
+ }
4
+ export function mapEvalResultToVerdict(evalResult) {
5
+ if (evalResult.status === "passed") {
6
+ return { status: "completed", failure_kind: "none", score: 1 };
7
+ }
8
+ if (evalResult.status === "review") {
9
+ return { status: "failed", failure_kind: "review_required", score: 0 };
10
+ }
11
+ if (evalResult.status === "infra_failed") {
12
+ return { status: "failed", failure_kind: "infra_failed", score: 0 };
13
+ }
14
+ return { status: "failed", failure_kind: "goal_mismatch", score: 0 };
15
+ }
16
+ export function mapRuntimeFailureToVerdict(implementationRuns, options = {}) {
17
+ const ignored = new Set(options.ignoredFailureKinds ?? []);
18
+ const runtimeFailure = implementationRuns.find((run) => run.status !== "completed" && !ignored.has(run.failureKind ?? ""));
19
+ if (runtimeFailure === undefined) {
20
+ return undefined;
21
+ }
22
+ return {
23
+ status: "failed",
24
+ failure_kind: runtimeFailure.failureKind ?? "runtime_failure",
25
+ score: 0,
26
+ };
27
+ }
28
+ export function deriveRuhrohVerdict(implementationRuns, evalResult, options = {}) {
29
+ return mapRuntimeFailureToVerdict(implementationRuns, options) ?? mapEvalResultToVerdict(evalResult);
30
+ }
31
+ //# sourceMappingURL=results.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"AAyDA,MAAM,UAAU,kBAAkB,CAAC,MAAwB;IACzD,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAA4C;IACjF,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACzC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,kBAA4F,EAC5F,UAA0D,EAAE;IAE5D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3H,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,cAAc,CAAC,WAAW,IAAI,iBAAiB;QAC7D,KAAK,EAAE,CAAC;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,kBAA4F,EAC5F,UAA4C,EAC5C,UAA0D,EAAE;IAE5D,OAAO,0BAA0B,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACvG,CAAC"}