@superblocksteam/vite-plugin-file-sync 2.0.154 → 2.0.155-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts +23 -1
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  3. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +84 -29
  4. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  5. package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts +2 -0
  6. package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts.map +1 -1
  7. package/dist/ai-service/agent/subagents/apis/prompt-builder.js +11 -2
  8. package/dist/ai-service/agent/subagents/apis/prompt-builder.js.map +1 -1
  9. package/dist/ai-service/agent/tool-permission-delivery.d.ts.map +1 -1
  10. package/dist/ai-service/agent/tool-permission-delivery.js +4 -0
  11. package/dist/ai-service/agent/tool-permission-delivery.js.map +1 -1
  12. package/dist/ai-service/agent/tools/app-environment/update-app-environment.d.ts +29 -0
  13. package/dist/ai-service/agent/tools/app-environment/update-app-environment.d.ts.map +1 -0
  14. package/dist/ai-service/agent/tools/app-environment/update-app-environment.js +387 -0
  15. package/dist/ai-service/agent/tools/app-environment/update-app-environment.js.map +1 -0
  16. package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.d.ts +58 -0
  17. package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.d.ts.map +1 -0
  18. package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.js +258 -0
  19. package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.js.map +1 -0
  20. package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts +18 -6
  21. package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts.map +1 -1
  22. package/dist/ai-service/agent/tools/databases/dev-database-tasks.js +203 -51
  23. package/dist/ai-service/agent/tools/databases/dev-database-tasks.js.map +1 -1
  24. package/dist/ai-service/agent/tools/databases/dev-database-tools.d.ts +12 -10
  25. package/dist/ai-service/agent/tools/databases/dev-database-tools.d.ts.map +1 -1
  26. package/dist/ai-service/agent/tools/databases/dev-database-tools.js +29 -8
  27. package/dist/ai-service/agent/tools/databases/dev-database-tools.js.map +1 -1
  28. package/dist/ai-service/agent/tools/integrations/metadata.d.ts +3 -0
  29. package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -1
  30. package/dist/ai-service/agent/tools/integrations/metadata.js +10 -2
  31. package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
  32. package/dist/ai-service/agent/tools.d.ts +9 -1
  33. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  34. package/dist/ai-service/agent/tools.js +25 -1
  35. package/dist/ai-service/agent/tools.js.map +1 -1
  36. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +8 -0
  37. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  38. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +104 -14
  39. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  40. package/dist/ai-service/app-interface/npm-registry.d.ts +9 -0
  41. package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
  42. package/dist/ai-service/app-interface/npm-registry.js +50 -1
  43. package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
  44. package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
  45. package/dist/ai-service/app-skills/helpers.js +1 -0
  46. package/dist/ai-service/app-skills/helpers.js.map +1 -1
  47. package/dist/ai-service/dev-database-client.d.ts +3 -1
  48. package/dist/ai-service/dev-database-client.d.ts.map +1 -1
  49. package/dist/ai-service/dev-database-client.js.map +1 -1
  50. package/dist/ai-service/features.d.ts +24 -0
  51. package/dist/ai-service/features.d.ts.map +1 -1
  52. package/dist/ai-service/features.js +24 -0
  53. package/dist/ai-service/features.js.map +1 -1
  54. package/dist/ai-service/helper-system-ai-attributes.d.ts +19 -0
  55. package/dist/ai-service/helper-system-ai-attributes.d.ts.map +1 -0
  56. package/dist/ai-service/helper-system-ai-attributes.js +17 -0
  57. package/dist/ai-service/helper-system-ai-attributes.js.map +1 -0
  58. package/dist/ai-service/index.d.ts +58 -2
  59. package/dist/ai-service/index.d.ts.map +1 -1
  60. package/dist/ai-service/index.js +186 -34
  61. package/dist/ai-service/index.js.map +1 -1
  62. package/dist/ai-service/integrations/store.d.ts +3 -0
  63. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  64. package/dist/ai-service/integrations/store.js +3 -0
  65. package/dist/ai-service/integrations/store.js.map +1 -1
  66. package/dist/ai-service/live-edit-events/bridge.d.ts +21 -0
  67. package/dist/ai-service/live-edit-events/bridge.d.ts.map +1 -0
  68. package/dist/ai-service/live-edit-events/bridge.js +52 -0
  69. package/dist/ai-service/live-edit-events/bridge.js.map +1 -0
  70. package/dist/ai-service/live-edit-events/forwarder.d.ts +158 -0
  71. package/dist/ai-service/live-edit-events/forwarder.d.ts.map +1 -0
  72. package/dist/ai-service/live-edit-events/forwarder.js +403 -0
  73. package/dist/ai-service/live-edit-events/forwarder.js.map +1 -0
  74. package/dist/ai-service/state-machine/clark-fsm.d.ts +14 -0
  75. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  76. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  77. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  78. package/dist/ai-service/state-machine/handlers/awaiting-user.js +4 -0
  79. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  80. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
  81. package/dist/ai-service/state-machine/handlers/idle.js +3 -0
  82. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  83. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +2 -0
  84. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  85. package/dist/ai-service/state-machine/handlers/llm-generating.js +93 -3
  86. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  87. package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.d.ts +27 -0
  88. package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.d.ts.map +1 -0
  89. package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.js +34 -0
  90. package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.js.map +1 -0
  91. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  92. package/dist/ai-service/state-machine/helpers/peer.js +24 -0
  93. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  94. package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.d.ts.map +1 -1
  95. package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js +4 -0
  96. package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js.map +1 -1
  97. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +103 -1
  98. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts.map +1 -1
  99. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js +263 -3
  100. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -1
  101. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +143 -0
  102. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
  103. package/dist/ai-service/state-machine/helpers/stable-peer.js +220 -2
  104. package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
  105. package/dist/ai-service/tasks/peer-push.d.ts.map +1 -1
  106. package/dist/ai-service/tasks/peer-push.js +7 -0
  107. package/dist/ai-service/tasks/peer-push.js.map +1 -1
  108. package/dist/dev-server-ws-smoke-client.d.ts.map +1 -1
  109. package/dist/dev-server-ws-smoke-client.js +1 -0
  110. package/dist/dev-server-ws-smoke-client.js.map +1 -1
  111. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  112. package/dist/file-sync-vite-plugin.js +9 -2
  113. package/dist/file-sync-vite-plugin.js.map +1 -1
  114. package/dist/lock-service/activity-tracker.d.ts.map +1 -1
  115. package/dist/lock-service/activity-tracker.js +5 -6
  116. package/dist/lock-service/activity-tracker.js.map +1 -1
  117. package/dist/lock-service/index.d.ts +56 -1
  118. package/dist/lock-service/index.d.ts.map +1 -1
  119. package/dist/lock-service/index.js +158 -13
  120. package/dist/lock-service/index.js.map +1 -1
  121. package/dist/rename-manager.d.ts.map +1 -1
  122. package/dist/rename-manager.js +2 -6
  123. package/dist/rename-manager.js.map +1 -1
  124. package/dist/socket-manager.d.ts +64 -0
  125. package/dist/socket-manager.d.ts.map +1 -1
  126. package/dist/socket-manager.js +236 -51
  127. package/dist/socket-manager.js.map +1 -1
  128. package/dist/util/logger.d.ts +2 -0
  129. package/dist/util/logger.d.ts.map +1 -1
  130. package/dist/util/logger.js +5 -0
  131. package/dist/util/logger.js.map +1 -1
  132. package/package.json +9 -9
  133. package/dist/parsing/entity/to-code-entity.d.ts +0 -3
  134. package/dist/parsing/entity/to-code-entity.d.ts.map +0 -1
  135. package/dist/parsing/entity/to-code-entity.js +0 -77
  136. package/dist/parsing/entity/to-code-entity.js.map +0 -1
  137. package/dist/parsing/entity/to-value-entity.d.ts +0 -8
  138. package/dist/parsing/entity/to-value-entity.d.ts.map +0 -1
  139. package/dist/parsing/entity/to-value-entity.js +0 -129
  140. package/dist/parsing/entity/to-value-entity.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"peer.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/peer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC,MAAM,oBAAqB,SAAQ,KAAK;CAAG;AAE3C,SAAS,mBAAmB,CAAI,OAAmB;IACjD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,EAC7D,oBAAoB,CACrB,CAAC;QACF,yEAAyE;QACzE,0EAA0E;QAC1E,6BAA6B;QAC7B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE;YACJ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;YACJ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,kBAAkB,CAC/B,OAAyB,EACzB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAoB,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,SAAS,EAAE,CAAC,IAAI,CACd,gBAAgB,WAAW,6CAA6C,CACzE,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,cAAc,EAAE,CAAC;IACrE,KAAK,CAAC,aAAa,CAAC;QAClB,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IAEH,OAAO,CAAI,SAA2B,EAAE,KAAK,GAAG,CAAC,EAAc,EAAE;QAC/D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjC,UAAU,CAAC,GAAG,EAAE;oBACd,KAAK,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACzC,CAAC,EAAE,KAAK,CAAC,CAAC;YACZ,CAAC,CAAC,CACL,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAE9E,KAAK,UAAU,sBAAsB,CACnC,KAAY,EACZ,OAAsB;IAEtB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAEhC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,SAAS,EAAE,CAAC,IAAI,CACd,+DAA+D,OAAO,CAAC,IAAI,WAAW,KAAK,CAAC,KAAK,EAAE,CACpG,CAAC;QACF,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED,IAAI,CAAC;QACH,sEAAsE;QACtE,yEAAyE;QACzE,yEAAyE;QACzE,4DAA4D;QAC5D,MAAM,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAoB,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,SAAS,EAAE,CAAC,IAAI,CACd,8CAA8C,OAAO,CAAC,IAAI,+CAA+C,CAC1G,CAAC;YACF,OAAO,6BAA6B,CAAC;QACvC,CAAC;QACD,SAAS,EAAE,CAAC,IAAI,CACd,8CAA8C,OAAO,CAAC,IAAI,SAAS,EACnE,GAAG,CACJ,CAAC;QACF,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AA8BD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,KAAY,EACZ,gBAAkC,EAClC,EAAE;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,EACV,OAAsB,EACtB,KAAK,GAAG,CAAC,EACT,SAAS,GAAG,KAAK,EACjB,UAKI,EAAE,EACiC,EAAE;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG;YACpB,GAAG,OAAO;YACV,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;SAC3D,CAAC;QAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC;QACxD,IAAI,uBAAuB,GAAG,KAAK,CAAC;QAEpC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;YAChD,CAAC;YAED,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;gBACjC,IAAI,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChD,SAAS,EAAE,CAAC,IAAI,CACd,gGAAgG,QAAQ,CAAC,EAAE,4DAA4D,CACxK,CAAC;oBACF,KAAK,CAAC,aAAa,CAAC,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC7D,uBAAuB,GAAG,IAAI,CAAC;gBACjC,CAAC;qBAAM,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;oBACjC,KAAK,CAAC,aAAa,CAAC;wBAClB,0BAA0B,EAAE;4BAC1B,OAAO,EAAE,aAAa;yBACvB;qBACF,CAAC,CAAC;oBACH,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,QAAQ,EAAE,IAAI;wBACd,OAAO,EACL,kFAAkF;qBACrF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,SAAS,EAAE,CAAC,IAAI,CACd,sFAAsF,QAAQ,CAAC,EAAE,6BAA6B,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CACvJ,CAAC;oBACF,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,IAAI;wBACf,OAAO,EACL,kFAAkF;qBACrF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,EAAE,CAAC,IAAI,CACd,gGAAgG,QAAQ,CAAC,EAAE,uCAAuC,CACnJ,CAAC;gBACF,KAAK,CAAC,aAAa,CAAC,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,uBAAuB,GAAG,IAAI,CAAC;YACjC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,aAAa,CAAC;YAClB,wBAAwB,EAAE;gBACxB,EAAE,EAAE,SAAS;gBACb,OAAO,EAAE,aAAa;gBACtB,mBAAmB,EAAE,IAAI;aAC1B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;gBACzB,OAAO,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACtD,CAAC,CAAC;YACF,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzE,IAAI,MAAM,KAAK,6BAA6B,EAAE,CAAC;gBAC7C,KAAK,CAAC,aAAa,CAAC;oBAClB,wBAAwB,EAAE,SAAS;iBACpC,CAAC,CAAC;gBACH,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EACL,iFAAiF;iBACpF,CAAC;YACJ,CAAC;YACD,KAAK,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACrD,OAAO,uBAAuB;gBAC5B,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;gBACtC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,aAAa,CAAC;gBAClB,wBAAwB,EAAE,SAAS;aACpC,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,EAClD,KAAY,EACZ,gBAAkC,EAChB,EAAE;IACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAC1D,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,aAAa,CAAC;QAClB,0BAA0B,EAAE,SAAS;KACtC,CAAC,CAAC;IACH,MAAM,sBAAsB,GAAG,6BAA6B,CAC1D,KAAK,EACL,gBAAgB,CACjB,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC,CAAC;AAiCF,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,wBAAwB,GAA0B,MAAM,CAAC,MAAM,CAAC;IACpE,OAAO,EAAE,KAAK;IACd,gBAAgB,EAAE,IAAI;IACtB,OAAO,EACL,sEAAsE;CACzE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAAY,EACZ,gBAAkC,EAClC,EAAE;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,EACV,OAAsB,EACtB,KAAK,GAAG,CAAC,EACT,SAAS,GAAG,KAAK,EACjB,EAAE,oBAAoB,GAAG,KAAK,KAA6B,EAAE,EAC7B,EAAE;QAClC,2EAA2E;QAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG;YACpB,GAAG,OAAO;YACV,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;SAC3D,CAAC;QAEF,MAAM,OAAO,GAAG,KAAK,IAAoC,EAAE;YACzD,IAAI,oBAAoB,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACxD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,EAAE,CAAC,IAAI,CACd,4EAA4E,aAAa,CAAC,IAAI,EAAE,EAChG,GAAG,CACJ,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxB,SAAS,EAAE,CAAC,IAAI,CACd,mDAAmD,aAAa,CAAC,IAAI,WAAW,KAAK,CAAC,KAAK,EAAE,CAC9F,CAAC;gBACF,OAAO,wBAAwB,CAAC;YAClC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,mBAAmB,CACvB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CACrD,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,oBAAoB,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtE,SAAS,EAAE,CAAC,IAAI,CACd,kCAAkC,aAAa,CAAC,IAAI,6CAA6C,CAClG,CAAC;oBACF,OAAO,wBAAwB,CAAC;gBAClC,CAAC;gBACD,qEAAqE;gBACrE,iEAAiE;gBACjE,qEAAqE;gBACrE,wCAAwC;gBACxC,SAAS,EAAE,CAAC,IAAI,CACd,kCAAkC,aAAa,CAAC,IAAI,SAAS,EAC7D,GAAG,CACJ,CAAC;gBACF,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,KAAY,EAAE,EAAE;IAC7D,OAAO,KAAK,EACV,OAAmE,EACnE,EAAE;QACF,6DAA6D;QAC7D,kEAAkE;QAClE,2DAA2D;QAC3D,uEAAuE;QACvE,6DAA6D;QAC7D,6DAA6D;QAC7D,cAAc;QACd,KAAK,CAAC,aAAa,CAAC;YAClB,mBAAmB,EAAE;gBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS,EAAE,CAAC,IAAI,CACd,6DAA6D,OAAO,CAAC,KAAK,EAAE,CAC7E,CAAC;YACF,OAAO;QACT,CAAC;QACD,yEAAyE;QACzE,6DAA6D;QAC7D,MAAM,kBAAkB,CACtB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EACvC,+BAA+B,OAAO,CAAC,KAAK,EAAE,CAC/C,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC/C,KAAY,EACZ,MAAM,GAAG,aAAa,EACtB,EAAE;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,4BAA4B,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,EAAE,CAAC,IAAI,CACd,iFAAiF,MAAM,GAAG,CAC3F,CAAC;QACF,OAAO;IACT,CAAC;IACD,SAAS,EAAE,CAAC,IAAI,CACd,qEAAqE,EACrE;QACE,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CACF,CAAC;IACF,KAAK,CAAC,aAAa,CAAC;QAClB,4BAA4B,EAAE,SAAS;KACxC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,SAAS,EAAE,CAAC,IAAI,CACd,wEAAwE,MAAM,GAAG,CAClF,CAAC;QACF,OAAO;IACT,CAAC;IACD,SAAS,EAAE,CAAC,IAAI,CAAC,6CAA6C,EAAE;QAC9D,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IACH,6BAA6B,CAC3B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAC/C,4BAA4B,CAC7B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAY,EACZ,gBAAkC,EAClC,EAAE;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,EAAE,OAAyB,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE;QACpD,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE;YACtB,KAAK,gBAAgB,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxB,SAAS,EAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,uEAAuE;YACvE,wEAAwE;YACxE,qCAAqC;YACrC,MAAM,kBAAkB,CACtB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EACjD,yBAAyB,OAAO,CAAC,IAAI,EAAE,CACxC,CAAC;QACJ,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"peer.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/peer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC,MAAM,oBAAqB,SAAQ,KAAK;CAAG;AAE3C,SAAS,mBAAmB,CAAI,OAAmB;IACjD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,EAC7D,oBAAoB,CACrB,CAAC;QACF,yEAAyE;QACzE,0EAA0E;QAC1E,6BAA6B;QAC7B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE;YACJ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;YACJ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,kBAAkB,CAC/B,OAAyB,EACzB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAoB,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,SAAS,EAAE,CAAC,IAAI,CACd,gBAAgB,WAAW,6CAA6C,CACzE,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,cAAc,EAAE,CAAC;IACrE,KAAK,CAAC,aAAa,CAAC;QAClB,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IAEH,OAAO,CAAI,SAA2B,EAAE,KAAK,GAAG,CAAC,EAAc,EAAE;QAC/D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjC,UAAU,CAAC,GAAG,EAAE;oBACd,KAAK,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACzC,CAAC,EAAE,KAAK,CAAC,CAAC;YACZ,CAAC,CAAC,CACL,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAE9E,KAAK,UAAU,sBAAsB,CACnC,KAAY,EACZ,OAAsB;IAEtB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAEhC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,SAAS,EAAE,CAAC,IAAI,CACd,+DAA+D,OAAO,CAAC,IAAI,WAAW,KAAK,CAAC,KAAK,EAAE,CACpG,CAAC;QACF,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED,IAAI,CAAC;QACH,sEAAsE;QACtE,yEAAyE;QACzE,yEAAyE;QACzE,4DAA4D;QAC5D,MAAM,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAoB,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,SAAS,EAAE,CAAC,IAAI,CACd,8CAA8C,OAAO,CAAC,IAAI,+CAA+C,CAC1G,CAAC;YACF,OAAO,6BAA6B,CAAC;QACvC,CAAC;QACD,SAAS,EAAE,CAAC,IAAI,CACd,8CAA8C,OAAO,CAAC,IAAI,SAAS,EACnE,GAAG,CACJ,CAAC;QACF,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AA8BD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,KAAY,EACZ,gBAAkC,EAClC,EAAE;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,EACV,OAAsB,EACtB,KAAK,GAAG,CAAC,EACT,SAAS,GAAG,KAAK,EACjB,UAKI,EAAE,EACiC,EAAE;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG;YACpB,GAAG,OAAO;YACV,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;SAC3D,CAAC;QAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC;QACxD,IAAI,uBAAuB,GAAG,KAAK,CAAC;QAEpC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;YAChD,CAAC;YAED,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;gBACjC,IAAI,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChD,SAAS,EAAE,CAAC,IAAI,CACd,gGAAgG,QAAQ,CAAC,EAAE,4DAA4D,CACxK,CAAC;oBACF,KAAK,CAAC,aAAa,CAAC,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC7D,uBAAuB,GAAG,IAAI,CAAC;gBACjC,CAAC;qBAAM,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;oBACjC,KAAK,CAAC,aAAa,CAAC;wBAClB,0BAA0B,EAAE;4BAC1B,OAAO,EAAE,aAAa;yBACvB;qBACF,CAAC,CAAC;oBACH,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,QAAQ,EAAE,IAAI;wBACd,OAAO,EACL,kFAAkF;qBACrF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,SAAS,EAAE,CAAC,IAAI,CACd,sFAAsF,QAAQ,CAAC,EAAE,6BAA6B,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CACvJ,CAAC;oBACF,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,IAAI;wBACf,OAAO,EACL,kFAAkF;qBACrF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,EAAE,CAAC,IAAI,CACd,gGAAgG,QAAQ,CAAC,EAAE,uCAAuC,CACnJ,CAAC;gBACF,KAAK,CAAC,aAAa,CAAC,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,uBAAuB,GAAG,IAAI,CAAC;YACjC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,aAAa,CAAC;YAClB,wBAAwB,EAAE;gBACxB,EAAE,EAAE,SAAS;gBACb,OAAO,EAAE,aAAa;gBACtB,mBAAmB,EAAE,IAAI;aAC1B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;gBACzB,OAAO,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACtD,CAAC,CAAC;YACF,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzE,IAAI,MAAM,KAAK,6BAA6B,EAAE,CAAC;gBAC7C,KAAK,CAAC,aAAa,CAAC;oBAClB,wBAAwB,EAAE,SAAS;iBACpC,CAAC,CAAC;gBACH,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EACL,iFAAiF;iBACpF,CAAC;YACJ,CAAC;YACD,KAAK,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACrD,OAAO,uBAAuB;gBAC5B,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;gBACtC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,aAAa,CAAC;gBAClB,wBAAwB,EAAE,SAAS;aACpC,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,EAClD,KAAY,EACZ,gBAAkC,EAChB,EAAE;IACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAC1D,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,aAAa,CAAC;QAClB,0BAA0B,EAAE,SAAS;KACtC,CAAC,CAAC;IACH,MAAM,sBAAsB,GAAG,6BAA6B,CAC1D,KAAK,EACL,gBAAgB,CACjB,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC,CAAC;AAiCF,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,wBAAwB,GAA0B,MAAM,CAAC,MAAM,CAAC;IACpE,OAAO,EAAE,KAAK;IACd,gBAAgB,EAAE,IAAI;IACtB,OAAO,EACL,sEAAsE;CACzE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAAY,EACZ,gBAAkC,EAClC,EAAE;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,EACV,OAAsB,EACtB,KAAK,GAAG,CAAC,EACT,SAAS,GAAG,KAAK,EACjB,EAAE,oBAAoB,GAAG,KAAK,KAA6B,EAAE,EAC7B,EAAE;QAClC,2EAA2E;QAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG;YACpB,GAAG,OAAO;YACV,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;SAC3D,CAAC;QAEF,MAAM,OAAO,GAAG,KAAK,IAAoC,EAAE;YACzD,IAAI,oBAAoB,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACxD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,EAAE,CAAC,IAAI,CACd,4EAA4E,aAAa,CAAC,IAAI,EAAE,EAChG,GAAG,CACJ,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxB,SAAS,EAAE,CAAC,IAAI,CACd,mDAAmD,aAAa,CAAC,IAAI,WAAW,KAAK,CAAC,KAAK,EAAE,CAC9F,CAAC;gBACF,OAAO,wBAAwB,CAAC;YAClC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,mBAAmB,CACvB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CACrD,CAAC;gBACF,sEAAsE;gBACtE,wEAAwE;gBACxE,iBAAiB,CAAC,cAAc,EAAE;oBAChC,SAAS,EAAE,aAAa,CAAC,EAAE;oBAC3B,WAAW,EAAE,aAAa,CAAC,IAAI;oBAC/B,IAAI,EAAE,aAAa,CAAC,IAAI;oBACxB,IAAI,EAAE,aAAa,CAAC,OAAO;iBAC5B,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,oBAAoB,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtE,SAAS,EAAE,CAAC,IAAI,CACd,kCAAkC,aAAa,CAAC,IAAI,6CAA6C,CAClG,CAAC;oBACF,OAAO,wBAAwB,CAAC;gBAClC,CAAC;gBACD,qEAAqE;gBACrE,iEAAiE;gBACjE,qEAAqE;gBACrE,wCAAwC;gBACxC,SAAS,EAAE,CAAC,IAAI,CACd,kCAAkC,aAAa,CAAC,IAAI,SAAS,EAC7D,GAAG,CACJ,CAAC;gBACF,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,KAAY,EAAE,EAAE;IAC7D,OAAO,KAAK,EACV,OAAmE,EACnE,EAAE;QACF,6DAA6D;QAC7D,kEAAkE;QAClE,2DAA2D;QAC3D,uEAAuE;QACvE,6DAA6D;QAC7D,6DAA6D;QAC7D,cAAc;QACd,KAAK,CAAC,aAAa,CAAC;YAClB,mBAAmB,EAAE;gBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS,EAAE,CAAC,IAAI,CACd,6DAA6D,OAAO,CAAC,KAAK,EAAE,CAC7E,CAAC;YACF,OAAO;QACT,CAAC;QACD,yEAAyE;QACzE,2EAA2E;QAC3E,wEAAwE;QACxE,qEAAqE;QACrE,0EAA0E;QAC1E,kEAAkE;QAClE,EAAE;QACF,sEAAsE;QACtE,yEAAyE;QACzE,iBAAiB,CAAC,kBAAkB,EAAE;YACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;YACnC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK;YAC/C,4DAA4D;YAC5D,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;SAC3C,CAAC,CAAC;QACH,yEAAyE;QACzE,6DAA6D;QAC7D,MAAM,kBAAkB,CACtB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EACvC,+BAA+B,OAAO,CAAC,KAAK,EAAE,CAC/C,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC/C,KAAY,EACZ,MAAM,GAAG,aAAa,EACtB,EAAE;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,4BAA4B,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,EAAE,CAAC,IAAI,CACd,iFAAiF,MAAM,GAAG,CAC3F,CAAC;QACF,OAAO;IACT,CAAC;IACD,SAAS,EAAE,CAAC,IAAI,CACd,qEAAqE,EACrE;QACE,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CACF,CAAC;IACF,KAAK,CAAC,aAAa,CAAC;QAClB,4BAA4B,EAAE,SAAS;KACxC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,SAAS,EAAE,CAAC,IAAI,CACd,wEAAwE,MAAM,GAAG,CAClF,CAAC;QACF,OAAO;IACT,CAAC;IACD,SAAS,EAAE,CAAC,IAAI,CAAC,6CAA6C,EAAE;QAC9D,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IACH,6BAA6B,CAC3B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAC/C,4BAA4B,CAC7B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAY,EACZ,gBAAkC,EAClC,EAAE;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,EAAE,OAAyB,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE;QACpD,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE;YACtB,KAAK,gBAAgB,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxB,SAAS,EAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,uEAAuE;YACvE,wEAAwE;YACxE,qCAAqC;YACrC,MAAM,kBAAkB,CACtB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EACjD,yBAAyB,OAAO,CAAC,IAAI,EAAE,CACxC,CAAC;QACJ,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"policy-gate-usage-metrics.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/policy-gate-usage-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAML,KAAK,aAAa,EAEnB,MAAM,6BAA6B,CAAC;AAIrC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAE5E;AAaD,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACtC,aAAa,CAKf;AAED,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QACN,KAAK,EAAE,WAAW,CAChB,KAAK,CAAC;YACJ,QAAQ,CAAC,EAAE;gBAAE,OAAO,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YAChC,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD,CAAC,CACH,CAAC;QACF,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACxE,CAAC;CACH,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAkCpC;AAED,wBAAsB,8BAA8B,CAAC,MAAM,EAAE;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoChB"}
1
+ {"version":3,"file":"policy-gate-usage-metrics.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/policy-gate-usage-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAML,KAAK,aAAa,EAEnB,MAAM,6BAA6B,CAAC;AAIrC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAE5E;AAaD,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACtC,aAAa,CAKf;AAED,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QACN,KAAK,EAAE,WAAW,CAChB,KAAK,CAAC;YACJ,QAAQ,CAAC,EAAE;gBAAE,OAAO,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YAChC,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD,CAAC,CACH,CAAC;QACF,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACxE,CAAC;CACH,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAkCpC;AAED,wBAAsB,8BAA8B,CAAC,MAAM,EAAE;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwChB"}
@@ -59,6 +59,10 @@ export async function finalizePolicyGateUsageMetrics(params) {
59
59
  dedupeKey: params.aiAgentRunId,
60
60
  failure: params.outcome === "failure" ? params.failure : undefined,
61
61
  outcome: params.outcome,
62
+ // A policy-gate scan is not a user turn. Counting it toward (or clearing)
63
+ // the conversation streak pages a scan that failed twice, or lets a
64
+ // successful scan hide a stuck chat (ENG-5477 review).
65
+ streakEligible: false,
62
66
  });
63
67
  if (params.llmUsage.length === 0) {
64
68
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"policy-gate-usage-metrics.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/policy-gate-usage-metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy-gate-usage-metrics.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/policy-gate-usage-metrics.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,64 @@ export { PROMPT_OUTCOME_TAG, promptOutcomeTagsFromFailure, type PromptFailure, }
6
6
  export { failureDetailFromPromptFailure, PLATFORM_PROMPT_FAILURE_REASONS, PROMPT_FAILURE_ORIGINS, TELEMETRY_FAILURE_ORIGINS, telemetryFailureOrigin, isUserInitiatedPromptAbort, promptFailureFromLlmError, promptFailureFromStreamAbort, promptFailureLlmProviderUnknown, promptFailurePaywall, promptFailurePlatform, promptFailureUserCanceled, type PlatformPromptFailureReason, type PromptFailureOrigin, type TelemetryFailureOrigin, type UserPromptFailureReason, USER_PROMPT_FAILURE_REASONS, } from "./prompt-failure.js";
7
7
  export declare const METRIC_AWAITING_USER_DISMISSED = "superblocks.clark.prompt.awaiting_user_dismissed_total";
8
8
  export declare const METRIC_BASE_COMMIT_RESOLUTION_FAILED = "superblocks.clark.prompt.base_commit_resolution_failed_total";
9
+ export declare const METRIC_REPEATED_FAILURES = "superblocks.clark.prompt.repeated_failures_total";
10
+ /**
11
+ * Consecutive failed turns that make a conversation "stuck" (ENG-5477).
12
+ *
13
+ * Two is deliberate rather than conservative: in-turn provider retries and the
14
+ * post-processing debug loop are already exhausted before a terminal outcome is
15
+ * recorded, so a streak of two means the user's own retry failed too. That is
16
+ * the signature of a poisoned context or a provider outage, not a flake.
17
+ */
18
+ export declare const REPEATED_FAILURE_STREAK_THRESHOLD = 2;
19
+ export declare const REPEATED_FAILURE_LOG_MESSAGE = "[clark:prompt] Conversation failing repeatedly";
20
+ /**
21
+ * Queried as `@event:` by the Datadog monitors in terraform/datadog (both the
22
+ * cloud-prem and SaaS halves of this alert). Their triage links resolve on this
23
+ * name, not on the message above, so the prose stays editable -- renaming this
24
+ * silently breaks them.
25
+ */
26
+ export declare const REPEATED_FAILURE_LOG_EVENT = "clark.prompt_repeated_failures";
27
+ /** Marks a dedupe key derived from prompt text rather than a request id. */
28
+ export declare const EPHEMERAL_DEDUPE_KEY_PREFIX = "ephemeral:";
29
+ /**
30
+ * Platform failures that make a conversation "stuck" for the user.
31
+ *
32
+ * `outcomes_total` carries every platform reason because a dashboard wants the
33
+ * full rollup; this metric pages, so the bar is higher. Excluded reasons are
34
+ * either not a broken conversation or not ours to fix:
35
+ * - `aborted` / `peer_disconnect`: the client went away mid-stream. The
36
+ * user-initiated flags are best-effort, so these skew toward navigation and
37
+ * network rather than a conversation that cannot make progress.
38
+ * - `service_busy`: contention. Two quick sends while a generation is in flight
39
+ * produce two rejections with nothing broken, and capacity has its own alerts.
40
+ *
41
+ * `unexpected` counts, despite the name reading like a catch-all:
42
+ * `platformReasonFromLlmError` has no case for `auth_error` or
43
+ * `validation_error`, so a Clark-side rejection -- a poisoned context, the
44
+ * incident this alert exists for -- lands here. Advice give-ups (debug-loop
45
+ * exhaustion, missing/expired JWT) also record `unexpected`; those stuck the
46
+ * conversation, so they page with it.
47
+ *
48
+ * `satisfies Record<PlatformPromptFailureReason, boolean>` is the runtime
49
+ * classification: adding a platform reason without a decision here fails to
50
+ * compile, so a mid-incident "add to the ignore list" cannot silently miss
51
+ * a reason that still pages.
52
+ */
53
+ export declare const STREAK_POLICY: {
54
+ readonly aborted: false;
55
+ readonly api_error: true;
56
+ readonly handler_error: true;
57
+ readonly integration_fetch: true;
58
+ readonly no_output: true;
59
+ readonly peer_disconnect: false;
60
+ readonly rate_limit: true;
61
+ readonly retries_exhausted: true;
62
+ readonly service_busy: false;
63
+ readonly service_dead: true;
64
+ readonly unexpected: true;
65
+ };
66
+ export declare const STREAK_WORTHY_PLATFORM_REASONS: ("aborted" | "no_output" | "rate_limit" | "api_error" | "retries_exhausted" | "handler_error" | "integration_fetch" | "peer_disconnect" | "service_busy" | "service_dead" | "unexpected")[];
9
67
  export declare const AWAITING_USER_DISMISS_REASONS: readonly ["cancel", "new_prompt"];
10
68
  export type AwaitingUserDismissReason = (typeof AWAITING_USER_DISMISS_REASONS)[number];
11
69
  export declare const AWAITING_USER_DISMISS_REASON_TAG = "dismiss_reason";
@@ -14,6 +72,29 @@ export declare const PROMPT_CORE_MODEL_TAG = "core_model";
14
72
  export declare const PROMPT_HAD_FALLBACK_TAG = "had_fallback";
15
73
  export declare const PROMPT_ORGANIZATION_ID_TAG = "organization_id";
16
74
  export declare const PROMPT_SURFACE_TAG = "surface";
75
+ /**
76
+ * Closed set of `usageMetadata.origin` values that decide streak eligibility.
77
+ * Producers (index.ts) and consumers (resolvePromptMetricLabels) must both
78
+ * reference these literals — a rename that only updates one side is a type error
79
+ * once the producer uses the const (ENG-5477 scout review).
80
+ */
81
+ export declare const CLARK_USAGE_ORIGIN: {
82
+ readonly app_clark_generation: "app_clark_generation";
83
+ readonly app_migration: "app_migration";
84
+ readonly policy_gate: "policy_gate";
85
+ };
86
+ export type ClarkUsageOrigin = (typeof CLARK_USAGE_ORIGIN)[keyof typeof CLARK_USAGE_ORIGIN];
87
+ /**
88
+ * Optional `attempts_total` label distinguishing how a request entered the
89
+ * agent loop. Omitted for ordinary `aiGenerate` so existing untagged series
90
+ * stay the bulk of the metric; set only for server-driven continuations
91
+ * (ENG-5477 scout review).
92
+ */
93
+ export declare const PROMPT_ATTEMPT_ENTRYPOINT_TAG = "entrypoint";
94
+ export declare const PROMPT_ATTEMPT_ENTRYPOINT: {
95
+ readonly tool_permission_continuation: "tool_permission_continuation";
96
+ };
97
+ export type PromptAttemptEntrypoint = (typeof PROMPT_ATTEMPT_ENTRYPOINT)[keyof typeof PROMPT_ATTEMPT_ENTRYPOINT];
17
98
  export declare const METRIC_CREDITS = "superblocks.clark.prompt.credits";
18
99
  /**
19
100
  * Credit-scale bucket boundaries for credits-per-prompt. Centered on the
@@ -34,11 +115,16 @@ export declare function resolvePromptMetricLabels(context: {
34
115
  llmConfig?: {
35
116
  coreModel?: string;
36
117
  };
118
+ usageMetadata?: {
119
+ origin?: string;
120
+ };
37
121
  workflowMetrics?: {
38
122
  hadProviderFallback?: boolean;
39
123
  };
40
124
  surface?: ClarkUsageSurface;
41
- }): PromptMetricLabels;
125
+ }): PromptMetricLabels & {
126
+ streakEligible: boolean;
127
+ };
42
128
  export interface PromptRequestMetricIdentity {
43
129
  applicationId?: string;
44
130
  organizationId?: string;
@@ -46,6 +132,7 @@ export interface PromptRequestMetricIdentity {
46
132
  export declare function setPromptRequestMetricIdentity(identity: PromptRequestMetricIdentity): void;
47
133
  export declare function recordPromptAttempt(params?: {
48
134
  coreModel?: string;
135
+ entrypoint?: PromptAttemptEntrypoint;
49
136
  outcomeDedupeKey?: string;
50
137
  surface?: ClarkUsageSurface;
51
138
  }): void;
@@ -63,6 +150,13 @@ export declare function recordPromptOutcome(params: {
63
150
  failure?: PromptFailure;
64
151
  hadFallback?: boolean;
65
152
  outcome: PromptOutcome;
153
+ promptId?: string;
154
+ /**
155
+ * Opt-in: only a user conversation turn may advance or clear the streak.
156
+ * Omit (or pass false) for background / system-driven outcomes — the default
157
+ * is off so a forgotten call site cannot silently join the pager (ENG-5477).
158
+ */
159
+ streakEligible?: boolean;
66
160
  surface?: ClarkUsageSurface;
67
161
  }): void;
68
162
  export declare function recordPromptCredits(params: {
@@ -112,14 +206,22 @@ export declare function recordAwaitingUserPromptOutcome(params: {
112
206
  advice?: string;
113
207
  coreModel?: string;
114
208
  countsAsPromptSuccess?: boolean;
209
+ /**
210
+ * Opt-in: this success ends the turn (knowledge approval) and should reset
211
+ * the conversation failure streak. Mid-turn pauses leave this unset.
212
+ */
213
+ clearsFailureStreak?: boolean;
115
214
  dedupeKey: string | undefined;
116
215
  hadFallback?: boolean;
216
+ promptId?: string;
217
+ streakEligible?: boolean;
117
218
  }): boolean;
118
219
  /** Record attempt + immediate failure for pre-FSM entry rejections (no promptId yet). */
119
220
  export declare function recordPromptEntryRejection(params: {
120
221
  coreModel?: string;
121
222
  dedupeKey: string | undefined;
122
223
  failure: PromptFailure;
224
+ promptId?: string;
123
225
  surface?: ClarkUsageSurface;
124
226
  }): void;
125
227
  export declare function _resetPromptRequestMetricsForTesting(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-request-metrics.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-request-metrics.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAU/E,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,eAAe,iCAAkC,CAAC;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,+BAA+B,EAC/B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAK7B,eAAO,MAAM,8BAA8B,2DACe,CAAC;AAC3D,eAAO,MAAM,oCAAoC,iEACe,CAAC;AACjE,eAAO,MAAM,6BAA6B,mCAAoC,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AACjD,eAAO,MAAM,gCAAgC,mBAAmB,CAAC;AACjE,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAC1D,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AACtD,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAC5D,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAC5C,eAAO,MAAM,cAAc,qCAAqC,CAAC;AACjE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,wDAEzB,CAAC;AAIX,eAAO,MAAM,qCAAqC,+CAGxC,CAAC;AACX,MAAM,MAAM,gCAAgC,GAC1C,CAAC,OAAO,qCAAqC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzD,eAAO,MAAM,wCAAwC,WAAW,CAAC;AAIjE,eAAO,MAAM,kDAAkD,4BACpC,CAAC;AAE5B,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,eAAe,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACpD,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GAAG,kBAAkB,CAMrB;AAiCD,MAAM,WAAW,2BAA2B;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAiOD,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,2BAA2B,GACpC,IAAI,CAEN;AAID,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GAAG,IAAI,CAQP;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE;IACvD,MAAM,EAAE,gCAAgC,CAAC;IACzC,qBAAqB,EAAE,OAAO,CAAC;CAChC,GAAG,IAAI,CAEP;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,GAAG,MAAM,GAAG,SAAS,CAErB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GAAG,IAAI,CAcP;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IACN,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,GAAG,kBAAkB,GACrB,IAAI,CAaN;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAET;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBzB;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQzB;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,yBAAyB,CAAC;CACnC,GAAG,IAAI,CAQP;AAED,wBAAgB,wCAAwC,CAAC,MAAM,EAAE;IAC/D,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAKV;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,GAAG,MAAM,GAAG,SAAS,CAKrB;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE;IACzD,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,EAAE,yBAAyB,CAAC;CACnC,GAAG,IAAI,CAQP;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAyBV;AAED,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GAAG,IAAI,CAYP;AAED,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D"}
1
+ {"version":3,"file":"prompt-request-metrics.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-request-metrics.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { metrics } from "@opentelemetry/api";
2
2
  import { coreModelLabel, usageSurfaceLabel, } from "@superblocksteam/library-shared/types";
3
+ import { getLogger } from "../../../util/logger.js";
3
4
  import { AGENT_CANCELED, AGENT_NEEDS_USER_INPUT, APP_RUNTIME_UPDATED_WITHOUT_EDITS, RUNTIME_REVIEW_FINISHED, USER_CANCELED, V3_AGENT_FINISHED, } from "../clark-fsm.js";
4
5
  import { promptFailureAttributes, promptFailurePlatform, promptFailureUserCanceled, promptOutcomeTagsFromFailure, PROMPT_OUTCOME_TAG, } from "./prompt-failure.js";
5
6
  export const PROMPT_OUTCOMES = ["failure", "success"];
@@ -10,6 +11,64 @@ const METRIC_ATTEMPTS = "superblocks.clark.prompt.attempts_total";
10
11
  const METRIC_OUTCOMES = "superblocks.clark.prompt.outcomes_total";
11
12
  export const METRIC_AWAITING_USER_DISMISSED = "superblocks.clark.prompt.awaiting_user_dismissed_total";
12
13
  export const METRIC_BASE_COMMIT_RESOLUTION_FAILED = "superblocks.clark.prompt.base_commit_resolution_failed_total";
14
+ export const METRIC_REPEATED_FAILURES = "superblocks.clark.prompt.repeated_failures_total";
15
+ /**
16
+ * Consecutive failed turns that make a conversation "stuck" (ENG-5477).
17
+ *
18
+ * Two is deliberate rather than conservative: in-turn provider retries and the
19
+ * post-processing debug loop are already exhausted before a terminal outcome is
20
+ * recorded, so a streak of two means the user's own retry failed too. That is
21
+ * the signature of a poisoned context or a provider outage, not a flake.
22
+ */
23
+ export const REPEATED_FAILURE_STREAK_THRESHOLD = 2;
24
+ export const REPEATED_FAILURE_LOG_MESSAGE = "[clark:prompt] Conversation failing repeatedly";
25
+ /**
26
+ * Queried as `@event:` by the Datadog monitors in terraform/datadog (both the
27
+ * cloud-prem and SaaS halves of this alert). Their triage links resolve on this
28
+ * name, not on the message above, so the prose stays editable -- renaming this
29
+ * silently breaks them.
30
+ */
31
+ export const REPEATED_FAILURE_LOG_EVENT = "clark.prompt_repeated_failures";
32
+ /** Marks a dedupe key derived from prompt text rather than a request id. */
33
+ export const EPHEMERAL_DEDUPE_KEY_PREFIX = "ephemeral:";
34
+ /**
35
+ * Platform failures that make a conversation "stuck" for the user.
36
+ *
37
+ * `outcomes_total` carries every platform reason because a dashboard wants the
38
+ * full rollup; this metric pages, so the bar is higher. Excluded reasons are
39
+ * either not a broken conversation or not ours to fix:
40
+ * - `aborted` / `peer_disconnect`: the client went away mid-stream. The
41
+ * user-initiated flags are best-effort, so these skew toward navigation and
42
+ * network rather than a conversation that cannot make progress.
43
+ * - `service_busy`: contention. Two quick sends while a generation is in flight
44
+ * produce two rejections with nothing broken, and capacity has its own alerts.
45
+ *
46
+ * `unexpected` counts, despite the name reading like a catch-all:
47
+ * `platformReasonFromLlmError` has no case for `auth_error` or
48
+ * `validation_error`, so a Clark-side rejection -- a poisoned context, the
49
+ * incident this alert exists for -- lands here. Advice give-ups (debug-loop
50
+ * exhaustion, missing/expired JWT) also record `unexpected`; those stuck the
51
+ * conversation, so they page with it.
52
+ *
53
+ * `satisfies Record<PlatformPromptFailureReason, boolean>` is the runtime
54
+ * classification: adding a platform reason without a decision here fails to
55
+ * compile, so a mid-incident "add to the ignore list" cannot silently miss
56
+ * a reason that still pages.
57
+ */
58
+ export const STREAK_POLICY = {
59
+ aborted: false,
60
+ api_error: true,
61
+ handler_error: true,
62
+ integration_fetch: true,
63
+ no_output: true,
64
+ peer_disconnect: false,
65
+ rate_limit: true,
66
+ retries_exhausted: true,
67
+ service_busy: false,
68
+ service_dead: true,
69
+ unexpected: true,
70
+ };
71
+ export const STREAK_WORTHY_PLATFORM_REASONS = Object.keys(STREAK_POLICY).filter((reason) => STREAK_POLICY[reason]);
13
72
  export const AWAITING_USER_DISMISS_REASONS = ["cancel", "new_prompt"];
14
73
  export const AWAITING_USER_DISMISS_REASON_TAG = "dismiss_reason";
15
74
  export const PROMPT_APPLICATION_ID_TAG = "application_id";
@@ -17,6 +76,27 @@ export const PROMPT_CORE_MODEL_TAG = "core_model";
17
76
  export const PROMPT_HAD_FALLBACK_TAG = "had_fallback";
18
77
  export const PROMPT_ORGANIZATION_ID_TAG = "organization_id";
19
78
  export const PROMPT_SURFACE_TAG = "surface";
79
+ /**
80
+ * Closed set of `usageMetadata.origin` values that decide streak eligibility.
81
+ * Producers (index.ts) and consumers (resolvePromptMetricLabels) must both
82
+ * reference these literals — a rename that only updates one side is a type error
83
+ * once the producer uses the const (ENG-5477 scout review).
84
+ */
85
+ export const CLARK_USAGE_ORIGIN = {
86
+ app_clark_generation: "app_clark_generation",
87
+ app_migration: "app_migration",
88
+ policy_gate: "policy_gate",
89
+ };
90
+ /**
91
+ * Optional `attempts_total` label distinguishing how a request entered the
92
+ * agent loop. Omitted for ordinary `aiGenerate` so existing untagged series
93
+ * stay the bulk of the metric; set only for server-driven continuations
94
+ * (ENG-5477 scout review).
95
+ */
96
+ export const PROMPT_ATTEMPT_ENTRYPOINT_TAG = "entrypoint";
97
+ export const PROMPT_ATTEMPT_ENTRYPOINT = {
98
+ tool_permission_continuation: "tool_permission_continuation",
99
+ };
20
100
  export const METRIC_CREDITS = "superblocks.clark.prompt.credits";
21
101
  /**
22
102
  * Credit-scale bucket boundaries for credits-per-prompt. Centered on the
@@ -39,9 +119,14 @@ export const BASE_COMMIT_RESOLUTION_FAILED_SOURCE_TAG = "source";
39
119
  // chat-store-only one on a dashboard instead of requiring a log dive.
40
120
  export const BASE_COMMIT_RESOLUTION_PREFERRED_SOURCE_FAILED_TAG = "preferred_source_failed";
41
121
  export function resolvePromptMetricLabels(context) {
122
+ // Opt-in: only an ordinary user conversation turn may page or clear the
123
+ // streak. Background origins stay false so a forgotten call site cannot
124
+ // silently join the pager (ENG-5477 scout review).
125
+ const streakEligible = context.usageMetadata?.origin !== CLARK_USAGE_ORIGIN.app_migration;
42
126
  return {
43
127
  coreModel: context.llmConfig?.coreModel,
44
128
  hadFallback: context.workflowMetrics?.hadProviderFallback ?? false,
129
+ streakEligible,
45
130
  surface: context.surface,
46
131
  };
47
132
  }
@@ -67,6 +152,53 @@ function promptOutcomeModelAttributes(labels) {
67
152
  [PROMPT_HAD_FALLBACK_TAG]: labels.hadFallback ? "true" : "false",
68
153
  };
69
154
  }
155
+ /**
156
+ * A user cancel or a paywall stop is the system doing what it was told, so it
157
+ * neither extends a streak nor clears one. Clearing would let an interleaved
158
+ * cancel mask a conversation that fails on every real turn — and a user whose
159
+ * turns keep failing cancels often.
160
+ *
161
+ * A failure with no classification still counts: the origin split for
162
+ * validation errors depends on which layer rejected the request, and locally
163
+ * thrown SDK errors can arrive unclassified, so anything that is not provably
164
+ * user-driven has to count or the alert misses the cases it exists for.
165
+ */
166
+ function countsTowardFailureStreak(failure) {
167
+ if (!failure) {
168
+ return true;
169
+ }
170
+ switch (failure.origin) {
171
+ // Every provider-side rejection counts, including the `validation_error`
172
+ // that a poisoned context produces on every turn.
173
+ case "llm_provider":
174
+ return true;
175
+ case "platform":
176
+ return STREAK_POLICY[failure.platformReason];
177
+ // Keyed on the `user` discriminant rather than the `user_action` /
178
+ // `user_paywall` telemetry strings: those are a reporting split of this one
179
+ // origin, so a third `user_*` value would have to be excluded here too, and
180
+ // enumerating them would let it start tripping the streak with no type error.
181
+ case "user":
182
+ return false;
183
+ }
184
+ }
185
+ /**
186
+ * Dedupe keys are also log fields, and `resolvePromptRequestDedupeKey` falls
187
+ * back to the prompt itself when a request carries no id. Prompts are user
188
+ * content, so the fallback is dropped rather than logged: an unsearchable turn
189
+ * still leaves the counter, origin, and detail to triage from.
190
+ */
191
+ function requestIdLogAttribute(dedupeKey) {
192
+ return dedupeKey.startsWith(EPHEMERAL_DEDUPE_KEY_PREFIX)
193
+ ? {}
194
+ : { request_id: dedupeKey };
195
+ }
196
+ function promptIdLogAttribute(promptId) {
197
+ if (!promptId || promptId.startsWith(EPHEMERAL_DEDUPE_KEY_PREFIX)) {
198
+ return {};
199
+ }
200
+ return { prompt_id: promptId };
201
+ }
70
202
  class PromptRequestMetrics {
71
203
  cachedMeter;
72
204
  cachedInstruments;
@@ -75,7 +207,40 @@ class PromptRequestMetrics {
75
207
  recordedAwaitingUserDismissedKeys = new Set();
76
208
  recordedCreditsKeys = new Set();
77
209
  recordedOutcomeKeys = new Set();
210
+ /**
211
+ * Consecutive failed turns for this process, which is one app+user session.
212
+ * Not strictly per-chat: the process outlives a single chat, and starting a
213
+ * new one is exactly what a user does after a poisoning, so a streak can
214
+ * carry across chats. Any successful turn clears it, so the new chat resets
215
+ * the count as soon as it works; the residual case is a new chat whose first
216
+ * turn also fails, which reports a count spanning two chats and trips one
217
+ * turn early. That is tolerable at a threshold of 2 -- the user really did
218
+ * just fail twice -- and cheaper than threading a chat id down here.
219
+ *
220
+ * Also resets on process restart. That does *not* end the user's session:
221
+ * the editor reconnects behind StablePeer and chat history is server-
222
+ * persisted, so a crash-looping dev-server produces at most one streak-
223
+ * eligible failure per process lifetime and can never reach the threshold.
224
+ * Crash-loop / OOM incidents are therefore invisible to this alert by
225
+ * construction (ENG-5477 / ENG-5702 soak caveat).
226
+ */
227
+ consecutiveFailures = 0;
228
+ /**
229
+ * Last key that actually advanced the streak. Independent of
230
+ * `recordedOutcomeKeys`: `recordPromptAttempt` forgets the outcome key so a
231
+ * genuine retry can emit a new `outcomes_total` point, but a reconnect of
232
+ * the same request is still one turn and must not page.
233
+ */
234
+ lastStreakedDedupeKey;
78
235
  setIdentity(identity) {
236
+ // A different app or org means a different conversation, so a streak
237
+ // carried over would page against the wrong one. Today one process serves
238
+ // one conversation and this never fires; it keeps that assumption from
239
+ // being load-bearing if a process is ever reused.
240
+ if (this.applicationId !== identity.applicationId ||
241
+ this.organizationId !== identity.organizationId) {
242
+ this.clearFailureStreak();
243
+ }
79
244
  this.applicationId = identity.applicationId;
80
245
  this.organizationId = identity.organizationId;
81
246
  }
@@ -137,15 +302,23 @@ class PromptRequestMetrics {
137
302
  description: "Terminal outcomes for user prompt requests in the Clark agent loop.",
138
303
  unit: "1",
139
304
  }),
305
+ repeatedFailureCounter: meter.createCounter(METRIC_REPEATED_FAILURES, {
306
+ description: "Clark prompt failures on a conversation already at or past REPEATED_FAILURE_STREAK_THRESHOLD consecutive failed turns, excluding user cancels and paywall stops. Deliberately carries only identity plus failure_origin/failure_detail: this is the page-worthy signal, so core_model and had_fallback stay on outcomes_total rather than multiplying series here.",
307
+ unit: "1",
308
+ }),
140
309
  };
141
310
  return this.cachedInstruments;
142
311
  }
143
312
  recordAttempt(labels = {}) {
144
- this.getInstruments().attemptCounter.add(1, {
313
+ const attributes = {
145
314
  ...this.baseAttributes(),
146
315
  ...promptCoreModelAttributes(labels),
147
316
  ...promptSurfaceAttributes(labels),
148
- });
317
+ };
318
+ if (labels.entrypoint) {
319
+ attributes[PROMPT_ATTEMPT_ENTRYPOINT_TAG] = labels.entrypoint;
320
+ }
321
+ this.getInstruments().attemptCounter.add(1, attributes);
149
322
  }
150
323
  recordBaseCommitResolutionFailed(params) {
151
324
  this.getInstruments().baseCommitResolutionFailedCounter.add(1, {
@@ -158,6 +331,63 @@ class PromptRequestMetrics {
158
331
  forgetOutcomeDedupeKey(dedupeKey) {
159
332
  this.recordedOutcomeKeys.delete(dedupeKey);
160
333
  }
334
+ /**
335
+ * Clear the streak because the conversation made progress.
336
+ *
337
+ * Deliberately not gated on the outcome dedupe guard: that guard exists to
338
+ * stop one turn being counted twice, and a turn can legitimately report a
339
+ * failure and then a success on the same key (the outcome key survives
340
+ * AwaitingUser -> RuntimeReviewing -> AwaitingUser, since `resetContext` only
341
+ * runs on the Idle path). Skipping the reset there would leave a stale streak
342
+ * that pages on the next single failure.
343
+ */
344
+ clearFailureStreak() {
345
+ this.consecutiveFailures = 0;
346
+ this.lastStreakedDedupeKey = undefined;
347
+ }
348
+ /**
349
+ * Advance the streak for one failed turn, signaling once it is deep enough to
350
+ * be actionable. `lastStreakedDedupeKey` stops a reconnect of one turn from
351
+ * inflating the streak even after `recordPromptAttempt` forgets the outcome
352
+ * key.
353
+ */
354
+ advanceFailureStreak(params) {
355
+ if (!countsTowardFailureStreak(params.failure)) {
356
+ return;
357
+ }
358
+ if (this.lastStreakedDedupeKey === params.dedupeKey) {
359
+ return;
360
+ }
361
+ this.lastStreakedDedupeKey = params.dedupeKey;
362
+ this.consecutiveFailures += 1;
363
+ if (this.consecutiveFailures < REPEATED_FAILURE_STREAK_THRESHOLD) {
364
+ return;
365
+ }
366
+ try {
367
+ const failureAttributes = params.failure
368
+ ? promptFailureAttributes(params.failure)
369
+ : {};
370
+ this.getInstruments().repeatedFailureCounter.add(1, {
371
+ ...this.baseAttributes(),
372
+ ...failureAttributes,
373
+ });
374
+ // The counter says how many; on-call still needs which conversation, so
375
+ // pair it with a log carrying the turn ids the metric deliberately omits.
376
+ // `prompt_id` is the Clark UUID; `request_id` is the UI request id used
377
+ // for outcome dedupe. Triage `@prompt_id:` against LLMObs / clark_stream.
378
+ getLogger().warnStructured?.(REPEATED_FAILURE_LOG_MESSAGE, {
379
+ ...this.baseAttributes(),
380
+ ...failureAttributes,
381
+ consecutive_failures: this.consecutiveFailures,
382
+ event: REPEATED_FAILURE_LOG_EVENT,
383
+ ...promptIdLogAttribute(params.promptId),
384
+ ...requestIdLogAttribute(params.dedupeKey),
385
+ });
386
+ }
387
+ catch {
388
+ // Best-effort; generation (including AGENT_CANCELED teardown) must continue.
389
+ }
390
+ }
161
391
  recordAwaitingUserDismissed(params) {
162
392
  if (this.recordedAwaitingUserDismissedKeys.has(params.dedupeKey)) {
163
393
  return;
@@ -182,6 +412,9 @@ class PromptRequestMetrics {
182
412
  this.getInstruments().creditsHistogram.record(params.credits, this.creditsAttributes(params.labels));
183
413
  }
184
414
  recordOutcome(params) {
415
+ if (params.outcome === "success" && params.streakEligible === true) {
416
+ this.clearFailureStreak();
417
+ }
185
418
  if (this.recordedOutcomeKeys.has(params.dedupeKey)) {
186
419
  return;
187
420
  }
@@ -195,6 +428,13 @@ class PromptRequestMetrics {
195
428
  Object.assign(attributes, promptFailureAttributes(params.failure));
196
429
  }
197
430
  this.getInstruments().outcomeCounter.add(1, attributes);
431
+ if (params.outcome === "failure" && params.streakEligible === true) {
432
+ this.advanceFailureStreak({
433
+ dedupeKey: params.dedupeKey,
434
+ failure: params.failure,
435
+ promptId: params.promptId,
436
+ });
437
+ }
198
438
  }
199
439
  /** One attempt + failure outcome per dedupe key for pre-FSM entry rejections. */
200
440
  recordEntryRejection(params) {
@@ -215,12 +455,19 @@ class PromptRequestMetrics {
215
455
  outcome: "failure",
216
456
  ...promptFailureAttributes(params.failure),
217
457
  });
458
+ this.advanceFailureStreak({
459
+ dedupeKey: params.dedupeKey,
460
+ failure: params.failure,
461
+ promptId: params.promptId,
462
+ });
218
463
  }
219
464
  _resetForTesting() {
220
465
  this.cachedMeter = undefined;
221
466
  this.cachedInstruments = undefined;
222
467
  this.applicationId = undefined;
223
468
  this.organizationId = undefined;
469
+ this.consecutiveFailures = 0;
470
+ this.lastStreakedDedupeKey = undefined;
224
471
  this.recordedAwaitingUserDismissedKeys.clear();
225
472
  this.recordedCreditsKeys.clear();
226
473
  this.recordedOutcomeKeys.clear();
@@ -236,6 +483,7 @@ export function recordPromptAttempt(params) {
236
483
  }
237
484
  promptRequestMetrics.recordAttempt({
238
485
  coreModel: params?.coreModel,
486
+ entrypoint: params?.entrypoint,
239
487
  surface: params?.surface,
240
488
  });
241
489
  }
@@ -253,6 +501,8 @@ export function recordPromptOutcome(params) {
253
501
  dedupeKey: params.dedupeKey,
254
502
  outcome: params.outcome,
255
503
  failure: params.failure,
504
+ promptId: params.promptId,
505
+ streakEligible: params.streakEligible,
256
506
  labels: {
257
507
  coreModel: params.coreModel,
258
508
  hadFallback: params.hadFallback ?? false,
@@ -275,7 +525,7 @@ export function recordPromptCredits(params) {
275
525
  });
276
526
  }
277
527
  export function resolvePromptRequestDedupeKey(request) {
278
- return request.requestId ?? `ephemeral:${request.prompt}`;
528
+ return request.requestId ?? `${EPHEMERAL_DEDUPE_KEY_PREFIX}${request.prompt}`;
279
529
  }
280
530
  /**
281
531
  * Tags for the Clark root span when a prompt cycle ends via a terminal FSM
@@ -343,12 +593,21 @@ export function recordAwaitingUserPromptOutcome(params) {
343
593
  const outcomeLabels = {
344
594
  coreModel: params.coreModel,
345
595
  hadFallback: params.hadFallback ?? false,
596
+ promptId: params.promptId,
597
+ streakEligible: params.streakEligible,
346
598
  };
347
599
  if (params.countsAsPromptSuccess) {
348
600
  recordPromptOutcome({
349
601
  dedupeKey: params.dedupeKey,
350
602
  outcome: "success",
351
603
  ...outcomeLabels,
604
+ // A mid-turn pause is not the conversation recovering — Clark stopped to
605
+ // ask the user something (plan approval, tool permission). Clearing the
606
+ // streak here would zero a real failure streak that a later failure must
607
+ // still see (ENG-5477 review). Terminal handoffs (knowledge approval)
608
+ // pass clearsFailureStreak so a completed user action can reset it.
609
+ // Must follow the spread so it wins.
610
+ streakEligible: params.clearsFailureStreak === true,
352
611
  });
353
612
  return true;
354
613
  }
@@ -370,6 +629,7 @@ export function recordPromptEntryRejection(params) {
370
629
  promptRequestMetrics.recordEntryRejection({
371
630
  dedupeKey: params.dedupeKey,
372
631
  failure: params.failure,
632
+ promptId: params.promptId,
373
633
  labels: {
374
634
  coreModel: params.coreModel,
375
635
  surface: params.surface,