@sentry/junior 0.136.1 → 0.138.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 (103) hide show
  1. package/dist/{agent-hooks-2KDSPPO4.js → agent-hooks-SCR74Q3E.js} +11 -9
  2. package/dist/api/conversations/projection.d.ts +1 -0
  3. package/dist/api/conversations/stats.d.ts +1 -0
  4. package/dist/api/schema/conversation.d.ts +2 -0
  5. package/dist/api/schema.js +1 -1
  6. package/dist/api.js +187 -46
  7. package/dist/app.d.ts +8 -1
  8. package/dist/app.js +519 -860
  9. package/dist/{catalog-runtime-WSZQGC4D.js → catalog-runtime-IU3QF4GG.js} +5 -5
  10. package/dist/chat/agent/request.d.ts +32 -2
  11. package/dist/chat/agent-dispatch/heartbeat.d.ts +5 -0
  12. package/dist/chat/agent-dispatch/types.d.ts +1 -1
  13. package/dist/chat/agent-invocations/errors.d.ts +8 -0
  14. package/dist/chat/agent-invocations/spawn.d.ts +12 -0
  15. package/dist/chat/agent-invocations/store.d.ts +44 -0
  16. package/dist/chat/agent-invocations/types.d.ts +449 -0
  17. package/dist/chat/agent-invocations/work.d.ts +31 -0
  18. package/dist/chat/config.d.ts +1 -0
  19. package/dist/chat/configuration/defaults.d.ts +1 -1
  20. package/dist/chat/conversations/sql/store.d.ts +8 -0
  21. package/dist/chat/conversations/store.d.ts +9 -1
  22. package/dist/chat/experimental.d.ts +16 -0
  23. package/dist/chat/pi/client.d.ts +1 -8
  24. package/dist/chat/pi/gateway-auth.d.ts +16 -0
  25. package/dist/chat/runtime/agent-runner.d.ts +2 -1
  26. package/dist/chat/sandbox/docker.d.ts +17 -0
  27. package/dist/chat/services/agent-continue.d.ts +2 -0
  28. package/dist/chat/services/auth-pause.d.ts +0 -1
  29. package/dist/chat/services/mcp-auth-orchestration.d.ts +3 -2
  30. package/dist/chat/services/plugin-auth-orchestration.d.ts +3 -2
  31. package/dist/chat/services/subscribed-reply-router-policy.d.ts +12 -0
  32. package/dist/chat/services/turn-session-routing.d.ts +17 -0
  33. package/dist/chat/slack/message.d.ts +6 -1
  34. package/dist/chat/slack/source-link.d.ts +8 -2
  35. package/dist/chat/slack/team-domain.d.ts +4 -0
  36. package/dist/chat/source.d.ts +5 -5
  37. package/dist/chat/state/turn-session.d.ts +0 -2
  38. package/dist/chat/task-execution/state.d.ts +23 -11
  39. package/dist/chat/task-execution/store.d.ts +20 -11
  40. package/dist/chat/task-execution/worker.d.ts +2 -2
  41. package/dist/chat/tools/runtime/spawn-agent.d.ts +31 -0
  42. package/dist/chat/tools/types.d.ts +2 -0
  43. package/dist/chunk-3Y47VMHV.js +6 -0
  44. package/dist/chunk-5IDFPCON.js +46 -0
  45. package/dist/chunk-5LTJ4ITU.js +1523 -0
  46. package/dist/{chunk-KLBYCSLJ.js → chunk-5MXWHTCK.js} +17 -434
  47. package/dist/{chunk-CZZDCH3Q.js → chunk-A7WCHXZV.js} +206 -78
  48. package/dist/{chunk-4YQ6I6VF.js → chunk-BOLJOV5T.js} +2 -56
  49. package/dist/{chunk-XCZ6COFO.js → chunk-BYW4B4PR.js} +90 -54
  50. package/dist/{chunk-JQRTXJHD.js → chunk-C7ZVPO4Z.js} +2 -1
  51. package/dist/{chunk-MW2QRPGW.js → chunk-DCLLQGS6.js} +119 -50
  52. package/dist/{chunk-CDVCCOMF.js → chunk-E5UYAIKJ.js} +75 -1475
  53. package/dist/{chunk-3SUK3UXX.js → chunk-ELKW5FIB.js} +5 -5
  54. package/dist/chunk-EM225ITJ.js +56 -0
  55. package/dist/{chunk-Y6JNHTRD.js → chunk-FEUNPTGV.js} +34 -70
  56. package/dist/{chunk-TYNMSQKA.js → chunk-FNLBTB4K.js} +1 -1
  57. package/dist/{chunk-TRZSM67C.js → chunk-HCIVH3JS.js} +1 -0
  58. package/dist/chunk-HIWJWWMT.js +668 -0
  59. package/dist/chunk-IUFM5JWV.js +24 -0
  60. package/dist/{chunk-XWPA5KZF.js → chunk-JNNJZURV.js} +1 -1
  61. package/dist/{chunk-6ZK6FZIV.js → chunk-KCBZSJRU.js} +6 -27
  62. package/dist/{chunk-BG3KWWDJ.js → chunk-KDCHVT25.js} +1 -1
  63. package/dist/{chunk-VH6MI4L7.js → chunk-KFRHRSCJ.js} +1 -1
  64. package/dist/chunk-LPVUNO2W.js +320 -0
  65. package/dist/{chunk-G66RYKRS.js → chunk-N7WARMC6.js} +16 -776
  66. package/dist/chunk-PB3CXNVL.js +41 -0
  67. package/dist/chunk-Q6QZTTLS.js +55 -0
  68. package/dist/{chunk-3QNJOHKG.js → chunk-QS527AV5.js} +1 -1
  69. package/dist/chunk-R776HKPK.js +81 -0
  70. package/dist/{chunk-OTJMQYVP.js → chunk-RZIBSCYC.js} +517 -608
  71. package/dist/chunk-SD3OFRWY.js +714 -0
  72. package/dist/{chunk-HIRIWTWD.js → chunk-SIPKWSXK.js} +58 -10
  73. package/dist/chunk-TCS76X5D.js +441 -0
  74. package/dist/{chunk-UX2TNH5D.js → chunk-TDJCLNDH.js} +3 -3
  75. package/dist/{chunk-NVVBEJUB.js → chunk-TUUDXEXU.js} +336 -300
  76. package/dist/{chunk-22Z6MGMK.js → chunk-VPZFVJND.js} +1 -1
  77. package/dist/{chunk-RFDD3Z2I.js → chunk-YU5QUF67.js} +1 -1
  78. package/dist/chunk-ZBSMCXKV.js +710 -0
  79. package/dist/{chunk-FSYXYBWU.js → chunk-ZXNTJJIE.js} +2 -2
  80. package/dist/cli/chat.js +65 -26
  81. package/dist/cli/check.js +7 -7
  82. package/dist/cli/plugins.js +14 -12
  83. package/dist/cli/snapshot-create.js +10 -9
  84. package/dist/cli/upgrade.js +7 -7
  85. package/dist/conversation-work-KATFHLG3.js +56 -0
  86. package/dist/db/schema/agent-invocations.d.ts +544 -0
  87. package/dist/db/schema.d.ts +543 -1
  88. package/dist/{db-Z2NNL2JC.js → db-UO2IWXGA.js} +7 -7
  89. package/dist/experimental-HH6OM6UH.js +13 -0
  90. package/dist/instrumentation.js +4 -4
  91. package/dist/nitro.js +4 -3
  92. package/dist/{oauth-callback-server-PO3M5JMG.js → oauth-callback-server-MAQI43LX.js} +26 -18
  93. package/dist/{runner-QHQYZYJA.js → runner-PIUQEXKE.js} +26 -14
  94. package/dist/{skills-KXMT3DRA.js → skills-4ARJADHQ.js} +6 -6
  95. package/dist/spawn-G2AWPMCT.js +38 -0
  96. package/dist/{validation-Y42ULTT6.js → validation-S3EE3HWL.js} +6 -6
  97. package/dist/version.js +1 -1
  98. package/dist/work-UARRUAW3.js +46 -0
  99. package/dist/worker-DOCIRVD3.js +24 -0
  100. package/migrations/0021_first_warhawk.sql +35 -0
  101. package/migrations/meta/0021_snapshot.json +2176 -0
  102. package/migrations/meta/_journal.json +8 -1
  103. package/package.json +6 -5
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pluginCatalogRuntime
3
- } from "./chunk-3QNJOHKG.js";
3
+ } from "./chunk-QS527AV5.js";
4
4
  import {
5
5
  logWarn
6
- } from "./chunk-XWPA5KZF.js";
6
+ } from "./chunk-JNNJZURV.js";
7
7
  import {
8
8
  skillRoots
9
9
  } from "./chunk-H4HBKISO.js";
package/dist/cli/chat.js CHANGED
@@ -1,39 +1,46 @@
1
1
  import {
2
2
  createAgentRunner,
3
3
  executeAgentRun
4
- } from "../chunk-OTJMQYVP.js";
4
+ } from "../chunk-RZIBSCYC.js";
5
+ import "../chunk-LPVUNO2W.js";
5
6
  import "../chunk-DIB4GX3G.js";
6
- import "../chunk-G66RYKRS.js";
7
- import "../chunk-NVVBEJUB.js";
7
+ import "../chunk-N7WARMC6.js";
8
+ import "../chunk-R776HKPK.js";
9
+ import "../chunk-SD3OFRWY.js";
10
+ import "../chunk-TUUDXEXU.js";
11
+ import "../chunk-3Y47VMHV.js";
8
12
  import "../chunk-EPBBYMNE.js";
9
- import "../chunk-CZZDCH3Q.js";
10
- import "../chunk-UX2TNH5D.js";
11
- import "../chunk-TYNMSQKA.js";
13
+ import "../chunk-5IDFPCON.js";
14
+ import "../chunk-A7WCHXZV.js";
15
+ import "../chunk-TDJCLNDH.js";
16
+ import "../chunk-FNLBTB4K.js";
12
17
  import "../chunk-CDQ4YIZM.js";
13
18
  import "../chunk-PDO5BLNM.js";
14
19
  import "../chunk-UIE3R5XU.js";
15
20
  import {
16
21
  loadAppPluginSet
17
22
  } from "../chunk-Y2CM7HXH.js";
18
- import "../chunk-KLBYCSLJ.js";
19
- import "../chunk-HIRIWTWD.js";
20
- import "../chunk-MW2QRPGW.js";
21
- import "../chunk-4YQ6I6VF.js";
22
- import "../chunk-XCZ6COFO.js";
23
+ import "../chunk-5MXWHTCK.js";
24
+ import "../chunk-TCS76X5D.js";
25
+ import "../chunk-SIPKWSXK.js";
26
+ import "../chunk-DCLLQGS6.js";
27
+ import "../chunk-EM225ITJ.js";
28
+ import "../chunk-BOLJOV5T.js";
29
+ import "../chunk-BYW4B4PR.js";
23
30
  import "../chunk-VFUK3X5B.js";
24
- import "../chunk-22Z6MGMK.js";
25
- import "../chunk-FSYXYBWU.js";
26
- import "../chunk-3QNJOHKG.js";
27
- import "../chunk-VH6MI4L7.js";
31
+ import "../chunk-VPZFVJND.js";
32
+ import "../chunk-ZXNTJJIE.js";
33
+ import "../chunk-QS527AV5.js";
34
+ import "../chunk-KFRHRSCJ.js";
28
35
  import "../chunk-77VDLF3Z.js";
29
36
  import "../chunk-HZF5P5UN.js";
30
37
  import "../chunk-F3B2YJ76.js";
31
- import "../chunk-XWPA5KZF.js";
38
+ import "../chunk-JNNJZURV.js";
32
39
  import "../chunk-6GWA276C.js";
33
40
  import "../chunk-OOUNJNMR.js";
34
41
  import "../chunk-H4HBKISO.js";
35
- import "../chunk-BG3KWWDJ.js";
36
- import "../chunk-JQRTXJHD.js";
42
+ import "../chunk-KDCHVT25.js";
43
+ import "../chunk-C7ZVPO4Z.js";
37
44
  import "../chunk-MLKGABMK.js";
38
45
 
39
46
  // src/cli/chat.ts
@@ -156,10 +163,10 @@ async function configureLocalChatPlugins(pluginSet) {
156
163
  databaseModule
157
164
  ] = await Promise.all([
158
165
  import("../plugins-HW4VWW6G.js"),
159
- import("../agent-hooks-2KDSPPO4.js"),
160
- import("../catalog-runtime-WSZQGC4D.js"),
161
- import("../validation-Y42ULTT6.js"),
162
- import("../db-Z2NNL2JC.js")
166
+ import("../agent-hooks-SCR74Q3E.js"),
167
+ import("../catalog-runtime-IU3QF4GG.js"),
168
+ import("../validation-S3EE3HWL.js"),
169
+ import("../db-UO2IWXGA.js")
163
170
  ]);
164
171
  const resolvedPluginSet = pluginSet === void 0 ? await loadLocalPluginSet() : pluginSet ?? void 0;
165
172
  const plugins = pluginsModule.pluginRuntimeRegistrationsFromPluginSet(resolvedPluginSet);
@@ -223,11 +230,37 @@ function localDevServerUrl() {
223
230
  async function prepareLocalChatRun(io, pluginSet) {
224
231
  defaultStateAdapterForLocalChat();
225
232
  await configureLocalChatPlugins(pluginSet);
226
- const { runLocalAgentTurn } = await import("../runner-QHQYZYJA.js");
227
- const { startLocalOAuthCallbackServer } = await import("../oauth-callback-server-PO3M5JMG.js");
233
+ const { setExperimentalFeatures } = await import("../experimental-HH6OM6UH.js");
234
+ setExperimentalFeatures({ subagents: true });
235
+ const { runLocalAgentTurn } = await import("../runner-PIUQEXKE.js");
236
+ const { startLocalOAuthCallbackServer } = await import("../oauth-callback-server-MAQI43LX.js");
228
237
  const { createLocalOAuthState } = await import("../oauth-relay-3ZU72UGL.js");
229
238
  const { createLocalSandboxEgressSignalTransport } = await import("../sandbox-egress-signals-A5HWIQH4.js");
230
- const agentRunner = createAgentRunner(executeAgentRun);
239
+ const { bindSpawnAgent } = await import("../spawn-G2AWPMCT.js");
240
+ const { createAgentInvocationWorker, routeAgentInvocationWork } = await import("../work-UARRUAW3.js");
241
+ const { createLocalConversationWork } = await import("../conversation-work-KATFHLG3.js");
242
+ const { processConversationWork } = await import("../worker-DOCIRVD3.js");
243
+ let agentRunner;
244
+ const localConversationWork = createLocalConversationWork(async (message) => {
245
+ if (!agentRunner) {
246
+ throw new Error("Local agent runner is not ready");
247
+ }
248
+ const run = routeAgentInvocationWork({
249
+ fallbackWorker: async () => {
250
+ throw new Error("Local child queue received non-invocation work");
251
+ },
252
+ invocationWorker: createAgentInvocationWorker({
253
+ agentRunner
254
+ })
255
+ });
256
+ await processConversationWork(message, {
257
+ queue: localConversationWork.queue,
258
+ run
259
+ });
260
+ });
261
+ agentRunner = createAgentRunner(executeAgentRun, {
262
+ bindSpawnAgent: (request) => bindSpawnAgent(request, { queue: localConversationWork.queue })
263
+ });
231
264
  const oauthCallback = await startLocalOAuthCallbackServer(agentRunner);
232
265
  const deps = {
233
266
  agentRunner,
@@ -257,7 +290,13 @@ ${request.completionText}`
257
290
  }
258
291
  };
259
292
  return {
260
- close: oauthCallback.close,
293
+ close: async () => {
294
+ try {
295
+ await localConversationWork.drain();
296
+ } finally {
297
+ await oauthCallback.close();
298
+ }
299
+ },
261
300
  conversationId: newRunConversationId(),
262
301
  runLocalAgentTurn,
263
302
  deps
package/dist/cli/check.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  parseSkillFile
3
- } from "../chunk-FSYXYBWU.js";
4
- import "../chunk-3QNJOHKG.js";
3
+ } from "../chunk-ZXNTJJIE.js";
4
+ import "../chunk-QS527AV5.js";
5
5
  import {
6
6
  parseInlinePluginManifest,
7
7
  parsePluginManifest
8
- } from "../chunk-VH6MI4L7.js";
8
+ } from "../chunk-KFRHRSCJ.js";
9
9
  import "../chunk-77VDLF3Z.js";
10
10
  import "../chunk-HZF5P5UN.js";
11
11
  import "../chunk-F3B2YJ76.js";
12
- import "../chunk-XWPA5KZF.js";
12
+ import "../chunk-JNNJZURV.js";
13
13
  import "../chunk-6GWA276C.js";
14
14
  import "../chunk-OOUNJNMR.js";
15
15
  import "../chunk-H4HBKISO.js";
@@ -17,8 +17,8 @@ import {
17
17
  JUNIOR_CONVERSATION_WORK_CALLBACK_ROUTE,
18
18
  JUNIOR_HEARTBEAT_ROUTE,
19
19
  LEGACY_JUNIOR_CONVERSATION_WORK_FUNCTION
20
- } from "../chunk-BG3KWWDJ.js";
21
- import "../chunk-JQRTXJHD.js";
20
+ } from "../chunk-KDCHVT25.js";
21
+ import "../chunk-C7ZVPO4Z.js";
22
22
  import "../chunk-MLKGABMK.js";
23
23
 
24
24
  // src/cli/check.ts
@@ -637,7 +637,7 @@ async function validateAppSourceFiles(rootDir, registeredConfigKeys) {
637
637
  for (const keyMatch of block.matchAll(/["']([^"']+)["']\s*:/g)) {
638
638
  const key = keyMatch[1];
639
639
  if (key && !registeredConfigKeys.has(key)) {
640
- errors.push(
640
+ warnings.push(
641
641
  `${sourcePath}: configDefaults key "${key}" is not a registered plugin config key`
642
642
  );
643
643
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  validatePluginEgressCredentialHooks,
3
3
  validatePluginRegistrations
4
- } from "../chunk-RFDD3Z2I.js";
4
+ } from "../chunk-YU5QUF67.js";
5
5
  import {
6
6
  pluginCatalogConfigFromPluginSet,
7
7
  pluginCliRegistrationsFromPluginSet,
@@ -14,28 +14,30 @@ import {
14
14
  createPluginLogger,
15
15
  setPlugins,
16
16
  validatePlugins
17
- } from "../chunk-KLBYCSLJ.js";
17
+ } from "../chunk-5MXWHTCK.js";
18
+ import "../chunk-TCS76X5D.js";
18
19
  import {
19
20
  getDb
20
- } from "../chunk-HIRIWTWD.js";
21
- import "../chunk-MW2QRPGW.js";
22
- import "../chunk-4YQ6I6VF.js";
23
- import "../chunk-XCZ6COFO.js";
21
+ } from "../chunk-SIPKWSXK.js";
22
+ import "../chunk-DCLLQGS6.js";
23
+ import "../chunk-EM225ITJ.js";
24
+ import "../chunk-BOLJOV5T.js";
25
+ import "../chunk-BYW4B4PR.js";
24
26
  import "../chunk-VFUK3X5B.js";
25
- import "../chunk-22Z6MGMK.js";
27
+ import "../chunk-VPZFVJND.js";
26
28
  import {
27
29
  pluginCatalogRuntime
28
- } from "../chunk-3QNJOHKG.js";
29
- import "../chunk-VH6MI4L7.js";
30
+ } from "../chunk-QS527AV5.js";
31
+ import "../chunk-KFRHRSCJ.js";
30
32
  import "../chunk-77VDLF3Z.js";
31
33
  import "../chunk-HZF5P5UN.js";
32
34
  import "../chunk-F3B2YJ76.js";
33
- import "../chunk-XWPA5KZF.js";
35
+ import "../chunk-JNNJZURV.js";
34
36
  import "../chunk-6GWA276C.js";
35
37
  import "../chunk-OOUNJNMR.js";
36
38
  import "../chunk-H4HBKISO.js";
37
- import "../chunk-BG3KWWDJ.js";
38
- import "../chunk-JQRTXJHD.js";
39
+ import "../chunk-KDCHVT25.js";
40
+ import "../chunk-C7ZVPO4Z.js";
39
41
  import "../chunk-MLKGABMK.js";
40
42
 
41
43
  // src/cli/plugins.ts
@@ -1,25 +1,26 @@
1
1
  import {
2
2
  create,
3
3
  resolve
4
- } from "../chunk-CZZDCH3Q.js";
4
+ } from "../chunk-A7WCHXZV.js";
5
+ import "../chunk-EM225ITJ.js";
5
6
  import {
6
7
  disconnectStateAdapter
7
- } from "../chunk-4YQ6I6VF.js";
8
- import "../chunk-XCZ6COFO.js";
9
- import "../chunk-22Z6MGMK.js";
8
+ } from "../chunk-BOLJOV5T.js";
9
+ import "../chunk-BYW4B4PR.js";
10
+ import "../chunk-VPZFVJND.js";
10
11
  import {
11
12
  pluginCatalogRuntime
12
- } from "../chunk-3QNJOHKG.js";
13
- import "../chunk-VH6MI4L7.js";
13
+ } from "../chunk-QS527AV5.js";
14
+ import "../chunk-KFRHRSCJ.js";
14
15
  import "../chunk-77VDLF3Z.js";
15
16
  import "../chunk-HZF5P5UN.js";
16
17
  import "../chunk-F3B2YJ76.js";
17
- import "../chunk-XWPA5KZF.js";
18
+ import "../chunk-JNNJZURV.js";
18
19
  import "../chunk-6GWA276C.js";
19
20
  import "../chunk-OOUNJNMR.js";
20
21
  import "../chunk-H4HBKISO.js";
21
- import "../chunk-BG3KWWDJ.js";
22
- import "../chunk-JQRTXJHD.js";
22
+ import "../chunk-KDCHVT25.js";
23
+ import "../chunk-C7ZVPO4Z.js";
23
24
  import "../chunk-MLKGABMK.js";
24
25
 
25
26
  // src/cli/snapshot-create.ts
@@ -8,24 +8,24 @@ import {
8
8
  } from "../chunk-Y2CM7HXH.js";
9
9
  import {
10
10
  createJuniorSqlExecutor
11
- } from "../chunk-MW2QRPGW.js";
11
+ } from "../chunk-DCLLQGS6.js";
12
12
  import {
13
13
  getChatConfig
14
- } from "../chunk-XCZ6COFO.js";
14
+ } from "../chunk-BYW4B4PR.js";
15
15
  import "../chunk-VFUK3X5B.js";
16
- import "../chunk-22Z6MGMK.js";
16
+ import "../chunk-VPZFVJND.js";
17
17
  import {
18
18
  createPluginCatalogRuntime
19
- } from "../chunk-VH6MI4L7.js";
19
+ } from "../chunk-KFRHRSCJ.js";
20
20
  import "../chunk-77VDLF3Z.js";
21
21
  import "../chunk-HZF5P5UN.js";
22
22
  import "../chunk-F3B2YJ76.js";
23
- import "../chunk-XWPA5KZF.js";
23
+ import "../chunk-JNNJZURV.js";
24
24
  import "../chunk-6GWA276C.js";
25
25
  import "../chunk-OOUNJNMR.js";
26
26
  import "../chunk-H4HBKISO.js";
27
- import "../chunk-BG3KWWDJ.js";
28
- import "../chunk-JQRTXJHD.js";
27
+ import "../chunk-KDCHVT25.js";
28
+ import "../chunk-C7ZVPO4Z.js";
29
29
  import "../chunk-MLKGABMK.js";
30
30
 
31
31
  // src/chat/conversations/sql/migrations.ts
@@ -0,0 +1,56 @@
1
+ import "./chunk-MLKGABMK.js";
2
+
3
+ // src/chat/local/conversation-work.ts
4
+ function createLocalConversationWork(processMessage) {
5
+ const acceptedWakeIds = /* @__PURE__ */ new Map();
6
+ const pending = /* @__PURE__ */ new Set();
7
+ let firstError;
8
+ let nextWakeId = 1;
9
+ function schedule(message, options) {
10
+ const delayMs = Math.max(0, options?.delayMs ?? 0);
11
+ let work;
12
+ work = (async () => {
13
+ await new Promise((resolve) => {
14
+ setTimeout(resolve, delayMs);
15
+ });
16
+ await processMessage(message);
17
+ })().catch((error) => {
18
+ firstError ??= error;
19
+ }).finally(() => {
20
+ pending.delete(work);
21
+ });
22
+ pending.add(work);
23
+ }
24
+ const queue = {
25
+ async send(message, options) {
26
+ const idempotencyKey = options?.idempotencyKey;
27
+ const acceptedWakeId = idempotencyKey ? acceptedWakeIds.get(idempotencyKey) : void 0;
28
+ if (acceptedWakeId) {
29
+ return { messageId: acceptedWakeId };
30
+ }
31
+ const messageId = `local-conversation-work:${nextWakeId}`;
32
+ nextWakeId += 1;
33
+ if (idempotencyKey) {
34
+ acceptedWakeIds.set(idempotencyKey, messageId);
35
+ }
36
+ schedule(message, options);
37
+ return { messageId };
38
+ }
39
+ };
40
+ return {
41
+ queue,
42
+ async drain() {
43
+ while (pending.size > 0) {
44
+ await Promise.all(pending);
45
+ }
46
+ if (firstError !== void 0) {
47
+ const error = firstError;
48
+ firstError = void 0;
49
+ throw error;
50
+ }
51
+ }
52
+ };
53
+ }
54
+ export {
55
+ createLocalConversationWork
56
+ };