@stigmer/runner 3.1.1 → 3.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/dist/.build-fingerprint +1 -1
  2. package/dist/activities/execute-cursor/attachment-resolver.d.ts +49 -8
  3. package/dist/activities/execute-cursor/attachment-resolver.js +83 -26
  4. package/dist/activities/execute-cursor/attachment-resolver.js.map +1 -1
  5. package/dist/activities/execute-cursor/capture-flow.d.ts +18 -0
  6. package/dist/activities/execute-cursor/capture-flow.js +21 -0
  7. package/dist/activities/execute-cursor/capture-flow.js.map +1 -1
  8. package/dist/activities/execute-cursor/cas-observations.d.ts +13 -0
  9. package/dist/activities/execute-cursor/cas-observations.js +39 -5
  10. package/dist/activities/execute-cursor/cas-observations.js.map +1 -1
  11. package/dist/activities/execute-cursor/hook-script.js +19 -1
  12. package/dist/activities/execute-cursor/hook-script.js.map +1 -1
  13. package/dist/activities/execute-cursor/index.d.ts +5 -0
  14. package/dist/activities/execute-cursor/index.js +222 -160
  15. package/dist/activities/execute-cursor/index.js.map +1 -1
  16. package/dist/activities/execute-cursor/message-translator.js +10 -1
  17. package/dist/activities/execute-cursor/message-translator.js.map +1 -1
  18. package/dist/activities/execute-cursor/prompt-builder.d.ts +32 -7
  19. package/dist/activities/execute-cursor/prompt-builder.js +38 -20
  20. package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
  21. package/dist/activities/execute-cursor/skill-resolver.d.ts +1 -10
  22. package/dist/activities/execute-cursor/skill-resolver.js +3 -55
  23. package/dist/activities/execute-cursor/skill-resolver.js.map +1 -1
  24. package/dist/activities/execute-cursor/stigmer-link.d.ts +35 -0
  25. package/dist/activities/execute-cursor/stigmer-link.js +73 -0
  26. package/dist/activities/execute-cursor/stigmer-link.js.map +1 -0
  27. package/dist/activities/execute-cursor/turn-boundary.d.ts +108 -0
  28. package/dist/activities/execute-cursor/turn-boundary.js +163 -0
  29. package/dist/activities/execute-cursor/turn-boundary.js.map +1 -0
  30. package/dist/activities/execute-cursor/workspace-provision.d.ts +3 -2
  31. package/dist/activities/execute-cursor/workspace-provision.js +5 -3
  32. package/dist/activities/execute-cursor/workspace-provision.js.map +1 -1
  33. package/dist/activities/execute-deep-agent/index.js +89 -5
  34. package/dist/activities/execute-deep-agent/index.js.map +1 -1
  35. package/dist/activities/execute-deep-agent/prompt-builder.d.ts +17 -0
  36. package/dist/activities/execute-deep-agent/prompt-builder.js +16 -0
  37. package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
  38. package/dist/activities/execute-deep-agent/setup.js +22 -16
  39. package/dist/activities/execute-deep-agent/setup.js.map +1 -1
  40. package/dist/activities/execute-deep-agent/streaming-v3.js +6 -1
  41. package/dist/activities/execute-deep-agent/streaming-v3.js.map +1 -1
  42. package/dist/activities/execute-deep-agent/streaming.d.ts +7 -0
  43. package/dist/activities/execute-deep-agent/streaming.js +5 -1
  44. package/dist/activities/execute-deep-agent/streaming.js.map +1 -1
  45. package/dist/config.d.ts +7 -0
  46. package/dist/config.js +9 -0
  47. package/dist/config.js.map +1 -1
  48. package/dist/middleware/approval-gate.js +36 -6
  49. package/dist/middleware/approval-gate.js.map +1 -1
  50. package/dist/runner-manager.d.ts +2 -0
  51. package/dist/runner-manager.js +2 -1
  52. package/dist/runner-manager.js.map +1 -1
  53. package/dist/runner.d.ts +2 -0
  54. package/dist/runner.js +2 -1
  55. package/dist/runner.js.map +1 -1
  56. package/dist/shared/artifact-storage.d.ts +32 -0
  57. package/dist/shared/artifact-storage.js +74 -1
  58. package/dist/shared/artifact-storage.js.map +1 -1
  59. package/dist/shared/filereview/capture.d.ts +18 -1
  60. package/dist/shared/filereview/capture.js +105 -28
  61. package/dist/shared/filereview/capture.js.map +1 -1
  62. package/dist/shared/filereview/cas-substrate.d.ts +9 -0
  63. package/dist/shared/filereview/cas-substrate.js +9 -1
  64. package/dist/shared/filereview/cas-substrate.js.map +1 -1
  65. package/dist/shared/filereview/events.d.ts +16 -0
  66. package/dist/shared/filereview/events.js +37 -0
  67. package/dist/shared/filereview/events.js.map +1 -1
  68. package/dist/shared/filereview/git-substrate.d.ts +42 -0
  69. package/dist/shared/filereview/git-substrate.js +78 -0
  70. package/dist/shared/filereview/git-substrate.js.map +1 -1
  71. package/dist/shared/filereview/index.d.ts +3 -1
  72. package/dist/shared/filereview/index.js +3 -1
  73. package/dist/shared/filereview/index.js.map +1 -1
  74. package/dist/shared/filereview/line-counts.d.ts +48 -0
  75. package/dist/shared/filereview/line-counts.js +72 -0
  76. package/dist/shared/filereview/line-counts.js.map +1 -0
  77. package/dist/shared/filereview/progress.d.ts +96 -0
  78. package/dist/shared/filereview/progress.js +134 -0
  79. package/dist/shared/filereview/progress.js.map +1 -0
  80. package/dist/shared/implement-plan-prompt.d.ts +44 -0
  81. package/dist/shared/implement-plan-prompt.js +98 -0
  82. package/dist/shared/implement-plan-prompt.js.map +1 -0
  83. package/dist/shared/plan-artifact.d.ts +59 -11
  84. package/dist/shared/plan-artifact.js +144 -16
  85. package/dist/shared/plan-artifact.js.map +1 -1
  86. package/dist/shared/plan-mode-prompt.d.ts +32 -0
  87. package/dist/shared/plan-mode-prompt.js +56 -0
  88. package/dist/shared/plan-mode-prompt.js.map +1 -0
  89. package/dist/shared/status.d.ts +11 -0
  90. package/dist/shared/status.js +12 -2
  91. package/dist/shared/status.js.map +1 -1
  92. package/dist/shared/tool-row.d.ts +30 -1
  93. package/dist/shared/tool-row.js +53 -4
  94. package/dist/shared/tool-row.js.map +1 -1
  95. package/dist/shared/workspace/session-root.d.ts +35 -0
  96. package/dist/shared/workspace/session-root.js +53 -0
  97. package/dist/shared/workspace/session-root.js.map +1 -0
  98. package/dist/shared/workspace/workspace-lock.d.ts +86 -0
  99. package/dist/shared/workspace/workspace-lock.js +187 -0
  100. package/dist/shared/workspace/workspace-lock.js.map +1 -0
  101. package/package.json +8 -5
  102. package/src/__tests__/config.test.ts +8 -0
  103. package/src/activities/__tests__/classify-tool-approvals.test.ts +1 -0
  104. package/src/activities/__tests__/discover-mcp-server.test.ts +1 -0
  105. package/src/activities/execute-cursor/__tests__/attachment-resolver.test.ts +161 -0
  106. package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +132 -2
  107. package/src/activities/execute-cursor/__tests__/cas-observations.test.ts +55 -0
  108. package/src/activities/execute-cursor/__tests__/delta-enricher.test.ts +68 -0
  109. package/src/activities/execute-cursor/__tests__/hitl-ledger.test.ts +28 -0
  110. package/src/activities/execute-cursor/__tests__/hook-script.test.ts +63 -4
  111. package/src/activities/execute-cursor/__tests__/turn-boundary.test.ts +280 -0
  112. package/src/activities/execute-cursor/__tests__/workspace-provision.test.ts +36 -2
  113. package/src/activities/execute-cursor/attachment-resolver.ts +116 -34
  114. package/src/activities/execute-cursor/capture-flow.ts +32 -0
  115. package/src/activities/execute-cursor/cas-observations.ts +41 -5
  116. package/src/activities/execute-cursor/hook-script.ts +19 -1
  117. package/src/activities/execute-cursor/index.ts +243 -178
  118. package/src/activities/execute-cursor/message-translator.ts +9 -1
  119. package/src/activities/execute-cursor/prompt-builder.ts +60 -22
  120. package/src/activities/execute-cursor/skill-resolver.ts +3 -59
  121. package/src/activities/execute-cursor/stigmer-link.ts +78 -0
  122. package/src/activities/execute-cursor/turn-boundary.ts +274 -0
  123. package/src/activities/execute-cursor/workspace-provision.ts +5 -3
  124. package/src/activities/execute-deep-agent/__tests__/hitl-resume-approve-all.test.ts +7 -2
  125. package/src/activities/execute-deep-agent/__tests__/hitl-resume-history.test.ts +7 -2
  126. package/src/activities/execute-deep-agent/__tests__/index.test.ts +4 -1
  127. package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +99 -0
  128. package/src/activities/execute-deep-agent/__tests__/sequential-gate-resume.test.ts +7 -2
  129. package/src/activities/execute-deep-agent/index.ts +104 -5
  130. package/src/activities/execute-deep-agent/prompt-builder.ts +39 -0
  131. package/src/activities/execute-deep-agent/setup.ts +25 -17
  132. package/src/activities/execute-deep-agent/streaming-v3.ts +6 -1
  133. package/src/activities/execute-deep-agent/streaming.ts +12 -1
  134. package/src/config.ts +17 -0
  135. package/src/middleware/__tests__/approval-gate.test.ts +77 -12
  136. package/src/middleware/approval-gate.ts +39 -7
  137. package/src/runner-manager.ts +6 -1
  138. package/src/runner.ts +6 -1
  139. package/src/shared/__tests__/artifact-storage.test.ts +111 -1
  140. package/src/shared/__tests__/implement-plan-prompt.test.ts +86 -0
  141. package/src/shared/__tests__/plan-artifact.test.ts +142 -9
  142. package/src/shared/__tests__/secret-leak-scan.test.ts +105 -0
  143. package/src/shared/__tests__/status.test.ts +7 -2
  144. package/src/shared/__tests__/tool-row.test.ts +136 -1
  145. package/src/shared/artifact-storage.ts +83 -1
  146. package/src/shared/filereview/__tests__/capture.test.ts +182 -1
  147. package/src/shared/filereview/__tests__/cas-substrate.test.ts +34 -0
  148. package/src/shared/filereview/__tests__/events.test.ts +105 -0
  149. package/src/shared/filereview/__tests__/line-counts.test.ts +73 -0
  150. package/src/shared/filereview/__tests__/progress.test.ts +236 -0
  151. package/src/shared/filereview/capture.ts +134 -30
  152. package/src/shared/filereview/cas-substrate.ts +17 -1
  153. package/src/shared/filereview/events.ts +50 -0
  154. package/src/shared/filereview/git-substrate.ts +108 -0
  155. package/src/shared/filereview/index.ts +22 -1
  156. package/src/shared/filereview/line-counts.ts +83 -0
  157. package/src/shared/filereview/progress.ts +186 -0
  158. package/src/shared/implement-plan-prompt.ts +104 -0
  159. package/src/shared/plan-artifact.ts +152 -16
  160. package/src/shared/plan-mode-prompt.ts +56 -0
  161. package/src/shared/status.ts +11 -1
  162. package/src/shared/tool-row.ts +58 -5
  163. package/src/shared/workspace/__tests__/session-root.test.ts +42 -0
  164. package/src/shared/workspace/__tests__/workspace-lock.test.ts +200 -0
  165. package/src/shared/workspace/session-root.ts +60 -0
  166. package/src/shared/workspace/workspace-lock.ts +241 -0
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/prompt-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/prompt-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8DAA8D,CAAC;AAC/G,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAE/C;;;;GAIG;AACH,MAAM,mBAAmB,GAAG;IAC1B,0BAA0B;IAC1B,yBAAyB;IACzB,gBAAgB;IAChB,eAAe;CACP,CAAC;AA0BX;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA8B;IAChE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,UAAU,GAAG,2BAA2B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACxE,IAAI,UAAU,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,0BAA0B,CAC9C,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,eAAe,CACxB,CAAC;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9D,6EAA6E;IAC7E,wEAAwE;IACxE,qDAAqD;IACrD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAE5C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,WAAW,mBAAmB,CAAC,CAAC;IAEzE,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB,CACrC,gBAAmC,EACnC,iBAA8C,EAC9C,qBAA0C,IAAI,GAAG,EAAE;IAEnD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,UAAU,GACd,MAAM,KAAK,cAAc,CAAC,OAAO,IAAI,MAAM,KAAK,cAAc,CAAC,WAAW,CAAC;QAC7E,IAAI,UAAU,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;YACxD,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,MAAM,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,2EAA2E;YACzE,0EAA0E;YAC1E,yEAAyE;YACzE,SAAS;YACT,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACjD,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CACR,4EAA4E;YAC1E,uBAAuB;YACvB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3C,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CACR,0EAA0E;YACxE,2CAA2C;YAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,uEAAuE;IACvE,KAAK,CAAC,IAAI,CACR,4EAA4E;QAC1E,yEAAyE;QACzE,uEAAuE,CAC1E,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,EAAmB;IAC3C,IAAI,EAAE,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC,OAAO,CAAC;IAClC,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;IACnF,IAAI,CAAC,EAAE,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;QACzC,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG;QACpC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC;IACnB,OAAO,GAAG,IAAI,KAAK,OAAO,GAAG,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CACV,kBAAkB,GAAG,2CAA2C;gBAChE,gEAAgE,CACjE,CAAC;YACF,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,YAAoB;IAChD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,YAAoB;IACrD,OAAO,yBAAyB,YAAY,yBAAyB,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAuB;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,eAAe,CAAC,CAAC,IAAI,IAAI,CAClE,CAAC;IACF,OAAO;QACL,oBAAoB;QACpB,mJAAmJ;QACnJ,EAAE;QACF,GAAG,OAAO;QACV,qBAAqB;KACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAAqB;IAC1D,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,cAAc,GAAG,IAAI,CAAC;YACtB,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG;QACZ,wBAAwB;QACxB,4EAA4E;QAC5E,2EAA2E;QAC3E,qDAAqD;QACrD,EAAE;QACF,uBAAuB;QACvB,EAAE;QACF,GAAG,OAAO;QACV,EAAE;QACF,mBAAmB;QACnB,qEAAqE;QACrE,sGAAsG;QACtG,oEAAoE;KACrE,CAAC;IAEF,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CACR,8EAA8E;YAC5E,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,wBAAwB;QACxB,0EAA0E;QAC1E,wEAAwE;QACxE,uEAAuE;QACvE,2EAA2E;QAC3E,qBAAqB;QACrB,EAAE;QACF,4EAA4E;QAC5E,4EAA4E;QAC5E,uDAAuD;QACvD,yBAAyB;KAC1B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAc;IACnD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,mCAAmC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACpE,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrD,OAAO;QACL,aAAa;QACb,sDAAsD;QACtD,GAAG,OAAO;QACV,cAAc;KACf,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO;QACL,eAAe;QACf,wFAAwF;QACxF,GAAG,OAAO;QACV,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO;QACL,oBAAoB;QACpB,iFAAiF;QACjF,GAAG,OAAO;QACV,qBAAqB;KACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAiC;IAEjC,IAAI,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAC5E,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,aAAkC,EAClC,eAAyB;IAEzB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,2BAA2B,CAC3C,oBAAoB,CAAC,eAAe,CAAC,CACtC,CAAC;IACF,OAAO,CAAC,kBAAkB,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,kBAAkB;QAClB,2CAA2C;QAC3C,8DAA8D;QAC9D,iEAAiE;QACjE,wDAAwD;QACxD,mBAAmB;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,4BAA4B,GAChC,0FAA0F,CAAC;AAE7F;;;;;;;;;;;;;GAaG;AACH,MAAM,4BAA4B,GAAsB;IACtD,6KAA6K;IAC7K,wMAAwM;IACxM,+NAA+N;IAC/N,sYAAsY;IACtY,+GAA+G;CAChH,CAAC;AAEF,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,0BAA0B;QAC1B,4BAA4B;QAC5B,uCAAuC;QACvC,GAAG,4BAA4B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,2BAA2B;KAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,KAAK;QACL,2IAA2I;QAC3I,mBAAmB;QACnB,KAAK;QACL,EAAE;QACF,0BAA0B;QAC1B,EAAE;QACF,4BAA4B;QAC5B,EAAE;QACF,GAAG,4BAA4B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * - Writes SKILL.md to .stigmer/skills/{name}/SKILL.md
6
6
  * - Downloads and extracts ZIP artifacts (references/, scripts/, etc.)
7
7
  * - Uses a platform-managed directory outside the workspace
8
- * - Creates a symlink from the workspace to the platform dir
8
+ * - Ensures the workspace `.stigmer` symlink (see stigmer-link.ts)
9
9
  * - Returns metadata for prompt injection
10
10
  */
11
11
  import type { StigmerClient } from "../../client/stigmer-client.js";
@@ -23,15 +23,6 @@ export interface SkillResolverOptions {
23
23
  * with a symlink from {workspace}/.stigmer -> the platform dir.
24
24
  */
25
25
  export declare function resolveSkills(client: StigmerClient, skillRefs: ApiResourceReference[], options: SkillResolverOptions): Promise<SkillMetadata[]>;
26
- /**
27
- * Remove the workspace `.stigmer` symlink created by {@link resolveSkills}.
28
- *
29
- * Called in the activity's finally so attaching a real repo leaves no Stigmer
30
- * symlink behind once the turn ends (issue #173); a multi-turn session recreates
31
- * it on the next turn. Only ever removes a SYMLINK — a real `.stigmer` directory
32
- * (which would be the user's own, not ours) is left untouched. Best-effort.
33
- */
34
- export declare function removeStigmerSymlink(workspaceDir: string): Promise<void>;
35
26
  /**
36
27
  * Clean up platform-managed skill directory for a session.
37
28
  */
@@ -5,14 +5,14 @@
5
5
  * - Writes SKILL.md to .stigmer/skills/{name}/SKILL.md
6
6
  * - Downloads and extracts ZIP artifacts (references/, scripts/, etc.)
7
7
  * - Uses a platform-managed directory outside the workspace
8
- * - Creates a symlink from the workspace to the platform dir
8
+ * - Ensures the workspace `.stigmer` symlink (see stigmer-link.ts)
9
9
  * - Returns metadata for prompt injection
10
10
  */
11
- import { mkdir, writeFile, symlink, readlink, unlink, rm, lstat } from "node:fs/promises";
11
+ import { mkdir, writeFile, rm } from "node:fs/promises";
12
12
  import { join, dirname } from "node:path";
13
13
  import { getPlatformDir } from "../../shared/workspace/platform-dir.js";
14
14
  import { extractZipFileEntries } from "../../shared/zip-extract.js";
15
- const STIGMER_LOCAL_STATE_DIR = ".stigmer";
15
+ import { ensureStigmerSymlink, STIGMER_LOCAL_STATE_DIR } from "./stigmer-link.js";
16
16
  const SKILLS_SUBDIR = "skills";
17
17
  /**
18
18
  * Resolve skill references into written SKILL.md files and prompt metadata.
@@ -90,58 +90,6 @@ async function writeSkill(skill, skillsDir, workspaceDir, artifactBytes) {
90
90
  path: relativePath,
91
91
  };
92
92
  }
93
- /**
94
- * Ensure .stigmer symlink in the workspace points to the platform dir.
95
- *
96
- * The Cursor SDK reads files from the workspace CWD, so we need the
97
- * .stigmer directory to be accessible there. Unlike the Python runner
98
- * which intercepts file paths, Cursor reads directly from the filesystem.
99
- */
100
- async function ensureStigmerSymlink(workspaceDir, platformDir) {
101
- const linkPath = join(workspaceDir, STIGMER_LOCAL_STATE_DIR);
102
- try {
103
- const existing = await readlink(linkPath);
104
- if (existing === platformDir)
105
- return;
106
- await unlink(linkPath);
107
- }
108
- catch (err) {
109
- if (err.code === "ENOENT") {
110
- // No existing symlink
111
- }
112
- else if (err.code === "EINVAL") {
113
- // Exists but is not a symlink — remove the directory
114
- await rm(linkPath, { recursive: true, force: true });
115
- }
116
- else {
117
- throw err;
118
- }
119
- }
120
- await symlink(platformDir, linkPath, "dir");
121
- }
122
- /**
123
- * Remove the workspace `.stigmer` symlink created by {@link resolveSkills}.
124
- *
125
- * Called in the activity's finally so attaching a real repo leaves no Stigmer
126
- * symlink behind once the turn ends (issue #173); a multi-turn session recreates
127
- * it on the next turn. Only ever removes a SYMLINK — a real `.stigmer` directory
128
- * (which would be the user's own, not ours) is left untouched. Best-effort.
129
- */
130
- export async function removeStigmerSymlink(workspaceDir) {
131
- const linkPath = join(workspaceDir, STIGMER_LOCAL_STATE_DIR);
132
- try {
133
- const stat = await lstat(linkPath);
134
- if (stat.isSymbolicLink()) {
135
- await unlink(linkPath);
136
- }
137
- }
138
- catch (err) {
139
- if (err?.code !== "ENOENT") {
140
- console.warn(`removeStigmerSymlink: failed to remove ${linkPath} (non-fatal): ` +
141
- `${err instanceof Error ? err.message : err}`);
142
- }
143
- }
144
- }
145
93
  /**
146
94
  * Clean up platform-managed skill directory for a session.
147
95
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skill-resolver.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/skill-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-resolver.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/skill-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The workspace `.stigmer` symlink — the Cursor harness's bridge from the
3
+ * user's workspace to the session's platform-managed directory
4
+ * (~/.stigmer/sessions/{id}/platform/, see shared/workspace/platform-dir.ts).
5
+ *
6
+ * The Cursor SDK reads files from the workspace CWD, so platform-injected
7
+ * content (skills, attachment inputs) must be reachable there; the symlink is
8
+ * how, without ever writing platform files into the user's repo (issue #173).
9
+ * This mechanism is deliberately harness-local: the native harness routes
10
+ * `.stigmer/` paths through its WorkspaceBackend instead and never symlinks.
11
+ *
12
+ * Both resolvers that populate the platform dir (skills, attachments) call
13
+ * {@link ensureStigmerSymlink}; it is idempotent, so either may run first and
14
+ * an agent with only one kind of content still gets the link. The activity's
15
+ * cleanup calls {@link removeStigmerSymlink} so a real repo is left untouched
16
+ * once the turn ends; a multi-turn session recreates the link on the next turn.
17
+ */
18
+ /** The workspace-visible name of the platform namespace. */
19
+ export declare const STIGMER_LOCAL_STATE_DIR = ".stigmer";
20
+ /**
21
+ * Ensure the workspace `.stigmer` symlink points to the platform dir.
22
+ * Idempotent: an existing correct link is kept; a stale link (or a non-link
23
+ * left behind by an older runner) is replaced.
24
+ */
25
+ export declare function ensureStigmerSymlink(workspaceDir: string, platformDir: string): Promise<void>;
26
+ /**
27
+ * Remove the workspace `.stigmer` symlink created by
28
+ * {@link ensureStigmerSymlink}.
29
+ *
30
+ * Called in the activity's finally so attaching a real repo leaves no Stigmer
31
+ * symlink behind once the turn ends (issue #173). Only ever removes a
32
+ * SYMLINK — a real `.stigmer` directory (which would be the user's own, not
33
+ * ours) is left untouched. Best-effort.
34
+ */
35
+ export declare function removeStigmerSymlink(workspaceDir: string): Promise<void>;
@@ -0,0 +1,73 @@
1
+ /**
2
+ * The workspace `.stigmer` symlink — the Cursor harness's bridge from the
3
+ * user's workspace to the session's platform-managed directory
4
+ * (~/.stigmer/sessions/{id}/platform/, see shared/workspace/platform-dir.ts).
5
+ *
6
+ * The Cursor SDK reads files from the workspace CWD, so platform-injected
7
+ * content (skills, attachment inputs) must be reachable there; the symlink is
8
+ * how, without ever writing platform files into the user's repo (issue #173).
9
+ * This mechanism is deliberately harness-local: the native harness routes
10
+ * `.stigmer/` paths through its WorkspaceBackend instead and never symlinks.
11
+ *
12
+ * Both resolvers that populate the platform dir (skills, attachments) call
13
+ * {@link ensureStigmerSymlink}; it is idempotent, so either may run first and
14
+ * an agent with only one kind of content still gets the link. The activity's
15
+ * cleanup calls {@link removeStigmerSymlink} so a real repo is left untouched
16
+ * once the turn ends; a multi-turn session recreates the link on the next turn.
17
+ */
18
+ import { symlink, readlink, unlink, rm, lstat } from "node:fs/promises";
19
+ import { join } from "node:path";
20
+ /** The workspace-visible name of the platform namespace. */
21
+ export const STIGMER_LOCAL_STATE_DIR = ".stigmer";
22
+ /**
23
+ * Ensure the workspace `.stigmer` symlink points to the platform dir.
24
+ * Idempotent: an existing correct link is kept; a stale link (or a non-link
25
+ * left behind by an older runner) is replaced.
26
+ */
27
+ export async function ensureStigmerSymlink(workspaceDir, platformDir) {
28
+ const linkPath = join(workspaceDir, STIGMER_LOCAL_STATE_DIR);
29
+ try {
30
+ const existing = await readlink(linkPath);
31
+ if (existing === platformDir)
32
+ return;
33
+ await unlink(linkPath);
34
+ }
35
+ catch (err) {
36
+ if (err.code === "ENOENT") {
37
+ // No existing symlink
38
+ }
39
+ else if (err.code === "EINVAL") {
40
+ // Exists but is not a symlink — remove the directory
41
+ await rm(linkPath, { recursive: true, force: true });
42
+ }
43
+ else {
44
+ throw err;
45
+ }
46
+ }
47
+ await symlink(platformDir, linkPath, "dir");
48
+ }
49
+ /**
50
+ * Remove the workspace `.stigmer` symlink created by
51
+ * {@link ensureStigmerSymlink}.
52
+ *
53
+ * Called in the activity's finally so attaching a real repo leaves no Stigmer
54
+ * symlink behind once the turn ends (issue #173). Only ever removes a
55
+ * SYMLINK — a real `.stigmer` directory (which would be the user's own, not
56
+ * ours) is left untouched. Best-effort.
57
+ */
58
+ export async function removeStigmerSymlink(workspaceDir) {
59
+ const linkPath = join(workspaceDir, STIGMER_LOCAL_STATE_DIR);
60
+ try {
61
+ const stat = await lstat(linkPath);
62
+ if (stat.isSymbolicLink()) {
63
+ await unlink(linkPath);
64
+ }
65
+ }
66
+ catch (err) {
67
+ if (err?.code !== "ENOENT") {
68
+ console.warn(`removeStigmerSymlink: failed to remove ${linkPath} (non-fatal): ` +
69
+ `${err instanceof Error ? err.message : err}`);
70
+ }
71
+ }
72
+ }
73
+ //# sourceMappingURL=stigmer-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stigmer-link.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/stigmer-link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAAoB,EACpB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,WAAW;YAAE,OAAO;QACrC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,sBAAsB;QACxB,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,qDAAqD;YACrD,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,YAAoB;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CACV,0CAA0C,QAAQ,gBAAgB;gBAClE,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAC9C,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * The Cursor harness's turn boundary — the single post-run pipeline that turns
3
+ * a finished agent run into the durable review surfaces:
4
+ *
5
+ * 1. read the denial ledger the preToolUse hook appended this turn;
6
+ * 2. derive the approved-command provenance (DD-28 auto-keep facts);
7
+ * 3. capture the turn's net file change set to the file_review ledger
8
+ * (CANDIDATE_CAPTURED) and stamp the flowed edit rows;
9
+ * 4. reconcile denied tool calls to WAITING_APPROVAL gate rows and redact the
10
+ * model's provisional post-denial narration.
11
+ *
12
+ * Extracted from the activity entry point (index.ts Phase 12) so it is directly
13
+ * unit-testable AND re-enterable: the poisoned-handle / transport-timeout
14
+ * recoveries re-run the agent with a fresh handle AFTER the primary boundary
15
+ * already ran, so their edits must flow through this exact pipeline again or
16
+ * they silently escape review (production case aex_01kws27q1e2esvkqjpvectttxf,
17
+ * where a Build-from-plan retry created a file with no review gate).
18
+ *
19
+ * Re-entry is safe by construction: a retry is only reachable when the primary
20
+ * boundary captured nothing (a captured change pauses the turn before
21
+ * run.wait() is ever consulted), `stampFlowedFileEditRows` skips already-stamped
22
+ * rows, and the denial ledger is per-turn append-only.
23
+ *
24
+ * The caller owns everything around the boundary: the stream epilogue
25
+ * (accumulator/enricher finalize), the WAITING_FOR_APPROVAL phase flip +
26
+ * persist, and the terminal result mapping.
27
+ */
28
+ import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
29
+ import type { SubAgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/subagent_pb";
30
+ import type { ArtifactStorage } from "../../shared/artifact-storage.js";
31
+ import type { MergedToolPolicy } from "../../shared/approval-policy.js";
32
+ import { type ApprovalGrant } from "./approval-state.js";
33
+ export interface TurnBoundaryOptions {
34
+ /** Mutated in place: gate rows overlaid, edit rows stamped, narration redacted. */
35
+ readonly status: AgentExecutionStatus;
36
+ readonly executionId: string;
37
+ /** This turn's change set id (`{executionId}:{turnSeq}`). */
38
+ readonly changeSetId: string;
39
+ /** Session HITL dir holding the denial ledger + CAS sidecar; undefined → no gate installed. */
40
+ readonly hitlDir: string | undefined;
41
+ /** Whether this turn runs apply-then-review capture (vs. the deny-gate fallback). */
42
+ readonly captureMode: boolean;
43
+ /**
44
+ * The baseline authored at turn start — the git tree sha for a git workspace,
45
+ * or "" (empty, but authored) for a non-git one. `undefined` means no baseline
46
+ * was authored this turn, which skips capture entirely; a plain truthiness
47
+ * check would wrongly skip the non-git capture.
48
+ */
49
+ readonly baselineTree: string | undefined;
50
+ readonly primaryWorkspaceDir: string;
51
+ /** True for a git work tree; false for a CAS-only non-git workspace. */
52
+ readonly gitWorkspace: boolean;
53
+ /**
54
+ * Index of the first message produced by THIS turn's stream — the positional
55
+ * turn boundary the approved-command provenance (DD-28) scopes to.
56
+ */
57
+ readonly turnStartMessageIndex: number;
58
+ /** Reinvocation grants; their tokens map back to the consent rows for DD-28. */
59
+ readonly approvalGrants: ApprovalGrant[] | undefined;
60
+ /** spec.auto_approve_all — qualifies every command as consented for DD-28. */
61
+ readonly globalBypass: boolean;
62
+ /**
63
+ * Sub-agent executions that existed BEFORE this turn's stream (cloned in on
64
+ * resume); their rows are skipped when stamping so a resume never re-stamps a
65
+ * prior turn's sub-agent rows.
66
+ */
67
+ readonly seededSubAgents: readonly SubAgentExecution[];
68
+ /** CAS blob store for gitignored/non-git captures; undefined → git-only capture. */
69
+ readonly artifactStorage: ArtifactStorage | undefined;
70
+ /** Merged approval policies, threaded to the denied-call reconcile for gate provenance. */
71
+ readonly mergedPolicies: Map<string, MergedToolPolicy>;
72
+ /**
73
+ * The first-denial-stop's run.cancel() promise, when a denial stopped this
74
+ * run. Awaited (timeboxed) before the ledger read: run.cancel() races the
75
+ * SDK's auto-execution — until it lands, the agent process may still attempt
76
+ * a post-denial workaround whose hook denial would land AFTER a premature
77
+ * ledger read (the row then never collapses and renders as RUNNING forever —
78
+ * production case aex_01kwj07f7g23c3wp9sn8496z5g), or a late tool could
79
+ * mutate the tree mid-capture. Omit when no denial stopped the run (the
80
+ * normal completion path and the recovery retries, which have no early stop).
81
+ */
82
+ readonly denialCancelSettled?: Promise<void>;
83
+ }
84
+ export interface TurnBoundaryResult {
85
+ /**
86
+ * True when the turn must pause for human review — at least one gated tool
87
+ * call or one captured file change. The caller flips the phase to
88
+ * WAITING_FOR_APPROVAL, persists, and returns without consulting run.wait().
89
+ */
90
+ readonly waiting: boolean;
91
+ /** File changes authored to the file_review ledger this call (0 = no candidate). */
92
+ readonly capturedChangeCount: number;
93
+ /** Denied tool calls reconciled to WAITING_APPROVAL gate rows this call. */
94
+ readonly deniedToolCallCount: number;
95
+ }
96
+ /**
97
+ * Run the turn boundary: author this turn's change set to the file_review
98
+ * ledger and overlay the hook's denials as approval gates. Mutates
99
+ * `opts.status` in place and reports whether the turn must pause.
100
+ *
101
+ * The hook records each denial to the ledger; we mark the corresponding tool
102
+ * calls WAITING_APPROVAL. The backend projects pending_approvals from that
103
+ * tool-call status (PendingApprovalComputer), so — exactly like the native
104
+ * harness — the approval surface is driven entirely by tool-call status. We
105
+ * deliberately do NOT set status.pendingApprovals here: any value would be
106
+ * discarded by the backend's recompute on the next updateStatus.
107
+ */
108
+ export declare function runTurnBoundary(opts: TurnBoundaryOptions): Promise<TurnBoundaryResult>;
@@ -0,0 +1,163 @@
1
+ /**
2
+ * The Cursor harness's turn boundary — the single post-run pipeline that turns
3
+ * a finished agent run into the durable review surfaces:
4
+ *
5
+ * 1. read the denial ledger the preToolUse hook appended this turn;
6
+ * 2. derive the approved-command provenance (DD-28 auto-keep facts);
7
+ * 3. capture the turn's net file change set to the file_review ledger
8
+ * (CANDIDATE_CAPTURED) and stamp the flowed edit rows;
9
+ * 4. reconcile denied tool calls to WAITING_APPROVAL gate rows and redact the
10
+ * model's provisional post-denial narration.
11
+ *
12
+ * Extracted from the activity entry point (index.ts Phase 12) so it is directly
13
+ * unit-testable AND re-enterable: the poisoned-handle / transport-timeout
14
+ * recoveries re-run the agent with a fresh handle AFTER the primary boundary
15
+ * already ran, so their edits must flow through this exact pipeline again or
16
+ * they silently escape review (production case aex_01kws27q1e2esvkqjpvectttxf,
17
+ * where a Build-from-plan retry created a file with no review gate).
18
+ *
19
+ * Re-entry is safe by construction: a retry is only reachable when the primary
20
+ * boundary captured nothing (a captured change pauses the turn before
21
+ * run.wait() is ever consulted), `stampFlowedFileEditRows` skips already-stamped
22
+ * rows, and the denial ledger is per-turn append-only.
23
+ *
24
+ * The caller owns everything around the boundary: the stream epilogue
25
+ * (accumulator/enricher finalize), the WAITING_FOR_APPROVAL phase flip +
26
+ * persist, and the terminal result mapping.
27
+ */
28
+ import { collectSubAgentToolCallIds } from "../../shared/tool-row.js";
29
+ import { LocalWorkspaceBackend } from "../../shared/workspace/local-backend.js";
30
+ import { primaryToken, readDenialLedger } from "./approval-state.js";
31
+ import { deriveTurnCommandProvenance } from "./command-provenance.js";
32
+ import { captureTurnToLedger } from "./capture-flow.js";
33
+ import { clearProvisionalPostDenialNarration, reconcileDeniedToolCalls, } from "./message-translator.js";
34
+ // How long the boundary waits for the first-denial-stop's run.cancel() to
35
+ // settle before reading the final denial ledger and capturing the turn's tree.
36
+ // Long enough for the SDK's normal teardown, short enough that a wedged cancel
37
+ // cannot noticeably delay the approval pause the user is already waiting on.
38
+ const FIRST_DENIAL_CANCEL_TIMEOUT_MS = 5_000;
39
+ /**
40
+ * Run the turn boundary: author this turn's change set to the file_review
41
+ * ledger and overlay the hook's denials as approval gates. Mutates
42
+ * `opts.status` in place and reports whether the turn must pause.
43
+ *
44
+ * The hook records each denial to the ledger; we mark the corresponding tool
45
+ * calls WAITING_APPROVAL. The backend projects pending_approvals from that
46
+ * tool-call status (PendingApprovalComputer), so — exactly like the native
47
+ * harness — the approval surface is driven entirely by tool-call status. We
48
+ * deliberately do NOT set status.pendingApprovals here: any value would be
49
+ * discarded by the backend's recompute on the next updateStatus.
50
+ */
51
+ export async function runTurnBoundary(opts) {
52
+ const { status, executionId, changeSetId, hitlDir, captureMode, baselineTree, primaryWorkspaceDir, gitWorkspace, turnStartMessageIndex, approvalGrants, globalBypass, seededSubAgents, artifactStorage, mergedPolicies, denialCancelSettled, } = opts;
53
+ // The timebox keeps a wedged cancel from hanging the pause; the reconcile
54
+ // trims below remain the backstop for that degraded case.
55
+ if (denialCancelSettled) {
56
+ await Promise.race([
57
+ denialCancelSettled,
58
+ new Promise((resolve) => {
59
+ const timer = setTimeout(resolve, FIRST_DENIAL_CANCEL_TIMEOUT_MS);
60
+ timer.unref();
61
+ }),
62
+ ]);
63
+ }
64
+ const deniedLedger = await readDenialLedger(hitlDir ?? "");
65
+ // Capture mode: author the net change set to the file_review ledger as the
66
+ // CANDIDATE_CAPTURED event (projected server-side to a file_change_set
67
+ // AWAITING_REVIEW — the single review surface). The runner-owned gate files
68
+ // are excluded from the capture. The agent's edits are LEFT applied on the
69
+ // working tree (Cursor parity — the user reviews the real change; nothing is
70
+ // committed and the next turn is blocked until approval, and a reject snaps
71
+ // each file back on resume). Runs BEFORE the denial reconcile so a denied
72
+ // (gitignored) write stays on the deny-gate path while every flowed edit is
73
+ // captured to the ledger.
74
+ let capturedChangeCount = 0;
75
+ if (captureMode && baselineTree !== undefined && primaryWorkspaceDir) {
76
+ const deniedTokens = new Set(deniedLedger.map((e) => e.token));
77
+ // Approved-command turn facts (DD-28): when every mutation-capable call
78
+ // this turn was a consented shell command, attach the provenance so the
79
+ // backend can verify the cited consent rows and auto-keep the set instead
80
+ // of arming a second gate. Fail-closed: any non-qualifying turn attaches
81
+ // nothing and reviews manually exactly as before.
82
+ const commandProvenance = deriveTurnCommandProvenance({
83
+ messages: status.messages,
84
+ turnStartIndex: turnStartMessageIndex,
85
+ deniedTokens,
86
+ grantTokenToConsentId: new Map((approvalGrants ?? []).map((g) => [
87
+ primaryToken(g.key, g.salient, g.contentDigest),
88
+ g.sourceToolCallId,
89
+ ])),
90
+ globalBypass,
91
+ });
92
+ if (commandProvenance) {
93
+ console.log(`ExecuteCursor capture: turn qualifies for approved-command auto-keep ` +
94
+ `(consent rows: ${commandProvenance.consentToolCallIds.join(",") || "(auto_approve_all)"}); ` +
95
+ `attaching provenance to candidate (execution=${executionId})`);
96
+ }
97
+ const captured = await captureTurnToLedger({
98
+ status,
99
+ gitRoot: primaryWorkspaceDir,
100
+ executionId,
101
+ changeSetId,
102
+ baselineTree,
103
+ messages: status.messages,
104
+ deniedTokens,
105
+ commandProvenance,
106
+ // Scope sub-agent row stamping to this turn: the seeded prior sub-agents
107
+ // (cloned in on resume) are the "before this turn" rows to skip.
108
+ priorSubAgentToolCallIds: collectSubAgentToolCallIds(seededSubAgents),
109
+ // The CAS half: read the sidecar the hook staged this turn and compose it
110
+ // into the change set. hitlDir + storage are present when captureIgnored
111
+ // was on (a git tree's gitignored writes, or ALL writes in a non-git
112
+ // workspace). In a git tree this composes with the git diff (HYBRID); in a
113
+ // non-git workspace it IS the whole change set (CAS-only).
114
+ hitlDir,
115
+ storage: artifactStorage,
116
+ gitWorkspace,
117
+ });
118
+ capturedChangeCount = captured.length;
119
+ if (capturedChangeCount > 0) {
120
+ console.log(`ExecuteCursor capture: ${capturedChangeCount} file change(s) authored to the ` +
121
+ `file_review ledger (change_set=${changeSetId}), working tree left applied ` +
122
+ `for review (execution=${executionId})`);
123
+ }
124
+ }
125
+ // The gate reads each denied file's pre-edit `before` from the workspace the
126
+ // runner is co-located with (local FS for OSS; the sandbox in cloud), so a
127
+ // whole-file rewrite gate renders a true before/after diff. The tool was
128
+ // DENIED, so disk still holds the old content. User files are never platform
129
+ // paths, so no platformDir routing is needed here.
130
+ const gateWorkspaceBackend = new LocalWorkspaceBackend(primaryWorkspaceDir);
131
+ const deniedToolCalls = await reconcileDeniedToolCalls(status.messages, deniedLedger, mergedPolicies, gateWorkspaceBackend);
132
+ // Observability: a synthesized placeholder (id `approval:*`) means a denial
133
+ // correlated to NO streamed tool call in either the exact or the normalized
134
+ // pass. After the normalized-path fallback this should be ~0; a non-zero rate
135
+ // is the early-warning signal of a NEW identity drift (the gate would then
136
+ // show "No preview available" with no diff). Logged, not thrown — the
137
+ // synthesized gate still safely surfaces the approval.
138
+ const synthesizedGateCount = deniedToolCalls.filter((tc) => tc.id.startsWith("approval:")).length;
139
+ if (synthesizedGateCount > 0) {
140
+ console.warn(`ExecuteCursor reconcile synthesized ${synthesizedGateCount} placeholder gate(s) ` +
141
+ `with no correlated stream call (execution=${executionId}); ` +
142
+ `possible hook/stream identity drift — gate(s) will lack a diff`);
143
+ }
144
+ if (deniedToolCalls.length > 0) {
145
+ // Deterministic clean-pause: a turn that pauses for approval must read as
146
+ // the same shape the native harness produces — pre-tool text + the gated
147
+ // tool calls — never the model's provisional reaction to Cursor's deny
148
+ // (e.g. "blocked by a hook; enable it in your Cursor settings"). We blank
149
+ // that reaction in place (keeping the message count, so the finalize stays
150
+ // append-only) rather than removing it. See
151
+ // clearProvisionalPostDenialNarration for the full rationale.
152
+ const redactedNarration = clearProvisionalPostDenialNarration(status.messages, deniedToolCalls);
153
+ if (redactedNarration.length > 0) {
154
+ console.log(`ExecuteCursor redacted ${redactedNarration.length} provisional post-denial narration message(s) before pausing for approval`);
155
+ }
156
+ }
157
+ return {
158
+ waiting: deniedToolCalls.length > 0 || capturedChangeCount > 0,
159
+ capturedChangeCount,
160
+ deniedToolCallCount: deniedToolCalls.length,
161
+ };
162
+ }
163
+ //# sourceMappingURL=turn-boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-boundary.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/turn-boundary.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,9 @@ import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_
13
13
  *
14
14
  * Clones git-repo entries (using the user's GITHUB_TOKEN from the resolved
15
15
  * execution environment) and mounts local-path entries, then returns the
16
- * directories the agent should operate in. Falls back to the configured
17
- * workspace root when the session declares no workspace entries.
16
+ * directories the agent should operate in. A session with no workspace
17
+ * entries gets its own empty per-session directory (see session-root.ts)
18
+ * never the shared root, which would leak other sessions' files into it.
18
19
  *
19
20
  * provisionGit is idempotent (it reuses an existing clone), so this is safe
20
21
  * to call on every execution, including multi-turn and HITL reinvocations.
@@ -9,13 +9,15 @@
9
9
  import { WorkspaceProvisioner } from "../../shared/workspace/provisioner.js";
10
10
  import { LocalWorkspaceBackend } from "../../shared/workspace/local-backend.js";
11
11
  import { ensurePlatformDir } from "../../shared/workspace/platform-dir.js";
12
+ import { resolveSessionWorkspaceRoot } from "../../shared/workspace/session-root.js";
12
13
  /**
13
14
  * Provision the session's workspace entries for a LOCAL Cursor agent.
14
15
  *
15
16
  * Clones git-repo entries (using the user's GITHUB_TOKEN from the resolved
16
17
  * execution environment) and mounts local-path entries, then returns the
17
- * directories the agent should operate in. Falls back to the configured
18
- * workspace root when the session declares no workspace entries.
18
+ * directories the agent should operate in. A session with no workspace
19
+ * entries gets its own empty per-session directory (see session-root.ts)
20
+ * never the shared root, which would leak other sessions' files into it.
19
21
  *
20
22
  * provisionGit is idempotent (it reuses an existing clone), so this is safe
21
23
  * to call on every execution, including multi-turn and HITL reinvocations.
@@ -23,7 +25,7 @@ import { ensurePlatformDir } from "../../shared/workspace/platform-dir.js";
23
25
  export async function provisionCursorWorkspace(config, session, envVars, sessionId) {
24
26
  const entries = session.spec?.workspaceEntries ?? [];
25
27
  if (entries.length === 0) {
26
- return [config.workspaceRootDir];
28
+ return [await resolveSessionWorkspaceRoot(config.workspaceRootDir, entries, sessionId)];
27
29
  }
28
30
  const platformDir = await ensurePlatformDir(sessionId);
29
31
  const backend = new LocalWorkspaceBackend(config.workspaceRootDir, platformDir);
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-provision.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/workspace-provision.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAc,EACd,OAAgB,EAChB,OAA+B,EAC/B,SAAiB;IAEjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,CAAC;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAEhF,MAAM,WAAW,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,YAAY,CAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EACpE,OAAO,EACP,OAAO,EACP,MAAM,CAAC,IAAI,KAAK,OAAO,EACvB,MAAM,CAAC,IAAI,KAAK,OAAO,CACxB,CAAC;IAEF,MAAM,IAAI,GAAG,OAAO;SACjB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;SAC/B,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"workspace-provision.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/workspace-provision.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAErF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAc,EACd,OAAgB,EAChB,OAA+B,EAC/B,SAAiB;IAEjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,CAAC;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,2BAA2B,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAEhF,MAAM,WAAW,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,YAAY,CAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EACpE,OAAO,EACP,OAAO,EACP,MAAM,CAAC,IAAI,KAAK,OAAO,EACvB,MAAM,CAAC,IAAI,KAAK,OAAO,CACxB,CAAC;IAEF,MAAM,IAAI,GAAG,OAAO;SACjB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;SAC/B,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5D,CAAC"}