agim-cli 1.2.104 → 1.2.108

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 (177) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/dist/cli-ui/env-file.d.ts +23 -0
  3. package/dist/cli-ui/env-file.d.ts.map +1 -1
  4. package/dist/cli-ui/env-file.js +59 -2
  5. package/dist/cli-ui/env-file.js.map +1 -1
  6. package/dist/core/live-config.d.ts.map +1 -1
  7. package/dist/core/live-config.js +12 -0
  8. package/dist/core/live-config.js.map +1 -1
  9. package/dist/core/llm/agent-loop.d.ts +30 -0
  10. package/dist/core/llm/agent-loop.d.ts.map +1 -1
  11. package/dist/core/llm/agent-loop.js +87 -36
  12. package/dist/core/llm/agent-loop.js.map +1 -1
  13. package/dist/core/llm/mcp-client.d.ts +10 -0
  14. package/dist/core/llm/mcp-client.d.ts.map +1 -1
  15. package/dist/core/llm/mcp-client.js +35 -6
  16. package/dist/core/llm/mcp-client.js.map +1 -1
  17. package/dist/core/llm/mcp-registry.d.ts +4 -0
  18. package/dist/core/llm/mcp-registry.d.ts.map +1 -1
  19. package/dist/core/llm/mcp-registry.js +36 -10
  20. package/dist/core/llm/mcp-registry.js.map +1 -1
  21. package/dist/core/llm/openai-compat-provider.d.ts +28 -5
  22. package/dist/core/llm/openai-compat-provider.d.ts.map +1 -1
  23. package/dist/core/llm/openai-compat-provider.js +72 -12
  24. package/dist/core/llm/openai-compat-provider.js.map +1 -1
  25. package/dist/web/public/assets/{a2a-DCgHD3C7.js → a2a-DjyqPnWh.js} +2 -2
  26. package/dist/web/public/assets/{a2a-DCgHD3C7.js.map → a2a-DjyqPnWh.js.map} +1 -1
  27. package/dist/web/public/assets/{activity-CqIdqoFx.js → activity-Dy3elxiH.js} +2 -2
  28. package/dist/web/public/assets/{activity-CqIdqoFx.js.map → activity-Dy3elxiH.js.map} +1 -1
  29. package/dist/web/public/assets/{admins-Cfm5YCFY.js → admins-p5qJnsCS.js} +2 -2
  30. package/dist/web/public/assets/{admins-Cfm5YCFY.js.map → admins-p5qJnsCS.js.map} +1 -1
  31. package/dist/web/public/assets/{agents-CXy1c3ml.js → agents-BK-LNF6u.js} +2 -2
  32. package/dist/web/public/assets/{agents-CXy1c3ml.js.map → agents-BK-LNF6u.js.map} +1 -1
  33. package/dist/web/public/assets/{approvals-DzfXTuHD.js → approvals-BR1f5zmP.js} +2 -2
  34. package/dist/web/public/assets/{approvals-DzfXTuHD.js.map → approvals-BR1f5zmP.js.map} +1 -1
  35. package/dist/web/public/assets/{asks-hv8KYkMv.js → asks-1MaTIfZO.js} +2 -2
  36. package/dist/web/public/assets/{asks-hv8KYkMv.js.map → asks-1MaTIfZO.js.map} +1 -1
  37. package/dist/web/public/assets/{audit-N2_Hb8ID.js → audit-jSgqqxdG.js} +2 -2
  38. package/dist/web/public/assets/{audit-N2_Hb8ID.js.map → audit-jSgqqxdG.js.map} +1 -1
  39. package/dist/web/public/assets/{bell-B2EC2Smm.js → bell-LeCqn72n.js} +2 -2
  40. package/dist/web/public/assets/{bell-B2EC2Smm.js.map → bell-LeCqn72n.js.map} +1 -1
  41. package/dist/web/public/assets/{bgjobs-Dnik8OzW.js → bgjobs-BPyKhOuq.js} +2 -2
  42. package/dist/web/public/assets/{bgjobs-Dnik8OzW.js.map → bgjobs-BPyKhOuq.js.map} +1 -1
  43. package/dist/web/public/assets/{brain-CBk_86fd.js → brain-CPuDSbdC.js} +2 -2
  44. package/dist/web/public/assets/{brain-CBk_86fd.js.map → brain-CPuDSbdC.js.map} +1 -1
  45. package/dist/web/public/assets/{briefcase-BqvjWo9V.js → briefcase-Ck3PTo9z.js} +2 -2
  46. package/dist/web/public/assets/{briefcase-BqvjWo9V.js.map → briefcase-Ck3PTo9z.js.map} +1 -1
  47. package/dist/web/public/assets/{chevron-right-JI5zm1vU.js → chevron-right-CNLUFBr6.js} +2 -2
  48. package/dist/web/public/assets/{chevron-right-JI5zm1vU.js.map → chevron-right-CNLUFBr6.js.map} +1 -1
  49. package/dist/web/public/assets/{circle-check-BoARt50L.js → circle-check-CsSqoqeq.js} +2 -2
  50. package/dist/web/public/assets/{circle-check-BoARt50L.js.map → circle-check-CsSqoqeq.js.map} +1 -1
  51. package/dist/web/public/assets/{circle-check-big-DElVlKvH.js → circle-check-big-NZvva0KN.js} +2 -2
  52. package/dist/web/public/assets/{circle-check-big-DElVlKvH.js.map → circle-check-big-NZvva0KN.js.map} +1 -1
  53. package/dist/web/public/assets/{circle-x-DO-2tGgt.js → circle-x-CFWz6gEd.js} +2 -2
  54. package/dist/web/public/assets/{circle-x-DO-2tGgt.js.map → circle-x-CFWz6gEd.js.map} +1 -1
  55. package/dist/web/public/assets/{confirm-dialog-WAkeu7Va.js → confirm-dialog-DgO--07o.js} +2 -2
  56. package/dist/web/public/assets/{confirm-dialog-WAkeu7Va.js.map → confirm-dialog-DgO--07o.js.map} +1 -1
  57. package/dist/web/public/assets/{data-table-BXUgaJFG.js → data-table-D-Zgmc4f.js} +2 -2
  58. package/dist/web/public/assets/{data-table-BXUgaJFG.js.map → data-table-D-Zgmc4f.js.map} +1 -1
  59. package/dist/web/public/assets/{dialog-C1_Gr4a-.js → dialog-CQgpA4K2.js} +2 -2
  60. package/dist/web/public/assets/{dialog-C1_Gr4a-.js.map → dialog-CQgpA4K2.js.map} +1 -1
  61. package/dist/web/public/assets/{download-DaQMiRdc.js → download-DKzhn49i.js} +2 -2
  62. package/dist/web/public/assets/{download-DaQMiRdc.js.map → download-DKzhn49i.js.map} +1 -1
  63. package/dist/web/public/assets/{email-DaE3P0Pi.js → email-j2wp12wu.js} +2 -2
  64. package/dist/web/public/assets/{email-DaE3P0Pi.js.map → email-j2wp12wu.js.map} +1 -1
  65. package/dist/web/public/assets/{empty-state--wTr0nEY.js → empty-state-C_hR--ro.js} +2 -2
  66. package/dist/web/public/assets/{empty-state--wTr0nEY.js.map → empty-state-C_hR--ro.js.map} +1 -1
  67. package/dist/web/public/assets/{external-link-BMsOzlAO.js → external-link-CoqEoAcO.js} +2 -2
  68. package/dist/web/public/assets/{external-link-BMsOzlAO.js.map → external-link-CoqEoAcO.js.map} +1 -1
  69. package/dist/web/public/assets/{eye-DyUOG2VV.js → eye-CXOBz4Cl.js} +2 -2
  70. package/dist/web/public/assets/{eye-DyUOG2VV.js.map → eye-CXOBz4Cl.js.map} +1 -1
  71. package/dist/web/public/assets/{facts-BsU_itZp.js → facts-CJDnig7y.js} +2 -2
  72. package/dist/web/public/assets/{facts-BsU_itZp.js.map → facts-CJDnig7y.js.map} +1 -1
  73. package/dist/web/public/assets/{goals-D5MmIEKE.js → goals-D89OCyJN.js} +2 -2
  74. package/dist/web/public/assets/{goals-D5MmIEKE.js.map → goals-D89OCyJN.js.map} +1 -1
  75. package/dist/web/public/assets/{health-BHHdheFW.js → health-BQwZeXAS.js} +2 -2
  76. package/dist/web/public/assets/{health-BHHdheFW.js.map → health-BQwZeXAS.js.map} +1 -1
  77. package/dist/web/public/assets/{heart-pulse-CHnf3dk9.js → heart-pulse-BzJZEKl7.js} +2 -2
  78. package/dist/web/public/assets/{heart-pulse-CHnf3dk9.js.map → heart-pulse-BzJZEKl7.js.map} +1 -1
  79. package/dist/web/public/assets/{heartbeat-wKQjksPH.js → heartbeat-D4kJCmkw.js} +2 -2
  80. package/dist/web/public/assets/{heartbeat-wKQjksPH.js.map → heartbeat-D4kJCmkw.js.map} +1 -1
  81. package/dist/web/public/assets/{hot-BF4yOa64.js → hot-R6aOoPMY.js} +2 -2
  82. package/dist/web/public/assets/{hot-BF4yOa64.js.map → hot-R6aOoPMY.js.map} +1 -1
  83. package/dist/web/public/assets/{index-CUlfCXYW.js → index-DVf2XlVZ.js} +34 -34
  84. package/dist/web/public/assets/index-DVf2XlVZ.js.map +1 -0
  85. package/dist/web/public/assets/{installed-ChSSxLpe.js → installed-DSJ7AiMe.js} +2 -2
  86. package/dist/web/public/assets/{installed-ChSSxLpe.js.map → installed-DSJ7AiMe.js.map} +1 -1
  87. package/dist/web/public/assets/{jobs-Bl_FJXMV.js → jobs-CdVDgq8m.js} +2 -2
  88. package/dist/web/public/assets/{jobs-Bl_FJXMV.js.map → jobs-CdVDgq8m.js.map} +1 -1
  89. package/dist/web/public/assets/{layout-rdDZbKKf.js → layout-BKjENLxQ.js} +2 -2
  90. package/dist/web/public/assets/{layout-rdDZbKKf.js.map → layout-BKjENLxQ.js.map} +1 -1
  91. package/dist/web/public/assets/{layout-CTgw-R_J.js → layout-BLKq93Z4.js} +2 -2
  92. package/dist/web/public/assets/{layout-CTgw-R_J.js.map → layout-BLKq93Z4.js.map} +1 -1
  93. package/dist/web/public/assets/{layout-B4VFa896.js → layout-BqilVxGS.js} +2 -2
  94. package/dist/web/public/assets/{layout-B4VFa896.js.map → layout-BqilVxGS.js.map} +1 -1
  95. package/dist/web/public/assets/{layout-BnTMi2Vm.js → layout-CvmElCgO.js} +2 -2
  96. package/dist/web/public/assets/{layout-BnTMi2Vm.js.map → layout-CvmElCgO.js.map} +1 -1
  97. package/dist/web/public/assets/{layout-DNcGVE9i.js → layout-Dj03GsQJ.js} +2 -2
  98. package/dist/web/public/assets/{layout-DNcGVE9i.js.map → layout-Dj03GsQJ.js.map} +1 -1
  99. package/dist/web/public/assets/{llm-2BhcOCUt.js → llm-C5Uob7Ci.js} +2 -2
  100. package/dist/web/public/assets/{llm-2BhcOCUt.js.map → llm-C5Uob7Ci.js.map} +1 -1
  101. package/dist/web/public/assets/{loader-circle-BeeODmoF.js → loader-circle-DdWIiO8L.js} +2 -2
  102. package/dist/web/public/assets/{loader-circle-BeeODmoF.js.map → loader-circle-DdWIiO8L.js.map} +1 -1
  103. package/dist/web/public/assets/{map-pin-Bib-61c8.js → map-pin-kO-wD4fU.js} +2 -2
  104. package/dist/web/public/assets/{map-pin-Bib-61c8.js.map → map-pin-kO-wD4fU.js.map} +1 -1
  105. package/dist/web/public/assets/{mcp-RhWfVYQA.js → mcp-DL5oUQgm.js} +2 -2
  106. package/dist/web/public/assets/{mcp-RhWfVYQA.js.map → mcp-DL5oUQgm.js.map} +1 -1
  107. package/dist/web/public/assets/{memos-D0aauhFt.js → memos-Ab9Rp5v_.js} +2 -2
  108. package/dist/web/public/assets/{memos-D0aauhFt.js.map → memos-Ab9Rp5v_.js.map} +1 -1
  109. package/dist/web/public/assets/{messengers-BWqF9z0b.js → messengers-D0a8jlLw.js} +2 -2
  110. package/dist/web/public/assets/{messengers-BWqF9z0b.js.map → messengers-D0a8jlLw.js.map} +1 -1
  111. package/dist/web/public/assets/{native-agent-Be7FW740.js → native-agent-Bnz7Inoh.js} +2 -2
  112. package/dist/web/public/assets/{native-agent-Be7FW740.js.map → native-agent-Bnz7Inoh.js.map} +1 -1
  113. package/dist/web/public/assets/{network-CGq_PEku.js → network-BrQvlSjl.js} +2 -2
  114. package/dist/web/public/assets/{network-CGq_PEku.js.map → network-BrQvlSjl.js.map} +1 -1
  115. package/dist/web/public/assets/{outbox-B8raDIpY.js → outbox-BNDPAlVy.js} +2 -2
  116. package/dist/web/public/assets/{outbox-B8raDIpY.js.map → outbox-BNDPAlVy.js.map} +1 -1
  117. package/dist/web/public/assets/{pagination-BaOx4wBN.js → pagination-CyoXKAm9.js} +2 -2
  118. package/dist/web/public/assets/{pagination-BaOx4wBN.js.map → pagination-CyoXKAm9.js.map} +1 -1
  119. package/dist/web/public/assets/{persona-DfJOKp-G.js → persona-Bxqqj1yV.js} +2 -2
  120. package/dist/web/public/assets/{persona-DfJOKp-G.js.map → persona-Bxqqj1yV.js.map} +1 -1
  121. package/dist/web/public/assets/{play-Bn15ljVu.js → play-B7ZN5aFX.js} +2 -2
  122. package/dist/web/public/assets/{play-Bn15ljVu.js.map → play-B7ZN5aFX.js.map} +1 -1
  123. package/dist/web/public/assets/{plus-ta7et8lU.js → plus-DzvDGrh0.js} +2 -2
  124. package/dist/web/public/assets/{plus-ta7et8lU.js.map → plus-DzvDGrh0.js.map} +1 -1
  125. package/dist/web/public/assets/{policy-BIPMjtiz.js → policy-CSl5ENVs.js} +2 -2
  126. package/dist/web/public/assets/{policy-BIPMjtiz.js.map → policy-CSl5ENVs.js.map} +1 -1
  127. package/dist/web/public/assets/{refresh-ccw-CweZfxgw.js → refresh-ccw-B8Fzl2uq.js} +2 -2
  128. package/dist/web/public/assets/{refresh-ccw-CweZfxgw.js.map → refresh-ccw-B8Fzl2uq.js.map} +1 -1
  129. package/dist/web/public/assets/{reminders-uWllha6u.js → reminders-CmLd8DLt.js} +2 -2
  130. package/dist/web/public/assets/{reminders-uWllha6u.js.map → reminders-CmLd8DLt.js.map} +1 -1
  131. package/dist/web/public/assets/{save-BsDR6-4Z.js → save-JKib3YIn.js} +2 -2
  132. package/dist/web/public/assets/{save-BsDR6-4Z.js.map → save-JKib3YIn.js.map} +1 -1
  133. package/dist/web/public/assets/{schedules-COWq8_0O.js → schedules-B-770HIa.js} +2 -2
  134. package/dist/web/public/assets/{schedules-COWq8_0O.js.map → schedules-B-770HIa.js.map} +1 -1
  135. package/dist/web/public/assets/{search-COTgXLCn.js → search-Bc7OS8FB.js} +2 -2
  136. package/dist/web/public/assets/{search-COTgXLCn.js.map → search-Bc7OS8FB.js.map} +1 -1
  137. package/dist/web/public/assets/{security-BCuwv4RN.js → security-CD8INSD5.js} +2 -2
  138. package/dist/web/public/assets/{security-BCuwv4RN.js.map → security-CD8INSD5.js.map} +1 -1
  139. package/dist/web/public/assets/{service-6x5gzuKT.js → service-CFB2QfK6.js} +2 -2
  140. package/dist/web/public/assets/{service-6x5gzuKT.js.map → service-CFB2QfK6.js.map} +1 -1
  141. package/dist/web/public/assets/{status-badge-CiY-R4cR.js → status-badge---MleYSt.js} +2 -2
  142. package/dist/web/public/assets/{status-badge-CiY-R4cR.js.map → status-badge---MleYSt.js.map} +1 -1
  143. package/dist/web/public/assets/{subtasks-QTIxglPc.js → subtasks-CzToK_65.js} +2 -2
  144. package/dist/web/public/assets/{subtasks-QTIxglPc.js.map → subtasks-CzToK_65.js.map} +1 -1
  145. package/dist/web/public/assets/{table-BQd1FahX.js → table-Dg3N5NYh.js} +2 -2
  146. package/dist/web/public/assets/{table-BQd1FahX.js.map → table-Dg3N5NYh.js.map} +1 -1
  147. package/dist/web/public/assets/{topn-D7mnFIN8.js → topn-CePuMziu.js} +2 -2
  148. package/dist/web/public/assets/{topn-D7mnFIN8.js.map → topn-CePuMziu.js.map} +1 -1
  149. package/dist/web/public/assets/{trash-2-CqpK78qO.js → trash-2-LmyUghia.js} +2 -2
  150. package/dist/web/public/assets/{trash-2-CqpK78qO.js.map → trash-2-LmyUghia.js.map} +1 -1
  151. package/dist/web/public/assets/{use-background-tasks-E1AqQHuk.js → use-background-tasks-CmVigPtZ.js} +2 -2
  152. package/dist/web/public/assets/{use-background-tasks-E1AqQHuk.js.map → use-background-tasks-CmVigPtZ.js.map} +1 -1
  153. package/dist/web/public/assets/{use-llm-admin-C5j8A81P.js → use-llm-admin-D8Go_PKM.js} +2 -2
  154. package/dist/web/public/assets/{use-llm-admin-C5j8A81P.js.map → use-llm-admin-D8Go_PKM.js.map} +1 -1
  155. package/dist/web/public/assets/{use-memory-e4psRiYj.js → use-memory-BDuQTDX0.js} +2 -2
  156. package/dist/web/public/assets/{use-memory-e4psRiYj.js.map → use-memory-BDuQTDX0.js.map} +1 -1
  157. package/dist/web/public/assets/{use-observability-xdJotn0L.js → use-observability-CiO9A5Z9.js} +2 -2
  158. package/dist/web/public/assets/{use-observability-xdJotn0L.js.map → use-observability-CiO9A5Z9.js.map} +1 -1
  159. package/dist/web/public/assets/{use-settings-DbvYjLo8.js → use-settings-fG28ShvX.js} +2 -2
  160. package/dist/web/public/assets/{use-settings-DbvYjLo8.js.map → use-settings-fG28ShvX.js.map} +1 -1
  161. package/dist/web/public/assets/{use-workspace-CXkiS0Ho.js → use-workspace-CE3JTeap.js} +2 -2
  162. package/dist/web/public/assets/{use-workspace-CXkiS0Ho.js.map → use-workspace-CE3JTeap.js.map} +1 -1
  163. package/dist/web/public/assets/{useQuery-CPWNEU8n.js → useQuery-BtY7wSLM.js} +2 -2
  164. package/dist/web/public/assets/{useQuery-CPWNEU8n.js.map → useQuery-BtY7wSLM.js.map} +1 -1
  165. package/dist/web/public/assets/{vector-B52Da4cl.js → vector-CakzHMP0.js} +2 -2
  166. package/dist/web/public/assets/{vector-B52Da4cl.js.map → vector-CakzHMP0.js.map} +1 -1
  167. package/dist/web/public/assets/{viewer-Fr6DcgPb.js → viewer-DWOOXMMI.js} +2 -2
  168. package/dist/web/public/assets/{viewer-Fr6DcgPb.js.map → viewer-DWOOXMMI.js.map} +1 -1
  169. package/dist/web/public/assets/{workspace-B9SHz-uT.js → workspace-BnlWyXR1.js} +2 -2
  170. package/dist/web/public/assets/{workspace-B9SHz-uT.js.map → workspace-BnlWyXR1.js.map} +1 -1
  171. package/dist/web/public/assets/{workspaces-DNPDEzPP.js → workspaces-DTXat9Xq.js} +2 -2
  172. package/dist/web/public/assets/{workspaces-DNPDEzPP.js.map → workspaces-DTXat9Xq.js.map} +1 -1
  173. package/dist/web/public/assets/{x-DqRovlI4.js → x-BVwIUHdL.js} +2 -2
  174. package/dist/web/public/assets/{x-DqRovlI4.js.map → x-BVwIUHdL.js.map} +1 -1
  175. package/dist/web/public/index.html +1 -1
  176. package/package.json +1 -1
  177. package/dist/web/public/assets/index-CUlfCXYW.js.map +0 -1
@@ -34,6 +34,17 @@ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/
34
34
  import { logger as rootLogger } from '../logger.js';
35
35
  const log = rootLogger.child({ component: 'mcp-client' });
36
36
  const DEFAULT_TOOL_TIMEOUT_MS = 30_000;
37
+ /** v1.2.108 — TTL for the per-server tools-list cache. See
38
+ * `McpClient.cachedTools` for the policy. */
39
+ export const TOOLS_TTL_MS = (() => {
40
+ const raw = process.env.IMHUB_MCP_TOOLS_TTL_MS;
41
+ if (raw == null || raw === '')
42
+ return 5 * 60 * 1000;
43
+ const n = Number(raw);
44
+ if (!Number.isFinite(n) || n < 0)
45
+ return 5 * 60 * 1000;
46
+ return Math.floor(n);
47
+ })();
37
48
  /**
38
49
  * Tool naming policy: `mcp_{server}_{tool}`. Avoids name collisions when
39
50
  * two servers advertise the same tool name (common: every server has
@@ -59,10 +70,15 @@ export class McpClient {
59
70
  cfg;
60
71
  toolTimeoutMs;
61
72
  client = null;
62
- // Cache the listTools() result so the agent loop doesn't pay the
63
- // round-trip cost on every iteration. Servers that hot-reload tools
64
- // mid-session would need an explicit refresh hook; punt until a real
65
- // case appears.
73
+ // v1.2.108 — Cache listTools() with a TTL so the agent loop doesn't
74
+ // pay the round-trip cost on every iteration BUT also picks up server-
75
+ // side tool additions / schema changes within ~5 min without an agim
76
+ // restart. TTL configurable via IMHUB_MCP_TOOLS_TTL_MS:
77
+ // - >0 → cache for that many ms (default 5 min)
78
+ // - 0 → never cache (always re-list; useful for development)
79
+ // Callers that just learned the server changed (e.g. an MCP
80
+ // `tools/list_changed` notification someday) can call `refresh()` to
81
+ // force-drop the cache immediately.
66
82
  cachedTools = null;
67
83
  constructor(cfg) {
68
84
  this.name = cfg.name;
@@ -95,12 +111,18 @@ export class McpClient {
95
111
  /**
96
112
  * Discover the server's tool roster and project into agim ToolDef[].
97
113
  * Applies `enabledTools` filter and the namespaced-name policy.
114
+ * Cache TTL: TOOLS_TTL_MS (env IMHUB_MCP_TOOLS_TTL_MS, default 5 min,
115
+ * 0 = no cache). Use `refresh()` to force a re-list immediately.
98
116
  */
99
117
  async listAvailableTools() {
100
118
  if (!this.client)
101
119
  throw new Error(`mcp-client[${this.name}]: not connected`);
102
- if (this.cachedTools)
120
+ const now = Date.now();
121
+ if (this.cachedTools
122
+ && TOOLS_TTL_MS > 0
123
+ && now - this.cachedTools.fetchedAt < TOOLS_TTL_MS) {
103
124
  return this.cachedTools.full;
125
+ }
104
126
  const resp = await this.client.listTools({});
105
127
  // resp.tools shape per MCP spec: [{name, description?, inputSchema}]
106
128
  const filter = this.cfg.enabledTools && this.cfg.enabledTools.length > 0
@@ -122,13 +144,20 @@ export class McpClient {
122
144
  parameters: ensureObjectSchema(t.inputSchema),
123
145
  });
124
146
  }
125
- this.cachedTools = { full: out, byCallName };
147
+ this.cachedTools = { full: out, byCallName, fetchedAt: now };
126
148
  log.info({
127
149
  event: 'mcp.tools.listed', server: this.name,
128
150
  count: out.length, filtered: filter !== null,
129
151
  });
130
152
  return out;
131
153
  }
154
+ /** Force-drop the tools-list cache so the next `listAvailableTools()`
155
+ * call hits the server again. Used after the agim operator knows the
156
+ * upstream server changed (manual refresh in the web admin, or — in
157
+ * the future — an MCP `tools/list_changed` notification). */
158
+ refresh() {
159
+ this.cachedTools = null;
160
+ }
132
161
  /**
133
162
  * Invoke a tool by either the namespaced or original name. Returns
134
163
  * the concatenated text content + an isError flag (the MCP spec
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../../src/core/llm/mcp-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../../src/core/llm/mcp-client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  import { type ToolCallResult } from './mcp-client.js';
2
2
  import type { ToolDef } from './provider-base.js';
3
+ /** Exponential backoff for the Nth consecutive reconnect failure. First
4
+ * attempt (failures=0) waits `base`; each subsequent failure doubles
5
+ * until `cap`. Exported for unit tests. */
6
+ export declare function computeReconnectCooldownMs(failures: number, base?: number, cap?: number): number;
3
7
  /**
4
8
  * Build McpClient instances from config. Idempotent — repeated calls
5
9
  * fully replace the previous state (any open connections are closed
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-registry.d.ts","sourceRoot":"","sources":["../../../src/core/llm/mcp-registry.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAmC,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACtF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AA8DjD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBjF;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA2B/G;AAED;;yDAEyD;AACzD,wBAAgB,WAAW,IAAI,OAAO,EAAE,CAEvC;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/D;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAClC,OAAO,CAAC,cAAc,CAAC,CAgDzB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvF,UAAU,EAAE,MAAM,CAAA;CACnB,CAaA;AAED;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAI9C;AAED;4CAC4C;AAC5C,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
1
+ {"version":3,"file":"mcp-registry.d.ts","sourceRoot":"","sources":["../../../src/core/llm/mcp-registry.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAmC,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACtF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AA+CjD;;4CAE4C;AAC5C,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,IAAI,SAAoB,EACxB,GAAG,SAAmB,GACrB,MAAM,CAGR;AAsCD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBjF;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA2B/G;AAED;;yDAEyD;AACzD,wBAAgB,WAAW,IAAI,OAAO,EAAE,CAEvC;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/D;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAClC,OAAO,CAAC,cAAc,CAAC,CAgDzB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvF,UAAU,EAAE,MAAM,CAAA;CACnB,CAaA;AAED;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAI9C;AAED;4CAC4C;AAC5C,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
@@ -27,25 +27,46 @@ function freshState() {
27
27
  unhealthy: new Map(),
28
28
  toolsByCallName: new Map(),
29
29
  lastReconnectAt: new Map(),
30
+ reconnectFailures: new Map(),
30
31
  };
31
32
  }
32
- /** v1.2.96 — minimum interval between reconnect attempts for the same
33
- * server. 5 s is short enough to feel snappy when an MCP server just
34
- * blipped, long enough that a permanently-broken server doesn't get
35
- * hammered tool-call-by-tool-call. Configurable via env for ops who
36
- * want to tune; default is fine for most. */
37
- const RECONNECT_COOLDOWN_MS = (() => {
38
- const raw = process.env.IMHUB_MCP_RECONNECT_COOLDOWN_MS;
33
+ /** v1.2.96 / v1.2.108 base/cap for the reconnect cooldown. Base is
34
+ * also what `IMHUB_MCP_RECONNECT_COOLDOWN_MS` used to mean (kept as an
35
+ * alias for the env name nobody read the docs on). Cap is the max wait
36
+ * between attempts after the server has failed repeatedly — beyond ~60s
37
+ * we'd rather let the operator notice than keep silently retrying. */
38
+ const RECONNECT_BASE_MS = (() => {
39
+ const raw = process.env.IMHUB_MCP_RECONNECT_BASE_MS ?? process.env.IMHUB_MCP_RECONNECT_COOLDOWN_MS;
39
40
  if (!raw)
40
41
  return 5_000;
41
42
  const n = parseInt(raw, 10);
42
43
  return Number.isFinite(n) && n >= 0 ? n : 5_000;
43
44
  })();
45
+ const RECONNECT_MAX_MS = (() => {
46
+ const raw = process.env.IMHUB_MCP_RECONNECT_MAX_MS;
47
+ if (!raw)
48
+ return 60_000;
49
+ const n = parseInt(raw, 10);
50
+ return Number.isFinite(n) && n >= 0 ? n : 60_000;
51
+ })();
52
+ /** Exponential backoff for the Nth consecutive reconnect failure. First
53
+ * attempt (failures=0) waits `base`; each subsequent failure doubles
54
+ * until `cap`. Exported for unit tests. */
55
+ export function computeReconnectCooldownMs(failures, base = RECONNECT_BASE_MS, cap = RECONNECT_MAX_MS) {
56
+ if (failures <= 0)
57
+ return base;
58
+ return Math.min(cap, base * Math.pow(2, failures));
59
+ }
44
60
  async function tryReconnect(server, client) {
45
61
  const now = Date.now();
46
62
  const last = state.lastReconnectAt.get(server) ?? 0;
47
- if (now - last < RECONNECT_COOLDOWN_MS) {
48
- log.debug({ event: 'mcp-registry.reconnect_throttled', server, msSinceLast: now - last });
63
+ const failures = state.reconnectFailures.get(server) ?? 0;
64
+ const cooldown = computeReconnectCooldownMs(failures);
65
+ if (now - last < cooldown) {
66
+ log.debug({
67
+ event: 'mcp-registry.reconnect_throttled',
68
+ server, msSinceLast: now - last, cooldown, failures,
69
+ });
49
70
  return false;
50
71
  }
51
72
  state.lastReconnectAt.set(server, now);
@@ -55,12 +76,17 @@ async function tryReconnect(server, client) {
55
76
  // a fresh handshake.
56
77
  await client.close();
57
78
  await client.connect();
79
+ state.reconnectFailures.delete(server); // reset on success
58
80
  log.info({ event: 'mcp-registry.reconnected', server });
59
81
  return true;
60
82
  }
61
83
  catch (err) {
62
84
  const msg = err instanceof Error ? err.message : String(err);
63
- log.warn({ event: 'mcp-registry.reconnect_failed', server, err: msg });
85
+ state.reconnectFailures.set(server, failures + 1);
86
+ log.warn({
87
+ event: 'mcp-registry.reconnect_failed',
88
+ server, err: msg, failures: failures + 1, nextCooldownMs: computeReconnectCooldownMs(failures + 1),
89
+ });
64
90
  state.unhealthy.set(server, msg);
65
91
  return false;
66
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-registry.js","sourceRoot":"","sources":["../../../src/core/llm/mcp-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-registry.js","sourceRoot":"","sources":["../../../src/core/llm/mcp-registry.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,21 @@ export interface OpenAICompatProviderConfig extends Omit<ProviderConfigBase, 'pr
31
31
  * 'gpt-4.1', 'qwen-vl', or 'glm-4v'. Override explicitly when needed. */
32
32
  vision?: boolean;
33
33
  }
34
+ /** Parse an HTTP `Retry-After` header per RFC 9110: either delta-seconds
35
+ * (e.g. "30") or an HTTP-date. Returns ms-from-now, clamped to ≥0.
36
+ * Returns null on null / empty / unparsable. Exported for unit tests. */
37
+ export declare function parseRetryAfter(header: string | null | undefined): number | null;
38
+ /** Compute backoff for retry `attempt` (1-based). Honors any `Retry-After`
39
+ * the server sent — we wait at least that long (server knows when it's
40
+ * next available). Exponential 250ms × 2^(attempt-1) with full jitter
41
+ * on top to spread thundering herd. Capped at 30s — anything longer and
42
+ * the worker is better off surrendering to the caller's fallback path.
43
+ * `nowJitter` is injectable for deterministic tests. */
44
+ export declare function computeBackoffMs(attempt: number, retryAfterMs: number | null, opts?: {
45
+ base?: number;
46
+ cap?: number;
47
+ jitter?: () => number;
48
+ }): number;
34
49
  /**
35
50
  * Concrete provider for any OpenAI-compatible `/v1/chat/completions`
36
51
  * endpoint. Single-shot chat is the only Stage-1 path we care about —
@@ -54,11 +69,19 @@ export declare class OpenAICompatProvider extends LlmProvider {
54
69
  private _buildBody;
55
70
  private _postJson;
56
71
  /**
57
- * fetch + minimal retry. We backoff with a tiny fixed delay rather
58
- * than honoring Retry-After because Stage 1 callers (distill /
59
- * intent) have very short deadlines long backoffs would force a
60
- * fallback to CLI anyway, which is the whole point of "transient
61
- * retry, then surrender".
72
+ * fetch + transient retry with Retry-After + exponential backoff + jitter.
73
+ * Earlier versions used a tiny fixed delay and ignored `Retry-After`,
74
+ * which made DeepSeek / Moonshot 429s flap straight to the fallback
75
+ * provider (cold start + model-semantics swap) instead of waiting the
76
+ * few seconds the upstream actually asked for. We now honor the header
77
+ * as a hard floor; exponential backoff with jitter rides on top to
78
+ * avoid thundering-herd against the upstream's recovery window.
79
+ *
80
+ * Defaults: 3 retries (= 4 attempts), 250ms base, doubling per attempt,
81
+ * capped at 30s. Override via `IMHUB_LLM_RETRY_MAX` env (clamped [0,10])
82
+ * or the `retryOnTransient` ctor option. The cap exists because beyond
83
+ * ~30s the worker is better off surrendering so the agent loop can pick
84
+ * a fallback provider.
62
85
  */
63
86
  private _fetchWithRetry;
64
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openai-compat-provider.d.ts","sourceRoot":"","sources":["../../../src/core/llm/openai-compat-provider.ts"],"names":[],"mappings":"AAyBA,OAAO,EACL,WAAW,EAEX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,UAAU,EAEf,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAKxB,MAAM,oBAAoB,CAAA;AAG3B,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC;IAC1F;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;sDAGkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC;qEACiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;2CAEuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;8EAK0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAKD;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,GAAG,EAAE,0BAA0B;IAiBlC,cAAc,IAAI,OAAO;cAIlB,QAAQ,CACtB,QAAQ,EAAE,UAAU,EAAE,EACtB,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC;cAkBL,cAAc,CAC7B,QAAQ,EAAE,UAAU,EAAE,EACtB,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,WAAW,GAClB,aAAa,CAAC,eAAe,CAAC;IAsDjC;;;;OAIG;IACH,OAAO,CAAC,UAAU;YA0BJ,SAAS;IAevB;;;;;;OAMG;YACW,eAAe;CAiD9B"}
1
+ {"version":3,"file":"openai-compat-provider.d.ts","sourceRoot":"","sources":["../../../src/core/llm/openai-compat-provider.ts"],"names":[],"mappings":"AAyBA,OAAO,EACL,WAAW,EAEX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,UAAU,EAEf,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAKxB,MAAM,oBAAoB,CAAA;AAG3B,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC;IAC1F;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;sDAGkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC;qEACiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;2CAEuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;8EAK0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAOD;;0EAE0E;AAC1E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAkBhF;AAED;;;;;yDAKyD;AACzD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAChE,MAAM,CAQR;AAUD;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,GAAG,EAAE,0BAA0B;IAiBlC,cAAc,IAAI,OAAO;cAIlB,QAAQ,CACtB,QAAQ,EAAE,UAAU,EAAE,EACtB,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC;cAkBL,cAAc,CAC7B,QAAQ,EAAE,UAAU,EAAE,EACtB,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,WAAW,GAClB,aAAa,CAAC,eAAe,CAAC;IAsDjC;;;;OAIG;IACH,OAAO,CAAC,UAAU;YA0BJ,SAAS;IAevB;;;;;;;;;;;;;;OAcG;YACW,eAAe;CAgD9B"}
@@ -25,7 +25,60 @@
25
25
  import { LlmProvider, LlmProviderError, } from './provider-base.js';
26
26
  import { statSync as fsStatSync, readFileSync as fsReadFileSync } from 'node:fs';
27
27
  const DEFAULT_BASE_URL = 'https://api.openai.com/v1';
28
- const DEFAULT_RETRY = 1;
28
+ const DEFAULT_RETRY = 3;
29
+ const BASE_BACKOFF_MS = 250;
30
+ const MAX_BACKOFF_MS = 30_000;
31
+ /** Parse an HTTP `Retry-After` header per RFC 9110: either delta-seconds
32
+ * (e.g. "30") or an HTTP-date. Returns ms-from-now, clamped to ≥0.
33
+ * Returns null on null / empty / unparsable. Exported for unit tests. */
34
+ export function parseRetryAfter(header) {
35
+ if (!header)
36
+ return null;
37
+ const s = String(header).trim();
38
+ if (!s)
39
+ return null;
40
+ // delta-seconds form
41
+ if (/^\d+(?:\.\d+)?$/.test(s)) {
42
+ const n = Number(s);
43
+ if (Number.isFinite(n) && n >= 0)
44
+ return Math.floor(n * 1000);
45
+ return null;
46
+ }
47
+ // HTTP-date form (RFC 1123 etc.). Gate by length first: every RFC 7231
48
+ // HTTP-date variant (IMF-fixdate / obs-RFC850 / ANSI C asctime) is ≥24
49
+ // chars; without this gate Node's `Date.parse` loosely accepts e.g.
50
+ // "-5" as "5 BC" and `Math.max(0, …)` would swallow it as 0.
51
+ if (s.length < 20)
52
+ return null;
53
+ const t = Date.parse(s);
54
+ if (Number.isNaN(t))
55
+ return null;
56
+ return Math.max(0, t - Date.now());
57
+ }
58
+ /** Compute backoff for retry `attempt` (1-based). Honors any `Retry-After`
59
+ * the server sent — we wait at least that long (server knows when it's
60
+ * next available). Exponential 250ms × 2^(attempt-1) with full jitter
61
+ * on top to spread thundering herd. Capped at 30s — anything longer and
62
+ * the worker is better off surrendering to the caller's fallback path.
63
+ * `nowJitter` is injectable for deterministic tests. */
64
+ export function computeBackoffMs(attempt, retryAfterMs, opts = {}) {
65
+ const base = opts.base ?? BASE_BACKOFF_MS;
66
+ const cap = opts.cap ?? MAX_BACKOFF_MS;
67
+ const jitter = opts.jitter ?? (() => 0.8 + Math.random() * 0.4);
68
+ const exp = Math.min(cap, base * Math.pow(2, Math.max(0, attempt - 1)));
69
+ const withJitter = Math.floor(exp * jitter());
70
+ const floor = Math.max(0, retryAfterMs ?? 0);
71
+ return Math.min(cap, Math.max(floor, withJitter));
72
+ }
73
+ function resolveDefaultRetry() {
74
+ const raw = process.env.IMHUB_LLM_RETRY_MAX;
75
+ if (!raw)
76
+ return DEFAULT_RETRY;
77
+ const n = Number(raw);
78
+ if (!Number.isFinite(n) || n < 0)
79
+ return DEFAULT_RETRY;
80
+ return Math.min(10, Math.floor(n));
81
+ }
29
82
  /**
30
83
  * Concrete provider for any OpenAI-compatible `/v1/chat/completions`
31
84
  * endpoint. Single-shot chat is the only Stage-1 path we care about —
@@ -44,7 +97,7 @@ export class OpenAICompatProvider extends LlmProvider {
44
97
  });
45
98
  this.baseUrl = (cfg.baseUrl || DEFAULT_BASE_URL).replace(/\/+$/, '');
46
99
  this.extraHeaders = cfg.extraHeaders || {};
47
- this.retryOnTransient = Math.max(0, cfg.retryOnTransient ?? DEFAULT_RETRY);
100
+ this.retryOnTransient = Math.max(0, Math.min(10, cfg.retryOnTransient ?? resolveDefaultRetry()));
48
101
  if (typeof cfg.vision === 'boolean') {
49
102
  this.vision = cfg.vision;
50
103
  }
@@ -184,11 +237,19 @@ export class OpenAICompatProvider extends LlmProvider {
184
237
  return json;
185
238
  }
186
239
  /**
187
- * fetch + minimal retry. We backoff with a tiny fixed delay rather
188
- * than honoring Retry-After because Stage 1 callers (distill /
189
- * intent) have very short deadlines long backoffs would force a
190
- * fallback to CLI anyway, which is the whole point of "transient
191
- * retry, then surrender".
240
+ * fetch + transient retry with Retry-After + exponential backoff + jitter.
241
+ * Earlier versions used a tiny fixed delay and ignored `Retry-After`,
242
+ * which made DeepSeek / Moonshot 429s flap straight to the fallback
243
+ * provider (cold start + model-semantics swap) instead of waiting the
244
+ * few seconds the upstream actually asked for. We now honor the header
245
+ * as a hard floor; exponential backoff with jitter rides on top to
246
+ * avoid thundering-herd against the upstream's recovery window.
247
+ *
248
+ * Defaults: 3 retries (= 4 attempts), 250ms base, doubling per attempt,
249
+ * capped at 30s. Override via `IMHUB_LLM_RETRY_MAX` env (clamped [0,10])
250
+ * or the `retryOnTransient` ctor option. The cap exists because beyond
251
+ * ~30s the worker is better off surrendering so the agent loop can pick
252
+ * a fallback provider.
192
253
  */
193
254
  async _fetchWithRetry(url, body, signal) {
194
255
  let lastErr;
@@ -223,10 +284,8 @@ export class OpenAICompatProvider extends LlmProvider {
223
284
  if (!transient || attempts >= maxAttempts) {
224
285
  throw new LlmProviderError(this.name, `HTTP ${resp.status} from ${this.providerType}: ${bodyText || '(no body)'}`, { httpStatus: resp.status, transient });
225
286
  }
226
- // Transient and budget remaining — sleep and let the while loop
227
- // tick to the next attempt. The retry budget is the only thing
228
- // standing between us and an infinite loop.
229
- await sleep(250 * attempts, signal);
287
+ const retryAfterMs = parseRetryAfter(resp.headers.get('retry-after'));
288
+ await sleep(computeBackoffMs(attempts, retryAfterMs), signal);
230
289
  }
231
290
  catch (err) {
232
291
  // AbortError propagates immediately — callers wired timeouts on
@@ -235,7 +294,8 @@ export class OpenAICompatProvider extends LlmProvider {
235
294
  throw err;
236
295
  lastErr = err;
237
296
  if (attempts < maxAttempts) {
238
- await sleep(250 * attempts, signal);
297
+ // Transport errors have no Retry-After to consult.
298
+ await sleep(computeBackoffMs(attempts, null), signal);
239
299
  }
240
300
  }
241
301
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openai-compat-provider.js","sourceRoot":"","sources":["../../../src/core/llm/openai-compat-provider.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,qEAAqE;AACrE,kEAAkE;AAClE,uEAAuE;AACvE,mEAAmE;AACnE,wEAAwE;AACxE,EAAE;AACF,wCAAwC;AACxC,+EAA+E;AAC/E,kDAAkD;AAClD,iDAAiD;AACjD,0EAA0E;AAC1E,EAAE;AACF,+CAA+C;AAC/C,uCAAuC;AACvC,sBAAsB;AACtB,EAAE;AACF,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,yEAAyE;AACzE,wEAAwE;AACxE,kEAAkE;AAElE,OAAO,EACL,WAAW,EACX,gBAAgB,GAWjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,YAAY,IAAI,cAAc,EAAE,MAAM,SAAS,CAAA;AAmChF,MAAM,gBAAgB,GAAG,2BAA2B,CAAA;AACpD,MAAM,aAAa,GAAG,CAAC,CAAA;AAEvB;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IAClC,OAAO,CAAQ;IACf,YAAY,CAAwB;IACpC,gBAAgB,CAAQ;IACxB,MAAM,CAAS;IAEhC,YAAY,GAA+B;QACzC,KAAK,CAAC;YACJ,GAAG,GAAG;YACN,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,eAAe;SACnD,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACpE,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAA;QAC1C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,gBAAgB,IAAI,aAAa,CAAC,CAAA;QAC1E,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;QAC1B,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;YACzC,IAAI,CAAC,MAAM,GAAG,6CAA6C,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;IAEQ,cAAc;QACrB,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAES,KAAK,CAAC,QAAQ,CACtB,QAAsB,EACtB,IAAuB,EACvB,MAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QACvE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAA;QACtD,OAAO;YACL,IAAI;YACJ,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACvD,gBAAgB;YAChB,KAAK;YACL,YAAY;YACZ,SAAS,EAAE,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;SACrE,CAAA;IACH,CAAC;IAES,KAAK,CAAC,CAAC,cAAc,CAC7B,QAAsB,EACtB,IAAuB,EACvB,MAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAClD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,mBAAmB,CAAA;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,gCAAgC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACtG,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA;QACpC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,SAA+B,CAAA;QACnC,IAAI,UAAoC,CAAA;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;gBAC3C,IAAI,IAAI;oBAAE,MAAK;gBACf,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;gBACjD,+DAA+D;gBAC/D,6CAA6C;gBAC7C,SAAS,CAAC;oBACR,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;oBAClC,IAAI,GAAG,KAAK,CAAC,CAAC;wBAAE,MAAK;oBACrB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;oBAClC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;oBAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;wBAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;4BAAE,SAAQ;wBAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;wBACvC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;4BACzB,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,IAAI,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;4BAC7E,OAAM;wBACR,CAAC;wBACD,IAAI,MAAM,GAA+B,IAAI,CAAA;wBAC7C,IAAI,CAAC;4BAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAwB,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;wBAClF,IAAI,CAAC,MAAM;4BAAE,SAAQ;wBACrB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAA;wBACjD,IAAI,MAAM,CAAC,KAAK;4BAAE,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;wBAClD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;4BACvC,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;wBAC/D,CAAC;wBACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAClD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;wBAC5B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,iEAAiE;YACjE,6DAA6D;YAC7D,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,IAAI,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;QAC/E,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBAAC,MAAM,CAAC,WAAW,EAAE,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,UAAU,CAChB,QAAsB,EACtB,IAAuB,EACvB,MAAe;QAEf,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3E,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,SAAS;SAC3B,CAAA;QACD,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAC9B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAC7C,MAAM,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC/C,IAAI,EAAE,KAAK,SAAS;gBAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QAC7C,CAAC;QACD,iEAAiE;QACjE,6DAA6D;QAC7D,oEAAoE;QACpE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,KAAK,SAAS;gBAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAClC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAa,EAAE,MAAmB;QACxD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,mBAAmB,CAAA;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1D,IAAI,IAA4B,CAAA;QAChC,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAA4B,CAAA;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,+BAA+B,EAAE;gBACrE,UAAU,EAAE,IAAI,CAAC,MAAM;gBACvB,KAAK,EAAE,GAAG;aACX,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,IAAa,EAAE,MAAmB;QAC3E,IAAI,OAAgB,CAAA;QACpB,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;QAC7C,OAAO,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC9B,QAAQ,EAAE,CAAA;YACV,IAAI,CAAC;gBACH,MAAM,OAAO,GAA2B;oBACtC,cAAc,EAAE,kBAAkB;oBAClC,YAAY,EAAE,qBAAqB;oBACnC,GAAG,IAAI,CAAC,YAAY;iBACrB,CAAA;gBACD,IAAI,IAAI,CAAC,MAAM;oBAAE,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAA;gBAChE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC5B,MAAM,EAAE,MAAM;oBACd,OAAO;oBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAC1B,MAAM;iBACP,CAAC,CAAA;gBACF,IAAI,IAAI,CAAC,EAAE;oBAAE,OAAO,IAAI,CAAA;gBACxB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;gBACzG,6DAA6D;gBAC7D,wDAAwD;gBACxD,IAAI,QAAQ,GAAG,EAAE,CAAA;gBACjB,IAAI,CAAC;oBAAC,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC3E,IAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;oBAC1C,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAClC,QAAQ,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,WAAW,EAAE,EAC3E,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;gBAC3C,CAAC;gBACD,gEAAgE;gBAChE,+DAA+D;gBAC/D,4CAA4C;gBAC5C,MAAM,KAAK,CAAC,GAAG,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAA;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,gEAAgE;gBAChE,4BAA4B;gBAC5B,IAAI,YAAY,CAAC,GAAG,CAAC;oBAAE,MAAM,GAAG,CAAA;gBAChC,OAAO,GAAG,GAAG,CAAA;gBACb,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;oBAC3B,MAAM,KAAK,CAAC,GAAG,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAA;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,OAAO,YAAY,gBAAgB;YAAE,MAAM,OAAO,CAAA;QACtD,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAClC,oBAAqB,OAAiB,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,EACpE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IACxC,CAAC;CACF;AA8CD,SAAS,uBAAuB,CAAC,IAAmC;IAClE,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAA;IACxD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9D,CAAC;AAED,SAAS,WAAW,CAAC,IAAmC;IACtD,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAA;IAC9C,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAA;IACnC,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,YAAY,CAAC,IAA4C;IAChE,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAA;IACrB,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IACjB,MAAM,MAAM,GAAa;QACvB,YAAY,EAAE,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QAC/E,gBAAgB,EAAE,OAAO,CAAC,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;QAC3F,WAAW,EAAE,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KAC7E,CAAA;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9C,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;YACjD,CAAC,CAAC,SAAS,CAAA;IACb,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IAC7C,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,eAAe,CAAC,GAA8B;IACrD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAA;QAC1B,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAA;QAC9B,KAAK,gBAAgB,CAAC,CAAC,OAAO,gBAAgB,CAAA;QAC9C,KAAK,YAAY,CAAC,CAAC,OAAO,UAAU,CAAA,CAAG,wCAAwC;QAC/E,KAAK,eAAe,CAAC,CAAC,OAAO,UAAU,CAAA;QACvC,KAAK,IAAI,CAAC;QACV,KAAK,SAAS,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,OAAO,SAAS,CAAA;QACzB,OAAO,CAAC,CAAC,OAAO,SAAS,CAAA;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU,EAAE,MAAmB;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;YAC7C,OAAM;QACR,CAAC;QACD,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE;YACxB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC5C,OAAO,EAAE,CAAA;QACX,CAAC,EAAE,EAAE,CAAC,CAAA;QACN,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,CAAC,CAAC,CAAA;YACf,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;QAC/C,CAAC,CAAA;QACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACzC,MAAM,IAAI,GAAI,GAA0B,CAAC,IAAI,CAAA;IAC7C,OAAO,IAAI,KAAK,YAAY,CAAA;AAC9B,CAAC;AAED,wEAAwE;AAExE,SAAS,gBAAgB,CAAC,CAAa,EAAE,IAAyB;IAChE,uCAAuC;IACvC,sCAAsC;IACtC,sDAAsD;IACtD,2CAA2C;IAC3C,oEAAoE;IACpE,gDAAgD;IAChD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;YAChC,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAA;IACH,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,GAAG,GAA4B;YACnC,IAAI,EAAE,WAAW;YACjB,mEAAmE;YACnE,4DAA4D;YAC5D,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;YAC1B,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnC,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE;oBACR,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,SAAS,EAAE,EAAE,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;iBAC3D;aACF,CAAC,CAAC;SACJ,CAAA;QACD,IAAI,CAAC,CAAC,gBAAgB;YAAE,GAAG,CAAC,iBAAiB,GAAG,CAAC,CAAC,gBAAgB,CAAA;QAClE,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAA;IACjG,CAAC;IACD,oEAAoE;IACpE,iEAAiE;IACjE,gEAAgE;IAChE,6CAA6C;IAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACtE,MAAM,MAAM,GAAmC,EAAE,CAAA;QACjD,IAAI,CAAC,CAAC,OAAO;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7D,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YACpD,IAAI,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAC9E,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;IACjE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;AAC7C,CAAC;AAED;;;4DAG4D;AAC5D,SAAS,cAAc,CAAC,IAAY,EAAE,QAAiB;IACrD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;YAAE,OAAO,IAAI,CAAA;QAC7C,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,IAAI,GAAG,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;QACxC,OAAO,QAAQ,IAAI,WAAW,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAChC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,YAAY,CAAA;IAC1E,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,WAAW,CAAA;IAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,YAAY,CAAA;IAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,WAAW,CAAA;IAC9C,OAAO,0BAA0B,CAAA;AACnC,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB;KACF,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA8B;IACzD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC7B,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAA;IAClF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAA;IAC9D,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAmC;IAC3D,MAAM,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAA;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC1D,MAAM,GAAG,GAAsB,EAAE,CAAA;IACjC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QACzE,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;QACtF,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;YAAE,SAAQ;QAC1B,IAAI,MAAM,GAA4B,EAAE,CAAA;QACxC,IAAI,YAAgC,CAAA;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAA;gBAC1C,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1D,MAAM,GAAG,GAA8B,CAAA;gBACzC,CAAC;qBAAM,CAAC;oBACN,YAAY,GAAG,OAAO,CAAA;gBACxB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,8DAA8D;gBAC9D,uDAAuD;gBACvD,YAAY,GAAG,OAAO,CAAA;YACxB,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAoB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;QAC5D,IAAI,YAAY,KAAK,SAAS;YAAE,GAAG,CAAC,YAAY,GAAG,YAAY,CAAA;QAC/D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"openai-compat-provider.js","sourceRoot":"","sources":["../../../src/core/llm/openai-compat-provider.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import{y as p,ab as f,q as o,ad as g,U as t,s as m,c as j}from"./index-CUlfCXYW.js";import{e as N}from"./react-C9F3QeMB.js";import{D as y}from"./data-table-BXUgaJFG.js";import{E as b}from"./empty-state--wTr0nEY.js";import{S as w}from"./status-badge-CiY-R4cR.js";import{u as x}from"./useQuery-CPWNEU8n.js";import{u as v}from"./use-event-stream-BGeFcayX.js";import{L as A}from"./loader-circle-BeeODmoF.js";import{R as S}from"./refresh-ccw-CweZfxgw.js";import"./table-BQd1FahX.js";/**
1
+ import{y as p,ab as f,q as o,ad as g,U as t,s as m,c as j}from"./index-DVf2XlVZ.js";import{e as N}from"./react-C9F3QeMB.js";import{D as y}from"./data-table-D-Zgmc4f.js";import{E as b}from"./empty-state-C_hR--ro.js";import{S as w}from"./status-badge---MleYSt.js";import{u as x}from"./useQuery-BtY7wSLM.js";import{u as v}from"./use-event-stream-BGeFcayX.js";import{L as A}from"./loader-circle-DdWIiO8L.js";import{R as S}from"./refresh-ccw-B8Fzl2uq.js";import"./table-Dg3N5NYh.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
6
  */const C=p("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]),l={all:["a2a"],stats:["a2a","stats"],recent:e=>["a2a","recent",e]};function q(){return x({queryKey:l.stats,queryFn:()=>o.getA2AStats()})}function T(e){return x({queryKey:l.recent(e),queryFn:()=>o.getA2ARecent(e)})}function E(){const e=f();return()=>e.invalidateQueries({queryKey:l.all})}const L={connected:"text-success",connecting:"text-text-dim",reconnecting:"text-warning",closed:"text-text-muted"};function U(){const{t:e}=g(["tasks","common"]),s=E(),n=q(),r=T({limit:50}),u=r.data?.rows??[],i=n.data,d=v({job:()=>s()}),h=N.useMemo(()=>[{id:"id",header:e("a2a.col.id"),cell:a=>t.jsxs("span",{className:"tabular-nums text-text-dim",children:["#",a.id]}),headClassName:"w-16"},{id:"agent",header:e("a2a.col.agent"),cell:a=>t.jsx("span",{className:"font-medium",children:a.agent}),headClassName:"w-32"},{id:"parent",header:e("a2a.col.parent"),cell:a=>a.parent_id!=null?t.jsxs("span",{className:"tabular-nums text-text-dim",children:["#",a.parent_id]}):t.jsx("span",{className:"text-text-muted",children:"—"}),headClassName:"w-20"},{id:"depth",header:e("a2a.col.depth"),cell:a=>t.jsx("span",{className:"tabular-nums text-text-dim",children:a.call_depth}),headClassName:"w-16",hideOnMobile:!0},{id:"status",header:e("a2a.col.status"),cell:a=>t.jsx(w,{status:a.status,children:a.status}),headClassName:"w-28"},{id:"prompt",header:e("a2a.col.prompt"),cell:a=>t.jsx("span",{className:"line-clamp-2 text-text-dim",children:a.prompt??"—"}),asCardTitle:!0},{id:"createdAt",header:e("a2a.col.createdAt"),cell:a=>t.jsx("span",{className:"text-text-dim",children:R(a.created_at)}),headClassName:"w-40",hideOnMobile:!0}],[e]);return t.jsxs("div",{className:"mx-auto flex max-w-7xl flex-col gap-4",children:[t.jsxs("header",{className:"flex flex-col gap-1",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t.jsx("h1",{className:"text-xl font-semibold",children:e("a2a.title")}),t.jsx("span",{className:m("text-xs font-medium tabular-nums",L[d]),children:e(`jobs.live.${d}`)}),t.jsxs(j,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>{r.refetch(),n.refetch()},disabled:r.isFetching||n.isFetching,"aria-label":e("actions.refresh",{ns:"common"}),children:[r.isFetching?t.jsx(A,{className:"h-4 w-4 animate-spin"}):t.jsx(S,{className:"h-4 w-4"}),t.jsx("span",{className:"hidden sm:inline",children:e("actions.refresh",{ns:"common"})})]})]}),t.jsx("p",{className:"text-sm text-text-dim",children:e("a2a.subtitle")})]}),i&&t.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[t.jsx(c,{label:e("a2a.stats.total"),value:i.total,tone:"info"}),t.jsx(c,{label:e("a2a.stats.recent24h"),value:i.recent24h,tone:"success"}),t.jsx(c,{label:e("a2a.stats.maxDepth"),value:i.maxDepth,tone:"warning"})]}),t.jsx(y,{columns:h,rows:u,getRowId:a=>String(a.id),loading:r.isLoading,emptyState:t.jsx(b,{icon:t.jsx(C,{}),title:e("a2a.empty.title"),description:e("a2a.empty.description")})})]})}const k={info:"border-info/30 text-info",success:"border-success/30 text-success",warning:"border-warning/30 text-warning",danger:"border-danger/30 text-danger"};function c({label:e,value:s,tone:n}){return t.jsxs("div",{className:m("rounded-md border bg-surface px-3 py-2",k[n]),children:[t.jsx("div",{className:"text-xs uppercase tracking-wide text-text-dim",children:e}),t.jsx("div",{className:"text-2xl font-semibold tabular-nums",children:s})]})}function R(e){try{const s=new Date(e);return Number.isNaN(s.getTime())?e:s.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return e}}export{U as default};
7
- //# sourceMappingURL=a2a-DCgHD3C7.js.map
7
+ //# sourceMappingURL=a2a-DjyqPnWh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"a2a-DCgHD3C7.js","sources":["../../node_modules/lucide-react/dist/esm/icons/git-branch.js","../../src/hooks/use-a2a.ts","../../src/routes/tasks/a2a.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst GitBranch = createLucideIcon(\"GitBranch\", [\n [\"line\", { x1: \"6\", x2: \"6\", y1: \"3\", y2: \"15\", key: \"17qcm7\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"path\", { d: \"M18 9a9 9 0 0 1-9 9\", key: \"n2h4wq\" }]\n]);\n\nexport { GitBranch as default };\n//# sourceMappingURL=git-branch.js.map\n","/**\n * useA2A* — react-query wrappers for the Agent-to-Agent inline-job\n * view. Read-only; data lives in jobs.db and is exposed via:\n *\n * GET /api/a2a/stats → totals, recent24h, maxDepth, byStatus/byAgent\n * GET /api/a2a/recent → recent rows (truncated prompt + result)\n *\n * SSE: subscribes to the `job` event so a freshly-completed inline\n * sub-invocation shows up without manual refresh.\n */\n\nimport { useQueryClient, useQuery } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type { A2AStats, ListA2ARecentQuery, ListA2ARecentResponse } from '@/types/api'\n\nexport const a2aKeys = {\n all: ['a2a'] as const,\n stats: ['a2a', 'stats'] as const,\n recent: (q: ListA2ARecentQuery) => ['a2a', 'recent', q] as const,\n}\n\nexport function useA2AStats() {\n return useQuery<A2AStats>({\n queryKey: a2aKeys.stats,\n queryFn: () => api.getA2AStats(),\n })\n}\n\nexport function useA2ARecent(query: ListA2ARecentQuery) {\n return useQuery<ListA2ARecentResponse>({\n queryKey: a2aKeys.recent(query),\n queryFn: () => api.getA2ARecent(query),\n })\n}\n\nexport function useInvalidateA2A() {\n const qc = useQueryClient()\n return () => qc.invalidateQueries({ queryKey: a2aKeys.all })\n}\n","/**\n * /tasks/a2a — Agent ↔ Agent inline-call history.\n *\n * Splits into stats KPI cards (total / recent24h / maxDepth) +\n * recent-rows table. Subscribes to the SSE `job` event so a fresh\n * agent-to-agent call appears live.\n */\n\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GitBranch, Loader2, RefreshCcw } from 'lucide-react'\n\nimport { DataTable, type DataTableColumn } from '@/components/common/data-table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { StatusBadge } from '@/components/common/status-badge'\nimport { Button } from '@/components/ui/button'\nimport { useA2ARecent, useA2AStats, useInvalidateA2A } from '@/hooks/use-a2a'\nimport { useEventStream, type SseStatus } from '@/hooks/use-event-stream'\nimport type { A2ARow } from '@/types/api'\nimport { cn } from '@/lib/utils'\n\nconst LIVE_STATUS_CLASS: Record<SseStatus, string> = {\n connected: 'text-success',\n connecting: 'text-text-dim',\n reconnecting: 'text-warning',\n closed: 'text-text-muted',\n}\n\nexport default function A2ARoute(): JSX.Element {\n const { t } = useTranslation(['tasks', 'common'])\n const invalidate = useInvalidateA2A()\n\n const statsQuery = useA2AStats()\n const recentQuery = useA2ARecent({ limit: 50 })\n const rows = recentQuery.data?.rows ?? []\n const stats = statsQuery.data\n\n const live = useEventStream({\n job: () => invalidate(),\n })\n\n const columns: DataTableColumn<A2ARow>[] = useMemo(\n () => [\n {\n id: 'id',\n header: t('a2a.col.id'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">#{r.id}</span>,\n headClassName: 'w-16',\n },\n {\n id: 'agent',\n header: t('a2a.col.agent'),\n cell: (r) => <span className=\"font-medium\">{r.agent}</span>,\n headClassName: 'w-32',\n },\n {\n id: 'parent',\n header: t('a2a.col.parent'),\n cell: (r) =>\n r.parent_id != null ? (\n <span className=\"tabular-nums text-text-dim\">#{r.parent_id}</span>\n ) : (\n <span className=\"text-text-muted\">—</span>\n ),\n headClassName: 'w-20',\n },\n {\n id: 'depth',\n header: t('a2a.col.depth'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">{r.call_depth}</span>,\n headClassName: 'w-16',\n hideOnMobile: true,\n },\n {\n id: 'status',\n header: t('a2a.col.status'),\n cell: (r) => <StatusBadge status={r.status}>{r.status}</StatusBadge>,\n headClassName: 'w-28',\n },\n {\n id: 'prompt',\n header: t('a2a.col.prompt'),\n cell: (r) => (\n <span className=\"line-clamp-2 text-text-dim\">{r.prompt ?? '—'}</span>\n ),\n asCardTitle: true,\n },\n {\n id: 'createdAt',\n header: t('a2a.col.createdAt'),\n cell: (r) => <span className=\"text-text-dim\">{formatTime(r.created_at)}</span>,\n headClassName: 'w-40',\n hideOnMobile: true,\n },\n ],\n [t],\n )\n\n return (\n <div className=\"mx-auto flex max-w-7xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('a2a.title')}</h1>\n <span className={cn('text-xs font-medium tabular-nums', LIVE_STATUS_CLASS[live])}>\n {t(`jobs.live.${live}`)}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => {\n void recentQuery.refetch()\n void statsQuery.refetch()\n }}\n disabled={recentQuery.isFetching || statsQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {recentQuery.isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n <p className=\"text-sm text-text-dim\">{t('a2a.subtitle')}</p>\n </header>\n\n {stats && (\n <div className=\"grid grid-cols-3 gap-2\">\n <StatCard label={t('a2a.stats.total')} value={stats.total} tone=\"info\" />\n <StatCard label={t('a2a.stats.recent24h')} value={stats.recent24h} tone=\"success\" />\n <StatCard label={t('a2a.stats.maxDepth')} value={stats.maxDepth} tone=\"warning\" />\n </div>\n )}\n\n <DataTable\n columns={columns}\n rows={rows}\n getRowId={(r) => String(r.id)}\n loading={recentQuery.isLoading}\n emptyState={\n <EmptyState\n icon={<GitBranch />}\n title={t('a2a.empty.title')}\n description={t('a2a.empty.description')}\n />\n }\n />\n </div>\n )\n}\n\ninterface StatCardProps {\n label: string\n value: number\n tone: 'info' | 'success' | 'warning' | 'danger'\n}\n\nconst TONE_STYLES: Record<StatCardProps['tone'], string> = {\n info: 'border-info/30 text-info',\n success: 'border-success/30 text-success',\n warning: 'border-warning/30 text-warning',\n danger: 'border-danger/30 text-danger',\n}\n\nfunction StatCard({ label, value, tone }: StatCardProps): JSX.Element {\n return (\n <div\n className={cn(\n 'rounded-md border bg-surface px-3 py-2',\n TONE_STYLES[tone],\n )}\n >\n <div className=\"text-xs uppercase tracking-wide text-text-dim\">{label}</div>\n <div className=\"text-2xl font-semibold tabular-nums\">{value}</div>\n </div>\n )\n}\n\nfunction formatTime(iso: string): string {\n try {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' })\n } catch {\n return iso\n }\n}\n"],"names":["GitBranch","createLucideIcon","a2aKeys","q","useA2AStats","useQuery","api","useA2ARecent","query","useInvalidateA2A","qc","useQueryClient","LIVE_STATUS_CLASS","A2ARoute","t","useTranslation","invalidate","statsQuery","recentQuery","rows","stats","live","useEventStream","columns","useMemo","r","jsxs","jsx","StatusBadge","formatTime","cn","Button","Loader2","RefreshCcw","StatCard","DataTable","EmptyState","TONE_STYLES","label","value","tone","iso","d"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"a2a-DjyqPnWh.js","sources":["../../node_modules/lucide-react/dist/esm/icons/git-branch.js","../../src/hooks/use-a2a.ts","../../src/routes/tasks/a2a.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst GitBranch = createLucideIcon(\"GitBranch\", [\n [\"line\", { x1: \"6\", x2: \"6\", y1: \"3\", y2: \"15\", key: \"17qcm7\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"path\", { d: \"M18 9a9 9 0 0 1-9 9\", key: \"n2h4wq\" }]\n]);\n\nexport { GitBranch as default };\n//# sourceMappingURL=git-branch.js.map\n","/**\n * useA2A* — react-query wrappers for the Agent-to-Agent inline-job\n * view. Read-only; data lives in jobs.db and is exposed via:\n *\n * GET /api/a2a/stats → totals, recent24h, maxDepth, byStatus/byAgent\n * GET /api/a2a/recent → recent rows (truncated prompt + result)\n *\n * SSE: subscribes to the `job` event so a freshly-completed inline\n * sub-invocation shows up without manual refresh.\n */\n\nimport { useQueryClient, useQuery } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type { A2AStats, ListA2ARecentQuery, ListA2ARecentResponse } from '@/types/api'\n\nexport const a2aKeys = {\n all: ['a2a'] as const,\n stats: ['a2a', 'stats'] as const,\n recent: (q: ListA2ARecentQuery) => ['a2a', 'recent', q] as const,\n}\n\nexport function useA2AStats() {\n return useQuery<A2AStats>({\n queryKey: a2aKeys.stats,\n queryFn: () => api.getA2AStats(),\n })\n}\n\nexport function useA2ARecent(query: ListA2ARecentQuery) {\n return useQuery<ListA2ARecentResponse>({\n queryKey: a2aKeys.recent(query),\n queryFn: () => api.getA2ARecent(query),\n })\n}\n\nexport function useInvalidateA2A() {\n const qc = useQueryClient()\n return () => qc.invalidateQueries({ queryKey: a2aKeys.all })\n}\n","/**\n * /tasks/a2a — Agent ↔ Agent inline-call history.\n *\n * Splits into stats KPI cards (total / recent24h / maxDepth) +\n * recent-rows table. Subscribes to the SSE `job` event so a fresh\n * agent-to-agent call appears live.\n */\n\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GitBranch, Loader2, RefreshCcw } from 'lucide-react'\n\nimport { DataTable, type DataTableColumn } from '@/components/common/data-table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { StatusBadge } from '@/components/common/status-badge'\nimport { Button } from '@/components/ui/button'\nimport { useA2ARecent, useA2AStats, useInvalidateA2A } from '@/hooks/use-a2a'\nimport { useEventStream, type SseStatus } from '@/hooks/use-event-stream'\nimport type { A2ARow } from '@/types/api'\nimport { cn } from '@/lib/utils'\n\nconst LIVE_STATUS_CLASS: Record<SseStatus, string> = {\n connected: 'text-success',\n connecting: 'text-text-dim',\n reconnecting: 'text-warning',\n closed: 'text-text-muted',\n}\n\nexport default function A2ARoute(): JSX.Element {\n const { t } = useTranslation(['tasks', 'common'])\n const invalidate = useInvalidateA2A()\n\n const statsQuery = useA2AStats()\n const recentQuery = useA2ARecent({ limit: 50 })\n const rows = recentQuery.data?.rows ?? []\n const stats = statsQuery.data\n\n const live = useEventStream({\n job: () => invalidate(),\n })\n\n const columns: DataTableColumn<A2ARow>[] = useMemo(\n () => [\n {\n id: 'id',\n header: t('a2a.col.id'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">#{r.id}</span>,\n headClassName: 'w-16',\n },\n {\n id: 'agent',\n header: t('a2a.col.agent'),\n cell: (r) => <span className=\"font-medium\">{r.agent}</span>,\n headClassName: 'w-32',\n },\n {\n id: 'parent',\n header: t('a2a.col.parent'),\n cell: (r) =>\n r.parent_id != null ? (\n <span className=\"tabular-nums text-text-dim\">#{r.parent_id}</span>\n ) : (\n <span className=\"text-text-muted\">—</span>\n ),\n headClassName: 'w-20',\n },\n {\n id: 'depth',\n header: t('a2a.col.depth'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">{r.call_depth}</span>,\n headClassName: 'w-16',\n hideOnMobile: true,\n },\n {\n id: 'status',\n header: t('a2a.col.status'),\n cell: (r) => <StatusBadge status={r.status}>{r.status}</StatusBadge>,\n headClassName: 'w-28',\n },\n {\n id: 'prompt',\n header: t('a2a.col.prompt'),\n cell: (r) => (\n <span className=\"line-clamp-2 text-text-dim\">{r.prompt ?? '—'}</span>\n ),\n asCardTitle: true,\n },\n {\n id: 'createdAt',\n header: t('a2a.col.createdAt'),\n cell: (r) => <span className=\"text-text-dim\">{formatTime(r.created_at)}</span>,\n headClassName: 'w-40',\n hideOnMobile: true,\n },\n ],\n [t],\n )\n\n return (\n <div className=\"mx-auto flex max-w-7xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('a2a.title')}</h1>\n <span className={cn('text-xs font-medium tabular-nums', LIVE_STATUS_CLASS[live])}>\n {t(`jobs.live.${live}`)}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => {\n void recentQuery.refetch()\n void statsQuery.refetch()\n }}\n disabled={recentQuery.isFetching || statsQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {recentQuery.isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n <p className=\"text-sm text-text-dim\">{t('a2a.subtitle')}</p>\n </header>\n\n {stats && (\n <div className=\"grid grid-cols-3 gap-2\">\n <StatCard label={t('a2a.stats.total')} value={stats.total} tone=\"info\" />\n <StatCard label={t('a2a.stats.recent24h')} value={stats.recent24h} tone=\"success\" />\n <StatCard label={t('a2a.stats.maxDepth')} value={stats.maxDepth} tone=\"warning\" />\n </div>\n )}\n\n <DataTable\n columns={columns}\n rows={rows}\n getRowId={(r) => String(r.id)}\n loading={recentQuery.isLoading}\n emptyState={\n <EmptyState\n icon={<GitBranch />}\n title={t('a2a.empty.title')}\n description={t('a2a.empty.description')}\n />\n }\n />\n </div>\n )\n}\n\ninterface StatCardProps {\n label: string\n value: number\n tone: 'info' | 'success' | 'warning' | 'danger'\n}\n\nconst TONE_STYLES: Record<StatCardProps['tone'], string> = {\n info: 'border-info/30 text-info',\n success: 'border-success/30 text-success',\n warning: 'border-warning/30 text-warning',\n danger: 'border-danger/30 text-danger',\n}\n\nfunction StatCard({ label, value, tone }: StatCardProps): JSX.Element {\n return (\n <div\n className={cn(\n 'rounded-md border bg-surface px-3 py-2',\n TONE_STYLES[tone],\n )}\n >\n <div className=\"text-xs uppercase tracking-wide text-text-dim\">{label}</div>\n <div className=\"text-2xl font-semibold tabular-nums\">{value}</div>\n </div>\n )\n}\n\nfunction formatTime(iso: string): string {\n try {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' })\n } catch {\n return iso\n }\n}\n"],"names":["GitBranch","createLucideIcon","a2aKeys","q","useA2AStats","useQuery","api","useA2ARecent","query","useInvalidateA2A","qc","useQueryClient","LIVE_STATUS_CLASS","A2ARoute","t","useTranslation","invalidate","statsQuery","recentQuery","rows","stats","live","useEventStream","columns","useMemo","r","jsxs","jsx","StatusBadge","formatTime","cn","Button","Loader2","RefreshCcw","StatCard","DataTable","EmptyState","TONE_STYLES","label","value","tone","iso","d"],"mappings":"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","x_google_ignoreList":[0]}