@agents-ensemble/core 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/dist/acp/acp-client.d.ts +9 -1
  2. package/dist/acp/acp-client.d.ts.map +1 -1
  3. package/dist/acp/acp-client.js +14 -11
  4. package/dist/acp/acp-client.js.map +1 -1
  5. package/dist/acp/acp-process.d.ts.map +1 -1
  6. package/dist/acp/acp-process.js +3 -1
  7. package/dist/acp/acp-process.js.map +1 -1
  8. package/dist/acp/index.d.ts +1 -1
  9. package/dist/acp/index.d.ts.map +1 -1
  10. package/dist/acp/index.js.map +1 -1
  11. package/dist/acp/testing/fake-acp-server.d.ts +4 -0
  12. package/dist/acp/testing/fake-acp-server.d.ts.map +1 -1
  13. package/dist/acp/testing/fake-acp-server.js +12 -7
  14. package/dist/acp/testing/fake-acp-server.js.map +1 -1
  15. package/dist/conductor/conductor-agent-factory.d.ts +5 -0
  16. package/dist/conductor/conductor-agent-factory.d.ts.map +1 -0
  17. package/dist/conductor/conductor-agent-factory.js +10 -0
  18. package/dist/conductor/conductor-agent-factory.js.map +1 -0
  19. package/dist/conductor/conductor-agent.d.ts +9 -0
  20. package/dist/conductor/conductor-agent.d.ts.map +1 -1
  21. package/dist/conductor/conductor-session-driver.d.ts +2 -0
  22. package/dist/conductor/conductor-session-driver.d.ts.map +1 -1
  23. package/dist/conductor/conductor-session-driver.js +7 -1
  24. package/dist/conductor/conductor-session-driver.js.map +1 -1
  25. package/dist/conductor/conductor-session.d.ts +2 -3
  26. package/dist/conductor/conductor-session.d.ts.map +1 -1
  27. package/dist/conductor/conductor-session.js +289 -26
  28. package/dist/conductor/conductor-session.js.map +1 -1
  29. package/dist/conductor/index.d.ts +6 -2
  30. package/dist/conductor/index.d.ts.map +1 -1
  31. package/dist/conductor/index.js +4 -1
  32. package/dist/conductor/index.js.map +1 -1
  33. package/dist/conductor/operator-close.d.ts +3 -0
  34. package/dist/conductor/operator-close.d.ts.map +1 -0
  35. package/dist/conductor/operator-close.js +6 -0
  36. package/dist/conductor/operator-close.js.map +1 -0
  37. package/dist/conductor/operator-command.d.ts +20 -0
  38. package/dist/conductor/operator-command.d.ts.map +1 -0
  39. package/dist/conductor/operator-command.js +29 -0
  40. package/dist/conductor/operator-command.js.map +1 -0
  41. package/dist/conductor/operator-exit.d.ts.map +1 -1
  42. package/dist/conductor/operator-exit.js +2 -2
  43. package/dist/conductor/operator-exit.js.map +1 -1
  44. package/dist/conductor/operator-post-loop-gate.d.ts +2 -2
  45. package/dist/conductor/operator-post-loop-gate.d.ts.map +1 -1
  46. package/dist/conductor/operator-reconnect.d.ts.map +1 -1
  47. package/dist/conductor/operator-reconnect.js +2 -2
  48. package/dist/conductor/operator-reconnect.js.map +1 -1
  49. package/dist/conductor/pi-conductor-agent.d.ts +7 -5
  50. package/dist/conductor/pi-conductor-agent.d.ts.map +1 -1
  51. package/dist/conductor/pi-conductor-agent.js +104 -23
  52. package/dist/conductor/pi-conductor-agent.js.map +1 -1
  53. package/dist/conductor/pi-resource-loader.d.ts +2 -0
  54. package/dist/conductor/pi-resource-loader.d.ts.map +1 -1
  55. package/dist/conductor/pi-resource-loader.js +16 -8
  56. package/dist/conductor/pi-resource-loader.js.map +1 -1
  57. package/dist/conductor/session/dispatch-hold.d.ts +1 -1
  58. package/dist/conductor/session/dispatch-hold.d.ts.map +1 -1
  59. package/dist/conductor/session/dispatch-hold.js +4 -3
  60. package/dist/conductor/session/dispatch-hold.js.map +1 -1
  61. package/dist/conductor/session/dispatch-mode.d.ts +1 -1
  62. package/dist/conductor/session/events/index.d.ts +3 -2
  63. package/dist/conductor/session/events/index.d.ts.map +1 -1
  64. package/dist/conductor/session/events/index.js.map +1 -1
  65. package/dist/conductor/session/events/session-event.d.ts +7 -1
  66. package/dist/conductor/session/events/session-event.d.ts.map +1 -1
  67. package/dist/conductor/session/events/session-log-event-groups.d.ts +4 -4
  68. package/dist/conductor/session/events/session-log-event-groups.d.ts.map +1 -1
  69. package/dist/conductor/session/events/session-log-event-groups.js +3 -0
  70. package/dist/conductor/session/events/session-log-event-groups.js.map +1 -1
  71. package/dist/conductor/session/events/session-log-event.d.ts +9 -2
  72. package/dist/conductor/session/events/session-log-event.d.ts.map +1 -1
  73. package/dist/conductor/session/events/shared/permission-pending.d.ts +7 -0
  74. package/dist/conductor/session/events/shared/permission-pending.d.ts.map +1 -1
  75. package/dist/conductor/session/format-session-event.d.ts.map +1 -1
  76. package/dist/conductor/session/format-session-event.js +37 -2
  77. package/dist/conductor/session/format-session-event.js.map +1 -1
  78. package/dist/conductor/session/select-dispatch-batch.d.ts.map +1 -1
  79. package/dist/conductor/session/select-dispatch-batch.js +21 -4
  80. package/dist/conductor/session/select-dispatch-batch.js.map +1 -1
  81. package/dist/conductor/session/session-event.d.ts +1 -1
  82. package/dist/conductor/session/session-event.d.ts.map +1 -1
  83. package/dist/conductor/session/session-logger.d.ts.map +1 -1
  84. package/dist/conductor/session/session-logger.js +2 -0
  85. package/dist/conductor/session/session-logger.js.map +1 -1
  86. package/dist/dispatch/get-tool-call-tool.d.ts +8 -0
  87. package/dist/dispatch/get-tool-call-tool.d.ts.map +1 -0
  88. package/dist/dispatch/get-tool-call-tool.js +46 -0
  89. package/dist/dispatch/get-tool-call-tool.js.map +1 -0
  90. package/dist/dispatch/index.d.ts +3 -0
  91. package/dist/dispatch/index.d.ts.map +1 -1
  92. package/dist/dispatch/index.js +2 -0
  93. package/dist/dispatch/index.js.map +1 -1
  94. package/dist/dispatch/report-session-state-tool.d.ts +4 -0
  95. package/dist/dispatch/report-session-state-tool.d.ts.map +1 -0
  96. package/dist/dispatch/report-session-state-tool.js +38 -0
  97. package/dist/dispatch/report-session-state-tool.js.map +1 -0
  98. package/dist/dispatch/session-usage-tool.js +1 -1
  99. package/dist/dispatch/session-usage-tool.js.map +1 -1
  100. package/dist/escalation/answer-open-question-tool.d.ts.map +1 -1
  101. package/dist/escalation/answer-open-question-tool.js +1 -6
  102. package/dist/escalation/answer-open-question-tool.js.map +1 -1
  103. package/dist/escalation/ask-human-tool.d.ts.map +1 -1
  104. package/dist/escalation/ask-human-tool.js +7 -5
  105. package/dist/escalation/ask-human-tool.js.map +1 -1
  106. package/dist/escalation/open-question.d.ts.map +1 -1
  107. package/dist/escalation/open-question.js +5 -8
  108. package/dist/escalation/open-question.js.map +1 -1
  109. package/dist/escalation/record-open-question-answer.js +4 -2
  110. package/dist/escalation/record-open-question-answer.js.map +1 -1
  111. package/dist/escalation/yes-no-assent.d.ts.map +1 -1
  112. package/dist/escalation/yes-no-assent.js +5 -3
  113. package/dist/escalation/yes-no-assent.js.map +1 -1
  114. package/dist/github/github-monitor-cursor.d.ts +3 -1
  115. package/dist/github/github-monitor-cursor.d.ts.map +1 -1
  116. package/dist/github/github-monitor-cursor.js +11 -1
  117. package/dist/github/github-monitor-cursor.js.map +1 -1
  118. package/dist/github/github-monitor-error.d.ts +1 -1
  119. package/dist/github/github-monitor-error.d.ts.map +1 -1
  120. package/dist/github/github-monitor-error.js +35 -0
  121. package/dist/github/github-monitor-error.js.map +1 -1
  122. package/dist/github/github-monitor.d.ts +4 -0
  123. package/dist/github/github-monitor.d.ts.map +1 -1
  124. package/dist/github/github-monitor.js +60 -2
  125. package/dist/github/github-monitor.js.map +1 -1
  126. package/dist/operator-runtime.d.ts +20 -0
  127. package/dist/operator-runtime.d.ts.map +1 -0
  128. package/dist/operator-runtime.js +14 -0
  129. package/dist/operator-runtime.js.map +1 -0
  130. package/dist/permission/format-permission-summary-for-operator.d.ts.map +1 -1
  131. package/dist/permission/format-permission-summary-for-operator.js +44 -12
  132. package/dist/permission/format-permission-summary-for-operator.js.map +1 -1
  133. package/dist/permission/index.d.ts +2 -0
  134. package/dist/permission/index.d.ts.map +1 -1
  135. package/dist/permission/index.js +1 -0
  136. package/dist/permission/index.js.map +1 -1
  137. package/dist/permission/permission-brief.d.ts +22 -0
  138. package/dist/permission/permission-brief.d.ts.map +1 -0
  139. package/dist/permission/permission-brief.js +245 -0
  140. package/dist/permission/permission-brief.js.map +1 -0
  141. package/dist/permission/permission-request.js +7 -2
  142. package/dist/permission/permission-request.js.map +1 -1
  143. package/dist/prompt/index.d.ts +1 -0
  144. package/dist/prompt/index.d.ts.map +1 -1
  145. package/dist/prompt/index.js +1 -0
  146. package/dist/prompt/index.js.map +1 -1
  147. package/dist/prompt/modules/ensemble/conductor-base-module.d.ts.map +1 -1
  148. package/dist/prompt/modules/ensemble/conductor-base-module.js +12 -0
  149. package/dist/prompt/modules/ensemble/conductor-base-module.js.map +1 -1
  150. package/dist/runtime/index.d.ts +3 -0
  151. package/dist/runtime/index.d.ts.map +1 -1
  152. package/dist/runtime/index.js +2 -0
  153. package/dist/runtime/index.js.map +1 -1
  154. package/dist/runtime/tool-call-snapshot-registry.d.ts +69 -0
  155. package/dist/runtime/tool-call-snapshot-registry.d.ts.map +1 -0
  156. package/dist/runtime/tool-call-snapshot-registry.js +275 -0
  157. package/dist/runtime/tool-call-snapshot-registry.js.map +1 -0
  158. package/dist/runtime/types.d.ts +2 -0
  159. package/dist/runtime/types.d.ts.map +1 -1
  160. package/dist/runtime/worker-runtime.d.ts.map +1 -1
  161. package/dist/runtime/worker-runtime.js +6 -2
  162. package/dist/runtime/worker-runtime.js.map +1 -1
  163. package/dist/session/index.d.ts +2 -0
  164. package/dist/session/index.d.ts.map +1 -1
  165. package/dist/session/index.js +1 -0
  166. package/dist/session/index.js.map +1 -1
  167. package/dist/session/open-questions-store.d.ts +12 -0
  168. package/dist/session/open-questions-store.d.ts.map +1 -0
  169. package/dist/session/open-questions-store.js +161 -0
  170. package/dist/session/open-questions-store.js.map +1 -0
  171. package/dist/session/session-sidecar.d.ts +1 -1
  172. package/dist/session/session-sidecar.d.ts.map +1 -1
  173. package/dist/session/tool-call-snapshot-history.d.ts +32 -0
  174. package/dist/session/tool-call-snapshot-history.d.ts.map +1 -0
  175. package/dist/session/tool-call-snapshot-history.js +203 -0
  176. package/dist/session/tool-call-snapshot-history.js.map +1 -0
  177. package/dist/usage/enrich-session-usage-cost.d.ts +4 -1
  178. package/dist/usage/enrich-session-usage-cost.d.ts.map +1 -1
  179. package/dist/usage/enrich-session-usage-cost.js +8 -2
  180. package/dist/usage/enrich-session-usage-cost.js.map +1 -1
  181. package/dist/usage/index.d.ts +1 -1
  182. package/dist/usage/index.d.ts.map +1 -1
  183. package/dist/usage/session-usage-tracker.d.ts +7 -1
  184. package/dist/usage/session-usage-tracker.d.ts.map +1 -1
  185. package/dist/usage/session-usage-tracker.js +51 -0
  186. package/dist/usage/session-usage-tracker.js.map +1 -1
  187. package/dist/usage/types.d.ts +30 -2
  188. package/dist/usage/types.d.ts.map +1 -1
  189. package/package.json +5 -1
@@ -0,0 +1,38 @@
1
+ import { yamlToolResult } from './yaml-tool-result.js';
2
+ export const REPORT_SESSION_STATE_MAX_LENGTH = 80;
3
+ export function createReportSessionStateTool() {
4
+ return {
5
+ report_session_state: {
6
+ name: 'report_session_state',
7
+ description: 'Register a one-line operator status (max 80 characters). Omit metrics and worker or permission details.',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ statusLine: {
12
+ type: 'string',
13
+ maxLength: REPORT_SESSION_STATE_MAX_LENGTH,
14
+ description: 'A concise, one-line status for the operator.',
15
+ },
16
+ },
17
+ required: ['statusLine'],
18
+ },
19
+ async execute(args) {
20
+ if (typeof args.statusLine !== 'string') {
21
+ throw new Error('report_session_state requires statusLine');
22
+ }
23
+ const statusLine = args.statusLine.trim();
24
+ if (!statusLine) {
25
+ throw new Error('report_session_state statusLine must not be empty');
26
+ }
27
+ if (/[\r\n]/u.test(statusLine)) {
28
+ throw new Error('report_session_state statusLine must be one line');
29
+ }
30
+ if (Array.from(statusLine).length > REPORT_SESSION_STATE_MAX_LENGTH) {
31
+ throw new Error(`report_session_state statusLine must be at most ${REPORT_SESSION_STATE_MAX_LENGTH} characters`);
32
+ }
33
+ return yamlToolResult('report_session_state', { statusLine });
34
+ },
35
+ },
36
+ };
37
+ }
38
+ //# sourceMappingURL=report-session-state-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-session-state-tool.js","sourceRoot":"","sources":["../../src/dispatch/report-session-state-tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAElD,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,oBAAoB,EAAE;YACpB,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EACT,yGAAyG;YAC3G,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,+BAA+B;wBAC1C,WAAW,EAAE,8CAA8C;qBAC5D;iBACF;gBACD,QAAQ,EAAE,CAAC,YAAY,CAAC;aACzB;YACD,KAAK,CAAC,OAAO,CAAC,IAAI;gBAChB,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;oBACxC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACvE,CAAC;gBACD,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC/B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBACtE,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,+BAA+B,EAAE,CAAC;oBACpE,MAAM,IAAI,KAAK,CACb,mDAAmD,+BAA+B,aAAa,CAChG,CAAC;gBACJ,CAAC;gBAED,OAAO,cAAc,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;YAChE,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -5,7 +5,7 @@ export function createSessionUsageTools(options) {
5
5
  return {
6
6
  get_session_usage: {
7
7
  name: 'get_session_usage',
8
- description: 'Read session-wide LLM token usage (cumulative input/output, per-agent breakdown, context utilization when limit is known). Use for operator token / context % questions — not prompt_worker.',
8
+ description: 'Read session-wide LLM usage. Token totals include recorded usage only (including worker text-based estimates) and may omit failed or unreported rounds; cache rates are shown when reported, context utilization when known, and billing covers conductor-reported charges only (worker charges are not included). Compaction data is included when available. Use for operator token, cache, context, cost, or compaction questions — not prompt_worker.',
9
9
  inputSchema: {
10
10
  type: 'object',
11
11
  properties: {},
@@ -1 +1 @@
1
- {"version":3,"file":"session-usage-tool.js","sourceRoot":"","sources":["../../src/dispatch/session-usage-tool.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,GAE3B,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQvD,MAAM,UAAU,uBAAuB,CACrC,OAAgC;IAEhC,MAAM,SAAS,GAAG,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAExD,OAAO;QACL,iBAAiB,EAAE;YACjB,IAAI,EAAE,mBAAmB;YACzB,WAAW,EACT,8LAA8L;YAChM,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;aACf;YACD,KAAK,CAAC,OAAO;gBACX,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAC9C,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,EACnC,OAAO,CAAC,qBAAqB,CAC9B,CAAC;gBACF,OAAO,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;SACF;QACD,SAAS,EAAE;YACT,IAAI,EAAE,WAAW;YACjB,WAAW,EACT,iIAAiI;YACnI,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,SAAS;wBACf,WAAW,EACT,8FAA8F;qBACjG;iBACF;aACF;YACD,KAAK,CAAC,OAAO,CAAC,IAAI;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAC1C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CACzC,CAAC;gBACF,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAwB;IAChD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACpC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"session-usage-tool.js","sourceRoot":"","sources":["../../src/dispatch/session-usage-tool.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,GAE3B,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQvD,MAAM,UAAU,uBAAuB,CACrC,OAAgC;IAEhC,MAAM,SAAS,GAAG,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAExD,OAAO;QACL,iBAAiB,EAAE;YACjB,IAAI,EAAE,mBAAmB;YACzB,WAAW,EACT,2bAA2b;YAC7b,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;aACf;YACD,KAAK,CAAC,OAAO;gBACX,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAC9C,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,EACnC,OAAO,CAAC,qBAAqB,CAC9B,CAAC;gBACF,OAAO,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;SACF;QACD,SAAS,EAAE;YACT,IAAI,EAAE,WAAW;YACjB,WAAW,EACT,iIAAiI;YACnI,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,SAAS;wBACf,WAAW,EACT,8FAA8F;qBACjG;iBACF;aACF;YACD,KAAK,CAAC,OAAO,CAAC,IAAI;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAC1C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CACzC,CAAC;gBACF,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAwB;IAChD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACpC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"answer-open-question-tool.d.ts","sourceRoot":"","sources":["../../src/escalation/answer-open-question-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG7E,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,6BAA6B,GACrC,gBAAgB,CAsHlB"}
1
+ {"version":3,"file":"answer-open-question-tool.d.ts","sourceRoot":"","sources":["../../src/escalation/answer-open-question-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG7E,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,6BAA6B,GACrC,gBAAgB,CA6GlB"}
@@ -24,7 +24,7 @@ export function createAnswerOpenQuestionTool(options) {
24
24
  },
25
25
  selectedChoice: {
26
26
  type: 'string',
27
- description: 'Selected choice option id for a choice question; answer text is preserved separately',
27
+ description: 'Optional choice option id when the operator intent uniquely identifies it; answer text is always preserved and may be free-form',
28
28
  },
29
29
  rationale: {
30
30
  type: 'string',
@@ -54,11 +54,6 @@ export function createAnswerOpenQuestionTool(options) {
54
54
  rationale,
55
55
  });
56
56
  if (!recorded) {
57
- const question = options.registry.get(questionId);
58
- if (question?.status === 'open' &&
59
- question.responseType === 'choice') {
60
- throw new Error(`answer_open_question: choice answer must resolve to one of the listed options: ${questionId}`);
61
- }
62
57
  throw new Error(`answer_open_question: question not found or already answered: ${questionId}`);
63
58
  }
64
59
  options.onAnswered?.(recorded);
@@ -1 +1 @@
1
- {"version":3,"file":"answer-open-question-tool.js","sourceRoot":"","sources":["../../src/escalation/answer-open-question-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"answer-open-question-tool.js","sourceRoot":"","sources":["../../src/escalation/answer-open-question-tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ask-human-tool.d.ts","sourceRoot":"","sources":["../../src/escalation/ask-human-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAMvE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,GAC3B,gBAAgB,CAmGlB"}
1
+ {"version":3,"file":"ask-human-tool.d.ts","sourceRoot":"","sources":["../../src/escalation/ask-human-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAMvE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,GAC3B,gBAAgB,CAqGlB"}
@@ -8,7 +8,7 @@ export function createAskHumanTool(options) {
8
8
  'The operator answers in chat on a later turn; you can continue without waiting.',
9
9
  'DO NOT use if the operator already answered in chat — use answer_open_question to record their answer instead.',
10
10
  'DO NOT use answer_open_question and ask_human for the same decision in one turn.',
11
- 'Use yes_no for binary choices, choice for a fixed list of options, or text for open guidance.',
11
+ 'Use yes_no for binary choices, choice to offer a fixed list of quick-select options (operators may still answer in free text), or text for open guidance.',
12
12
  ].join(' '),
13
13
  inputSchema: {
14
14
  type: 'object',
@@ -20,7 +20,7 @@ export function createAskHumanTool(options) {
20
20
  responseType: {
21
21
  type: 'string',
22
22
  enum: ['yes_no', 'text', 'choice'],
23
- description: 'yes_no for binary assent, choice for a fixed option list, text for free-form guidance',
23
+ description: 'yes_no for binary assent, choice for a fixed option list with free-form answers also accepted, text for open guidance',
24
24
  },
25
25
  choices: {
26
26
  type: 'array',
@@ -32,7 +32,7 @@ export function createAskHumanTool(options) {
32
32
  },
33
33
  required: ['id', 'label'],
34
34
  },
35
- description: 'Required for choice: options the operator can select by id, label, or one-based number',
35
+ description: 'Required for choice: options the operator can select by id, unique label, or one-based number. Free-form answers are also accepted; an ambiguous label is recorded as answer text without selectedChoice.',
36
36
  },
37
37
  context: {
38
38
  type: 'string',
@@ -52,9 +52,11 @@ export function createAskHumanTool(options) {
52
52
  }
53
53
  const responseType = parseResponseType(args.responseType);
54
54
  const choices = responseType === 'choice' ? parseChoices(args.choices) : undefined;
55
- const context = args.context ? String(args.context) : undefined;
56
55
  const relatedPermissionId = args.relatedPermissionId
57
- ? String(args.relatedPermissionId)
56
+ ? String(args.relatedPermissionId).trim() || undefined
57
+ : undefined;
58
+ const context = args.context
59
+ ? String(args.context).trim() || undefined
58
60
  : undefined;
59
61
  const entry = options.registry.enqueue({
60
62
  question,
@@ -1 +1 @@
1
- {"version":3,"file":"ask-human-tool.js","sourceRoot":"","sources":["../../src/escalation/ask-human-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask-human-tool.js","sourceRoot":"","sources":["../../src/escalation/ask-human-tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"open-question.d.ts","sourceRoot":"","sources":["../../src/escalation/open-question.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,wBAAwB,CAAC;IACvC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,wBAAwB,CAAC;IACvC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,sBAAsB,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yDAAyD;AACzD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,OAAO,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY;IAmBtD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIzC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,YAAY,GAAG,SAAS;IAoC5E,IAAI,IAAI,YAAY,EAAE;IAItB,QAAQ,IAAI,YAAY,EAAE;IAI1B,YAAY,IAAI,YAAY,EAAE;IAI9B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,QAAQ,IAAI,4BAA4B;IAOxC,OAAO,CAAC,QAAQ,EAAE,4BAA4B,GAAG,IAAI;CAOtD;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B"}
1
+ {"version":3,"file":"open-question.d.ts","sourceRoot":"","sources":["../../src/escalation/open-question.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,wBAAwB,CAAC;IACvC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,wBAAwB,CAAC;IACvC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,sBAAsB,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yDAAyD;AACzD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,OAAO,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY;IAmBtD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIzC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,YAAY,GAAG,SAAS;IAiC5E,IAAI,IAAI,YAAY,EAAE;IAItB,QAAQ,IAAI,YAAY,EAAE;IAI1B,YAAY,IAAI,YAAY,EAAE;IAI9B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,QAAQ,IAAI,4BAA4B;IAOxC,OAAO,CAAC,QAAQ,EAAE,4BAA4B,GAAG,IAAI;CAOtD;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B"}
@@ -27,19 +27,16 @@ export class OpenQuestionRegistry {
27
27
  const entry = this.entries.get(id);
28
28
  if (!entry || entry.status !== 'open')
29
29
  return undefined;
30
- if (entry.responseType === 'choice' &&
31
- !entry.choices?.some((choice) => choice.id === input.selectedChoice)) {
32
- return undefined;
33
- }
30
+ const matchingChoices = entry.responseType === 'choice'
31
+ ? entry.choices?.filter((choice) => choice.id === input.selectedChoice)
32
+ : undefined;
33
+ const selectedChoice = matchingChoices?.length === 1 ? matchingChoices[0]?.id : undefined;
34
34
  const updated = {
35
35
  ...entry,
36
36
  status: 'answered',
37
37
  answer: input.answer,
38
38
  assent: entry.responseType === 'yes_no' ? input.assent : undefined,
39
- selectedChoice: entry.responseType === 'choice' &&
40
- entry.choices?.some((choice) => choice.id === input.selectedChoice)
41
- ? input.selectedChoice
42
- : undefined,
39
+ selectedChoice,
43
40
  approved: entry.responseType === 'yes_no' &&
44
41
  entry.relatedPermissionId &&
45
42
  input.assent !== undefined &&
@@ -1 +1 @@
1
- {"version":3,"file":"open-question.js","sourceRoot":"","sources":["../../src/escalation/open-question.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"open-question.js","sourceRoot":"","sources":["../../src/escalation/open-question.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,9 @@ export function recordOpenQuestionAnswer(registry, input) {
19
19
  });
20
20
  }
21
21
  function resolveSelectedChoice(selectedChoice, answer, choices) {
22
- const explicitChoice = choices.find((choice) => choice.id === selectedChoice?.trim());
23
- return explicitChoice?.id ?? parseChoiceSelection(answer, choices);
22
+ const explicitChoices = choices.filter((choice) => choice.id === selectedChoice?.trim());
23
+ if (explicitChoices.length === 1)
24
+ return explicitChoices[0]?.id;
25
+ return parseChoiceSelection(answer, choices);
24
26
  }
25
27
  //# sourceMappingURL=record-open-question-answer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-open-question-answer.js","sourceRoot":"","sources":["../../src/escalation/record-open-question-answer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAa5E,MAAM,UAAU,wBAAwB,CACtC,QAA8B,EAC9B,KAAoC;IAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAExD,MAAM,MAAM,GACV,KAAK,CAAC,YAAY,KAAK,QAAQ;QAC7B,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,cAAc,GAClB,KAAK,CAAC,YAAY,KAAK,QAAQ;QAC7B,CAAC,CAAC,qBAAqB,CACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,OAAO,IAAI,EAAE,CACpB;QACH,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;QAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM;QACN,cAAc;QACd,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC5B,cAAkC,EAClC,MAAc,EACd,OAA6C;IAE7C,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CACjC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,cAAc,EAAE,IAAI,EAAE,CACjD,CAAC;IACF,OAAO,cAAc,EAAE,EAAE,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"record-open-question-answer.js","sourceRoot":"","sources":["../../src/escalation/record-open-question-answer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAa5E,MAAM,UAAU,wBAAwB,CACtC,QAA8B,EAC9B,KAAoC;IAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAExD,MAAM,MAAM,GACV,KAAK,CAAC,YAAY,KAAK,QAAQ;QAC7B,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,cAAc,GAClB,KAAK,CAAC,YAAY,KAAK,QAAQ;QAC7B,CAAC,CAAC,qBAAqB,CACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,OAAO,IAAI,EAAE,CACpB;QACH,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;QAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM;QACN,cAAc;QACd,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC5B,cAAkC,EAClC,MAAc,EACd,OAA6C;IAE7C,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CACpC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,cAAc,EAAE,IAAI,EAAE,CACjD,CAAC;IACF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAChE,OAAO,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"yes-no-assent.d.ts","sourceRoot":"","sources":["../../src/escalation/yes-no-assent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAoFnD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA2C5D;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,YAAY,EAAE,GACtB,MAAM,GAAG,SAAS,CAsBpB"}
1
+ {"version":3,"file":"yes-no-assent.d.ts","sourceRoot":"","sources":["../../src/escalation/yes-no-assent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAoFnD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA2C5D;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,YAAY,EAAE,GACtB,MAAM,GAAG,SAAS,CAuBpB"}
@@ -111,9 +111,11 @@ export function parseChoiceSelection(answer, choices) {
111
111
  const normalizedAnswer = normalizeAnswer(answer);
112
112
  if (!normalizedAnswer)
113
113
  return undefined;
114
- const matchedId = choices.find((choice) => normalizeAnswer(choice.id) === normalizedAnswer);
115
- if (matchedId)
116
- return matchedId.id;
114
+ const matchingIds = choices.filter((choice) => normalizeAnswer(choice.id) === normalizedAnswer);
115
+ if (matchingIds.length === 1)
116
+ return matchingIds[0]?.id;
117
+ if (matchingIds.length > 1)
118
+ return undefined;
117
119
  const matchingLabels = choices.filter((choice) => normalizeAnswer(choice.label) === normalizedAnswer);
118
120
  if (matchingLabels.length === 1)
119
121
  return matchingLabels[0]?.id;
@@ -1 +1 @@
1
- {"version":3,"file":"yes-no-assent.js","sourceRoot":"","sources":["../../src/escalation/yes-no-assent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yes-no-assent.js","sourceRoot":"","sources":["../../src/escalation/yes-no-assent.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { GitHubCiAggregateState, GitHubUpdateKind } from './github-update-types.js';
1
+ import type { GitHubCiAggregateState, GitHubUpdateItem, GitHubUpdateKind } from './github-update-types.js';
2
2
  /**
3
3
  * 旧 sidecar の CI 正規化フェーズ。
4
4
  * @deprecated SHA 集約では `lastAggregateBySha` を使用する。
@@ -67,6 +67,8 @@ export interface GitHubMonitorCursor {
67
67
  pullRequests?: Record<string, PullRequestMonitorCursor>;
68
68
  /** search 以外で明示登録された PR 番号(文字列キー)。 */
69
69
  explicitPullRequests?: Record<string, ExplicitPullRequestWatch>;
70
+ /** conductor が受け取ったことを確認できていない更新。再開時に再配送する。 */
71
+ pendingUpdates?: GitHubUpdateItem[];
70
72
  }
71
73
  export declare function emptyGitHubMonitorCursor(): GitHubMonitorCursor;
72
74
  export declare function normalizeGitHubMonitorCursor(cursor?: GitHubMonitorCursor): GitHubMonitorCursor;
@@ -1 +1 @@
1
- {"version":3,"file":"github-monitor-cursor.d.ts","sourceRoot":"","sources":["../../src/github/github-monitor-cursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,WAAW,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,4BAA4B;AAC5B,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC5D;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC/C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,0BAA0B;AAC1B,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,4BAA4B;AAC5B,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAIxD,CAAC;AAEF,oCAAoC;AACpC,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACxD,sCAAsC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;CACjE;AAED,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,CAAC,EAAE,mBAAmB,GAC3B,mBAAmB,CAqBrB;AAiCD,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAe/E"}
1
+ {"version":3,"file":"github-monitor-cursor.d.ts","sourceRoot":"","sources":["../../src/github/github-monitor-cursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,WAAW,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,4BAA4B;AAC5B,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC5D;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC/C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,0BAA0B;AAC1B,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,4BAA4B;AAC5B,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAIxD,CAAC;AAEF,oCAAoC;AACpC,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACxD,sCAAsC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAChE,+CAA+C;IAC/C,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACrC;AAED,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,CAAC,EAAE,mBAAmB,GAC3B,mBAAmB,CA+BrB;AAiCD,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAe/E"}
@@ -21,6 +21,16 @@ export function normalizeGitHubMonitorCursor(cursor) {
21
21
  ...(watch.kinds ? { kinds: [...watch.kinds] } : {}),
22
22
  },
23
23
  ])),
24
+ ...(cursor?.pendingUpdates && cursor.pendingUpdates.length > 0
25
+ ? {
26
+ pendingUpdates: cursor.pendingUpdates.map((item) => ({
27
+ ...item,
28
+ ...(item.failedCheckNames
29
+ ? { failedCheckNames: [...item.failedCheckNames] }
30
+ : {}),
31
+ })),
32
+ }
33
+ : {}),
24
34
  };
25
35
  }
26
36
  function normalizePullRequestMonitorCursor(cursor) {
@@ -45,7 +55,7 @@ function isAggregateState(value) {
45
55
  }
46
56
  /** 新規セッション初回 poll のカーソル初期化のみか(sidecar 復元済みなら false)。worker の init prompt とは無関係。 */
47
57
  export function isEmptyGitHubMonitorCursor(cursor) {
48
- if (cursor.lastIssueCommentId) {
58
+ if (cursor.lastIssueCommentId || cursor.pendingUpdates?.length) {
49
59
  return false;
50
60
  }
51
61
  for (const pr of Object.values(cursor.pullRequests ?? {})) {
@@ -1 +1 @@
1
- {"version":3,"file":"github-monitor-cursor.js","sourceRoot":"","sources":["../../src/github/github-monitor-cursor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-monitor-cursor.js","sourceRoot":"","sources":["../../src/github/github-monitor-cursor.ts"],"names":[],"mappings":"AAqEA,4BAA4B;AAC5B,MAAM,CAAC,MAAM,0BAA0B,GAAuB;IAC5D,WAAW;IACX,mBAAmB;IACnB,cAAc;CACf,CAAC;AAcF,MAAM,UAAU,wBAAwB;IACtC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAA4B;IAE5B,OAAO;QACL,kBAAkB,EAAE,MAAM,EAAE,kBAAkB;QAC9C,YAAY,EAAE,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;YACvE,QAAQ;YACR,iCAAiC,CAAC,QAAQ,CAAC;SAC5C,CAAC,CACH;QACD,oBAAoB,EAAE,MAAM,CAAC,WAAW,CACtC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC,GAAG,CACpD,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YACrB,QAAQ;YACR;gBACE,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD;SACF,CACF,CACF;QACD,GAAG,CAAC,MAAM,EAAE,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YAC5D,CAAC,CAAC;gBACE,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACnD,GAAG,IAAI;oBACP,GAAG,CAAC,IAAI,CAAC,gBAAgB;wBACvB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE;wBAClD,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CAAC;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CACxC,MAAgC;IAEhC,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;YACvC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,kBAAkB,EAAE,wBAAwB,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE;YAC7E,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,MAA8C;IAE9C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3B,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAC5D,CACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,CAAC;AAC5E,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,0BAA0B,CAAC,MAA2B;IACpE,IAAI,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1D,IACE,EAAE,CAAC,YAAY;YACf,EAAE,CAAC,mBAAmB;YACtB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;YACnD,EAAE,CAAC,kBAAkB,KAAK,IAAI,EAC9B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /** GitHub 監視 poll のフェーズ(`monitor_error` 用)。 */
2
2
  export type GitHubMonitorErrorPhase = 'issue_comments' | 'pr_search' | 'pr_reviews' | 'pr_review_comments' | 'pr_status_checks';
3
- export type GitHubMonitorErrorCause = 'parse' | 'gh_cli' | 'auth' | 'unknown';
3
+ export type GitHubMonitorErrorCause = 'parse' | 'gh_cli' | 'auth' | 'network' | 'unknown';
4
4
  export interface GitHubMonitorPhaseError {
5
5
  phase: GitHubMonitorErrorPhase;
6
6
  prNumber?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"github-monitor-error.d.ts","sourceRoot":"","sources":["../../src/github/github-monitor-error.ts"],"names":[],"mappings":"AAGA,+CAA+C;AAC/C,MAAM,MAAM,uBAAuB,GAC/B,gBAAgB,GAChB,WAAW,GACX,YAAY,GACZ,oBAAoB,GACpB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9E,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,uBAAuB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,uBAAuB,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,oCAAoC;AACpC,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,OAAO,EAAE,uBAAuB;CAQ7C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,IAAI,CAAC,uBAAuB,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,CA8ClE;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,uBAAuB,CAQzB"}
1
+ {"version":3,"file":"github-monitor-error.d.ts","sourceRoot":"","sources":["../../src/github/github-monitor-error.ts"],"names":[],"mappings":"AAGA,+CAA+C;AAC/C,MAAM,MAAM,uBAAuB,GAC/B,gBAAgB,GAChB,WAAW,GACX,YAAY,GACZ,oBAAoB,GACpB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,uBAAuB,GAC/B,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,uBAAuB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,uBAAuB,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,oCAAoC;AACpC,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,OAAO,EAAE,uBAAuB;CAQ7C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,IAAI,CAAC,uBAAuB,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,CAsDlE;AA8CD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,uBAAuB,CAQzB"}
@@ -43,6 +43,13 @@ export function classifyGitHubMonitorError(error) {
43
43
  message: error.message,
44
44
  };
45
45
  }
46
+ if (isRetryableNetworkError(error)) {
47
+ return {
48
+ cause: 'network',
49
+ retryable: true,
50
+ message: error instanceof Error ? error.message : String(error),
51
+ };
52
+ }
46
53
  if (error instanceof TypeError) {
47
54
  return {
48
55
  cause: 'parse',
@@ -63,6 +70,34 @@ export function classifyGitHubMonitorError(error) {
63
70
  message: String(error),
64
71
  };
65
72
  }
73
+ const RETRYABLE_NETWORK_ERROR_CODES = new Set([
74
+ 'ECONNRESET',
75
+ 'ECONNREFUSED',
76
+ 'EHOSTUNREACH',
77
+ 'ENETUNREACH',
78
+ 'EAI_AGAIN',
79
+ 'ENOTFOUND',
80
+ 'ETIMEDOUT',
81
+ 'UND_ERR_CONNECT_TIMEOUT',
82
+ 'UND_ERR_HEADERS_TIMEOUT',
83
+ 'UND_ERR_SOCKET',
84
+ ]);
85
+ function isRetryableNetworkError(error, seen = new Set()) {
86
+ if (error === null || typeof error !== 'object' || seen.has(error)) {
87
+ return false;
88
+ }
89
+ seen.add(error);
90
+ const candidate = error;
91
+ if (typeof candidate.code === 'string' &&
92
+ RETRYABLE_NETWORK_ERROR_CODES.has(candidate.code)) {
93
+ return true;
94
+ }
95
+ if (typeof candidate.message === 'string' &&
96
+ /^(fetch failed|network error|network request failed|load failed)$/i.test(candidate.message.trim())) {
97
+ return true;
98
+ }
99
+ return isRetryableNetworkError(candidate.cause, seen);
100
+ }
66
101
  export function createGitHubMonitorPhaseError(phase, error, prNumber) {
67
102
  const classified = classifyGitHubMonitorError(error);
68
103
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"github-monitor-error.js","sourceRoot":"","sources":["../../src/github/github-monitor-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAsBzC,oCAAoC;AACpC,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,KAAK,CAA0B;IAC/B,QAAQ,CAAU;IAClB,KAAK,CAA0B;IAC/B,SAAS,CAAU;IAE5B,YAAY,OAAgC;QAC1C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,QAAgB;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACxC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YACjD,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YACvE,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAA8B,EAC9B,KAAc,EACd,QAAiB;IAEjB,MAAM,UAAU,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO;QACL,KAAK;QACL,QAAQ;QACR,GAAG,UAAU;QACb,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"github-monitor-error.js","sourceRoot":"","sources":["../../src/github/github-monitor-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2BzC,oCAAoC;AACpC,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,KAAK,CAA0B;IAC/B,QAAQ,CAAU;IAClB,KAAK,CAA0B;IAC/B,SAAS,CAAU;IAE5B,YAAY,OAAgC;QAC1C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,QAAgB;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACxC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YACjD,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YACvE,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAChE,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC;IAC5C,YAAY;IACZ,cAAc;IACd,cAAc;IACd,aAAa;IACb,WAAW;IACX,WAAW;IACX,WAAW;IACX,yBAAyB;IACzB,yBAAyB;IACzB,gBAAgB;CACjB,CAAC,CAAC;AAEH,SAAS,uBAAuB,CAC9B,KAAc,EACd,OAAO,IAAI,GAAG,EAAW;IAEzB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEhB,MAAM,SAAS,GAAG,KAIjB,CAAC;IACF,IACE,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;QAClC,6BAA6B,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IACE,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ;QACrC,oEAAoE,CAAC,IAAI,CACvE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CACzB,EACD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,uBAAuB,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAA8B,EAC9B,KAAc,EACd,QAAiB;IAEjB,MAAM,UAAU,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO;QACL,KAAK;QACL,QAAQ;QACR,GAAG,UAAU;QACb,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC"}
@@ -21,6 +21,8 @@ export interface GitHubMonitorOptions {
21
21
  onUpdate: (payload: GitHubUpdatePayload) => void;
22
22
  onCursorChange?: (cursor: GitHubMonitorCursor) => void;
23
23
  onPollError?: (error: unknown) => void;
24
+ /** 抑止した retryable poll エラーの後、クリーンな poll が成功したときに呼ぶ。 */
25
+ onPollRecovered?: (suppressedErrorCount: number, hasUpdates: boolean) => void;
24
26
  shutdownSignal?: AbortSignal;
25
27
  githubClient?: GitHubClient;
26
28
  }
@@ -29,6 +31,8 @@ export interface GitHubMonitor {
29
31
  stop(): Promise<void>;
30
32
  flush(): void;
31
33
  getCursor(): GitHubMonitorCursor;
34
+ /** Remove updates after a conductor send has completed successfully. */
35
+ acknowledgeUpdates?(ids: readonly string[]): void;
32
36
  /** Add a runtime PR watch without waiting for GitHub Search to find it. */
33
37
  registerPullRequest(registration: {
34
38
  prNumber: number;
@@ -1 +1 @@
1
- {"version":3,"file":"github-monitor.d.ts","sourceRoot":"","sources":["../../src/github/github-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAoB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,eAAO,MAAM,kCAAkC,QAAS,CAAC;AACzD,eAAO,MAAM,uCAAuC,QAAS,CAAC;AAC9D,eAAO,MAAM,8CAA8C,QAAS,CAAC;AACrE,kEAAkE;AAClE,eAAO,MAAM,wCAAwC,OAAQ,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACvD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;IACd,SAAS,IAAI,mBAAmB,CAAC;IACjC,2EAA2E;IAC3E,mBAAmB,CAAC,YAAY,EAAE;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;KAC5B,GAAG,IAAI,CAAC;IACT,6EAA6E;IAC7E,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAmLhF"}
1
+ {"version":3,"file":"github-monitor.d.ts","sourceRoot":"","sources":["../../src/github/github-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAoB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,eAAO,MAAM,kCAAkC,QAAS,CAAC;AACzD,eAAO,MAAM,uCAAuC,QAAS,CAAC;AAC9D,eAAO,MAAM,8CAA8C,QAAS,CAAC;AACrE,kEAAkE;AAClE,eAAO,MAAM,wCAAwC,OAAQ,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACvD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,uDAAuD;IACvD,eAAe,CAAC,EAAE,CAChB,oBAAoB,EAAE,MAAM,EAC5B,UAAU,EAAE,OAAO,KAChB,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;IACd,SAAS,IAAI,mBAAmB,CAAC;IACjC,wEAAwE;IACxE,kBAAkB,CAAC,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAClD,2EAA2E;IAC3E,mBAAmB,CAAC,YAAY,EAAE;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;KAC5B,GAAG,IAAI,CAAC;IACT,6EAA6E;IAC7E,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAuOhF"}
@@ -22,6 +22,7 @@ export function createGitHubMonitor(options) {
22
22
  let hasPendingCi = false;
23
23
  let needsBootstrapPoll = isEmptyGitHubMonitorCursor(cursor);
24
24
  let pollRequested = false;
25
+ const retryablePollErrors = new Map();
25
26
  const pendingRegistrations = new Map();
26
27
  const pendingUnregistrations = new Set();
27
28
  const buffer = new DebounceBuffer({
@@ -68,12 +69,19 @@ export function createGitHubMonitor(options) {
68
69
  abortSignal: pollAbortController.signal,
69
70
  };
70
71
  const result = await fetchGitHubUpdates(input);
72
+ // A poll that resolves after stop began must remain uncommitted so a
73
+ // resumed session can fetch it again from the previously saved cursor.
74
+ if (stopped)
75
+ return;
71
76
  cursor = mergePendingRegistrations(result.cursor, pendingRegistrations);
72
77
  for (const key of pendingUnregistrations) {
73
78
  delete cursor.explicitPullRequests?.[key];
74
79
  }
75
80
  pendingRegistrations.clear();
76
81
  pendingUnregistrations.clear();
82
+ if (result.updates.length > 0) {
83
+ cursor = appendPendingUpdates(cursor, result.updates);
84
+ }
77
85
  options.onCursorChange?.(cursor);
78
86
  needsBootstrapPoll = false;
79
87
  hasPendingCi = result.hasPendingCi;
@@ -82,13 +90,34 @@ export function createGitHubMonitor(options) {
82
90
  }
83
91
  for (const phaseError of result.errors) {
84
92
  const source = phaseError.sourceError ?? new Error(phaseError.message);
85
- options.onPollError?.(new GitHubMonitorError({
93
+ const monitorError = new GitHubMonitorError({
86
94
  phase: phaseError.phase,
87
95
  prNumber: phaseError.prNumber,
88
96
  cause: phaseError.cause,
89
97
  retryable: phaseError.retryable,
90
98
  message: formatGitHubErrorMessage(source, options.ensembleConfig),
91
- }));
99
+ });
100
+ if (monitorError.retryable) {
101
+ const key = [
102
+ monitorError.phase,
103
+ monitorError.prNumber ?? '',
104
+ monitorError.cause,
105
+ ].join(':');
106
+ const existing = retryablePollErrors.get(key);
107
+ if (existing) {
108
+ existing.suppressedCount += 1;
109
+ continue;
110
+ }
111
+ retryablePollErrors.set(key, { suppressedCount: 0 });
112
+ }
113
+ options.onPollError?.(monitorError);
114
+ }
115
+ if (result.errors.length === 0) {
116
+ const suppressedErrorCount = [...retryablePollErrors.values()].reduce((total, state) => total + state.suppressedCount, 0);
117
+ if (suppressedErrorCount > 0) {
118
+ options.onPollRecovered?.(suppressedErrorCount, result.updates.length > 0);
119
+ }
120
+ retryablePollErrors.clear();
92
121
  }
93
122
  }
94
123
  catch (error) {
@@ -119,6 +148,9 @@ export function createGitHubMonitor(options) {
119
148
  if (started || stopped)
120
149
  return;
121
150
  started = true;
151
+ if (cursor.pendingUpdates?.length) {
152
+ buffer.pushMany(cursor.pendingUpdates);
153
+ }
122
154
  void pollOnce();
123
155
  },
124
156
  async stop() {
@@ -151,6 +183,22 @@ export function createGitHubMonitor(options) {
151
183
  getCursor() {
152
184
  return normalizeGitHubMonitorCursor(cursor);
153
185
  },
186
+ acknowledgeUpdates(ids) {
187
+ if (ids.length === 0 || !cursor.pendingUpdates?.length)
188
+ return;
189
+ const acknowledged = new Set(ids);
190
+ const pendingUpdates = cursor.pendingUpdates.filter((item) => !acknowledged.has(item.id));
191
+ if (pendingUpdates.length === cursor.pendingUpdates.length)
192
+ return;
193
+ cursor = {
194
+ ...cursor,
195
+ ...(pendingUpdates.length > 0 ? { pendingUpdates } : {}),
196
+ };
197
+ if (pendingUpdates.length === 0) {
198
+ delete cursor.pendingUpdates;
199
+ }
200
+ options.onCursorChange?.(cursor);
201
+ },
154
202
  registerPullRequest(registration) {
155
203
  const key = String(registration.prNumber);
156
204
  cursor.explicitPullRequests ??= {};
@@ -173,6 +221,16 @@ export function createGitHubMonitor(options) {
173
221
  },
174
222
  };
175
223
  }
224
+ function appendPendingUpdates(cursor, updates) {
225
+ const pendingUpdates = new Map((cursor.pendingUpdates ?? []).map((item) => [item.id, item]));
226
+ for (const item of updates) {
227
+ pendingUpdates.set(item.id, item);
228
+ }
229
+ return {
230
+ ...cursor,
231
+ pendingUpdates: [...pendingUpdates.values()],
232
+ };
233
+ }
176
234
  function mergePendingRegistrations(cursor, pendingRegistrations) {
177
235
  if (pendingRegistrations.size === 0) {
178
236
  return cursor;