@scotthuang/agent-knock-knock 0.13.11 → 0.13.13

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 (127) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +8 -9
  3. package/dist/src/codex-app-server-interaction-client.d.ts +72 -0
  4. package/dist/src/codex-app-server-interaction-client.js +311 -0
  5. package/dist/src/codex-app-server-interaction-client.js.map +1 -0
  6. package/dist/src/codex-app-server-questionnaire.d.ts +73 -0
  7. package/dist/src/codex-app-server-questionnaire.js +366 -0
  8. package/dist/src/codex-app-server-questionnaire.js.map +1 -0
  9. package/dist/src/codex-app-server-read-client.d.ts +118 -0
  10. package/dist/src/codex-app-server-read-client.js +300 -0
  11. package/dist/src/codex-app-server-read-client.js.map +1 -0
  12. package/dist/src/codex-app-server-transport.d.ts +11 -0
  13. package/dist/src/codex-app-server-transport.js +47 -0
  14. package/dist/src/codex-app-server-transport.js.map +1 -0
  15. package/dist/src/codex-async-question-adapter.d.ts +5 -0
  16. package/dist/src/codex-async-question-adapter.js +61 -17
  17. package/dist/src/codex-async-question-adapter.js.map +1 -1
  18. package/dist/src/codex-fullscreen-composer-proof.d.ts +23 -0
  19. package/dist/src/codex-fullscreen-composer-proof.js +125 -0
  20. package/dist/src/codex-fullscreen-composer-proof.js.map +1 -0
  21. package/dist/src/codex-lifecycle-compatibility.d.ts +5 -0
  22. package/dist/src/codex-lifecycle-compatibility.js +13 -1
  23. package/dist/src/codex-lifecycle-compatibility.js.map +1 -1
  24. package/dist/src/codex-paginated-answer-proof.d.ts +25 -0
  25. package/dist/src/codex-paginated-answer-proof.js +189 -0
  26. package/dist/src/codex-paginated-answer-proof.js.map +1 -0
  27. package/dist/src/codex-paginated-async-answer.d.ts +36 -0
  28. package/dist/src/codex-paginated-async-answer.js +322 -0
  29. package/dist/src/codex-paginated-async-answer.js.map +1 -0
  30. package/dist/src/codex-paginated-async-response.d.ts +21 -0
  31. package/dist/src/codex-paginated-async-response.js +118 -0
  32. package/dist/src/codex-paginated-async-response.js.map +1 -0
  33. package/dist/src/codex-paginated-observation.d.ts +30 -0
  34. package/dist/src/codex-paginated-observation.js +139 -0
  35. package/dist/src/codex-paginated-observation.js.map +1 -0
  36. package/dist/src/codex-paginated-questionnaire-runtime.d.ts +33 -0
  37. package/dist/src/codex-paginated-questionnaire-runtime.js +157 -0
  38. package/dist/src/codex-paginated-questionnaire-runtime.js.map +1 -0
  39. package/dist/src/codex-paginated-task.d.ts +78 -0
  40. package/dist/src/codex-paginated-task.js +441 -0
  41. package/dist/src/codex-paginated-task.js.map +1 -0
  42. package/dist/src/codex-paginated-thread-binding.d.ts +18 -0
  43. package/dist/src/codex-paginated-thread-binding.js +56 -0
  44. package/dist/src/codex-paginated-thread-binding.js.map +1 -0
  45. package/dist/src/codex-paginated-thread-facts.d.ts +11 -0
  46. package/dist/src/codex-paginated-thread-facts.js +2 -0
  47. package/dist/src/codex-paginated-thread-facts.js.map +1 -0
  48. package/dist/src/codex-paginated-watch.d.ts +29 -0
  49. package/dist/src/codex-paginated-watch.js +107 -0
  50. package/dist/src/codex-paginated-watch.js.map +1 -0
  51. package/dist/src/codex-terminal-agent-adapter.js +127 -7
  52. package/dist/src/codex-terminal-agent-adapter.js.map +1 -1
  53. package/dist/src/store.d.ts +1 -1
  54. package/dist/src/store.js +2 -2
  55. package/dist/src/store.js.map +1 -1
  56. package/dist/src/terminal-agent-adapter.d.ts +3 -0
  57. package/dist/src/terminal-agent-adapter.js.map +1 -1
  58. package/dist/src/terminal-agent-bridge.d.ts +13 -5
  59. package/dist/src/terminal-agent-bridge.js +28 -103
  60. package/dist/src/terminal-agent-bridge.js.map +1 -1
  61. package/dist/src/terminal-approval-fingerprint.d.ts +7 -0
  62. package/dist/src/terminal-approval-fingerprint.js +107 -0
  63. package/dist/src/terminal-approval-fingerprint.js.map +1 -0
  64. package/dist/src/terminal-command-cli-ports.d.ts +1 -0
  65. package/dist/src/terminal-composer-classifier.js +39 -1
  66. package/dist/src/terminal-composer-classifier.js.map +1 -1
  67. package/dist/src/terminal-control-provider.d.ts +6 -2
  68. package/dist/src/terminal-control-provider.js +4 -4
  69. package/dist/src/terminal-control-provider.js.map +1 -1
  70. package/dist/src/terminal-human-explicit-send-cli-adapter.js +22 -15
  71. package/dist/src/terminal-human-explicit-send-cli-adapter.js.map +1 -1
  72. package/dist/src/terminal-interaction-core.js +3 -1
  73. package/dist/src/terminal-interaction-core.js.map +1 -1
  74. package/dist/src/terminal-interaction-response-bridge.d.ts +21 -1
  75. package/dist/src/terminal-interaction-response-bridge.js +148 -3
  76. package/dist/src/terminal-interaction-response-bridge.js.map +1 -1
  77. package/dist/src/terminal-list-cli-adapter.js +4 -4
  78. package/dist/src/terminal-list-cli-adapter.js.map +1 -1
  79. package/dist/src/terminal-list-facts.d.ts +1 -1
  80. package/dist/src/terminal-list-facts.js +1 -1
  81. package/dist/src/terminal-list-facts.js.map +1 -1
  82. package/dist/src/terminal-managed-send-cli-adapter.d.ts +1 -1
  83. package/dist/src/terminal-managed-send-cli-adapter.js +27 -0
  84. package/dist/src/terminal-managed-send-cli-adapter.js.map +1 -1
  85. package/dist/src/terminal-model-control-bridge.d.ts +1 -1
  86. package/dist/src/terminal-model-control-bridge.js +1 -1
  87. package/dist/src/terminal-model-control-bridge.js.map +1 -1
  88. package/dist/src/terminal-model-control-profile.d.ts +3 -1
  89. package/dist/src/terminal-model-control-profile.js +47 -1
  90. package/dist/src/terminal-model-control-profile.js.map +1 -1
  91. package/dist/src/terminal-model-control.js +63 -21
  92. package/dist/src/terminal-model-control.js.map +1 -1
  93. package/dist/src/terminal-monitor-decision-policy.d.ts +1 -1
  94. package/dist/src/terminal-native-inspection-bridge.d.ts +6 -1
  95. package/dist/src/terminal-native-inspection-bridge.js +126 -79
  96. package/dist/src/terminal-native-inspection-bridge.js.map +1 -1
  97. package/dist/src/terminal-questionnaire-adapter.js +20 -16
  98. package/dist/src/terminal-questionnaire-adapter.js.map +1 -1
  99. package/dist/src/terminal-runtime-cli-adapter.js +17 -0
  100. package/dist/src/terminal-runtime-cli-adapter.js.map +1 -1
  101. package/dist/src/terminal-send-watch-policy.d.ts +38 -0
  102. package/dist/src/terminal-send-watch-policy.js +79 -0
  103. package/dist/src/terminal-send-watch-policy.js.map +1 -0
  104. package/dist/src/terminal-submission-facts.d.ts +1 -1
  105. package/dist/src/terminal-submission-facts.js +11 -9
  106. package/dist/src/terminal-submission-facts.js.map +1 -1
  107. package/dist/src/terminal-watch-cli-adapter.d.ts +9 -1
  108. package/dist/src/terminal-watch-cli-adapter.js +199 -210
  109. package/dist/src/terminal-watch-cli-adapter.js.map +1 -1
  110. package/dist/src/terminal-watch-codec.js +23 -1
  111. package/dist/src/terminal-watch-codec.js.map +1 -1
  112. package/dist/src/terminal-watch-interaction-runtime.js +27 -6
  113. package/dist/src/terminal-watch-interaction-runtime.js.map +1 -1
  114. package/dist/src/terminal-watch-presentation.d.ts +4 -0
  115. package/dist/src/terminal-watch-presentation.js +153 -0
  116. package/dist/src/terminal-watch-presentation.js.map +1 -0
  117. package/dist/src/terminal-watch-record.d.ts +4 -2
  118. package/dist/src/terminal-watch-record.js +15 -10
  119. package/dist/src/terminal-watch-record.js.map +1 -1
  120. package/dist/src/terminal-watch-service.js +13 -1
  121. package/dist/src/terminal-watch-service.js.map +1 -1
  122. package/docs/codex-0.158.0-compatibility.md +129 -0
  123. package/docs/codex-0.159.0-compatibility.md +150 -0
  124. package/docs/quickstart-herdr.md +3 -3
  125. package/docs/quickstart-tmux.md +5 -5
  126. package/package.json +7 -3
  127. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +14 -12
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-submission-facts.js","sourceRoot":"","sources":["../../src/terminal-submission-facts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,OAAO,EAAE,QAAQ,EAAsB,MAAM,mBAAmB,CAAC;AAuIjE,MAAM,UAAU,4CAA4C,CAC1D,KAAc,EACd,QAIC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc;QACjE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,UAAU;KACrE,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,IACE,cAAc,CAAC,KAAK,CAAC,cAAc,EAAE,0BAA0B,CAAC;QAC9D,cAAc,CAAC,QAAQ,CAAC,cAAc,EAAE,mCAAmC,CAAC;QAC9E,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,gCAAgC,CAAC;YAC9D,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,yCAAyC,CAAC,EAC9E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAC3D,WAAW,CAAC,KAAK,CAAC,iBAAiB,EAAE,sCAAsC,CAAC,CAAC;IAC7E,WAAW,CAAC,KAAK,CAAC,mBAAmB,EAAE,wCAAwC,CAAC,CAAC;IACjF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,KAAK,eAAe;YACtD,CAAC,CAAC,IAAI,GAAG,CAAC;gBACN,SAAS,EAAE,qBAAqB,EAAE,2BAA2B;aAC9D,CAAC;YACJ,CAAC,CAAC,IAAI,GAAG,CAAC;gBACN,aAAa,EAAE,gBAAgB,EAAE,oBAAoB;gBACrD,qBAAqB,EAAE,2BAA2B;gBAClD,qBAAqB;aACtB,CAAC,CAAC;QACP,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,IACE,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;gBACzB,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;oBACxB,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EACtD,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC/C,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,mBAAmB,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAwD,CAAC;AAClE,CAAC;AAED,MAAM,wBAAwB,GAC5B,kEAAkE,CAAC;AAErE,MAAM,UAAU,wBAAwB,CACtC,YAAqB;IAErB,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;QACxD,CAAC,CAAC,MAAM,CAAC,uBAAuB;QAChC,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;QACnD,CAAC,CAAC,QAAQ,CAAC,0BAA0B;QACrC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,KAAc;IAEd,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,KAAK,CAAC,MAAM,KAAK,mDAAmD;QACpE,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC,UAAU,EAAE,qBAAqB,EAAE,eAAe,CAAC,CAAC,QAAQ,CAC5D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CACnB;QACD,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;QACxC,KAAK,CAAC,YAAuB,GAAG,CAAC;QAClC,OAAO,KAAK,CAAC,YAAY,KAAK,SAAS,EACvC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACxB,mBAAmB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAI,uBAAuB,IAAI,KAAK,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAChC,KAAK,CAAC,IAAI,KAAK,qBAAqB;QACpC,KAAK,CAAC,qBAAqB,KAAK,iBAAiB;QACjD,kBAAkB,IAAI,KAAK,CAC5B,EAAE,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAChC,KAAK,CAAC,IAAI,KAAK,eAAe;QAC9B,KAAK,CAAC,qBAAqB,KAAK,iBAAiB;QACjD,kBAAkB,IAAI,KAAK;QAC3B,KAAK,CAAC,YAAY,KAAK,KAAK;QAC5B,KAAK,CAAC,YAAY,KAAK,CAAC;QACxB,OAAO,KAAK,CAAC,kBAAkB,KAAK,SAAS;QAC7C,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC;QACzC,KAAK,CAAC,aAAwB,IAAI,CAAC;QACpC,CAAC,sBAAsB,CAAC,KAAK,CAAC,aAAa,CAAC;QAC5C,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC5D,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACxC,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,GAAG;QACrC,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,CACrE,EAAE,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;IACzD,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAC3D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,WAAW,CAAC,KAAK,CAAC,kBAAkB,EAAE,qCAAqC,CAAC,CAAC;IAC7E,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC5D,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,kBAA+B,EAAE,CAAC;YAC9D,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,MAAM,YAAY,GAAG,eAAe,EAAE,OAAO,CAAC;YAC9C,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,cAAc,GAAG,mBAAmB,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAC7E,MAAM,OAAO,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;YACxD,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC;gBAClD,eAAe,CAAC,YAAuB,GAAG,CAAC;gBAC5C,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC;gBAC/B,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,EACnD,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAChC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAChF,CAAC;YACD,yBAAyB,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,6BAA6B,KAAK,SAAS,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;aAAM,IACL,KAAK,CAAC,YAAY,KAAK,CAAC;YACxB,OAAO,KAAK,SAAS;YACrB,KAAK,CAAC,6BAA6B,KAAK,IAAI,EAC5C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,OAAO,KAAgD,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAA2C;IAE3C,MAAM,UAAU,GAAG;QACjB,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,0BAA0B,CAAC;QACxD,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,CAAC;QAC5D,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC;QACzD,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC;KACvD,CAAC;IACF,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3E,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,KAAa;IACvD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yBAAyB,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,KAAa;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"terminal-submission-facts.js","sourceRoot":"","sources":["../../src/terminal-submission-facts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,OAAO,EAAE,QAAQ,EAAsB,MAAM,mBAAmB,CAAC;AAuIjE,MAAM,UAAU,4CAA4C,CAC1D,KAAc,EACd,QAIC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc;QACjE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,UAAU;KACrE,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,IACE,cAAc,CAAC,KAAK,CAAC,cAAc,EAAE,0BAA0B,CAAC;QAC9D,cAAc,CAAC,QAAQ,CAAC,cAAc,EAAE,mCAAmC,CAAC;QAC9E,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,gCAAgC,CAAC;YAC9D,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,yCAAyC,CAAC,EAC9E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAC3D,WAAW,CAAC,KAAK,CAAC,iBAAiB,EAAE,sCAAsC,CAAC,CAAC;IAC7E,WAAW,CAAC,KAAK,CAAC,mBAAmB,EAAE,wCAAwC,CAAC,CAAC;IACjF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,KAAK,iBAAiB;YACxD,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;YACtB,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,eAAe;gBAClC,CAAC,CAAC,IAAI,GAAG,CAAC;oBACN,SAAS,EAAE,qBAAqB,EAAE,2BAA2B;iBAC9D,CAAC;gBACJ,CAAC,CAAC,IAAI,GAAG,CAAC;oBACN,aAAa,EAAE,gBAAgB,EAAE,oBAAoB;oBACrD,qBAAqB,EAAE,2BAA2B;oBAClD,qBAAqB;iBACtB,CAAC,CAAC;QACP,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,IACE,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;gBACzB,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;oBACxB,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EACtD,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC/C,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,mBAAmB,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAwD,CAAC;AAClE,CAAC;AAED,MAAM,wBAAwB,GAC5B,kEAAkE,CAAC;AAErE,MAAM,UAAU,wBAAwB,CACtC,YAAqB;IAErB,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;QACxD,CAAC,CAAC,MAAM,CAAC,uBAAuB;QAChC,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;QACnD,CAAC,CAAC,QAAQ,CAAC,0BAA0B;QACrC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,KAAc;IAEd,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,KAAK,CAAC,MAAM,KAAK,mDAAmD;QACpE,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC,UAAU,EAAE,qBAAqB,EAAE,eAAe,CAAC,CAAC,QAAQ,CAC5D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CACnB;QACD,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;QACxC,KAAK,CAAC,YAAuB,GAAG,CAAC;QAClC,OAAO,KAAK,CAAC,YAAY,KAAK,SAAS,EACvC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACxB,mBAAmB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAI,uBAAuB,IAAI,KAAK,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAChC,KAAK,CAAC,IAAI,KAAK,qBAAqB;QACpC,KAAK,CAAC,qBAAqB,KAAK,iBAAiB;QACjD,kBAAkB,IAAI,KAAK,CAC5B,EAAE,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAChC,KAAK,CAAC,IAAI,KAAK,eAAe;QAC9B,KAAK,CAAC,qBAAqB,KAAK,iBAAiB;QACjD,kBAAkB,IAAI,KAAK;QAC3B,KAAK,CAAC,YAAY,KAAK,KAAK;QAC5B,KAAK,CAAC,YAAY,KAAK,CAAC;QACxB,OAAO,KAAK,CAAC,kBAAkB,KAAK,SAAS;QAC7C,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC;QACzC,KAAK,CAAC,aAAwB,IAAI,CAAC;QACpC,CAAC,sBAAsB,CAAC,KAAK,CAAC,aAAa,CAAC;QAC5C,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC5D,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACxC,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,GAAG;QACrC,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,CACrE,EAAE,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;IACzD,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAC3D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,WAAW,CAAC,KAAK,CAAC,kBAAkB,EAAE,qCAAqC,CAAC,CAAC;IAC7E,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC5D,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,kBAA+B,EAAE,CAAC;YAC9D,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,MAAM,YAAY,GAAG,eAAe,EAAE,OAAO,CAAC;YAC9C,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,cAAc,GAAG,mBAAmB,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAC7E,MAAM,OAAO,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;YACxD,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC;gBAClD,eAAe,CAAC,YAAuB,GAAG,CAAC;gBAC5C,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC;gBAC/B,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,EACnD,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAChC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAChF,CAAC;YACD,yBAAyB,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,6BAA6B,KAAK,SAAS,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;aAAM,IACL,KAAK,CAAC,YAAY,KAAK,CAAC;YACxB,OAAO,KAAK,SAAS;YACrB,KAAK,CAAC,6BAA6B,KAAK,IAAI,EAC5C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,OAAO,KAAgD,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAA2C;IAE3C,MAAM,UAAU,GAAG;QACjB,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,0BAA0B,CAAC;QACxD,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,CAAC;QAC5D,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC;QACzD,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC;KACvD,CAAC;IACF,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3E,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,KAAa;IACvD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yBAAyB,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,KAAa;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -1,3 +1,6 @@
1
+ import { readCodexPaginatedTaskSnapshot } from "./codex-paginated-observation.js";
2
+ import { type CodexPaginatedTaskAnchor } from "./codex-paginated-task.js";
3
+ import { capturePaginatedWatchAnchor as capturePaginatedAnchor } from "./codex-paginated-watch.js";
1
4
  import { type CallbackRouteV1 } from "./callback-transport.js";
2
5
  import type { ClaudeAgentRow } from "./claude-terminal-agent-adapter.js";
3
6
  import type { ExecutorKind } from "./executors.js";
@@ -39,12 +42,14 @@ export interface PreparedUserExplicitFallbackWatch {
39
42
  openclawSession: string;
40
43
  openclawBin: string;
41
44
  timeoutMs: number;
42
- anchor: UserExplicitFallbackWatchAnchor;
45
+ anchor: UserExplicitFallbackWatchAnchor | CodexPaginatedTaskAnchor;
43
46
  }
44
47
  export interface UserExplicitFallbackWatchReceipt {
45
48
  callback_expected: true;
46
49
  callback_mode: "terminal_watch";
47
50
  watch_id: string;
51
+ watch_mode?: "exact_task" | "terminal_activity";
52
+ confidence?: "exact" | "best_effort";
48
53
  }
49
54
  type ExactTerminalWatchObservation = {
50
55
  state: "available";
@@ -61,6 +66,8 @@ type ExactTerminalWatchObservation = {
61
66
  summary: Record<string, unknown>;
62
67
  };
63
68
  export interface TerminalWatchCliDependencies {
69
+ capturePaginatedAnchor?: typeof capturePaginatedAnchor;
70
+ readPaginatedSnapshot?: typeof readCodexPaginatedTaskSnapshot;
64
71
  acquireFileLock(lockPath: string): () => void;
65
72
  acquireTerminalLock(storeDir: string, terminalControl: TerminalControlRef): () => void;
66
73
  createBridge?(options: TerminalWatchCliOptions): TerminalAgentBridge;
@@ -85,6 +92,7 @@ export interface TerminalWatchCliFacade {
85
92
  options: TerminalWatchCliOptions;
86
93
  terminal: UserExplicitFallbackWatchTarget;
87
94
  requestHash: string;
95
+ requestText?: string;
88
96
  messageId: string;
89
97
  physicalToken: string;
90
98
  }): Promise<PreparedUserExplicitFallbackWatch | undefined>;
@@ -1,10 +1,15 @@
1
+ import { isCodexPaginatedVersion } from "./codex-lifecycle-compatibility.js";
2
+ import { respondCodexPaginatedAsyncQuestion } from "./codex-paginated-async-response.js";
3
+ import { publicTerminalWatch, terminalWatchCapturedAgentVersion } from "./terminal-watch-presentation.js";
1
4
  import { createHash } from "node:crypto";
2
5
  import path from "node:path";
6
+ import { CodexLegacyThreadHistoryError } from "./codex-paginated-observation.js";
7
+ import { capturePaginatedWatchAnchor as capturePaginatedAnchor, isPaginatedSendWatch, paginatedWatchProcessMatches, observePaginatedWatch, refreshPaginatedResponseForeground } from "./codex-paginated-watch.js";
8
+ import { observeCodexPaginatedBlockingQuestion, respondCodexPaginatedBlockingQuestion } from "./codex-paginated-questionnaire-runtime.js";
9
+ import { selectCodexUserExplicitSendWatchSource } from "./terminal-send-watch-policy.js";
3
10
  import { callbackRouteFingerprint } from "./callback-route-authority.js";
4
11
  import { createTerminalWatchOpenClawCallbackRoute, parseCallbackRoute } from "./callback-transport.js";
5
12
  import { captureClaudeTranscriptAnchor, captureClaudeHumanStartedActiveTaskAnchor, observeClaudeUserExplicitFallbackTranscript, observeClaudeHumanStartedActiveTask } from "./claude-local-transcript-provider.js";
6
- import { claudeRuntimeCompatibilityWarning } from "./claude-lifecycle-compatibility.js";
7
- import { codexRuntimeCompatibilityProfile } from "./codex-lifecycle-compatibility.js";
8
13
  import { codexAsyncQuestionMainComposerVisible } from "./codex-async-question-adapter.js";
9
14
  import { hostProfileCallbackRouteMatchesRuntime } from "./host-profile-callback-transport.js";
10
15
  import { captureTerminalInteractionRuntimeOffer, TerminalInteractionDispatchReservedError, TerminalInteractionInputNotStartedError } from "./terminal-agent-bridge.js";
@@ -120,46 +125,9 @@ export function createTerminalWatchCliAdapter(dependencies) {
120
125
  const rawTerminal = observed.rawTerminal;
121
126
  assertSameUserExplicitFallbackTerminal(input.terminal, rawTerminal);
122
127
  const agentVersion = requiredString(rawTerminal.agent_version, "running coding-agent version");
123
- let anchor;
124
- if (input.terminal.agent === "codex") {
125
- const inventory = rawTerminal._codex_open_root_rollout_inventory;
126
- const acceptanceAnchor = isRecord(inventory)
127
- ? captureCodexCandidateSetRolloutAcceptanceAnchor({
128
- inventory: inventory,
129
- now: dependencies.now()
130
- })
131
- : captureCodexRolloutAcceptanceAnchor({
132
- nativeThreadId: requiredString(rawTerminal.native_agent_session_id, "Codex native thread id"),
133
- processUuid: requiredString(rawTerminal.native_agent_process_uuid, "Codex process UUID"),
134
- processBirth: requiredString(rawTerminal.native_agent_process_birth, "Codex process birth"),
135
- mode: "existing",
136
- rollout: codexIdentity(rawTerminal).rollout,
137
- now: dependencies.now()
138
- });
139
- anchor = createCodexUserExplicitFallbackWatchAnchor({
140
- acceptanceAnchor,
141
- requestHash: input.requestHash,
142
- codexVersion: agentVersion
143
- });
144
- }
145
- else {
146
- const transcriptAnchor = captureClaudeTranscriptAnchor({
147
- sessionId: requiredString(rawTerminal.native_agent_session_id, "Claude native session id"),
148
- cwd: terminalWorkspace(rawTerminal),
149
- pid: positiveInteger(rawTerminal.pid, "Claude PID"),
150
- claudeHome: stringValue(input.options.claudeHome),
151
- agentRows: dependencies.loadClaudeAgentRows(input.options, { required: true }),
152
- now: dependencies.now()
153
- });
154
- if (!transcriptAnchor) {
155
- throw new Error("Claude transcript anchor is unavailable before terminal input");
156
- }
157
- anchor = createClaudeUserExplicitFallbackWatchAnchor({
158
- transcriptAnchor,
159
- requestHash: input.requestHash,
160
- claudeVersion: agentVersion
161
- });
162
- }
128
+ const anchor = input.terminal.agent === "codex"
129
+ ? await captureCodexFallbackWatchAnchor(input, rawTerminal, agentVersion, dependencies)
130
+ : captureClaudeFallbackWatchAnchor(input, rawTerminal, agentVersion, dependencies);
163
131
  return {
164
132
  watchId: terminalUserExplicitFallbackWatchId({
165
133
  messageId: input.messageId,
@@ -217,7 +185,7 @@ export function createTerminalWatchCliAdapter(dependencies) {
217
185
  catch (error) {
218
186
  const existing = service.list().find((candidate) => candidate.watch_id === input.prepared.watchId);
219
187
  if (!existing ||
220
- !isUserExplicitFallbackWatch(existing) ||
188
+ !(isUserExplicitFallbackWatch(existing) || isPaginatedSendWatch(existing)) ||
221
189
  existing.anchor.anchor_fingerprint !==
222
190
  input.prepared.anchor.anchor_fingerprint) {
223
191
  throw error;
@@ -227,7 +195,9 @@ export function createTerminalWatchCliAdapter(dependencies) {
227
195
  return {
228
196
  callback_expected: true,
229
197
  callback_mode: "terminal_watch",
230
- watch_id: watch.watch_id
198
+ watch_id: watch.watch_id,
199
+ watch_mode: "exact_task",
200
+ confidence: "exact"
231
201
  };
232
202
  }
233
203
  async function bestEffortStabilizePriorFallbackWatch(options, terminalId, requestHash) {
@@ -254,13 +224,15 @@ export function createTerminalWatchCliAdapter(dependencies) {
254
224
  function userExplicitFallbackWatchReceipt(input) {
255
225
  try {
256
226
  const watch = serviceFor(input.options).get(input.watchId);
257
- if (!isUserExplicitFallbackWatch(watch) || !watch.callback_route) {
227
+ if (!(isUserExplicitFallbackWatch(watch) || isPaginatedSendWatch(watch)) || !watch.callback_route) {
258
228
  return undefined;
259
229
  }
260
230
  return {
261
231
  callback_expected: true,
262
232
  callback_mode: "terminal_watch",
263
- watch_id: watch.watch_id
233
+ watch_id: watch.watch_id,
234
+ watch_mode: "exact_task",
235
+ confidence: "exact"
264
236
  };
265
237
  }
266
238
  catch {
@@ -285,7 +257,9 @@ export function createTerminalWatchCliAdapter(dependencies) {
285
257
  const warnings = [];
286
258
  let anchor;
287
259
  try {
288
- anchor = captureTerminalWatchAnchor(agent, rawTerminal, options, dependencies);
260
+ anchor = agent === "codex" && isCodexPaginatedVersion(rawTerminal.agent_version)
261
+ ? await capturePaginatedWatchAnchorWithLock(rawTerminal, options, dependencies)
262
+ : captureTerminalWatchAnchor(agent, rawTerminal, options, dependencies);
289
263
  }
290
264
  catch (error) {
291
265
  warnings.push(`exact_task_anchor_unavailable: ${safeDiagnostic(error)}`);
@@ -481,20 +455,57 @@ function createTerminalWatchInteractionResponder(dependencies, serviceFor) {
481
455
  if (!bridge) {
482
456
  throw new Error("terminal interaction bridge is unavailable");
483
457
  }
458
+ if (runtime.codexPaginatedThread && executableInteraction.projection.kind === "async_question") {
459
+ await refreshPaginatedResponseForeground(bridge, terminalControl, runtime, dependencies.now);
460
+ }
484
461
  const attemptId = dependencies.randomUUID();
485
462
  const responseHash = hashTerminalInteractionResponse(response);
486
463
  const reservation = { attemptId, responseHash };
487
464
  const result = await executeTerminalInteractionResponseTransaction({
488
465
  reservationFailureFence: "confirmed",
489
- dispatch: (hooks) => bridge.respondInteraction(current.agent, terminalControl, response, {
490
- agentVersion: version,
491
- expectedFingerprint,
492
- expectedExpiresAt,
493
- scrollbackLines: Number(options.scrollbackLines ?? 120),
494
- runtime,
495
- authorize: hooks.authorize,
496
- beforeDispatch: hooks.beforeDispatch
497
- }),
466
+ dispatch: (hooks) => "schema" in current.observation_checkpoint &&
467
+ current.observation_checkpoint.schema === "agent-knock-knock/codex-paginated-task-checkpoint" &&
468
+ executableInteraction.projection.kind === "questionnaire"
469
+ ? respondCodexPaginatedBlockingQuestion({
470
+ watch: current, checkpoint: current.observation_checkpoint, terminalControl,
471
+ response, expectedFingerprint, now: dependencies.now,
472
+ authorize: hooks.authorize, beforeDispatch: hooks.beforeDispatch,
473
+ persistDraft: (draft) => {
474
+ current = repository.withWriterLease((scope) => scope.withWatchLock(watchId, () => {
475
+ const latest = scope.load(watchId);
476
+ const checkpoint = latest.observation_checkpoint;
477
+ if (!("schema" in checkpoint) || checkpoint.schema !== "agent-knock-knock/codex-paginated-task-checkpoint") {
478
+ throw new Error("Codex blocking question checkpoint changed");
479
+ }
480
+ const nextCheckpoint = { ...checkpoint };
481
+ if (draft)
482
+ nextCheckpoint.blocking_question_draft = draft;
483
+ else
484
+ delete nextCheckpoint.blocking_question_draft;
485
+ return scope.save({ ...latest,
486
+ observation_checkpoint: nextCheckpoint,
487
+ updated_at: dependencies.now().toISOString()
488
+ }, { expectedRevision: terminalWatchRevision(latest) });
489
+ }));
490
+ }
491
+ })
492
+ : runtime.codexPaginatedThread && executableInteraction.projection.kind === "async_question"
493
+ ? respondCodexPaginatedAsyncQuestion({
494
+ bridge, terminalControl, terminalEvidence: current.terminal.terminal_endpoint,
495
+ runtime, response, now: dependencies.now,
496
+ options: { agentVersion: version, expectedFingerprint, expectedExpiresAt,
497
+ scrollbackLines: Number(options.scrollbackLines ?? 120), runtime,
498
+ authorize: hooks.authorize, beforeDispatch: hooks.beforeDispatch }
499
+ })
500
+ : bridge.respondInteraction(current.agent, terminalControl, response, {
501
+ agentVersion: version,
502
+ expectedFingerprint,
503
+ expectedExpiresAt,
504
+ scrollbackLines: Number(options.scrollbackLines ?? 120),
505
+ runtime,
506
+ authorize: hooks.authorize,
507
+ beforeDispatch: hooks.beforeDispatch
508
+ }),
498
509
  authorize: ({ projection, fingerprint }) => {
499
510
  const latest = repository.load(watchId);
500
511
  const interaction = requiredExecutableWatchInteraction(latest, interactionId, expectedFingerprint);
@@ -743,6 +754,9 @@ function sameManualWatchTarget(watch, agent, terminal, anchor) {
743
754
  function sameManualWatchAnchorTarget(left, right) {
744
755
  if (left.schema !== right.schema)
745
756
  return false;
757
+ if (left.schema === "agent-knock-knock/codex-paginated-task-anchor" && right.schema === left.schema) {
758
+ return samePaginatedWatchTask(left, right);
759
+ }
746
760
  if (left.schema ===
747
761
  "agent-knock-knock/codex-human-started-active-task-anchor" &&
748
762
  right.schema === left.schema) {
@@ -755,11 +769,7 @@ function sameManualWatchAnchorTarget(left, right) {
755
769
  if (left.schema ===
756
770
  "agent-knock-knock/claude-human-started-active-task-anchor" &&
757
771
  right.schema === left.schema) {
758
- return left.prompt_uuid === right.prompt_uuid &&
759
- left.pid === right.pid &&
760
- left.agent_started_at_ms === right.agent_started_at_ms &&
761
- left.device === right.device &&
762
- left.inode === right.inode;
772
+ return sameClaudeWatchTask(left, right);
763
773
  }
764
774
  if (left.schema === "agent-knock-knock/terminal-activity-watch-anchor" &&
765
775
  right.schema === left.schema) {
@@ -769,6 +779,18 @@ function sameManualWatchAnchorTarget(left, right) {
769
779
  }
770
780
  return left.anchor_fingerprint === right.anchor_fingerprint;
771
781
  }
782
+ function sameClaudeWatchTask(left, right) {
783
+ return left.prompt_uuid === right.prompt_uuid &&
784
+ left.pid === right.pid &&
785
+ left.agent_started_at_ms === right.agent_started_at_ms &&
786
+ left.device === right.device &&
787
+ left.inode === right.inode;
788
+ }
789
+ function samePaginatedWatchTask(left, right) {
790
+ return left.native_thread_id === right.native_thread_id && left.turn_id === right.turn_id &&
791
+ left.process_uuid === right.process_uuid && left.process_birth === right.process_birth &&
792
+ left.origin === right.origin && left.codex_home === right.codex_home;
793
+ }
772
794
  function optionalIdentityCompatible(left, right) {
773
795
  return left === undefined || right === undefined || left === right;
774
796
  }
@@ -794,6 +816,92 @@ function terminalControlForWatch(terminal) {
794
816
  }
795
817
  return terminal.terminal_control;
796
818
  }
819
+ async function captureCodexFallbackWatchAnchor(input, rawTerminal, agentVersion, dependencies) {
820
+ let inventory = rawTerminal._codex_open_root_rollout_inventory;
821
+ let paginated;
822
+ if (isCodexPaginatedVersion(agentVersion)) {
823
+ try {
824
+ paginated = await capturePaginatedWatchAnchor(rawTerminal, input.options, dependencies, input.requestText === undefined ? input.requestHash
825
+ : createHash("sha256").update(input.requestText.replace(/\r\n?/gu, "\n").trim()).digest("hex"));
826
+ }
827
+ catch (error) {
828
+ if (!(error instanceof CodexLegacyThreadHistoryError) || !isRecord(inventory) || !Array.isArray(inventory.roots))
829
+ throw error;
830
+ const roots = inventory.roots.filter((root) => root.sessionId === error.threadId);
831
+ if (roots.length !== 1)
832
+ throw error;
833
+ inventory = { ...inventory, roots };
834
+ }
835
+ }
836
+ const source = selectCodexUserExplicitSendWatchSource({
837
+ agentVersion,
838
+ legacyRootCount: isRecord(inventory) && Array.isArray(inventory.roots) ? inventory.roots.length : 0,
839
+ paginatedAnchorAvailable: paginated !== undefined
840
+ });
841
+ if (source.source === "none")
842
+ throw new Error(source.warning);
843
+ if (paginated) {
844
+ return paginated;
845
+ }
846
+ else {
847
+ const acceptanceAnchor = isRecord(inventory)
848
+ ? captureCodexCandidateSetRolloutAcceptanceAnchor({
849
+ inventory: inventory,
850
+ now: dependencies.now()
851
+ })
852
+ : captureCodexRolloutAcceptanceAnchor({
853
+ nativeThreadId: requiredString(rawTerminal.native_agent_session_id, "Codex native thread id"),
854
+ processUuid: requiredString(rawTerminal.native_agent_process_uuid, "Codex process UUID"),
855
+ processBirth: requiredString(rawTerminal.native_agent_process_birth, "Codex process birth"),
856
+ mode: "existing",
857
+ rollout: codexIdentity(rawTerminal).rollout,
858
+ now: dependencies.now()
859
+ });
860
+ return createCodexUserExplicitFallbackWatchAnchor({
861
+ acceptanceAnchor,
862
+ requestHash: input.requestHash,
863
+ codexVersion: agentVersion
864
+ });
865
+ }
866
+ }
867
+ function captureClaudeFallbackWatchAnchor(input, rawTerminal, agentVersion, dependencies) {
868
+ const transcriptAnchor = captureClaudeTranscriptAnchor({
869
+ sessionId: requiredString(rawTerminal.native_agent_session_id, "Claude native session id"),
870
+ cwd: terminalWorkspace(rawTerminal),
871
+ pid: positiveInteger(rawTerminal.pid, "Claude PID"),
872
+ claudeHome: stringValue(input.options.claudeHome),
873
+ agentRows: dependencies.loadClaudeAgentRows(input.options, { required: true }),
874
+ now: dependencies.now()
875
+ });
876
+ if (!transcriptAnchor) {
877
+ throw new Error("Claude transcript anchor is unavailable before terminal input");
878
+ }
879
+ return createClaudeUserExplicitFallbackWatchAnchor({
880
+ transcriptAnchor,
881
+ requestHash: input.requestHash,
882
+ claudeVersion: agentVersion
883
+ });
884
+ }
885
+ async function capturePaginatedWatchAnchor(terminal, options, dependencies, requestHash) {
886
+ const bridge = dependencies.createBridge?.(options);
887
+ if (dependencies.capturePaginatedAnchor) {
888
+ return dependencies.capturePaginatedAnchor({ terminal, bridge: bridge, requestHash,
889
+ codexHome: stringValue(options.codexHome), now: dependencies.now });
890
+ }
891
+ if (!bridge)
892
+ throw new Error("Codex paginated terminal inspection is unavailable");
893
+ return capturePaginatedAnchor({ terminal, bridge, requestHash,
894
+ codexHome: stringValue(options.codexHome), now: dependencies.now });
895
+ }
896
+ async function capturePaginatedWatchAnchorWithLock(terminal, options, dependencies) {
897
+ const release = dependencies.acquireTerminalLock(dependencies.storeDirFromOptions(options), terminalControlForWatch(terminal));
898
+ try {
899
+ return await capturePaginatedWatchAnchor(terminal, options, dependencies);
900
+ }
901
+ finally {
902
+ release();
903
+ }
904
+ }
797
905
  function captureTerminalWatchAnchor(agent, terminal, options, dependencies) {
798
906
  if (agent === "codex") {
799
907
  return captureCodexHumanStartedActiveTaskAnchor({
@@ -817,6 +925,23 @@ async function observeTerminalWatch(watch, options, dependencies) {
817
925
  const rawTerminal = exactTerminal.state === "available"
818
926
  ? exactTerminal.rawTerminal
819
927
  : undefined;
928
+ if (watch.anchor.schema === "agent-knock-knock/codex-paginated-task-anchor") {
929
+ const terminalMatches = Boolean(rawTerminal && terminalMatchesWatch(rawTerminal, watch) && paginatedWatchProcessMatches(rawTerminal, watch.anchor));
930
+ return observePaginatedWatch({ watch, observedAt, terminalMatches,
931
+ terminalAvailable: exactTerminal.state === "available",
932
+ readSnapshot: dependencies.readPaginatedSnapshot,
933
+ blockingQuestionnaire: (checkpoint) => observeCodexPaginatedBlockingQuestion({
934
+ watch, checkpoint, now: new Date(observedAt),
935
+ responseDecision: (surfaceId, fingerprint) => rawTerminal
936
+ ? terminalWatchResponseDecision({ ...watch, observation_checkpoint: checkpoint }, rawTerminal, surfaceId, fingerprint, options, dependencies)
937
+ : { executable: false, suppress: false }
938
+ }),
939
+ questionnaire: (checkpoint, questions) => exactTerminal.state === "available"
940
+ ? terminalWatchQuestionnaireObservation({ watch, observedAt, options, dependencies,
941
+ rawTerminal, projectedTerminal: exactTerminal.terminal, terminalMatches,
942
+ observationCheckpoint: checkpoint, codexAsyncQuestionEvidence: questions })
943
+ : undefined });
944
+ }
820
945
  const projectedTerminal = exactTerminal.state === "available"
821
946
  ? exactTerminal.terminal
822
947
  : undefined;
@@ -1331,7 +1456,8 @@ function terminalWatchQuestionnaireObservation(input, requireFallbackAttribution
1331
1456
  }),
1332
1457
  now: new Date(input.observedAt),
1333
1458
  approvalBlocked: Boolean(approvalFingerprint(input.projectedTerminal)),
1334
- trustedTerminalEvidence: input.watch.terminal.terminal_endpoint
1459
+ trustedTerminalEvidence: input.watch.terminal.terminal_endpoint,
1460
+ codexAsyncQuestionEvidence: input.codexAsyncQuestionEvidence
1335
1461
  });
1336
1462
  let offer = captureOffer("notify_only");
1337
1463
  if (!offer)
@@ -1346,7 +1472,7 @@ function terminalWatchQuestionnaireObservation(input, requireFallbackAttribution
1346
1472
  return undefined;
1347
1473
  }
1348
1474
  const responseDecision = terminalWatchResponseDecision(responseWatch, rawTerminal, offer.surfaceId, offer.promptFingerprint, input.options, input.dependencies);
1349
- if (responseDecision.executable) {
1475
+ if (responseDecision.executable && !(responseWatch.anchor.schema === "agent-knock-knock/codex-paginated-task-anchor" && offer.projection.kind === "questionnaire")) {
1350
1476
  const executableOffer = captureOffer("executable");
1351
1477
  if (!executableOffer ||
1352
1478
  executableOffer.surfaceId !== offer.surfaceId ||
@@ -1603,6 +1729,13 @@ function terminalWatchesShareExactTask(left, right) {
1603
1729
  }
1604
1730
  function terminalWatchExactTaskKey(watch) {
1605
1731
  const anchor = watch.anchor;
1732
+ if (anchor.schema === "agent-knock-knock/codex-paginated-task-anchor") {
1733
+ const checkpoint = watch.observation_checkpoint;
1734
+ const turnId = "schema" in checkpoint && checkpoint.schema === "agent-knock-knock/codex-paginated-task-checkpoint"
1735
+ ? checkpoint.acceptance_evidence?.acceptanceId ?? anchor.turn_id : anchor.turn_id;
1736
+ return turnId ? sha256({ source: "codex_paginated", thread: anchor.native_thread_id,
1737
+ task: turnId, home: anchor.codex_home, process: anchor.process_uuid }) : undefined;
1738
+ }
1606
1739
  if (anchor.schema ===
1607
1740
  "agent-knock-knock/codex-human-started-active-task-anchor") {
1608
1741
  return codexWatchTaskKey({
@@ -1808,6 +1941,9 @@ function managedTerminalInteractionEvidence(turn, surfaceId, promptFingerprint,
1808
1941
  function terminalWatchCandidateMatchesLiveContext(watch, terminal) {
1809
1942
  if (!terminalMatchesWatch(terminal, watch))
1810
1943
  return false;
1944
+ if (watch.anchor.schema === "agent-knock-knock/codex-paginated-task-anchor") {
1945
+ return paginatedWatchProcessMatches(terminal, watch.anchor);
1946
+ }
1811
1947
  const sessionId = stringValue(terminal.native_agent_session_id);
1812
1948
  if (watch.anchor.schema ===
1813
1949
  "agent-knock-knock/codex-human-started-active-task-anchor") {
@@ -2160,125 +2296,6 @@ function codexIdentityForWatch(watch) {
2160
2296
  rollout: watch.anchor.rollout
2161
2297
  };
2162
2298
  }
2163
- function publicTerminalWatch(watch, additionalWarnings = [], exposeInteraction = false) {
2164
- const pending = watch.notification_outbox.filter(({ status }) => status === "pending" || status === "delivering" || status === "failed").length;
2165
- const capturedAgentVersion = terminalWatchCapturedAgentVersion(watch);
2166
- const compatibilityWarning = capturedAgentVersion === undefined
2167
- ? undefined
2168
- : watch.agent === "codex"
2169
- ? codexRuntimeCompatibilityProfile(capturedAgentVersion)
2170
- ?.compatibilityWarning
2171
- : claudeRuntimeCompatibilityWarning(capturedAgentVersion);
2172
- const userExplicitFallback = isUserExplicitFallbackWatch(watch);
2173
- const terminalActivityFallback = isTerminalActivityWatch(watch);
2174
- const warnings = [...new Set([
2175
- ...(watch.warnings ?? []),
2176
- ...additionalWarnings
2177
- ])];
2178
- const latestFailedCallback = [...watch.notification_outbox]
2179
- .reverse()
2180
- .find(({ status }) => status === "failed");
2181
- const currentInteraction = exposeInteraction && watch.status === "active" &&
2182
- watch.current_interaction &&
2183
- ["pending", "reserved", "response_uncertain"].includes(watch.current_interaction.aggregate.state)
2184
- ? watch.current_interaction
2185
- : undefined;
2186
- const interactionProjection = currentInteraction?.aggregate.state ===
2187
- "reserved"
2188
- ? {
2189
- ...currentInteraction.projection,
2190
- state: "response_uncertain",
2191
- capabilities: {
2192
- ...currentInteraction.projection.capabilities,
2193
- respond: false
2194
- }
2195
- }
2196
- : currentInteraction?.projection;
2197
- return {
2198
- watch_id: watch.watch_id,
2199
- source: userExplicitFallback
2200
- ? "terminal_user_explicit_fallback_watch"
2201
- : terminalActivityFallback
2202
- ? "terminal_activity_watch"
2203
- : "user_selected_terminal_watch",
2204
- watch_mode: terminalActivityFallback ? "terminal_activity" : "exact_task",
2205
- confidence: terminalActivityFallback ? "best_effort" : "exact",
2206
- interaction_policy: watch.interaction_policy,
2207
- capabilities: {
2208
- interaction_notify: true,
2209
- interaction_respond: Boolean(interactionProjection?.state === "pending" &&
2210
- interactionProjection.capabilities.respond)
2211
- },
2212
- agent: watch.agent,
2213
- terminal_id: watch.terminal.terminal_id,
2214
- native_thread_id: terminalWatchNativeThreadId(watch),
2215
- workspace: watch.terminal.workspace,
2216
- status: watch.status,
2217
- activity_state: watch.status === "active" ? "watching" : "settled",
2218
- created_at: watch.created_at,
2219
- deadline_at: watch.deadline_at,
2220
- updated_at: watch.updated_at,
2221
- last_activity_at: watch.last_activity_at,
2222
- ...(compatibilityWarning
2223
- ? { compatibility_warning: compatibilityWarning }
2224
- : {}),
2225
- ...(warnings.length > 0
2226
- ? { warnings }
2227
- : {}),
2228
- callback: {
2229
- pending,
2230
- delivered: watch.notification_outbox.filter(({ status }) => status === "delivered").length,
2231
- failed: watch.notification_outbox.filter(({ status }) => status === "failed").length,
2232
- superseded: watch.notification_outbox.filter(({ status }) => status === "superseded").length,
2233
- ...(latestFailedCallback?.last_error_code
2234
- ? { last_error_code: latestFailedCallback.last_error_code }
2235
- : {})
2236
- },
2237
- ...(interactionProjection
2238
- ? {
2239
- interaction_state: interactionProjection,
2240
- interaction_prompt_fingerprint: interactionProjection.prompt_fingerprint
2241
- }
2242
- : {}),
2243
- ...(watch.settlement
2244
- ? {
2245
- settlement: {
2246
- kind: watch.settlement.kind,
2247
- observed_at: watch.settlement.observed_at,
2248
- reason_code: watch.settlement.reason_code,
2249
- completion_text: watch.settlement.completion_text,
2250
- completion_id: watch.settlement.completion_id,
2251
- completion_timestamp: watch.settlement.completion_timestamp
2252
- }
2253
- }
2254
- : {}),
2255
- available_actions: {
2256
- status: {
2257
- tool: "agent_knock_knock_status",
2258
- arguments: { watch_id: watch.watch_id }
2259
- },
2260
- ...(watch.status === "active"
2261
- ? {
2262
- unwatch: {
2263
- tool: "agent_knock_knock_unwatch",
2264
- arguments: { watch_id: watch.watch_id },
2265
- requires_user_intent: true
2266
- }
2267
- }
2268
- : {}),
2269
- ...(interactionProjection?.state === "pending" &&
2270
- interactionProjection.capabilities.respond
2271
- ? {
2272
- respond_interaction: {
2273
- tool: "agent_knock_knock_respond_interaction",
2274
- arguments: { watch_id: watch.watch_id },
2275
- requires_user_intent: true
2276
- }
2277
- }
2278
- : {})
2279
- }
2280
- };
2281
- }
2282
2299
  function watchStatusInteractionAccess(watch, options) {
2283
2300
  if (!Object.hasOwn(options, "openclawSession"))
2284
2301
  return false;
@@ -2288,34 +2305,6 @@ function watchStatusInteractionAccess(watch, options) {
2288
2305
  }
2289
2306
  return true;
2290
2307
  }
2291
- function terminalWatchCapturedAgentVersion(watch) {
2292
- switch (watch.anchor.schema) {
2293
- case "agent-knock-knock/codex-human-started-active-task-anchor":
2294
- case "agent-knock-knock/codex-user-explicit-fallback-watch-anchor":
2295
- return watch.anchor.codex_version;
2296
- case "agent-knock-knock/claude-human-started-active-task-anchor":
2297
- case "agent-knock-knock/claude-user-explicit-fallback-watch-anchor":
2298
- return watch.anchor.claude_version;
2299
- case "agent-knock-knock/terminal-activity-watch-anchor":
2300
- return watch.anchor.agent_version;
2301
- }
2302
- }
2303
- function terminalWatchNativeThreadId(watch) {
2304
- switch (watch.anchor.schema) {
2305
- case "agent-knock-knock/codex-human-started-active-task-anchor":
2306
- return watch.anchor.native_thread_id;
2307
- case "agent-knock-knock/claude-human-started-active-task-anchor":
2308
- return watch.anchor.session_id;
2309
- case "agent-knock-knock/codex-user-explicit-fallback-watch-anchor":
2310
- return watch.anchor.acceptance_anchor.version === 1
2311
- ? watch.anchor.acceptance_anchor.native_thread_id
2312
- : undefined;
2313
- case "agent-knock-knock/claude-user-explicit-fallback-watch-anchor":
2314
- return watch.anchor.transcript_anchor.session_id;
2315
- case "agent-knock-knock/terminal-activity-watch-anchor":
2316
- return undefined;
2317
- }
2318
- }
2319
2308
  function approvalFingerprint(terminal) {
2320
2309
  if (terminal.activity_state !== "awaiting_approval")
2321
2310
  return undefined;