@lota-sdk/core 0.4.9 → 0.4.11
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.
- package/package.json +2 -2
- package/src/ai/embedding-cache.ts +3 -1
- package/src/ai-gateway/ai-gateway.ts +164 -82
- package/src/ai-gateway/index.ts +16 -1
- package/src/config/agent-defaults.ts +4 -107
- package/src/config/agent-types.ts +1 -1
- package/src/config/background-processing.ts +1 -1
- package/src/config/index.ts +0 -1
- package/src/config/logger.ts +22 -25
- package/src/config/thread-defaults.ts +1 -10
- package/src/create-runtime.ts +145 -670
- package/src/db/base.service.ts +30 -38
- package/src/db/memory-query-builder.ts +2 -1
- package/src/db/memory-store.ts +29 -20
- package/src/db/memory.ts +188 -195
- package/src/db/service-normalization.ts +97 -64
- package/src/db/service.ts +496 -384
- package/src/db/startup.ts +30 -19
- package/src/effect/helpers.ts +30 -5
- package/src/effect/index.ts +7 -7
- package/src/effect/layers.ts +75 -72
- package/src/effect/services.ts +15 -11
- package/src/embeddings/provider.ts +65 -71
- package/src/index.ts +13 -12
- package/src/queues/autonomous-job.queue.ts +177 -143
- package/src/queues/context-compaction.queue.ts +41 -39
- package/src/queues/delayed-node-promotion.queue.ts +61 -42
- package/src/queues/document-processor.queue.ts +5 -3
- package/src/queues/index.ts +1 -0
- package/src/queues/memory-consolidation.queue.ts +79 -53
- package/src/queues/organization-learning.queue.ts +70 -33
- package/src/queues/plan-agent-heartbeat.queue.ts +111 -83
- package/src/queues/plan-scheduler.queue.ts +101 -97
- package/src/queues/post-chat-memory.queue.ts +56 -46
- package/src/queues/queue-factory.ts +146 -69
- package/src/queues/queues.service.ts +61 -0
- package/src/queues/title-generation.queue.ts +44 -44
- package/src/redis/connection.ts +181 -164
- package/src/redis/org-memory-lock.ts +24 -9
- package/src/redis/redis-lease-lock.ts +8 -1
- package/src/redis/stream-context.ts +17 -9
- package/src/runtime/agent-identity-overrides.ts +7 -3
- package/src/runtime/agent-runtime-policy.ts +10 -5
- package/src/runtime/agent-stream-helpers.ts +24 -15
- package/src/runtime/chat-run-orchestration.ts +1 -1
- package/src/runtime/context-compaction/context-compaction-runtime.ts +28 -32
- package/src/runtime/context-compaction/context-compaction.ts +131 -85
- package/src/runtime/domain-layer.ts +203 -0
- package/src/runtime/execution-plan-visibility.ts +5 -2
- package/src/runtime/graph-designer.ts +0 -14
- package/src/runtime/helper-model.ts +8 -4
- package/src/runtime/index.ts +1 -1
- package/src/runtime/indexed-repositories-policy.ts +2 -6
- package/src/runtime/memory/memory-block.ts +19 -9
- package/src/runtime/memory/memory-pipeline.ts +53 -66
- package/src/runtime/memory/memory-scope.ts +33 -29
- package/src/runtime/plugin-resolution.ts +58 -62
- package/src/runtime/post-turn-side-effects.ts +139 -161
- package/src/runtime/retrieval-adapters.ts +4 -4
- package/src/runtime/runtime-config.ts +3 -9
- package/src/runtime/runtime-extensions.ts +0 -43
- package/src/runtime/runtime-lifecycle.ts +124 -0
- package/src/runtime/runtime-services.ts +455 -0
- package/src/runtime/runtime-worker-registry.ts +113 -30
- package/src/runtime/social-chat/social-chat-agent-runner.ts +13 -8
- package/src/runtime/social-chat/social-chat-history.ts +24 -13
- package/src/runtime/social-chat/social-chat.ts +420 -369
- package/src/runtime/team-consultation/team-consultation-orchestrator.ts +64 -57
- package/src/runtime/team-consultation/team-consultation-prompts.ts +11 -6
- package/src/runtime/thread-chat-helpers.ts +18 -9
- package/src/runtime/thread-turn-context.ts +28 -74
- package/src/runtime/turn-lifecycle.ts +6 -14
- package/src/services/agent-activity.service.ts +169 -176
- package/src/services/agent-executor.service.ts +207 -196
- package/src/services/artifact.service.ts +10 -5
- package/src/services/attachment.service.ts +16 -48
- package/src/services/autonomous-job.service.ts +81 -87
- package/src/services/background-work.service.ts +54 -0
- package/src/services/chat-run-registry.service.ts +3 -1
- package/src/services/context-compaction.service.ts +8 -10
- package/src/services/document-chunk.service.ts +8 -17
- package/src/services/execution-plan/execution-plan-graph.ts +122 -109
- package/src/services/execution-plan/execution-plan-schedule.ts +1 -15
- package/src/services/execution-plan/execution-plan.service.ts +68 -51
- package/src/services/feedback-loop.service.ts +1 -1
- package/src/services/global-orchestrator.service.ts +49 -15
- package/src/services/graph-full-routing.ts +49 -37
- package/src/services/index.ts +1 -0
- package/src/services/institutional-memory.service.ts +8 -17
- package/src/services/learned-skill.service.ts +38 -35
- package/src/services/memory/memory-conversation.ts +10 -5
- package/src/services/memory/memory-errors.ts +27 -0
- package/src/services/memory/memory-org-memory.ts +14 -3
- package/src/services/memory/memory-preseeded.ts +10 -4
- package/src/services/memory/memory-utils.ts +2 -1
- package/src/services/memory/memory.service.ts +37 -52
- package/src/services/memory/rerank.service.ts +3 -11
- package/src/services/monitoring-window.service.ts +1 -1
- package/src/services/mutating-approval.service.ts +1 -1
- package/src/services/node-workspace.service.ts +2 -2
- package/src/services/notification.service.ts +16 -4
- package/src/services/organization-member.service.ts +1 -1
- package/src/services/organization.service.ts +34 -51
- package/src/services/ownership-dispatcher.service.ts +148 -95
- package/src/services/plan/plan-agent-heartbeat.service.ts +30 -16
- package/src/services/plan/plan-agent-query.service.ts +13 -9
- package/src/services/plan/plan-approval.service.ts +52 -48
- package/src/services/plan/plan-artifact.service.ts +2 -2
- package/src/services/plan/plan-builder.service.ts +2 -2
- package/src/services/plan/plan-checkpoint.service.ts +1 -1
- package/src/services/plan/plan-compiler.service.ts +1 -1
- package/src/services/plan/plan-completion-side-effects.ts +99 -113
- package/src/services/plan/plan-coordination.service.ts +1 -1
- package/src/services/plan/plan-cycle.service.ts +171 -202
- package/src/services/plan/plan-deadline.service.ts +304 -307
- package/src/services/plan/plan-event-delivery.service.ts +84 -72
- package/src/services/plan/plan-executor-context.ts +2 -0
- package/src/services/plan/plan-executor-graph.ts +375 -353
- package/src/services/plan/plan-executor-helpers.ts +60 -75
- package/src/services/plan/plan-executor.service.ts +494 -489
- package/src/services/plan/plan-run.service.ts +12 -19
- package/src/services/plan/plan-scheduler.service.ts +89 -82
- package/src/services/plan/plan-template.service.ts +1 -1
- package/src/services/plan/plan-transaction-events.ts +8 -5
- package/src/services/plan/plan-validator.service.ts +1 -1
- package/src/services/plan/plan-workspace.service.ts +17 -11
- package/src/services/plugin-executor.service.ts +26 -21
- package/src/services/quality-metrics.service.ts +1 -1
- package/src/services/queue-job.service.ts +8 -17
- package/src/services/recent-activity-title.service.ts +22 -10
- package/src/services/recent-activity.service.ts +1 -1
- package/src/services/skill-resolver.service.ts +1 -1
- package/src/services/social-chat-history.service.ts +37 -20
- package/src/services/system-executor.service.ts +25 -20
- package/src/services/thread/thread-bootstrap.ts +37 -19
- package/src/services/thread/thread-listing.ts +2 -1
- package/src/services/thread/thread-memory-block.ts +18 -5
- package/src/services/thread/thread-message.service.ts +30 -13
- package/src/services/thread/thread-title.service.ts +1 -1
- package/src/services/thread/thread-turn-execution.ts +87 -83
- package/src/services/thread/thread-turn-preparation.service.ts +65 -40
- package/src/services/thread/thread-turn-streaming.ts +32 -36
- package/src/services/thread/thread-turn.ts +43 -29
- package/src/services/thread/thread.service.ts +32 -8
- package/src/services/user.service.ts +1 -1
- package/src/services/write-intent-validator.service.ts +1 -1
- package/src/storage/attachment-storage.service.ts +7 -4
- package/src/storage/generated-document-storage.service.ts +1 -1
- package/src/system-agents/context-compaction.agent.ts +1 -1
- package/src/system-agents/helper-agent-options.ts +1 -1
- package/src/system-agents/memory-reranker.agent.ts +1 -1
- package/src/system-agents/memory.agent.ts +1 -1
- package/src/system-agents/recent-activity-title-refiner.agent.ts +9 -6
- package/src/system-agents/regular-chat-memory-digest.agent.ts +1 -1
- package/src/system-agents/skill-extractor.agent.ts +1 -1
- package/src/system-agents/skill-manager.agent.ts +1 -1
- package/src/system-agents/thread-router.agent.ts +23 -20
- package/src/system-agents/title-generator.agent.ts +1 -1
- package/src/tools/execution-plan.tool.ts +36 -20
- package/src/tools/fetch-webpage.tool.ts +30 -22
- package/src/tools/firecrawl-client.ts +1 -6
- package/src/tools/plan-approval.tool.ts +9 -1
- package/src/tools/remember-memory.tool.ts +3 -6
- package/src/tools/research-topic.tool.ts +12 -3
- package/src/tools/search-web.tool.ts +26 -18
- package/src/tools/search.tool.ts +4 -5
- package/src/tools/team-think.tool.ts +139 -121
- package/src/utils/async.ts +15 -6
- package/src/utils/errors.ts +27 -15
- package/src/workers/bootstrap.ts +34 -58
- package/src/workers/memory-consolidation.worker.ts +4 -1
- package/src/workers/organization-learning.worker.ts +16 -3
- package/src/workers/regular-chat-memory-digest.helpers.ts +3 -4
- package/src/workers/regular-chat-memory-digest.runner.ts +46 -29
- package/src/workers/skill-extraction.runner.ts +13 -15
- package/src/workers/worker-utils.ts +14 -8
- package/src/config/search.ts +0 -3
- package/src/effect/awaitable-effect.ts +0 -87
- package/src/effect/runtime-ref.ts +0 -25
- package/src/effect/runtime.ts +0 -31
- package/src/redis/runtime-connection.ts +0 -10
- package/src/runtime/agent-types.ts +0 -1
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import type { PlanEventRecord } from '@lota-sdk/shared'
|
|
2
2
|
import { Context, Schema, Effect, Layer } from 'effect'
|
|
3
3
|
|
|
4
|
+
import type { ResolvedAgentConfig } from '../../config/agent-defaults'
|
|
4
5
|
import { ensureRecordId, recordIdToString } from '../../db/record-id'
|
|
5
6
|
import type { SurrealDBService } from '../../db/service'
|
|
6
7
|
import { TABLES } from '../../db/tables'
|
|
7
|
-
import {
|
|
8
|
-
|
|
8
|
+
import {
|
|
9
|
+
AgentConfigServiceTag,
|
|
10
|
+
DatabaseServiceTag,
|
|
11
|
+
RedisServiceTag,
|
|
12
|
+
RuntimeAdaptersServiceTag,
|
|
13
|
+
} from '../../effect/services'
|
|
14
|
+
import type { PlanAgentHeartbeatQueueRuntime } from '../../queues/plan-agent-heartbeat.queue'
|
|
15
|
+
import { LotaQueuesServiceTag } from '../../queues/queues.service'
|
|
9
16
|
import type { RedisConnectionManager } from '../../redis/connection'
|
|
10
17
|
import { resolvePlanNodeExecutionVisibility } from '../../runtime/execution-plan-visibility'
|
|
11
|
-
import {
|
|
12
|
-
import type { LotaRuntimePlanEventEnvelope } from '../../runtime/runtime-extensions'
|
|
18
|
+
import type { LotaRuntimeAdapters, LotaRuntimePlanEventEnvelope } from '../../runtime/runtime-extensions'
|
|
13
19
|
import { getErrorMessage } from '../../utils/errors'
|
|
14
20
|
import { ThreadSchema } from '../thread/thread.types'
|
|
15
21
|
import type { makeUserService } from '../user.service'
|
|
@@ -28,19 +34,22 @@ function buildDeliveredKey(eventId: string): string {
|
|
|
28
34
|
return `plan-event:delivered:${eventId}`
|
|
29
35
|
}
|
|
30
36
|
|
|
31
|
-
function dispatchAdapterEvent(envelope: LotaRuntimePlanEventEnvelope) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
function dispatchAdapterEvent(runtimeAdapters: LotaRuntimeAdapters, envelope: LotaRuntimePlanEventEnvelope) {
|
|
38
|
+
return Effect.gen(function* () {
|
|
39
|
+
const adapter = runtimeAdapters.planEventAdapter
|
|
40
|
+
if (!adapter) {
|
|
41
|
+
return
|
|
42
|
+
}
|
|
36
43
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
44
|
+
yield* Effect.tryPromise({
|
|
45
|
+
try: () => adapter.onPlanEvent(envelope),
|
|
46
|
+
catch: (error) => new PlanEventDeliveryError({ message: getErrorMessage(error), cause: error }),
|
|
47
|
+
})
|
|
40
48
|
})
|
|
41
49
|
}
|
|
42
50
|
|
|
43
51
|
function resolveWakeTarget(
|
|
52
|
+
agentConfig: ResolvedAgentConfig,
|
|
44
53
|
envelope: LotaRuntimePlanEventEnvelope,
|
|
45
54
|
nodeSpecsById: Map<string, NonNullable<LotaRuntimePlanEventEnvelope['nodeSpec']>>,
|
|
46
55
|
): { nodeId: string; agentId: string; reason: string } | null {
|
|
@@ -55,7 +64,7 @@ function resolveWakeTarget(
|
|
|
55
64
|
return null
|
|
56
65
|
}
|
|
57
66
|
|
|
58
|
-
const isVisible = resolvePlanNodeExecutionVisibility(envelope.spec, effectiveNodeSpec) === 'visible'
|
|
67
|
+
const isVisible = resolvePlanNodeExecutionVisibility(agentConfig, envelope.spec, effectiveNodeSpec) === 'visible'
|
|
59
68
|
if (!isVisible) {
|
|
60
69
|
return null
|
|
61
70
|
}
|
|
@@ -76,22 +85,20 @@ function resolveWakeTarget(
|
|
|
76
85
|
}
|
|
77
86
|
|
|
78
87
|
function enqueueWakeIfNeeded(
|
|
88
|
+
agentConfig: ResolvedAgentConfig,
|
|
79
89
|
envelope: LotaRuntimePlanEventEnvelope,
|
|
80
90
|
nodeSpecsById: Map<string, NonNullable<LotaRuntimePlanEventEnvelope['nodeSpec']>>,
|
|
91
|
+
planAgentHeartbeatQueue: PlanAgentHeartbeatQueueRuntime,
|
|
81
92
|
) {
|
|
82
93
|
return Effect.gen(function* () {
|
|
83
|
-
const wakeTarget = resolveWakeTarget(envelope, nodeSpecsById)
|
|
94
|
+
const wakeTarget = resolveWakeTarget(agentConfig, envelope, nodeSpecsById)
|
|
84
95
|
if (!wakeTarget) {
|
|
85
96
|
return
|
|
86
97
|
}
|
|
87
98
|
|
|
88
|
-
const { enqueuePlanAgentHeartbeatWake } = yield* Effect.tryPromise({
|
|
89
|
-
try: () => import('../../queues/plan-agent-heartbeat.queue'),
|
|
90
|
-
catch: (error) => new PlanEventDeliveryError({ message: getErrorMessage(error), cause: error }),
|
|
91
|
-
})
|
|
92
99
|
yield* Effect.tryPromise({
|
|
93
100
|
try: () =>
|
|
94
|
-
enqueuePlanAgentHeartbeatWake({
|
|
101
|
+
planAgentHeartbeatQueue.enqueuePlanAgentHeartbeatWake({
|
|
95
102
|
organizationId: envelope.organizationId,
|
|
96
103
|
threadId: envelope.threadId,
|
|
97
104
|
runId: envelope.runId,
|
|
@@ -105,14 +112,17 @@ function enqueueWakeIfNeeded(
|
|
|
105
112
|
}
|
|
106
113
|
|
|
107
114
|
interface PlanEventDeliveryDeps {
|
|
115
|
+
agentConfig: ResolvedAgentConfig
|
|
108
116
|
db: SurrealDBService
|
|
109
117
|
redis: RedisConnectionManager
|
|
110
118
|
planRunService: ReturnType<typeof makePlanRunService>
|
|
111
119
|
userService: ReturnType<typeof makeUserService>
|
|
120
|
+
planAgentHeartbeatQueue: PlanAgentHeartbeatQueueRuntime
|
|
121
|
+
runtimeAdapters: LotaRuntimeAdapters
|
|
112
122
|
}
|
|
113
123
|
|
|
114
124
|
export function makePlanEventDeliveryService(deps: PlanEventDeliveryDeps) {
|
|
115
|
-
const { db, redis, planRunService, userService } = deps
|
|
125
|
+
const { agentConfig, db, redis, planRunService, userService, planAgentHeartbeatQueue, runtimeAdapters } = deps
|
|
116
126
|
|
|
117
127
|
function deliverEvent(event: PlanEventRecord) {
|
|
118
128
|
return Effect.gen(function* () {
|
|
@@ -182,80 +192,82 @@ export function makePlanEventDeliveryService(deps: PlanEventDeliveryDeps) {
|
|
|
182
192
|
...(userName ? { userName } : {}),
|
|
183
193
|
}
|
|
184
194
|
|
|
185
|
-
yield* dispatchAdapterEvent(envelope)
|
|
186
|
-
yield* enqueueWakeIfNeeded(envelope, nodeSpecsById)
|
|
195
|
+
yield* dispatchAdapterEvent(runtimeAdapters, envelope)
|
|
196
|
+
yield* enqueueWakeIfNeeded(agentConfig, envelope, nodeSpecsById, planAgentHeartbeatQueue)
|
|
187
197
|
})
|
|
188
198
|
}
|
|
189
199
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
catch: (error) => new PlanEventDeliveryError({ message: getErrorMessage(error), cause: error }),
|
|
197
|
-
})
|
|
198
|
-
if (exists) {
|
|
199
|
-
return
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
yield* deliverEvent(event)
|
|
203
|
-
yield* Effect.tryPromise({
|
|
204
|
-
try: () => redis.getConnection().set(deliveredKey, '1', 'PX', PLAN_EVENT_DELIVERED_TTL_MS),
|
|
205
|
-
catch: (error) => new PlanEventDeliveryError({ message: getErrorMessage(error), cause: error }),
|
|
206
|
-
})
|
|
200
|
+
const dispatchEventEffect = Effect.fn('PlanEventDelivery.dispatchEvent')(function* (event: PlanEventRecord) {
|
|
201
|
+
const eventId = recordIdToString(event.id, TABLES.PLAN_EVENT)
|
|
202
|
+
const deliveredKey = buildDeliveredKey(eventId)
|
|
203
|
+
const exists = yield* Effect.tryPromise({
|
|
204
|
+
try: () => redis.getConnection().exists(deliveredKey),
|
|
205
|
+
catch: (error) => new PlanEventDeliveryError({ message: getErrorMessage(error), cause: error }),
|
|
207
206
|
})
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
return Effect.gen(function* () {
|
|
212
|
-
const run = yield* planRunService
|
|
213
|
-
.getRunById(runId)
|
|
214
|
-
.pipe(Effect.mapError((error) => new PlanEventDeliveryError({ message: getErrorMessage(error), cause: error })))
|
|
215
|
-
const events = yield* planRunService
|
|
216
|
-
.listEvents(run.id, options?.limit ?? 200)
|
|
217
|
-
.pipe(Effect.mapError((error) => new PlanEventDeliveryError({ message: getErrorMessage(error), cause: error })))
|
|
207
|
+
if (exists) {
|
|
208
|
+
return
|
|
209
|
+
}
|
|
218
210
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
211
|
+
yield* deliverEvent(event)
|
|
212
|
+
yield* Effect.tryPromise({
|
|
213
|
+
try: () => redis.getConnection().set(deliveredKey, '1', 'PX', PLAN_EVENT_DELIVERED_TTL_MS),
|
|
214
|
+
catch: (error) => new PlanEventDeliveryError({ message: getErrorMessage(error), cause: error }),
|
|
222
215
|
})
|
|
223
|
-
}
|
|
216
|
+
})
|
|
224
217
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
)
|
|
235
|
-
|
|
218
|
+
const dispatchUndeliveredEventsEffect = Effect.fn('PlanEventDelivery.dispatchUndeliveredEvents')(function* (
|
|
219
|
+
runId: string,
|
|
220
|
+
options?: { limit?: number },
|
|
221
|
+
) {
|
|
222
|
+
const run = yield* planRunService
|
|
223
|
+
.getRunById(runId)
|
|
224
|
+
.pipe(Effect.mapError((error) => new PlanEventDeliveryError({ message: getErrorMessage(error), cause: error })))
|
|
225
|
+
const events = yield* planRunService
|
|
226
|
+
.listEvents(run.id, options?.limit ?? 200)
|
|
227
|
+
.pipe(Effect.mapError((error) => new PlanEventDeliveryError({ message: getErrorMessage(error), cause: error })))
|
|
228
|
+
|
|
229
|
+
for (const event of events) {
|
|
230
|
+
yield* dispatchEventEffect(event)
|
|
231
|
+
}
|
|
232
|
+
})
|
|
236
233
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
234
|
+
const dispatchEventsEffect = Effect.fn('PlanEventDelivery.dispatchEvents')(function* (events: PlanEventRecord[]) {
|
|
235
|
+
const runIds = new Set(events.map((event) => recordIdToString(event.runId, TABLES.PLAN_RUN)))
|
|
236
|
+
for (const runId of runIds) {
|
|
237
|
+
yield* dispatchUndeliveredEventsEffect(runId)
|
|
238
|
+
}
|
|
239
|
+
})
|
|
240
240
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
241
|
+
return {
|
|
242
|
+
dispatchEvents: dispatchEventsEffect,
|
|
243
|
+
dispatchEvent: dispatchEventEffect,
|
|
244
|
+
dispatchUndeliveredEvents: dispatchUndeliveredEventsEffect,
|
|
244
245
|
}
|
|
245
246
|
}
|
|
246
247
|
|
|
247
248
|
export class PlanEventDeliveryServiceTag extends Context.Service<
|
|
248
249
|
PlanEventDeliveryServiceTag,
|
|
249
250
|
ReturnType<typeof makePlanEventDeliveryService>
|
|
250
|
-
>()('PlanEventDeliveryService') {}
|
|
251
|
+
>()('@lota-sdk/core/PlanEventDeliveryService') {}
|
|
251
252
|
|
|
252
253
|
export const PlanEventDeliveryServiceLive = Layer.effect(
|
|
253
254
|
PlanEventDeliveryServiceTag,
|
|
254
255
|
Effect.gen(function* () {
|
|
256
|
+
const agentConfig = yield* AgentConfigServiceTag
|
|
255
257
|
const db = yield* DatabaseServiceTag
|
|
256
258
|
const redis = yield* RedisServiceTag
|
|
257
259
|
const planRunService = yield* PlanRunServiceTag
|
|
258
260
|
const userService = yield* UserServiceTag
|
|
259
|
-
|
|
261
|
+
const queues = yield* LotaQueuesServiceTag
|
|
262
|
+
const runtimeAdapters = yield* RuntimeAdaptersServiceTag
|
|
263
|
+
return makePlanEventDeliveryService({
|
|
264
|
+
agentConfig,
|
|
265
|
+
db,
|
|
266
|
+
redis,
|
|
267
|
+
planRunService,
|
|
268
|
+
userService,
|
|
269
|
+
planAgentHeartbeatQueue: queues.planAgentHeartbeat,
|
|
270
|
+
runtimeAdapters,
|
|
271
|
+
})
|
|
260
272
|
}),
|
|
261
273
|
)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Context } from 'effect'
|
|
2
2
|
|
|
3
3
|
import type { SurrealDBService } from '../../db/service'
|
|
4
|
+
import type { DelayedNodePromotionQueueRuntime } from '../../queues/delayed-node-promotion.queue'
|
|
4
5
|
import type { makeGeneratedDocumentStorageService } from '../../storage/generated-document-storage.service'
|
|
5
6
|
import type { makeArtifactService } from '../artifact.service'
|
|
6
7
|
import type { FeedbackLoopServiceTag } from '../feedback-loop.service'
|
|
@@ -32,4 +33,5 @@ export interface PlanExecutorContext {
|
|
|
32
33
|
planValidatorService: ReturnType<typeof makePlanValidatorService>
|
|
33
34
|
qualityMetricsService: Context.Service.Shape<typeof QualityMetricsServiceTag>
|
|
34
35
|
planCompletionSideEffects: ReturnType<typeof makePlanCompletionSideEffects>
|
|
36
|
+
delayedNodePromotionQueue: DelayedNodePromotionQueueRuntime
|
|
35
37
|
}
|