@united-workforce/cli 0.7.0 → 0.8.1

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 (111) hide show
  1. package/README.md +32 -5
  2. package/dist/.build-fingerprint +1 -0
  3. package/dist/__tests__/broker-step-active-turns.test.d.ts +20 -0
  4. package/dist/__tests__/broker-step-active-turns.test.d.ts.map +1 -0
  5. package/dist/__tests__/broker-step-active-turns.test.js +428 -0
  6. package/dist/__tests__/broker-step-active-turns.test.js.map +1 -0
  7. package/dist/__tests__/broker-step-turn-chain-phase2.test.d.ts +13 -0
  8. package/dist/__tests__/broker-step-turn-chain-phase2.test.d.ts.map +1 -0
  9. package/dist/__tests__/broker-step-turn-chain-phase2.test.js +429 -0
  10. package/dist/__tests__/broker-step-turn-chain-phase2.test.js.map +1 -0
  11. package/dist/__tests__/e2e-broker-step-suspend.test.d.ts +18 -0
  12. package/dist/__tests__/e2e-broker-step-suspend.test.d.ts.map +1 -0
  13. package/dist/__tests__/e2e-broker-step-suspend.test.js +313 -0
  14. package/dist/__tests__/e2e-broker-step-suspend.test.js.map +1 -0
  15. package/dist/__tests__/e2e-thread-resume-timeout-suspend.test.d.ts +28 -0
  16. package/dist/__tests__/e2e-thread-resume-timeout-suspend.test.d.ts.map +1 -0
  17. package/dist/__tests__/e2e-thread-resume-timeout-suspend.test.js +322 -0
  18. package/dist/__tests__/e2e-thread-resume-timeout-suspend.test.js.map +1 -0
  19. package/dist/__tests__/log-tag-validity.test.d.ts +2 -0
  20. package/dist/__tests__/log-tag-validity.test.d.ts.map +1 -0
  21. package/dist/__tests__/log-tag-validity.test.js +110 -0
  22. package/dist/__tests__/log-tag-validity.test.js.map +1 -0
  23. package/dist/__tests__/setup-agent-discovery.test.js +23 -23
  24. package/dist/__tests__/setup-agent-discovery.test.js.map +1 -1
  25. package/dist/__tests__/step-show-json.test.js +5 -5
  26. package/dist/__tests__/step-show-json.test.js.map +1 -1
  27. package/dist/__tests__/step-show-text.test.d.ts +2 -0
  28. package/dist/__tests__/step-show-text.test.d.ts.map +1 -0
  29. package/dist/__tests__/step-show-text.test.js +192 -0
  30. package/dist/__tests__/step-show-text.test.js.map +1 -0
  31. package/dist/__tests__/step-turns-cli-subprocess.test.d.ts +21 -0
  32. package/dist/__tests__/step-turns-cli-subprocess.test.d.ts.map +1 -0
  33. package/dist/__tests__/step-turns-cli-subprocess.test.js +356 -0
  34. package/dist/__tests__/step-turns-cli-subprocess.test.js.map +1 -0
  35. package/dist/__tests__/step-turns-panorama-phase3.test.d.ts +21 -0
  36. package/dist/__tests__/step-turns-panorama-phase3.test.d.ts.map +1 -0
  37. package/dist/__tests__/step-turns-panorama-phase3.test.js +476 -0
  38. package/dist/__tests__/step-turns-panorama-phase3.test.js.map +1 -0
  39. package/dist/__tests__/step-turns.test.d.ts +24 -0
  40. package/dist/__tests__/step-turns.test.d.ts.map +1 -0
  41. package/dist/__tests__/step-turns.test.js +646 -0
  42. package/dist/__tests__/step-turns.test.js.map +1 -0
  43. package/dist/__tests__/store-turn-chain.test.d.ts +2 -0
  44. package/dist/__tests__/store-turn-chain.test.d.ts.map +1 -0
  45. package/dist/__tests__/store-turn-chain.test.js +341 -0
  46. package/dist/__tests__/store-turn-chain.test.js.map +1 -0
  47. package/dist/__tests__/thread-list-limit-offset.test.d.ts +24 -0
  48. package/dist/__tests__/thread-list-limit-offset.test.d.ts.map +1 -0
  49. package/dist/__tests__/thread-list-limit-offset.test.js +254 -0
  50. package/dist/__tests__/thread-list-limit-offset.test.js.map +1 -0
  51. package/dist/__tests__/thread-list-template-ms-date.test.js +7 -2
  52. package/dist/__tests__/thread-list-template-ms-date.test.js.map +1 -1
  53. package/dist/__tests__/thread.test.js +28 -14
  54. package/dist/__tests__/thread.test.js.map +1 -1
  55. package/dist/cli.js +910 -344
  56. package/dist/cli.js.map +1 -1
  57. package/dist/commands/broker-step.d.ts +10 -3
  58. package/dist/commands/broker-step.d.ts.map +1 -1
  59. package/dist/commands/broker-step.js +231 -27
  60. package/dist/commands/broker-step.js.map +1 -1
  61. package/dist/commands/prompt.d.ts.map +1 -1
  62. package/dist/commands/prompt.js +42 -50
  63. package/dist/commands/prompt.js.map +1 -1
  64. package/dist/commands/setup.d.ts +6 -4
  65. package/dist/commands/setup.d.ts.map +1 -1
  66. package/dist/commands/setup.js +16 -26
  67. package/dist/commands/setup.js.map +1 -1
  68. package/dist/commands/step.d.ts +48 -1
  69. package/dist/commands/step.d.ts.map +1 -1
  70. package/dist/commands/step.js +496 -3
  71. package/dist/commands/step.js.map +1 -1
  72. package/dist/output-mappers.d.ts +8 -0
  73. package/dist/output-mappers.d.ts.map +1 -1
  74. package/dist/output-mappers.js +72 -18
  75. package/dist/output-mappers.js.map +1 -1
  76. package/dist/schemas.d.ts +3 -0
  77. package/dist/schemas.d.ts.map +1 -1
  78. package/dist/schemas.js +17 -3
  79. package/dist/schemas.js.map +1 -1
  80. package/dist/store.d.ts +147 -1
  81. package/dist/store.d.ts.map +1 -1
  82. package/dist/store.js +254 -1
  83. package/dist/store.js.map +1 -1
  84. package/dist/text-renderers.d.ts.map +1 -1
  85. package/dist/text-renderers.js +27 -2
  86. package/dist/text-renderers.js.map +1 -1
  87. package/package.json +7 -6
  88. package/src/__tests__/broker-step-active-turns.test.ts +509 -0
  89. package/src/__tests__/broker-step-turn-chain-phase2.test.ts +525 -0
  90. package/src/__tests__/e2e-broker-step-suspend.test.ts +351 -0
  91. package/src/__tests__/e2e-thread-resume-timeout-suspend.test.ts +360 -0
  92. package/src/__tests__/log-tag-validity.test.ts +124 -0
  93. package/src/__tests__/setup-agent-discovery.test.ts +23 -23
  94. package/src/__tests__/step-show-json.test.ts +5 -5
  95. package/src/__tests__/step-show-text.test.ts +236 -0
  96. package/src/__tests__/step-turns-cli-subprocess.test.ts +411 -0
  97. package/src/__tests__/step-turns-panorama-phase3.test.ts +579 -0
  98. package/src/__tests__/step-turns.test.ts +734 -0
  99. package/src/__tests__/store-turn-chain.test.ts +386 -0
  100. package/src/__tests__/thread-list-limit-offset.test.ts +305 -0
  101. package/src/__tests__/thread-list-template-ms-date.test.ts +7 -2
  102. package/src/__tests__/thread.test.ts +29 -15
  103. package/src/cli.ts +1056 -483
  104. package/src/commands/broker-step.ts +315 -38
  105. package/src/commands/prompt.ts +42 -50
  106. package/src/commands/setup.ts +16 -28
  107. package/src/commands/step.ts +655 -3
  108. package/src/output-mappers.ts +99 -21
  109. package/src/schemas.ts +32 -2
  110. package/src/store.ts +297 -2
  111. package/src/text-renderers.ts +35 -2
@@ -1 +1 @@
1
- {"version":3,"file":"step-show-json.test.js","sourceRoot":"","sources":["../../src/__tests__/step-show-json.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAA8B,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,GAAe;IAC9B,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;IACtC,UAAU,EAAE;QACV,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;QACrD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,SAAS,EAAE;YACT,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;wBAC1B,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACzB;wBACD,oBAAoB,EAAE,KAAK;qBAC5B;iBACF;gBACD,EAAE,IAAI,EAAE,MAAM,EAAE;aACjB;SACF;KACF;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEF,MAAM,aAAa,GAAe;IAChC,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE;SAC9C;KACF;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAcF,KAAK,UAAU,SAAS,CAAC,MAAc;IACrC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/C,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;QAC7B,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;KAChC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,KAAgB,EAChB,YAKE;IAEF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAEvD,oBAAoB;IACpB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,qBAAqB;IACrB,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAE1E,0BAA0B;IAC1B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;QACvD,QAAQ,EAAE,eAAyB;QACnC,MAAM,EAAE,aAAa;QACrB,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1E,mBAAmB;IACnB,MAAM,WAAW,GAAoB;QACnC,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;QACvB,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;QAChC,eAAe,EAAE,IAAI;QACrB,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,IAAI;QACX,gBAAgB,EAAE,IAAI;KACvB,CAAC;IACF,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IACnB,IAAI,WAA+B,CAAC;IAEpC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,iBAAiB;gBAC1B,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4BAA4B;qBACnC;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wCAAwC;qBAC/C;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,oBAAoB;gBAC7B,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2CAA2C;qBAClD;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4BAA4B;qBACnC;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,qBAAqB;qBAC5B;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,0BAA0B;gBACnC,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,aAAa;qBACpB;iBACF;aACF;YACD;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,uBAAuB;gBAChC,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,iBAAiB;gBAC1B,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4BAA4B;qBACnC;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAoB;gBAC1B,OAAO,EAAE,QAAQ,CAAC,gBAAgB;gBAClC,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,EAAE;qBACtC;oBACD;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,gBAAgB,CAAC,EAAE;qBAC1B;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"step-show-json.test.js","sourceRoot":"","sources":["../../src/__tests__/step-show-json.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAA8B,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,GAAe;IAC9B,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;IACtC,UAAU,EAAE;QACV,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;QACrD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,SAAS,EAAE;YACT,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;wBAC1B,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACzB;wBACD,oBAAoB,EAAE,KAAK;qBAC5B;iBACF;gBACD,EAAE,IAAI,EAAE,MAAM,EAAE;aACjB;SACF;KACF;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEF,MAAM,aAAa,GAAe;IAChC,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE;SAC9C;KACF;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAcF,KAAK,UAAU,SAAS,CAAC,MAAc;IACrC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/C,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;QAC7B,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;KAChC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,KAAgB,EAChB,YAKE;IAEF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAEvD,oBAAoB;IACpB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,qBAAqB;IACrB,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAE1E,0BAA0B;IAC1B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;QACvD,QAAQ,EAAE,eAAyB;QACnC,MAAM,EAAE,aAAa;QACrB,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1E,mBAAmB;IACnB,MAAM,WAAW,GAAoB;QACnC,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;QACvB,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;QAChC,eAAe,EAAE,IAAI;QACrB,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,IAAI;QACX,gBAAgB,EAAE,IAAI;KACvB,CAAC;IACF,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IACnB,IAAI,WAA+B,CAAC;IAEpC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,iBAAiB;gBAC1B,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4BAA4B;qBACnC;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wCAAwC;qBAC/C;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,oBAAoB;gBAC7B,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2CAA2C;qBAClD;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4BAA4B;qBACnC;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,qBAAqB;qBAC5B;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,0BAA0B;gBACnC,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,aAAa;qBACpB;iBACF;aACF;YACD;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,uBAAuB;gBAChC,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,iBAAiB;gBAC1B,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4BAA4B;qBACnC;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC3C;gBACE,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,WAAoB;gBAC1B,OAAO,EAAE,QAAQ,CAAC,gBAAgB;gBAClC,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,EAAE;qBACtC;oBACD;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,gBAAgB,CAAC,EAAE;qBAC1B;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=step-show-text.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-show-text.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/step-show-text.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,192 @@
1
+ import { mkdir, mkdtemp, rm } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { bootstrap, putSchema } from "@ocas/core";
5
+ import { openStore } from "@ocas/fs";
6
+ import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
7
+ import { cmdStepShow } from "../commands/step.js";
8
+ import { writeEnvelope } from "../format.js";
9
+ import { toStepDetailPayload } from "../output-mappers.js";
10
+ import { registerUwfSchemas } from "../schemas.js";
11
+ import { createUwfStore } from "../store.js";
12
+ /**
13
+ * Issue #403 — regression guard for the `step show` **text** path.
14
+ *
15
+ * PR #394 added the `--- Content ---` turn block (plus `Usage` / `Turns`) to
16
+ * `STEP_DETAIL_TEMPLATE` and the `toStepDetailPayload` mapper flattens
17
+ * `detail.turns` into a top-level `turns` array — but no test asserted that the
18
+ * rendered text actually contains the turn bodies. A stale build (e.g. the
19
+ * published `protocol@0.4.0`) or an accidental retarget to `detail.turns` would
20
+ * go undetected.
21
+ *
22
+ * This exercises the full path
23
+ * cmdStepShow → toStepDetailPayload → writeEnvelope(text) → renderEnvelopeText
24
+ * and asserts the rendered text contains `--- Content ---`, each turn's content
25
+ * substring, and the `Turns N` line. The sibling JSON contract lives in
26
+ * `step-show-json.test.ts`; the protocol-level template invariant lives in
27
+ * `packages/protocol/src/__tests__/output-templates-step-detail.test.ts`.
28
+ */
29
+ const TURN_SCHEMA = {
30
+ title: "test-turn",
31
+ type: "object",
32
+ required: ["index", "role", "content"],
33
+ properties: {
34
+ index: { type: "integer" },
35
+ role: { type: "string", enum: ["assistant", "tool"] },
36
+ content: { type: "string" },
37
+ toolCalls: {
38
+ anyOf: [
39
+ {
40
+ type: "array",
41
+ items: {
42
+ type: "object",
43
+ required: ["name", "args"],
44
+ properties: {
45
+ name: { type: "string" },
46
+ args: { type: "string" },
47
+ },
48
+ additionalProperties: false,
49
+ },
50
+ },
51
+ { type: "null" },
52
+ ],
53
+ },
54
+ },
55
+ additionalProperties: false,
56
+ };
57
+ const DETAIL_SCHEMA = {
58
+ title: "test-detail",
59
+ type: "object",
60
+ required: ["turns"],
61
+ properties: {
62
+ turns: {
63
+ type: "array",
64
+ items: { type: "string", format: "ocas_ref" },
65
+ },
66
+ },
67
+ additionalProperties: false,
68
+ };
69
+ async function setupTest(casDir) {
70
+ const store = await openStore(casDir);
71
+ await bootstrap(store);
72
+ const schemas = await registerUwfSchemas(store);
73
+ const [turnType, detailType] = await Promise.all([
74
+ putSchema(store, TURN_SCHEMA),
75
+ putSchema(store, DETAIL_SCHEMA),
76
+ ]);
77
+ return { store, schemas, turnType, detailType };
78
+ }
79
+ async function createTestStep(setup, turnPayloads, usage) {
80
+ const { store, schemas, turnType, detailType } = setup;
81
+ const turnHashes = [];
82
+ for (const payload of turnPayloads) {
83
+ turnHashes.push(await store.cas.put(turnType, payload));
84
+ }
85
+ const detailHash = await store.cas.put(detailType, { turns: turnHashes });
86
+ const startHash = await store.cas.put(schemas.startNode, {
87
+ workflow: "0000000000000",
88
+ prompt: "test prompt",
89
+ cwd: "/tmp",
90
+ });
91
+ const outputHash = await store.cas.put(schemas.text, { $status: "reviewed" });
92
+ const stepPayload = {
93
+ prev: null,
94
+ start: startHash,
95
+ role: "reviewer",
96
+ agent: "claude-code",
97
+ output: outputHash,
98
+ detail: detailHash,
99
+ edgePrompt: "",
100
+ startedAtMs: 1_000_000,
101
+ completedAtMs: 1_137_400,
102
+ assembledPrompt: null,
103
+ cwd: "/tmp",
104
+ usage,
105
+ previousAttempts: null,
106
+ };
107
+ return store.cas.put(schemas.stepNode, stepPayload);
108
+ }
109
+ /** Capture everything written to `process.stdout` while `fn` runs. */
110
+ async function captureStdout(fn) {
111
+ const buf = [];
112
+ const spy = vi.spyOn(process.stdout, "write").mockImplementation(((chunk) => {
113
+ buf.push(typeof chunk === "string" ? chunk : Buffer.from(chunk).toString("utf8"));
114
+ return true;
115
+ }));
116
+ try {
117
+ await fn();
118
+ }
119
+ finally {
120
+ spy.mockRestore();
121
+ }
122
+ return buf.join("");
123
+ }
124
+ describe("cmdStepShow text rendering (issue #403)", () => {
125
+ let testDir;
126
+ let casDir;
127
+ let originalEnv;
128
+ beforeEach(async () => {
129
+ testDir = await mkdtemp(join(tmpdir(), "uwf-step-show-text-"));
130
+ casDir = join(testDir, "cas");
131
+ await mkdir(casDir, { recursive: true });
132
+ originalEnv = process.env.OCAS_HOME;
133
+ process.env.OCAS_HOME = casDir;
134
+ });
135
+ afterEach(async () => {
136
+ await rm(testDir, { recursive: true, force: true });
137
+ if (originalEnv === undefined) {
138
+ delete process.env.OCAS_HOME;
139
+ }
140
+ else {
141
+ process.env.OCAS_HOME = originalEnv;
142
+ }
143
+ vi.restoreAllMocks();
144
+ });
145
+ test("renders the --- Content --- block with each turn's role and content", async () => {
146
+ const setup = await setupTest(casDir);
147
+ const stepHash = await createTestStep(setup, [
148
+ { index: 0, role: "assistant", content: "first turn body", toolCalls: null },
149
+ { index: 1, role: "assistant", content: "second turn body", toolCalls: null },
150
+ ], { turns: 9, inputTokens: 38612, outputTokens: 10584, duration: 137400 });
151
+ const detail = await cmdStepShow(testDir, stepHash);
152
+ const uwf = await createUwfStore(testDir);
153
+ const out = await captureStdout(async () => writeEnvelope(toStepDetailPayload(stepHash, detail), "step-detail", {
154
+ format: "text",
155
+ store: uwf.store,
156
+ schemas: uwf.schemas,
157
+ }));
158
+ // Metadata header
159
+ expect(out).toContain(`Step ${stepHash}`);
160
+ expect(out).toContain("Role reviewer");
161
+ expect(out).toContain("Agent claude-code");
162
+ expect(out).toContain("Status reviewed");
163
+ expect(out).toContain("Duration 137.4s");
164
+ expect(out).toContain("Usage 38612 in / 10584 out / 9 turns");
165
+ // Turn-content block — the headline regression assertion
166
+ expect(out).toContain("Turns 2");
167
+ expect(out).toContain("--- Content ---");
168
+ expect(out).toContain("[assistant] first turn body");
169
+ expect(out).toContain("[assistant] second turn body");
170
+ // No JSON envelope leakage and a single trailing newline
171
+ expect(out).not.toContain('"type"');
172
+ expect(out).not.toContain("undefined");
173
+ expect(out.endsWith("\n")).toBe(true);
174
+ expect(out.endsWith("\n\n")).toBe(false);
175
+ });
176
+ test("omits the Content block for a step with zero turns, without throwing", async () => {
177
+ const setup = await setupTest(casDir);
178
+ const stepHash = await createTestStep(setup, [], null);
179
+ const detail = await cmdStepShow(testDir, stepHash);
180
+ const uwf = await createUwfStore(testDir);
181
+ const out = await captureStdout(async () => writeEnvelope(toStepDetailPayload(stepHash, detail), "step-detail", {
182
+ format: "text",
183
+ store: uwf.store,
184
+ schemas: uwf.schemas,
185
+ }));
186
+ expect(out).toContain("Role reviewer");
187
+ expect(out).not.toContain("--- Content ---");
188
+ expect(out).not.toMatch(/^Turns\s/m);
189
+ expect(out).not.toContain("undefined");
190
+ });
191
+ });
192
+ //# sourceMappingURL=step-show-text.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-show-text.test.js","sourceRoot":"","sources":["../../src/__tests__/step-show-text.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * #423 — CLI subprocess integration test for `uwf step turns`.
3
+ *
4
+ * This test exercises the full CLI invocation path via subprocess (`execFileSync`),
5
+ * catching regressions that function-level tests cannot detect:
6
+ * - Argument parsing (yargs configuration)
7
+ * - Output formatting at the command boundary
8
+ * - Environment variable handling (UWF_HOME, OCAS_HOME)
9
+ * - Exit code behavior
10
+ *
11
+ * The test covers a RECURRING ROLE scenario (developer → reviewer → developer)
12
+ * which was the root cause of #412 and is the most likely to regress.
13
+ *
14
+ * Existing function-level tests (step-turns.test.ts, step-turns-panorama-phase3.test.ts)
15
+ * verify `cmdStepTurns` directly — this test does NOT duplicate those; it only
16
+ * adds the missing subprocess/CLI-level coverage.
17
+ *
18
+ * Follows the pattern established in thread-start-cwd-cli.test.ts.
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=step-turns-cli-subprocess.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-turns-cli-subprocess.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/step-turns-cli-subprocess.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -0,0 +1,356 @@
1
+ /**
2
+ * #423 — CLI subprocess integration test for `uwf step turns`.
3
+ *
4
+ * This test exercises the full CLI invocation path via subprocess (`execFileSync`),
5
+ * catching regressions that function-level tests cannot detect:
6
+ * - Argument parsing (yargs configuration)
7
+ * - Output formatting at the command boundary
8
+ * - Environment variable handling (UWF_HOME, OCAS_HOME)
9
+ * - Exit code behavior
10
+ *
11
+ * The test covers a RECURRING ROLE scenario (developer → reviewer → developer)
12
+ * which was the root cause of #412 and is the most likely to regress.
13
+ *
14
+ * Existing function-level tests (step-turns.test.ts, step-turns-panorama-phase3.test.ts)
15
+ * verify `cmdStepTurns` directly — this test does NOT duplicate those; it only
16
+ * adds the missing subprocess/CLI-level coverage.
17
+ *
18
+ * Follows the pattern established in thread-start-cwd-cli.test.ts.
19
+ */
20
+ import { execFileSync } from "node:child_process";
21
+ import { mkdir, rm } from "node:fs/promises";
22
+ import { tmpdir } from "node:os";
23
+ import { dirname, join } from "node:path";
24
+ import { fileURLToPath } from "node:url";
25
+ import { putSchema } from "@ocas/core";
26
+ import { afterEach, beforeEach, describe, expect, test } from "vitest";
27
+ import { createUwfStore, setActiveTurnHead, setThread, writeStepStart, writeTurnNode, } from "../store.js";
28
+ // ── test setup ───────────────────────────────────────────────────────────────
29
+ const THREAD_ID = "06FD9WEG5BH7C8JPD04X4184E4";
30
+ const DETAIL_SCHEMA = {
31
+ title: "broker-detail-cli-test",
32
+ type: "object",
33
+ required: ["sessionId", "duration", "turnCount"],
34
+ properties: {
35
+ sessionId: { type: "string" },
36
+ duration: { type: "integer" },
37
+ turnCount: { type: "integer" },
38
+ },
39
+ additionalProperties: false,
40
+ };
41
+ let tmpDir;
42
+ let storageRoot;
43
+ let casDir;
44
+ let savedUwfHome;
45
+ let savedOcasHome;
46
+ beforeEach(async () => {
47
+ savedUwfHome = process.env.UWF_HOME;
48
+ savedOcasHome = process.env.OCAS_HOME;
49
+ tmpDir = join(tmpdir(), `uwf-step-turns-cli-${Date.now()}`);
50
+ storageRoot = join(tmpDir, "storage");
51
+ casDir = join(tmpDir, "cas");
52
+ await mkdir(storageRoot, { recursive: true });
53
+ await mkdir(casDir, { recursive: true });
54
+ });
55
+ afterEach(async () => {
56
+ if (savedUwfHome === undefined)
57
+ delete process.env.UWF_HOME;
58
+ else
59
+ process.env.UWF_HOME = savedUwfHome;
60
+ if (savedOcasHome === undefined)
61
+ delete process.env.OCAS_HOME;
62
+ else
63
+ process.env.OCAS_HOME = savedOcasHome;
64
+ if (tmpDir) {
65
+ await rm(tmpDir, { recursive: true, force: true });
66
+ }
67
+ });
68
+ /**
69
+ * Seed a thread with a recurring role pattern: developer → reviewer → developer.
70
+ * This scenario exercises the #412 fix (owner-based segmentation) and ensures
71
+ * the CLI correctly renders separate segments for the same role.
72
+ *
73
+ * Returns the thread ID for CLI invocation.
74
+ */
75
+ async function seedRecurringRoleThread(uwf) {
76
+ // Create workflow and start node
77
+ const workflowHash = uwf.store.cas.put(uwf.schemas.workflow, {
78
+ version: 1,
79
+ name: "recurring-role-test",
80
+ description: "test workflow for recurring role CLI test",
81
+ roles: {},
82
+ graph: {},
83
+ });
84
+ const startHash = uwf.store.cas.put(uwf.schemas.startNode, {
85
+ workflow: workflowHash,
86
+ prompt: "implement feature X",
87
+ cwd: "/tmp/test",
88
+ });
89
+ const detailSchemaHash = putSchema(uwf.store, DETAIL_SCHEMA);
90
+ const outputHash = uwf.store.cas.put(uwf.schemas.text, "output");
91
+ // Step 1: developer round 1 — 2 turns
92
+ const stepStart1 = writeStepStart(uwf, {
93
+ role: "developer",
94
+ edgePrompt: "Implement feature X",
95
+ stepIndex: 0,
96
+ prev: null,
97
+ start: startHash,
98
+ startedAtMs: 1000,
99
+ cwd: "/tmp/test",
100
+ });
101
+ const t1 = writeTurnNode(uwf, {
102
+ role: "assistant",
103
+ content: "DEV_R1_TURN_1: Reading requirements...",
104
+ prev: null,
105
+ owner: stepStart1,
106
+ });
107
+ const t2 = writeTurnNode(uwf, {
108
+ role: "assistant",
109
+ content: "DEV_R1_TURN_2: Implementation complete.",
110
+ prev: t1,
111
+ owner: stepStart1,
112
+ });
113
+ const detail1 = uwf.store.cas.put(detailSchemaHash, {
114
+ sessionId: "ses_dev_r1",
115
+ duration: 5,
116
+ turnCount: 2,
117
+ });
118
+ const stepNode1 = uwf.store.cas.put(uwf.schemas.stepNode, {
119
+ start: startHash,
120
+ prev: null,
121
+ role: "developer",
122
+ output: outputHash,
123
+ detail: detail1,
124
+ agent: "test-agent",
125
+ edgePrompt: "Implement feature X",
126
+ startedAtMs: 1000,
127
+ completedAtMs: 2000,
128
+ cwd: "/tmp/test",
129
+ assembledPrompt: null,
130
+ usage: null,
131
+ previousAttempts: null,
132
+ });
133
+ // Step 2: reviewer — 2 turns
134
+ const stepStart2 = writeStepStart(uwf, {
135
+ role: "reviewer",
136
+ edgePrompt: "Review the implementation",
137
+ stepIndex: 1,
138
+ prev: stepStart1,
139
+ start: startHash,
140
+ startedAtMs: 3000,
141
+ cwd: "/tmp/test",
142
+ });
143
+ const t3 = writeTurnNode(uwf, {
144
+ role: "assistant",
145
+ content: "REV_TURN_1: Reviewing code quality...",
146
+ prev: t2,
147
+ owner: stepStart2,
148
+ });
149
+ const t4 = writeTurnNode(uwf, {
150
+ role: "assistant",
151
+ content: "REV_TURN_2: Found issues, requesting changes.",
152
+ prev: t3,
153
+ owner: stepStart2,
154
+ });
155
+ const detail2 = uwf.store.cas.put(detailSchemaHash, {
156
+ sessionId: "ses_rev",
157
+ duration: 4,
158
+ turnCount: 2,
159
+ });
160
+ const stepNode2 = uwf.store.cas.put(uwf.schemas.stepNode, {
161
+ start: startHash,
162
+ prev: stepNode1,
163
+ role: "reviewer",
164
+ output: outputHash,
165
+ detail: detail2,
166
+ agent: "test-agent",
167
+ edgePrompt: "Review the implementation",
168
+ startedAtMs: 3000,
169
+ completedAtMs: 4000,
170
+ cwd: "/tmp/test",
171
+ assembledPrompt: null,
172
+ usage: null,
173
+ previousAttempts: null,
174
+ });
175
+ // Step 3: developer round 2 — 3 turns
176
+ const stepStart3 = writeStepStart(uwf, {
177
+ role: "developer",
178
+ edgePrompt: "Address reviewer feedback",
179
+ stepIndex: 2,
180
+ prev: stepStart2,
181
+ start: startHash,
182
+ startedAtMs: 5000,
183
+ cwd: "/tmp/test",
184
+ });
185
+ const t5 = writeTurnNode(uwf, {
186
+ role: "assistant",
187
+ content: "DEV_R2_TURN_1: Reading feedback...",
188
+ prev: t4,
189
+ owner: stepStart3,
190
+ });
191
+ const t6 = writeTurnNode(uwf, {
192
+ role: "assistant",
193
+ content: "DEV_R2_TURN_2: Making requested changes...",
194
+ prev: t5,
195
+ owner: stepStart3,
196
+ });
197
+ const t7 = writeTurnNode(uwf, {
198
+ role: "assistant",
199
+ content: "DEV_R2_TURN_3: Changes complete, ready for re-review.",
200
+ prev: t6,
201
+ owner: stepStart3,
202
+ });
203
+ const detail3 = uwf.store.cas.put(detailSchemaHash, {
204
+ sessionId: "ses_dev_r2",
205
+ duration: 6,
206
+ turnCount: 3,
207
+ });
208
+ const stepNode3 = uwf.store.cas.put(uwf.schemas.stepNode, {
209
+ start: startHash,
210
+ prev: stepNode2,
211
+ role: "developer",
212
+ output: outputHash,
213
+ detail: detail3,
214
+ agent: "test-agent",
215
+ edgePrompt: "Address reviewer feedback",
216
+ startedAtMs: 5000,
217
+ completedAtMs: 6000,
218
+ cwd: "/tmp/test",
219
+ assembledPrompt: null,
220
+ usage: null,
221
+ previousAttempts: null,
222
+ });
223
+ // Set thread state — all steps completed
224
+ setThread(uwf.varStore, THREAD_ID, {
225
+ head: stepNode3,
226
+ status: "idle",
227
+ suspendedRole: null,
228
+ suspendMessage: null,
229
+ completedAt: null,
230
+ });
231
+ // Set active-turn-head to the last turn
232
+ setActiveTurnHead(uwf.store, THREAD_ID, t7);
233
+ return THREAD_ID;
234
+ }
235
+ // ── spec: step-turns-cli-subprocess-recurring-role.md ────────────────────────
236
+ describe("uwf step turns CLI subprocess integration (#423)", () => {
237
+ test("recurring role scenario (developer→reviewer→developer) via subprocess", async () => {
238
+ // Setup: seed the store with recurring role thread
239
+ process.env.OCAS_HOME = casDir;
240
+ const uwf = await createUwfStore(storageRoot);
241
+ const threadId = await seedRecurringRoleThread(uwf);
242
+ // Build paths to CLI binary
243
+ const pkgRoot = dirname(dirname(dirname(fileURLToPath(import.meta.url))));
244
+ const uwfBin = join(pkgRoot, "dist", "cli.js");
245
+ // Invoke CLI via subprocess
246
+ const output = execFileSync(process.execPath, [uwfBin, "step", "turns", threadId], {
247
+ env: { ...process.env, UWF_HOME: storageRoot, OCAS_HOME: casDir },
248
+ encoding: "utf8",
249
+ });
250
+ // Exit code 0 is implicit — execFileSync throws on non-zero exit
251
+ // Verify: 3 step groups in chronological order
252
+ const groups = output.match(/## (developer|reviewer)/g);
253
+ expect(groups).toEqual(["## developer", "## reviewer", "## developer"]);
254
+ // Verify: Both developer segments present (NOT collapsed)
255
+ const firstDevIdx = output.indexOf("## developer");
256
+ const reviewerIdx = output.indexOf("## reviewer");
257
+ const secondDevIdx = output.indexOf("## developer", reviewerIdx + 1);
258
+ expect(firstDevIdx).toBeLessThan(reviewerIdx);
259
+ expect(reviewerIdx).toBeLessThan(secondDevIdx);
260
+ // Verify: Each segment's turns are correctly attributed (no cross-segment leakage)
261
+ const devR1Section = output.slice(firstDevIdx, reviewerIdx);
262
+ const revSection = output.slice(reviewerIdx, secondDevIdx);
263
+ const devR2Section = output.slice(secondDevIdx);
264
+ // Developer round 1: 2 turns
265
+ expect(devR1Section).toContain("DEV_R1_TURN_1");
266
+ expect(devR1Section).toContain("DEV_R1_TURN_2");
267
+ expect(devR1Section).not.toContain("REV_TURN");
268
+ expect(devR1Section).not.toContain("DEV_R2_TURN");
269
+ // Reviewer: 2 turns
270
+ expect(revSection).toContain("REV_TURN_1");
271
+ expect(revSection).toContain("REV_TURN_2");
272
+ expect(revSection).not.toContain("DEV_R1_TURN");
273
+ expect(revSection).not.toContain("DEV_R2_TURN");
274
+ // Developer round 2: 3 turns
275
+ expect(devR2Section).toContain("DEV_R2_TURN_1");
276
+ expect(devR2Section).toContain("DEV_R2_TURN_2");
277
+ expect(devR2Section).toContain("DEV_R2_TURN_3");
278
+ expect(devR2Section).not.toContain("DEV_R1_TURN");
279
+ expect(devR2Section).not.toContain("REV_TURN");
280
+ // Verify: All 7 turns rendered with global numbering (Turn 1 through Turn 7)
281
+ expect(output).toContain("## Turn 1");
282
+ expect(output).toContain("## Turn 2");
283
+ expect(output).toContain("## Turn 3");
284
+ expect(output).toContain("## Turn 4");
285
+ expect(output).toContain("## Turn 5");
286
+ expect(output).toContain("## Turn 6");
287
+ expect(output).toContain("## Turn 7");
288
+ // Verify: All steps marked as completed (✓)
289
+ const checkmarks = output.match(/✓/g);
290
+ expect(checkmarks).toHaveLength(3);
291
+ });
292
+ test("CLI accepts --role filter via subprocess", async () => {
293
+ // Setup
294
+ process.env.OCAS_HOME = casDir;
295
+ const uwf = await createUwfStore(storageRoot);
296
+ const threadId = await seedRecurringRoleThread(uwf);
297
+ const pkgRoot = dirname(dirname(dirname(fileURLToPath(import.meta.url))));
298
+ const uwfBin = join(pkgRoot, "dist", "cli.js");
299
+ // Invoke CLI with --role developer
300
+ const output = execFileSync(process.execPath, [uwfBin, "step", "turns", threadId, "--role", "developer"], {
301
+ env: { ...process.env, UWF_HOME: storageRoot, OCAS_HOME: casDir },
302
+ encoding: "utf8",
303
+ });
304
+ // Verify: Only developer groups present
305
+ const groups = output.match(/## (developer|reviewer)/g);
306
+ expect(groups).toEqual(["## developer", "## developer"]);
307
+ // Verify: No reviewer turns
308
+ expect(output).not.toContain("REV_TURN");
309
+ // Verify: Both developer segment turns present
310
+ expect(output).toContain("DEV_R1_TURN");
311
+ expect(output).toContain("DEV_R2_TURN");
312
+ });
313
+ test("CLI accepts --limit and --offset pagination via subprocess", async () => {
314
+ // Setup
315
+ process.env.OCAS_HOME = casDir;
316
+ const uwf = await createUwfStore(storageRoot);
317
+ const threadId = await seedRecurringRoleThread(uwf);
318
+ const pkgRoot = dirname(dirname(dirname(fileURLToPath(import.meta.url))));
319
+ const uwfBin = join(pkgRoot, "dist", "cli.js");
320
+ // Invoke CLI with --offset 2 --limit 3 (turns 3, 4, 5)
321
+ const output = execFileSync(process.execPath, [uwfBin, "step", "turns", threadId, "--offset", "2", "--limit", "3"], {
322
+ env: { ...process.env, UWF_HOME: storageRoot, OCAS_HOME: casDir },
323
+ encoding: "utf8",
324
+ });
325
+ // Verify: Global indices Turn 3, Turn 4, Turn 5 (1-based display)
326
+ expect(output).toContain("## Turn 3");
327
+ expect(output).toContain("## Turn 4");
328
+ expect(output).toContain("## Turn 5");
329
+ // Verify: Turns 1, 2 are skipped
330
+ expect(output).not.toContain("## Turn 1");
331
+ expect(output).not.toContain("## Turn 2");
332
+ // Verify: Turns 6, 7 are beyond the limit
333
+ expect(output).not.toContain("## Turn 6");
334
+ expect(output).not.toContain("## Turn 7");
335
+ });
336
+ test("CLI exits with error for invalid thread ID", async () => {
337
+ const pkgRoot = dirname(dirname(dirname(fileURLToPath(import.meta.url))));
338
+ const uwfBin = join(pkgRoot, "dist", "cli.js");
339
+ // Invoke CLI with a non-existent thread ID
340
+ const invalidThreadId = "06FDINVALIDTHREADID000000";
341
+ try {
342
+ execFileSync(process.execPath, [uwfBin, "step", "turns", invalidThreadId], {
343
+ env: { ...process.env, UWF_HOME: storageRoot, OCAS_HOME: casDir },
344
+ encoding: "utf8",
345
+ });
346
+ // If we get here, the command didn't fail as expected
347
+ expect.fail("Expected CLI to exit with non-zero code for invalid thread ID");
348
+ }
349
+ catch (err) {
350
+ // execFileSync throws on non-zero exit — this is expected
351
+ const error = err;
352
+ expect(error.status).not.toBe(0);
353
+ }
354
+ });
355
+ });
356
+ //# sourceMappingURL=step-turns-cli-subprocess.test.js.map