@recombine-ai/platform 0.5.0 → 0.6.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 (138) hide show
  1. package/build/bosun-app/frontend/client/_app/immutable/chunks/{dqHFzkrz.js → DLoeuYMu.js} +1 -1
  2. package/build/bosun-app/frontend/client/_app/immutable/chunks/DLoeuYMu.js.br +0 -0
  3. package/build/bosun-app/frontend/client/_app/immutable/chunks/DLoeuYMu.js.gz +0 -0
  4. package/build/bosun-app/frontend/client/_app/immutable/chunks/{DWlUaO0d.js → D_AUB_Y_.js} +1 -1
  5. package/build/bosun-app/frontend/client/_app/immutable/chunks/D_AUB_Y_.js.br +0 -0
  6. package/build/bosun-app/frontend/client/_app/immutable/chunks/D_AUB_Y_.js.gz +0 -0
  7. package/build/bosun-app/frontend/client/_app/immutable/chunks/{BwC8XjMu.js → Dz3Q78XL.js} +1 -1
  8. package/build/bosun-app/frontend/client/_app/immutable/chunks/Dz3Q78XL.js.br +0 -0
  9. package/build/bosun-app/frontend/client/_app/immutable/chunks/Dz3Q78XL.js.gz +0 -0
  10. package/build/bosun-app/frontend/client/_app/immutable/chunks/{BfQeNRSV.js → DzLW1Mkz.js} +1 -1
  11. package/build/bosun-app/frontend/client/_app/immutable/chunks/DzLW1Mkz.js.br +0 -0
  12. package/build/bosun-app/frontend/client/_app/immutable/chunks/DzLW1Mkz.js.gz +0 -0
  13. package/build/bosun-app/frontend/client/_app/immutable/chunks/{CKcQhCJC.js → WoyQSrjz.js} +1 -1
  14. package/build/bosun-app/frontend/client/_app/immutable/chunks/WoyQSrjz.js.br +0 -0
  15. package/build/bosun-app/frontend/client/_app/immutable/chunks/WoyQSrjz.js.gz +0 -0
  16. package/build/bosun-app/frontend/client/_app/immutable/entry/{app.D21MRecj.js → app.tlZ6ECO2.js} +2 -2
  17. package/build/bosun-app/frontend/client/_app/immutable/entry/app.tlZ6ECO2.js.br +0 -0
  18. package/build/bosun-app/frontend/client/_app/immutable/entry/app.tlZ6ECO2.js.gz +0 -0
  19. package/build/bosun-app/frontend/client/_app/immutable/entry/start.CFPAx99R.js +1 -0
  20. package/build/bosun-app/frontend/client/_app/immutable/entry/start.CFPAx99R.js.br +0 -0
  21. package/build/bosun-app/frontend/client/_app/immutable/entry/start.CFPAx99R.js.gz +0 -0
  22. package/build/bosun-app/frontend/client/_app/immutable/nodes/{0.DTw_tt3s.js → 0.My9Ge0mp.js} +1 -1
  23. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.My9Ge0mp.js.br +0 -0
  24. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.My9Ge0mp.js.gz +0 -0
  25. package/build/bosun-app/frontend/client/_app/immutable/nodes/{1.llCYq9Hg.js → 1.8soRNXH1.js} +1 -1
  26. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.8soRNXH1.js.br +0 -0
  27. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.8soRNXH1.js.gz +0 -0
  28. package/build/bosun-app/frontend/client/_app/immutable/nodes/{10.D9R5gFET.js → 10.Dvsr2_-z.js} +1 -1
  29. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.Dvsr2_-z.js.br +0 -0
  30. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.Dvsr2_-z.js.gz +0 -0
  31. package/build/bosun-app/frontend/client/_app/immutable/nodes/{17.BJPfWzEW.js → 17.COoRz9YL.js} +1 -1
  32. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.COoRz9YL.js.br +0 -0
  33. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.COoRz9YL.js.gz +0 -0
  34. package/build/bosun-app/frontend/client/_app/immutable/nodes/{18.vMqDwRaL.js → 18.BU9ol_TM.js} +1 -1
  35. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.BU9ol_TM.js.br +0 -0
  36. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.BU9ol_TM.js.gz +0 -0
  37. package/build/bosun-app/frontend/client/_app/immutable/nodes/{2.DqYksi1m.js → 2.BaCFGeUG.js} +1 -1
  38. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.BaCFGeUG.js.br +0 -0
  39. package/build/bosun-app/frontend/client/_app/immutable/nodes/{2.DqYksi1m.js.gz → 2.BaCFGeUG.js.gz} +0 -0
  40. package/build/bosun-app/frontend/client/_app/immutable/nodes/{3.DY4cCysm.js → 3.B2QuAahv.js} +1 -1
  41. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.B2QuAahv.js.br +0 -0
  42. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.B2QuAahv.js.gz +0 -0
  43. package/build/bosun-app/frontend/client/_app/immutable/nodes/{4.CT5azNVy.js → 4.XVLuiibs.js} +1 -1
  44. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.XVLuiibs.js.br +0 -0
  45. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.XVLuiibs.js.gz +0 -0
  46. package/build/bosun-app/frontend/client/_app/immutable/nodes/{5.D3K2hLe5.js → 5.BV6hbTfJ.js} +1 -1
  47. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.BV6hbTfJ.js.br +0 -0
  48. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.BV6hbTfJ.js.gz +0 -0
  49. package/build/bosun-app/frontend/client/_app/immutable/nodes/{6.C50_01kw.js → 6.cTvJXuC_.js} +1 -1
  50. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.cTvJXuC_.js.br +0 -0
  51. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.cTvJXuC_.js.gz +0 -0
  52. package/build/bosun-app/frontend/client/_app/immutable/nodes/{8.BDWagOdA.js → 8.4WVQLKHf.js} +1 -1
  53. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.4WVQLKHf.js.br +0 -0
  54. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.4WVQLKHf.js.gz +0 -0
  55. package/build/bosun-app/frontend/client/_app/immutable/nodes/{9.DjkNtG73.js → 9.DDtd23BC.js} +1 -1
  56. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.DDtd23BC.js.br +0 -0
  57. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.DDtd23BC.js.gz +0 -0
  58. package/build/bosun-app/frontend/client/_app/version.json +1 -1
  59. package/build/bosun-app/frontend/client/_app/version.json.br +0 -0
  60. package/build/bosun-app/frontend/client/_app/version.json.gz +0 -0
  61. package/build/bosun-app/frontend/handler.js +4 -4
  62. package/build/bosun-app/frontend/index.js +4 -4
  63. package/build/bosun-app/frontend/server/chunks/chunks/{internal.js-CZxAejkO.js → internal.js-Bbhicye1.js} +2 -2
  64. package/build/bosun-app/frontend/server/chunks/chunks/{internal.js-CZxAejkO.js.map → internal.js-Bbhicye1.js.map} +1 -1
  65. package/build/bosun-app/frontend/server/chunks/{handler-Jnrg3wPg.js → handler-B9pVHSE7.js} +3 -3
  66. package/build/bosun-app/frontend/server/chunks/{handler-Jnrg3wPg.js.map → handler-B9pVHSE7.js.map} +1 -1
  67. package/build/bosun-app/frontend/server/chunks/{index.js-CHqxWZDr.js → index.js-yM54Kd2A.js} +2 -2
  68. package/build/bosun-app/frontend/server/chunks/{index.js-CHqxWZDr.js.map → index.js-yM54Kd2A.js.map} +1 -1
  69. package/build/bosun-app/frontend/server/chunks/{manifest.js-DmcqihPV.js → manifest.js-DolFIESH.js} +14 -14
  70. package/build/bosun-app/frontend/server/chunks/{manifest.js-DmcqihPV.js.map → manifest.js-DolFIESH.js.map} +1 -1
  71. package/build/bosun-app/frontend/server/chunks/nodes/{0.js-AzmZoy1E.js → 0.js-Dq2ecpF9.js} +2 -2
  72. package/build/bosun-app/frontend/server/chunks/nodes/{0.js-AzmZoy1E.js.map → 0.js-Dq2ecpF9.js.map} +1 -1
  73. package/build/bosun-app/frontend/server/chunks/nodes/{1.js-DHw5LmcV.js → 1.js-DL4KxCNs.js} +2 -2
  74. package/build/bosun-app/frontend/server/chunks/nodes/{1.js-DHw5LmcV.js.map → 1.js-DL4KxCNs.js.map} +1 -1
  75. package/build/bosun-app/frontend/server/chunks/nodes/{10.js-Bma8SASV.js → 10.js-LOiFsxCJ.js} +2 -2
  76. package/build/bosun-app/frontend/server/chunks/nodes/{10.js-Bma8SASV.js.map → 10.js-LOiFsxCJ.js.map} +1 -1
  77. package/build/bosun-app/frontend/server/chunks/nodes/{17.js-CDQ0obMk.js → 17.js-DMA8sOmE.js} +2 -2
  78. package/build/bosun-app/frontend/server/chunks/nodes/{17.js-CDQ0obMk.js.map → 17.js-DMA8sOmE.js.map} +1 -1
  79. package/build/bosun-app/frontend/server/chunks/nodes/{18.js-3gRfKzfa.js → 18.js-uFmm-sPa.js} +2 -2
  80. package/build/bosun-app/frontend/server/chunks/nodes/{18.js-3gRfKzfa.js.map → 18.js-uFmm-sPa.js.map} +1 -1
  81. package/build/bosun-app/frontend/server/chunks/nodes/{2.js-BxBjD7OX.js → 2.js-TSnVvl3L.js} +2 -2
  82. package/build/bosun-app/frontend/server/chunks/nodes/{2.js-BxBjD7OX.js.map → 2.js-TSnVvl3L.js.map} +1 -1
  83. package/build/bosun-app/frontend/server/chunks/nodes/{3.js-bfS0t-8E.js → 3.js-C-mekp3u.js} +2 -2
  84. package/build/bosun-app/frontend/server/chunks/nodes/{3.js-bfS0t-8E.js.map → 3.js-C-mekp3u.js.map} +1 -1
  85. package/build/bosun-app/frontend/server/chunks/nodes/{4.js--eSSRL0B.js → 4.js-CKl_EX8L.js} +2 -2
  86. package/build/bosun-app/frontend/server/chunks/nodes/{4.js--eSSRL0B.js.map → 4.js-CKl_EX8L.js.map} +1 -1
  87. package/build/bosun-app/frontend/server/chunks/nodes/{5.js-D6sqQZLO.js → 5.js-BWmqvxt2.js} +2 -2
  88. package/build/bosun-app/frontend/server/chunks/nodes/{5.js-D6sqQZLO.js.map → 5.js-BWmqvxt2.js.map} +1 -1
  89. package/build/bosun-app/frontend/server/chunks/nodes/{6.js-DAEsXANu.js → 6.js-CjKPGJGt.js} +2 -2
  90. package/build/bosun-app/frontend/server/chunks/nodes/{6.js-DAEsXANu.js.map → 6.js-CjKPGJGt.js.map} +1 -1
  91. package/build/bosun-app/frontend/server/chunks/nodes/{8.js-CaZXsO-L.js → 8.js-CpjYLyJe.js} +2 -2
  92. package/build/bosun-app/frontend/server/chunks/nodes/{8.js-CaZXsO-L.js.map → 8.js-CpjYLyJe.js.map} +1 -1
  93. package/build/bosun-app/frontend/server/chunks/nodes/{9.js-B8aSYLuv.js → 9.js-BLYfNmUw.js} +2 -2
  94. package/build/bosun-app/frontend/server/chunks/nodes/{9.js-B8aSYLuv.js.map → 9.js-BLYfNmUw.js.map} +1 -1
  95. package/build/text-agent-handlers/incoming-message.d.ts +1 -0
  96. package/build/text-agent-handlers/incoming-message.d.ts.map +1 -1
  97. package/build/text-agent-handlers/incoming-message.js +23 -4
  98. package/build/text-agent-handlers/ports.d.ts +1 -0
  99. package/build/text-agent-handlers/ports.d.ts.map +1 -1
  100. package/package.json +1 -1
  101. package/build/bosun-app/frontend/client/_app/immutable/chunks/BfQeNRSV.js.br +0 -3
  102. package/build/bosun-app/frontend/client/_app/immutable/chunks/BfQeNRSV.js.gz +0 -0
  103. package/build/bosun-app/frontend/client/_app/immutable/chunks/BwC8XjMu.js.br +0 -0
  104. package/build/bosun-app/frontend/client/_app/immutable/chunks/BwC8XjMu.js.gz +0 -0
  105. package/build/bosun-app/frontend/client/_app/immutable/chunks/CKcQhCJC.js.br +0 -0
  106. package/build/bosun-app/frontend/client/_app/immutable/chunks/CKcQhCJC.js.gz +0 -0
  107. package/build/bosun-app/frontend/client/_app/immutable/chunks/DWlUaO0d.js.br +0 -0
  108. package/build/bosun-app/frontend/client/_app/immutable/chunks/DWlUaO0d.js.gz +0 -0
  109. package/build/bosun-app/frontend/client/_app/immutable/chunks/dqHFzkrz.js.br +0 -0
  110. package/build/bosun-app/frontend/client/_app/immutable/chunks/dqHFzkrz.js.gz +0 -0
  111. package/build/bosun-app/frontend/client/_app/immutable/entry/app.D21MRecj.js.br +0 -0
  112. package/build/bosun-app/frontend/client/_app/immutable/entry/app.D21MRecj.js.gz +0 -0
  113. package/build/bosun-app/frontend/client/_app/immutable/entry/start.CfsLMJez.js +0 -1
  114. package/build/bosun-app/frontend/client/_app/immutable/entry/start.CfsLMJez.js.br +0 -0
  115. package/build/bosun-app/frontend/client/_app/immutable/entry/start.CfsLMJez.js.gz +0 -0
  116. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.DTw_tt3s.js.br +0 -0
  117. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.DTw_tt3s.js.gz +0 -0
  118. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.llCYq9Hg.js.br +0 -0
  119. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.llCYq9Hg.js.gz +0 -0
  120. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.D9R5gFET.js.br +0 -0
  121. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.D9R5gFET.js.gz +0 -0
  122. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.BJPfWzEW.js.br +0 -0
  123. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.BJPfWzEW.js.gz +0 -0
  124. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.vMqDwRaL.js.br +0 -0
  125. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.vMqDwRaL.js.gz +0 -0
  126. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.DqYksi1m.js.br +0 -0
  127. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.DY4cCysm.js.br +0 -0
  128. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.DY4cCysm.js.gz +0 -0
  129. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.CT5azNVy.js.br +0 -0
  130. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.CT5azNVy.js.gz +0 -0
  131. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.D3K2hLe5.js.br +0 -0
  132. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.D3K2hLe5.js.gz +0 -0
  133. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.C50_01kw.js.br +0 -0
  134. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.C50_01kw.js.gz +0 -0
  135. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.BDWagOdA.js.br +0 -0
  136. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.BDWagOdA.js.gz +0 -0
  137. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.DjkNtG73.js.br +0 -0
  138. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.DjkNtG73.js.gz +0 -0
@@ -12,6 +12,7 @@ export interface IncomingMessageOptions<TMeta> {
12
12
  messageSeconds?: number;
13
13
  webchatSeconds?: number;
14
14
  timeLimitSeconds?: number;
15
+ staleGraceSeconds?: number;
15
16
  };
16
17
  }
17
18
  export declare function createIncomingMessageHandler<TMeta>(options: IncomingMessageOptions<TMeta>): (event: Event) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"incoming-message.d.ts","sourceRoot":"","sources":["../../src/text-agent-handlers/incoming-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,KAAK,EAAE,aAAa,EAAY,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAa9F,MAAM,WAAW,sBAAsB,CAAC,KAAK;IACzC,QAAQ,EAAE,aAAa,CAAA;IACvB,SAAS,EAAE,aAAa,CAAA;IAExB,SAAS,EAAE,SAAS,CAAA;IAEpB,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;IACjC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3F;AAOD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,IAmI1C,OAAO,KAAK,KAAG,OAAO,CAAC,IAAI,CAAC,CAW3E"}
1
+ {"version":3,"file":"incoming-message.d.ts","sourceRoot":"","sources":["../../src/text-agent-handlers/incoming-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,KAAK,EAAE,aAAa,EAAY,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAc9F,MAAM,WAAW,sBAAsB,CAAC,KAAK;IACzC,QAAQ,EAAE,aAAa,CAAA;IACvB,SAAS,EAAE,aAAa,CAAA;IAExB,SAAS,EAAE,SAAS,CAAA;IAEpB,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;IACjC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE;QACL,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QAEzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAC7B,CAAA;CACJ;AAOD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,IA2J1C,OAAO,KAAK,KAAG,OAAO,CAAC,IAAI,CAAC,CAW3E"}
@@ -2,6 +2,7 @@ import { cacheTextAgents } from './ports';
2
2
  const DEFAULT_MESSAGE_DELAY_SECONDS = 60;
3
3
  const DEFAULT_WEBCHAT_DELAY_SECONDS = 30;
4
4
  const DEFAULT_TIME_LIMIT_SECONDS = 14 * 60;
5
+ const DEFAULT_STALE_GRACE_SECONDS = 30;
5
6
  const addSeconds = (date, seconds) => new Date(date.getTime() + seconds * 1000);
6
7
  const isAfter = (date, dateToCompare) => date.getTime() > dateToCompare.getTime();
7
8
  const differenceInMilliseconds = (later, earlier) => later.getTime() - earlier.getTime();
@@ -12,6 +13,7 @@ export function createIncomingMessageHandler(options) {
12
13
  const messageDelaySeconds = delays.messageSeconds ?? DEFAULT_MESSAGE_DELAY_SECONDS;
13
14
  const webchatDelaySeconds = delays.webchatSeconds ?? DEFAULT_WEBCHAT_DELAY_SECONDS;
14
15
  const timeLimitSeconds = delays.timeLimitSeconds ?? DEFAULT_TIME_LIMIT_SECONDS;
16
+ const staleGraceSeconds = delays.staleGraceSeconds ?? DEFAULT_STALE_GRACE_SECONDS;
15
17
  async function getAgent(conversationId) {
16
18
  const agentRecord = await registry.getAgent(conversationId);
17
19
  if (!agentRecord) {
@@ -56,12 +58,29 @@ export function createIncomingMessageHandler(options) {
56
58
  successfullyLocked,
57
59
  conversationId: event.conversationId,
58
60
  });
59
- if (!successfullyLocked) {
60
- const newExpiration = addSeconds(currentDate, delaySeconds);
61
- await chatLocks.updateLockExpiration(event.conversationId, newExpiration);
61
+ if (successfullyLocked || (await takeOverStaleLock(newLock))) {
62
+ await handleMessageOnLockRelease(event, newLock);
62
63
  return;
63
64
  }
64
- await handleMessageOnLockRelease(event, newLock);
65
+ const newExpiration = addSeconds(currentDate, delaySeconds);
66
+ await chatLocks.updateLockExpiration(event.conversationId, newExpiration);
67
+ }
68
+ async function takeOverStaleLock(newLock) {
69
+ const current = await chatLocks.getChatLock(newLock.conversationId);
70
+ if (!current) {
71
+ return false;
72
+ }
73
+ const staleBefore = addSeconds(newLock.createdAt, -staleGraceSeconds);
74
+ if (!isAfter(staleBefore, current.expiresAt)) {
75
+ return false;
76
+ }
77
+ const takenOver = await chatLocks.takeOverLock(newLock, current);
78
+ logger.debug('incoming-message, stale chat lock takeover', {
79
+ takenOver,
80
+ conversationId: newLock.conversationId,
81
+ staleExpiresAt: current.expiresAt,
82
+ });
83
+ return takenOver;
65
84
  }
66
85
  async function handleMessageOnLockRelease(event, chatLock) {
67
86
  logger.debug('incoming-message.handleMessageOnLockRelease, handling message', {
@@ -18,6 +18,7 @@ export interface ChatLock {
18
18
  export interface ChatLockStore {
19
19
  getChatLock(conversationId: string): Promise<ChatLock | null>;
20
20
  lockChat(lock: ChatLock): Promise<boolean>;
21
+ takeOverLock(lock: ChatLock, current: ChatLock): Promise<boolean>;
21
22
  updateLockExpiration(conversationId: string, expiresAt: Date): Promise<unknown>;
22
23
  releaseLock(conversationId: string): Promise<unknown>;
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/text-agent-handlers/ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAGtC,MAAM,WAAW,WAAW;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAClB;AAGD,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IAC7D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE;AAGD,MAAM,WAAW,QAAQ;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IAE7D,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/E,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACxD;AAGD,MAAM,WAAW,SAAU,SAAQ,SAAS;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC5C;AAGD,MAAM,MAAM,YAAY,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAGhF,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAW7F;AAGD,MAAM,MAAM,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAElE,wBAAgB,eAAe,CAC3B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,eAAe,CAEjB"}
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/text-agent-handlers/ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAGtC,MAAM,WAAW,WAAW;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAClB;AAGD,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IAC7D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE;AAGD,MAAM,WAAW,QAAQ;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IAE7D,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE1C,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACjE,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/E,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACxD;AAGD,MAAM,WAAW,SAAU,SAAQ,SAAS;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC5C;AAGD,MAAM,MAAM,YAAY,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAGhF,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAW7F;AAGD,MAAM,MAAM,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAElE,wBAAgB,eAAe,CAC3B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,eAAe,CAEjB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@recombine-ai/platform",
3
3
  "type": "module",
4
- "version": "0.5.0",
4
+ "version": "0.6.0",
5
5
  "description": "The Recombine platform: engine, telescope, dockyard, call control, the voice agent API, and the Bosun bindings in one package",
6
6
  "license": "EULA",
7
7
  "author": "recombine.ai",
@@ -1,3 +0,0 @@
1
- 1@deN?��)BG�fg���g�CDe��_�ēكF���j�4���'���z����W4���T���c�Q��/2�{�^K�>�~י`�!�q7H��:�
2
- ��.�8�qI c��I�5��
3
- �?2�dԇ��d`��5����2|�a�}
@@ -1 +0,0 @@
1
- import{a as r}from"../chunks/BwC8XjMu.js";import{y as t}from"../chunks/dqHFzkrz.js";export{t as load_css,r as start};