@lota-sdk/core 0.4.12 → 0.4.14

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 (139) hide show
  1. package/package.json +4 -4
  2. package/src/ai/embedding-cache.ts +17 -11
  3. package/src/ai-gateway/ai-gateway.ts +164 -94
  4. package/src/ai-gateway/index.ts +4 -1
  5. package/src/config/agent-defaults.ts +2 -2
  6. package/src/config/agent-types.ts +1 -1
  7. package/src/create-runtime.ts +259 -200
  8. package/src/db/cursor-pagination.ts +2 -9
  9. package/src/db/memory-store.ts +194 -175
  10. package/src/db/memory.ts +125 -71
  11. package/src/db/schema-fingerprint.ts +5 -4
  12. package/src/db/service-normalization.ts +4 -3
  13. package/src/db/service.ts +3 -2
  14. package/src/db/startup.ts +15 -16
  15. package/src/effect/errors.ts +161 -21
  16. package/src/effect/index.ts +0 -1
  17. package/src/embeddings/provider.ts +15 -7
  18. package/src/queues/autonomous-job.queue.ts +10 -22
  19. package/src/queues/delayed-node-promotion.queue.ts +8 -14
  20. package/src/queues/document-processor.queue.ts +13 -4
  21. package/src/queues/memory-consolidation.queue.ts +26 -14
  22. package/src/queues/plan-agent-heartbeat.queue.ts +10 -9
  23. package/src/queues/plan-scheduler.queue.ts +37 -15
  24. package/src/queues/queue-factory.ts +59 -35
  25. package/src/queues/standalone-worker.ts +3 -2
  26. package/src/redis/connection.ts +10 -3
  27. package/src/redis/org-memory-lock.ts +1 -1
  28. package/src/redis/redis-lease-lock.ts +5 -5
  29. package/src/redis/stream-context.ts +1 -1
  30. package/src/runtime/chat-message.ts +64 -1
  31. package/src/runtime/chat-run-orchestration.ts +33 -20
  32. package/src/runtime/context-compaction/context-compaction-runtime.ts +14 -7
  33. package/src/runtime/context-compaction/context-compaction.ts +78 -66
  34. package/src/runtime/domain-layer.ts +13 -7
  35. package/src/runtime/execution-plan.ts +7 -3
  36. package/src/runtime/live-turn-trace.ts +6 -49
  37. package/src/runtime/memory/memory-block.ts +3 -9
  38. package/src/runtime/memory/memory-scope.ts +3 -1
  39. package/src/runtime/plugin-resolution.ts +2 -1
  40. package/src/runtime/post-turn-side-effects.ts +6 -5
  41. package/src/runtime/retrieval-adapters.ts +8 -20
  42. package/src/runtime/runtime-config.ts +3 -9
  43. package/src/runtime/runtime-extensions.ts +2 -4
  44. package/src/runtime/runtime-lifecycle.ts +56 -16
  45. package/src/runtime/runtime-services.ts +180 -102
  46. package/src/runtime/runtime-worker-registry.ts +3 -1
  47. package/src/runtime/social-chat/social-chat-agent-runner.ts +1 -1
  48. package/src/runtime/social-chat/social-chat-history.ts +21 -18
  49. package/src/runtime/social-chat/social-chat.ts +356 -223
  50. package/src/runtime/specialist-runner.ts +3 -1
  51. package/src/runtime/team-consultation/team-consultation-orchestrator.ts +3 -2
  52. package/src/runtime/thread-turn-context.ts +142 -102
  53. package/src/runtime/turn-lifecycle.ts +15 -46
  54. package/src/services/agent-activity.service.ts +1 -1
  55. package/src/services/agent-executor.service.ts +107 -77
  56. package/src/services/autonomous-job.service.ts +354 -293
  57. package/src/services/background-work.service.ts +3 -3
  58. package/src/services/context-compaction.service.ts +7 -2
  59. package/src/services/document-chunk.service.ts +50 -32
  60. package/src/services/execution-plan/execution-plan-schedule.ts +5 -3
  61. package/src/services/execution-plan/execution-plan.service.ts +162 -179
  62. package/src/services/feedback-loop.service.ts +5 -4
  63. package/src/services/graph-full-routing.ts +37 -36
  64. package/src/services/institutional-memory.service.ts +28 -30
  65. package/src/services/learned-skill.service.ts +107 -72
  66. package/src/services/memory/memory-errors.ts +4 -23
  67. package/src/services/memory/memory-org-memory.ts +10 -5
  68. package/src/services/memory/memory-rerank.ts +18 -6
  69. package/src/services/memory/memory.service.ts +170 -111
  70. package/src/services/memory/rerank.service.ts +29 -20
  71. package/src/services/organization-member.service.ts +1 -1
  72. package/src/services/organization.service.ts +69 -75
  73. package/src/services/ownership-dispatcher.service.ts +40 -39
  74. package/src/services/plan/plan-agent-heartbeat.service.ts +26 -23
  75. package/src/services/plan/plan-agent-query.service.ts +39 -31
  76. package/src/services/plan/plan-completion-side-effects.ts +13 -17
  77. package/src/services/plan/plan-coordination.service.ts +2 -1
  78. package/src/services/plan/plan-cycle.service.ts +6 -5
  79. package/src/services/plan/plan-deadline.service.ts +57 -54
  80. package/src/services/plan/plan-event-delivery.service.ts +5 -4
  81. package/src/services/plan/plan-executor-graph.ts +18 -15
  82. package/src/services/plan/plan-executor.service.ts +235 -262
  83. package/src/services/plan/plan-run.service.ts +169 -93
  84. package/src/services/plan/plan-scheduler.service.ts +192 -202
  85. package/src/services/plan/plan-template.service.ts +1 -1
  86. package/src/services/plan/plan-transaction-events.ts +1 -1
  87. package/src/services/plan/plan-workspace.service.ts +23 -14
  88. package/src/services/plugin-executor.service.ts +5 -9
  89. package/src/services/queue-job.service.ts +117 -59
  90. package/src/services/recent-activity-title.service.ts +13 -12
  91. package/src/services/recent-activity.service.ts +6 -1
  92. package/src/services/social-chat-history.service.ts +29 -25
  93. package/src/services/system-executor.service.ts +5 -9
  94. package/src/services/thread/thread-active-run.ts +2 -2
  95. package/src/services/thread/thread-listing.ts +61 -57
  96. package/src/services/thread/thread-memory-block.ts +73 -48
  97. package/src/services/thread/thread-message.service.ts +76 -65
  98. package/src/services/thread/thread-record-store.ts +8 -8
  99. package/src/services/thread/thread-title.service.ts +10 -4
  100. package/src/services/thread/thread-turn-execution.ts +43 -45
  101. package/src/services/thread/thread-turn-preparation.service.ts +257 -135
  102. package/src/services/thread/thread-turn-streaming.ts +82 -85
  103. package/src/services/thread/thread-turn.ts +8 -8
  104. package/src/services/thread/thread.service.ts +135 -100
  105. package/src/services/user.service.ts +45 -48
  106. package/src/storage/attachment-parser.ts +6 -2
  107. package/src/storage/attachment-storage.service.ts +5 -6
  108. package/src/storage/generated-document-storage.service.ts +1 -1
  109. package/src/system-agents/context-compaction.agent.ts +10 -9
  110. package/src/system-agents/delegated-agent-factory.ts +30 -6
  111. package/src/system-agents/memory-reranker.agent.ts +10 -9
  112. package/src/system-agents/memory.agent.ts +10 -9
  113. package/src/system-agents/recent-activity-title-refiner.agent.ts +13 -15
  114. package/src/system-agents/regular-chat-memory-digest.agent.ts +13 -12
  115. package/src/system-agents/skill-extractor.agent.ts +13 -12
  116. package/src/system-agents/skill-manager.agent.ts +13 -12
  117. package/src/system-agents/thread-router.agent.ts +10 -5
  118. package/src/system-agents/title-generator.agent.ts +13 -12
  119. package/src/tools/fetch-webpage.tool.ts +13 -13
  120. package/src/tools/memory-block.tool.ts +3 -1
  121. package/src/tools/plan-approval.tool.ts +4 -2
  122. package/src/tools/read-file-parts.tool.ts +10 -4
  123. package/src/tools/remember-memory.tool.ts +3 -1
  124. package/src/tools/research-topic.tool.ts +9 -5
  125. package/src/tools/search-web.tool.ts +16 -16
  126. package/src/tools/search.tool.ts +20 -5
  127. package/src/tools/team-think.tool.ts +61 -38
  128. package/src/utils/async.ts +5 -5
  129. package/src/utils/errors.ts +19 -18
  130. package/src/utils/sse-keepalive.ts +28 -25
  131. package/src/workers/bootstrap.ts +75 -11
  132. package/src/workers/memory-consolidation.worker.ts +82 -91
  133. package/src/workers/organization-learning.worker.ts +14 -4
  134. package/src/workers/regular-chat-memory-digest.runner.ts +105 -67
  135. package/src/workers/skill-extraction.runner.ts +97 -61
  136. package/src/workers/utils/repo-structure-extractor.ts +13 -8
  137. package/src/workers/utils/thread-message-query.ts +24 -24
  138. package/src/workers/worker-utils.ts +23 -4
  139. package/src/effect/helpers.ts +0 -123
@@ -12,12 +12,12 @@ import { stepCountIs, tool } from 'ai'
12
12
  import type { ToolSet } from 'ai'
13
13
  import { Context, Schema, Effect, Layer } from 'effect'
14
14
 
15
+ import { RuntimeBridgeTag } from '../ai-gateway/ai-gateway'
15
16
  import type { ResolvedAgentConfig, ResolvedAgentFactoryConfig } from '../config/agent-defaults'
16
17
  import { ensureRecordId } from '../db/record-id'
17
18
  import type { SurrealDBService } from '../db/service'
18
19
  import { TABLES } from '../db/tables'
19
- import { BadRequestError, NotFoundError } from '../effect/errors'
20
- import { makeEffectTryPromiseWithOperation } from '../effect/helpers'
20
+ import { ERROR_TAGS, BadRequestError, NotFoundError } from '../effect/errors'
21
21
  import {
22
22
  AgentConfigServiceTag,
23
23
  AgentFactoryServiceTag,
@@ -111,22 +111,12 @@ function validateOwner(agentConfig: ResolvedAgentConfig, agentId: string, nodeId
111
111
  return []
112
112
  }
113
113
 
114
- class AgentExecutorError extends Schema.TaggedErrorClass<AgentExecutorError>()('AgentExecutorError', {
114
+ class AgentExecutorError extends Schema.TaggedErrorClass<AgentExecutorError>()(ERROR_TAGS.AgentExecutorError, {
115
115
  operation: Schema.String,
116
116
  message: Schema.String,
117
117
  cause: Schema.Defect,
118
118
  }) {}
119
119
 
120
- const tryAgentExecutorPromise = makeEffectTryPromiseWithOperation(
121
- (operation, message, cause) => new AgentExecutorError({ operation, message, cause }),
122
- )
123
- const tryAgentExecutorTask = <A>(
124
- operation: string,
125
- message: string,
126
- task: () => PromiseLike<A>,
127
- ): Effect.Effect<A, AgentExecutorError> =>
128
- Effect.tryPromise({ try: task, catch: (cause) => new AgentExecutorError({ operation, message, cause }) })
129
-
130
120
  function isAgentExecutorOwner(
131
121
  owner: PlanNodeSpec['owner'],
132
122
  ): owner is Extract<PlanNodeSpec['owner'], { executorType: 'agent' }> {
@@ -138,13 +128,14 @@ function buildWriteIntentTool(params: {
138
128
  workspace: ReturnType<ReturnType<typeof makeNodeWorkspaceService>['initialize']>
139
129
  writeIntentValidatorService: ReturnType<typeof makeWriteIntentValidatorService>
140
130
  stageWrite: (intent: WriteIntent) => Effect.Effect<void, BadRequestError>
131
+ runPromise: <A, E>(effect: Effect.Effect<A, E, never>, options?: { signal?: AbortSignal }) => Promise<A>
141
132
  }) {
142
133
  return tool({
143
134
  description:
144
135
  'Write a validated artifact or structured output field. Call this for each deliverable. If validation fails, correct your payload and try again.',
145
136
  inputSchema: WriteIntentSchema,
146
- execute: (intent: WriteIntent) =>
147
- Effect.runPromise(
137
+ execute: (intent: WriteIntent, { abortSignal }: { abortSignal?: AbortSignal } = {}) =>
138
+ params.runPromise(
148
139
  Effect.gen(function* () {
149
140
  const correctionCount = params.workspace.sys.correctionCounts.get(intent.targetPath) ?? 0
150
141
 
@@ -178,6 +169,7 @@ function buildWriteIntentTool(params: {
178
169
  yield* params.stageWrite(intent)
179
170
  return { status: 'accepted', message: `Write to "${intent.targetPath}" validated and staged.` }
180
171
  }),
172
+ abortSignal ? { signal: abortSignal } : undefined,
181
173
  ),
182
174
  })
183
175
  }
@@ -201,9 +193,15 @@ function createExecuteNode(deps: AgentExecutorDeps) {
201
193
  return yield* new BadRequestError({ message: `Agent executor "${agentId}" is not registered.` })
202
194
  }
203
195
 
204
- const thread = yield* tryAgentExecutorPromise('load-thread', 'Failed to load dispatched thread.', () =>
205
- deps.db.findOne(TABLES.THREAD, { id: ensureRecordId(params.context.threadId, TABLES.THREAD) }, ThreadSchema),
206
- ).pipe(Effect.withSpan('AgentExecutor.loadThread'))
196
+ const thread = yield* deps.db
197
+ .findOne(TABLES.THREAD, { id: ensureRecordId(params.context.threadId, TABLES.THREAD) }, ThreadSchema)
198
+ .pipe(
199
+ Effect.mapError(
200
+ (cause) =>
201
+ new AgentExecutorError({ operation: 'load-thread', message: 'Failed to load dispatched thread.', cause }),
202
+ ),
203
+ Effect.withSpan('AgentExecutor.loadThread'),
204
+ )
207
205
  if (!thread) {
208
206
  return yield* new NotFoundError({
209
207
  resource: TABLES.THREAD,
@@ -223,22 +221,34 @@ function createExecuteNode(deps: AgentExecutorDeps) {
223
221
  const userName = params.context.userName ?? 'User'
224
222
  const runtimeAdapters = yield* RuntimeAdaptersServiceTag
225
223
  const { linearInstallation, githubInstallation, indexedRepoContext } = yield* Effect.all({
226
- linearInstallation: tryAgentExecutorTask(
227
- 'get-linear-installation',
228
- `Failed to load Linear installation for org ${params.context.organizationId}.`,
229
- () => getLinearInstallationByOrgId(deps.agentFactoryConfig.pluginRuntime, organizationRef),
230
- ),
231
- githubInstallation: tryAgentExecutorTask(
232
- 'get-github-installation',
233
- `Failed to load GitHub installation for org ${params.context.organizationId}.`,
234
- () =>
224
+ linearInstallation: Effect.tryPromise({
225
+ try: () => getLinearInstallationByOrgId(deps.agentFactoryConfig.pluginRuntime, organizationRef),
226
+ catch: (cause) =>
227
+ new AgentExecutorError({
228
+ operation: 'get-linear-installation',
229
+ message: `Failed to load Linear installation for org ${params.context.organizationId}.`,
230
+ cause,
231
+ }),
232
+ }),
233
+ githubInstallation: Effect.tryPromise({
234
+ try: () =>
235
235
  getGithubInstallationForOrganization(deps.agentFactoryConfig.pluginRuntime, params.context.organizationId),
236
- ),
237
- indexedRepoContext: tryAgentExecutorTask(
238
- 'build-indexed-repositories-context',
239
- `Failed to build indexed repository context for org ${params.context.organizationId}.`,
240
- () => buildIndexedRepositoriesContext(runtimeAdapters, params.context.organizationId),
241
- ),
236
+ catch: (cause) =>
237
+ new AgentExecutorError({
238
+ operation: 'get-github-installation',
239
+ message: `Failed to load GitHub installation for org ${params.context.organizationId}.`,
240
+ cause,
241
+ }),
242
+ }),
243
+ indexedRepoContext: Effect.tryPromise({
244
+ try: () => buildIndexedRepositoriesContext(runtimeAdapters, params.context.organizationId),
245
+ catch: (cause) =>
246
+ new AgentExecutorError({
247
+ operation: 'build-indexed-repositories-context',
248
+ message: `Failed to build indexed repository context for org ${params.context.organizationId}.`,
249
+ cause,
250
+ }),
251
+ }),
242
252
  }).pipe(Effect.withSpan('AgentExecutor.loadInstallations'))
243
253
 
244
254
  const mode = params.executionMode ?? 'linear'
@@ -253,12 +263,12 @@ function createExecuteNode(deps: AgentExecutorDeps) {
253
263
  ]
254
264
 
255
265
  const turnHooks = yield* TurnHooksServiceTag
256
- const agentResolutionValue = yield* tryAgentExecutorPromise(
257
- 'resolve-agent',
258
- `Failed to resolve agent "${agentId}" for dispatched execution.`,
259
- () =>
260
- Promise.resolve(
261
- turnHooks.resolveAgent?.({
266
+ const resolveAgent = turnHooks.resolveAgent
267
+ let agentResolutionValue: unknown = undefined
268
+ if (resolveAgent) {
269
+ agentResolutionValue = yield* Effect.tryPromise({
270
+ try: () =>
271
+ resolveAgent({
262
272
  agentId,
263
273
  mode: dispatchMode,
264
274
  thread,
@@ -272,8 +282,14 @@ function createExecuteNode(deps: AgentExecutorDeps) {
272
282
  additionalInstructionSections: dispatchInstructionSections,
273
283
  context: null,
274
284
  }),
275
- ),
276
- )
285
+ catch: (cause) =>
286
+ new AgentExecutorError({
287
+ operation: 'resolve-agent',
288
+ message: `Failed to resolve agent "${agentId}" for dispatched execution.`,
289
+ cause,
290
+ }),
291
+ })
292
+ }
277
293
  const agentResolution = isRecord(agentResolutionValue) ? agentResolutionValue : null
278
294
  const resolvedAgentId = readOptionalString(agentResolution?.agentId) ?? agentId
279
295
  const runtimeConfig = deps.agentFactoryConfig.getAgentRuntimeConfig({
@@ -290,32 +306,34 @@ function createExecuteNode(deps: AgentExecutorDeps) {
290
306
  })
291
307
 
292
308
  const agentFactoryConfig = deps.agentFactoryConfig
293
- const rawTools = yield* tryAgentExecutorPromise(
294
- 'build-agent-tools',
295
- `Failed to build agent tools for "${resolvedAgentId}".`,
296
- () =>
297
- Promise.resolve(
298
- agentFactoryConfig.buildAgentTools({
299
- agentId: resolvedAgentId,
300
- orgId: organizationRef,
301
- userId: userRef,
302
- userName,
303
- threadId: threadRef,
304
- orgIdString: params.context.organizationId,
305
- threadType: thread.type,
306
- mode: dispatchMode,
307
- linearInstalled: Boolean(linearInstallation),
308
- onboardingActive: false,
309
- githubInstalled: Boolean(githubInstallation),
310
- provideRepoTool: indexedRepoContext.provideRepoTool,
311
- defaultRepoSections: indexedRepoContext.defaultSectionsByAgent[resolvedAgentId],
312
- memoryBlock: '',
313
- onAppendMemoryBlock: () => undefined,
314
- availableUploads: [],
315
- includeExecutionPlanTools: false,
316
- }),
317
- ),
318
- )
309
+ const rawTools = yield* Effect.tryPromise({
310
+ try: () =>
311
+ agentFactoryConfig.buildAgentTools({
312
+ agentId: resolvedAgentId,
313
+ orgId: organizationRef,
314
+ userId: userRef,
315
+ userName,
316
+ threadId: threadRef,
317
+ orgIdString: params.context.organizationId,
318
+ threadType: thread.type,
319
+ mode: dispatchMode,
320
+ linearInstalled: Boolean(linearInstallation),
321
+ onboardingActive: false,
322
+ githubInstalled: Boolean(githubInstallation),
323
+ provideRepoTool: indexedRepoContext.provideRepoTool,
324
+ defaultRepoSections: indexedRepoContext.defaultSectionsByAgent[resolvedAgentId],
325
+ memoryBlock: '',
326
+ onAppendMemoryBlock: () => undefined,
327
+ availableUploads: [],
328
+ includeExecutionPlanTools: false,
329
+ }),
330
+ catch: (cause) =>
331
+ new AgentExecutorError({
332
+ operation: 'build-agent-tools',
333
+ message: `Failed to build agent tools for "${resolvedAgentId}".`,
334
+ cause,
335
+ }),
336
+ })
319
337
  const tools = applyToolPolicy(rawTools, params.nodeSpec)
320
338
 
321
339
  const agentFactory = agentFactoryConfig.createAgent[resolvedAgentId]
@@ -335,11 +353,15 @@ function createExecuteNode(deps: AgentExecutorDeps) {
335
353
  stopWhen: [stepCountIs(maxSteps)],
336
354
  })
337
355
 
338
- const result = yield* tryAgentExecutorPromise(
339
- 'generate-agent-dispatch',
340
- `Agent "${resolvedAgentId}" failed to generate a dispatch result.`,
341
- () => agent.generate({ prompt: buildDispatchPrompt(params.nodeSpec) }),
342
- ).pipe(Effect.withSpan('AgentExecutor.generateLinearDispatch'))
356
+ const result = yield* Effect.tryPromise({
357
+ try: () => agent.generate({ prompt: buildDispatchPrompt(params.nodeSpec) }),
358
+ catch: (cause) =>
359
+ new AgentExecutorError({
360
+ operation: 'generate-agent-dispatch',
361
+ message: `Agent "${resolvedAgentId}" failed to generate a dispatch result.`,
362
+ cause,
363
+ }),
364
+ }).pipe(Effect.withSpan('AgentExecutor.generateLinearDispatch'))
343
365
  const outputCandidate = PlanNodeResultSubmissionSchema.safeParse(result.output)
344
366
  if (outputCandidate.success) {
345
367
  return outputCandidate.data
@@ -365,6 +387,7 @@ function createExecuteNode(deps: AgentExecutorDeps) {
365
387
  workspace,
366
388
  writeIntentValidatorService: deps.writeIntentValidatorService,
367
389
  stageWrite: (intent) => deps.nodeWorkspaceService.stageWrite(workspace, intent, 'validated'),
390
+ runPromise: deps.runPromise,
368
391
  }),
369
392
  }
370
393
  const agent = agentFactory({
@@ -376,11 +399,15 @@ function createExecuteNode(deps: AgentExecutorDeps) {
376
399
  stopWhen: [stepCountIs(maxSteps)],
377
400
  })
378
401
 
379
- yield* tryAgentExecutorPromise(
380
- 'generate-write-intent-dispatch',
381
- `Agent "${resolvedAgentId}" failed to generate a write-intent dispatch result.`,
382
- () => agent.generate({ prompt: buildWriteIntentDispatchPrompt(params.nodeSpec) }),
383
- ).pipe(Effect.withSpan('AgentExecutor.generateWriteIntentDispatch'))
402
+ yield* Effect.tryPromise({
403
+ try: () => agent.generate({ prompt: buildWriteIntentDispatchPrompt(params.nodeSpec) }),
404
+ catch: (cause) =>
405
+ new AgentExecutorError({
406
+ operation: 'generate-write-intent-dispatch',
407
+ message: `Agent "${resolvedAgentId}" failed to generate a write-intent dispatch result.`,
408
+ cause,
409
+ }),
410
+ }).pipe(Effect.withSpan('AgentExecutor.generateWriteIntentDispatch'))
384
411
 
385
412
  const finalResult = yield* deps.nodeWorkspaceService.finalize(workspace)
386
413
 
@@ -411,6 +438,7 @@ interface AgentExecutorDeps {
411
438
  db: SurrealDBService
412
439
  nodeWorkspaceService: ReturnType<typeof makeNodeWorkspaceService>
413
440
  writeIntentValidatorService: ReturnType<typeof makeWriteIntentValidatorService>
441
+ runPromise: <A, E>(effect: Effect.Effect<A, E, never>, options?: { signal?: AbortSignal }) => Promise<A>
414
442
  }
415
443
 
416
444
  export function makeAgentExecutorService(deps: AgentExecutorDeps) {
@@ -433,12 +461,14 @@ export const AgentExecutorServiceLive = Layer.effect(
433
461
  const db = yield* DatabaseServiceTag
434
462
  const nodeWorkspaceService = yield* NodeWorkspaceServiceTag
435
463
  const writeIntentValidatorService = yield* WriteIntentValidatorServiceTag
464
+ const runtimeBridge = yield* RuntimeBridgeTag
436
465
  return makeAgentExecutorService({
437
466
  agentConfig,
438
467
  agentFactoryConfig,
439
468
  db,
440
469
  nodeWorkspaceService,
441
470
  writeIntentValidatorService,
471
+ runPromise: runtimeBridge.runPromise,
442
472
  })
443
473
  }),
444
474
  )