@lota-sdk/core 0.4.9 → 0.4.10
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 +38 -10
- package/src/config/agent-defaults.ts +22 -9
- 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 +20 -7
- package/src/config/thread-defaults.ts +12 -4
- package/src/create-runtime.ts +69 -656
- 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 +706 -538
- package/src/db/startup.ts +30 -19
- package/src/effect/awaitable-effect.ts +46 -37
- package/src/effect/helpers.ts +30 -5
- package/src/effect/index.ts +7 -5
- package/src/effect/layers.ts +82 -72
- package/src/effect/runtime.ts +18 -3
- package/src/effect/services.ts +15 -11
- package/src/embeddings/provider.ts +65 -66
- package/src/index.ts +13 -11
- package/src/queues/autonomous-job.queue.ts +59 -71
- package/src/queues/context-compaction.queue.ts +6 -18
- package/src/queues/delayed-node-promotion.queue.ts +9 -17
- package/src/queues/organization-learning.queue.ts +17 -4
- package/src/queues/plan-agent-heartbeat.queue.ts +23 -20
- package/src/queues/plan-scheduler.queue.ts +6 -18
- package/src/queues/post-chat-memory.queue.ts +6 -18
- package/src/queues/queue-factory.ts +128 -50
- package/src/queues/title-generation.queue.ts +6 -17
- package/src/redis/connection.ts +181 -164
- package/src/redis/runtime-connection.ts +13 -3
- package/src/redis/stream-context.ts +17 -9
- package/src/runtime/agent-runtime-policy.ts +1 -1
- package/src/runtime/agent-stream-helpers.ts +15 -11
- package/src/runtime/chat-run-orchestration.ts +1 -1
- package/src/runtime/context-compaction/context-compaction-runtime.ts +1 -1
- package/src/runtime/context-compaction/context-compaction.ts +126 -82
- package/src/runtime/domain-layer.ts +192 -0
- package/src/runtime/graph-designer.ts +15 -7
- package/src/runtime/helper-model.ts +8 -4
- package/src/runtime/index.ts +0 -1
- 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 +33 -54
- package/src/runtime/post-turn-side-effects.ts +6 -26
- package/src/runtime/retrieval-adapters.ts +4 -4
- package/src/runtime/runtime-accessors.ts +92 -0
- package/src/runtime/runtime-config.ts +3 -3
- package/src/runtime/runtime-extensions.ts +20 -9
- package/src/runtime/runtime-lifecycle.ts +124 -0
- package/src/runtime/runtime-services.ts +386 -0
- package/src/runtime/runtime-token.ts +47 -0
- package/src/runtime/social-chat/social-chat-agent-runner.ts +7 -5
- package/src/runtime/social-chat/social-chat-history.ts +21 -12
- package/src/runtime/social-chat/social-chat.ts +401 -365
- package/src/runtime/team-consultation/team-consultation-orchestrator.ts +58 -52
- package/src/runtime/thread-turn-context.ts +21 -27
- package/src/services/agent-activity.service.ts +1 -1
- package/src/services/agent-executor.service.ts +179 -187
- package/src/services/artifact.service.ts +10 -5
- package/src/services/attachment.service.ts +35 -1
- package/src/services/autonomous-job.service.ts +58 -56
- 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 +1 -1
- package/src/services/document-chunk.service.ts +8 -17
- package/src/services/execution-plan/execution-plan-graph.ts +74 -52
- package/src/services/execution-plan/execution-plan.service.ts +1 -1
- package/src/services/feedback-loop.service.ts +1 -1
- package/src/services/global-orchestrator.service.ts +33 -10
- package/src/services/graph-full-routing.ts +44 -33
- 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-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 +26 -44
- 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 +132 -90
- package/src/services/plan/plan-agent-heartbeat.service.ts +1 -1
- package/src/services/plan/plan-agent-query.service.ts +1 -1
- 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 +18 -24
- package/src/services/plan/plan-coordination.service.ts +1 -1
- package/src/services/plan/plan-cycle.service.ts +171 -164
- package/src/services/plan/plan-deadline.service.ts +290 -304
- package/src/services/plan/plan-event-delivery.service.ts +44 -39
- package/src/services/plan/plan-executor-graph.ts +114 -67
- package/src/services/plan/plan-executor-helpers.ts +60 -75
- package/src/services/plan/plan-executor.service.ts +550 -467
- package/src/services/plan/plan-run.service.ts +12 -19
- package/src/services/plan/plan-scheduler.service.ts +27 -33
- 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 +17 -9
- 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 +26 -10
- 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 +24 -8
- package/src/services/thread/thread-title.service.ts +1 -1
- package/src/services/thread/thread-turn-execution.ts +1 -1
- package/src/services/thread/thread-turn-preparation.service.ts +18 -16
- package/src/services/thread/thread-turn-streaming.ts +12 -11
- package/src/services/thread/thread-turn.ts +43 -10
- package/src/services/thread/thread.service.ts +11 -2
- 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 +1 -1
- 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/title-generator.agent.ts +1 -1
- package/src/tools/execution-plan.tool.ts +28 -17
- package/src/tools/fetch-webpage.tool.ts +20 -13
- package/src/tools/firecrawl-client.ts +13 -3
- package/src/tools/plan-approval.tool.ts +9 -1
- package/src/tools/search-web.tool.ts +16 -9
- package/src/tools/team-think.tool.ts +2 -2
- package/src/utils/async.ts +15 -6
- package/src/utils/errors.ts +27 -15
- package/src/workers/bootstrap.ts +25 -48
- package/src/workers/organization-learning.worker.ts +1 -1
- package/src/workers/regular-chat-memory-digest.runner.ts +25 -15
- package/src/workers/worker-utils.ts +20 -2
- package/src/config/search.ts +0 -3
- package/src/runtime/agent-types.ts +0 -1
package/src/workers/bootstrap.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ConfigProvider, Option, Schema, Effect, Layer, ManagedRuntime, Redacted } from 'effect'
|
|
2
2
|
|
|
3
3
|
import { AiGatewayLive } from '../ai-gateway/ai-gateway'
|
|
4
4
|
import { EmbeddingCacheLive } from '../ai/embedding-cache'
|
|
5
|
-
import { DEFAULT_AI_GATEWAY_URL } from '../config/constants'
|
|
6
5
|
import { configureLotaLogger, resolveLotaLogLevel, serverLogger } from '../config/logger'
|
|
7
6
|
import { connectWithStartupRetry, waitForDatabaseBootstrap } from '../db/startup'
|
|
8
7
|
import { buildWorkerInfrastructureLayer, setLotaSdkRuntime } from '../effect'
|
|
9
8
|
import { DatabaseServiceTag } from '../effect/services'
|
|
10
|
-
import { parseLotaRuntimeConfig, parseWorkerBootstrapEnv } from '../runtime/runtime-config'
|
|
9
|
+
import { lotaRuntimeEnvConfig, parseLotaRuntimeConfig, parseWorkerBootstrapEnv } from '../runtime/runtime-config'
|
|
11
10
|
import { getConfiguredPluginDatabaseConnector } from '../runtime/runtime-extensions'
|
|
12
11
|
import { FirecrawlLive } from '../tools/firecrawl-client'
|
|
13
12
|
import { getErrorMessage } from '../utils/errors'
|
|
@@ -28,27 +27,8 @@ function toSandboxedWorkerBootstrapError(
|
|
|
28
27
|
return new SandboxedWorkerBootstrapError({ stage, message: getErrorMessage(cause), cause })
|
|
29
28
|
}
|
|
30
29
|
|
|
31
|
-
const workerConfig = Config.all({
|
|
32
|
-
surrealdbUrl: Config.string('SURREALDB_URL'),
|
|
33
|
-
surrealdbNamespace: Config.string('SURREALDB_NAMESPACE'),
|
|
34
|
-
surrealdbUser: Config.string('SURREALDB_USER'),
|
|
35
|
-
surrealdbPassword: Config.redacted('SURREALDB_PASSWORD'),
|
|
36
|
-
redisUrl: Config.string('REDIS_URL'),
|
|
37
|
-
aiGatewayUrl: Config.string('AI_GATEWAY_URL').pipe(Config.withDefault(DEFAULT_AI_GATEWAY_URL)),
|
|
38
|
-
aiGatewayKey: Config.redacted('AI_GATEWAY_KEY'),
|
|
39
|
-
openRouterApiKey: Config.redacted('OPENROUTER_API_KEY'),
|
|
40
|
-
s3Endpoint: Config.string('S3_ENDPOINT'),
|
|
41
|
-
s3Bucket: Config.string('S3_BUCKET'),
|
|
42
|
-
s3Region: Config.string('S3_REGION').pipe(Config.withDefault('garage')),
|
|
43
|
-
s3AccessKeyId: Config.redacted('S3_ACCESS_KEY_ID'),
|
|
44
|
-
s3SecretAccessKey: Config.redacted('S3_SECRET_ACCESS_KEY'),
|
|
45
|
-
attachmentUrlExpiresIn: Config.string('ATTACHMENT_URL_EXPIRES_IN').pipe(Config.withDefault('1800')),
|
|
46
|
-
firecrawlApiKey: Config.redacted('FIRECRAWL_API_KEY'),
|
|
47
|
-
firecrawlApiBaseUrl: Config.string('FIRECRAWL_API_BASE_URL').pipe(Config.option),
|
|
48
|
-
})
|
|
49
|
-
|
|
50
30
|
function buildSandboxedWorkerRuntimeConfigEffect() {
|
|
51
|
-
return
|
|
31
|
+
return lotaRuntimeEnvConfig
|
|
52
32
|
.parse(ConfigProvider.fromEnv())
|
|
53
33
|
.pipe(
|
|
54
34
|
Effect.map((env) =>
|
|
@@ -63,7 +43,9 @@ function buildSandboxedWorkerRuntimeConfigEffect() {
|
|
|
63
43
|
aiGateway: {
|
|
64
44
|
url: env.aiGatewayUrl,
|
|
65
45
|
key: Redacted.value(env.aiGatewayKey),
|
|
66
|
-
|
|
46
|
+
...(Option.isSome(env.openRouterApiKey)
|
|
47
|
+
? { openRouterApiKey: Redacted.value(env.openRouterApiKey.value) }
|
|
48
|
+
: {}),
|
|
67
49
|
},
|
|
68
50
|
s3: {
|
|
69
51
|
endpoint: env.s3Endpoint,
|
|
@@ -75,7 +57,7 @@ function buildSandboxedWorkerRuntimeConfigEffect() {
|
|
|
75
57
|
},
|
|
76
58
|
firecrawl: {
|
|
77
59
|
apiKey: Redacted.value(env.firecrawlApiKey),
|
|
78
|
-
...(env.firecrawlApiBaseUrl
|
|
60
|
+
...(Option.isSome(env.firecrawlApiBaseUrl) ? { apiBaseUrl: env.firecrawlApiBaseUrl.value } : {}),
|
|
79
61
|
},
|
|
80
62
|
agents: {
|
|
81
63
|
roster: ['worker'],
|
|
@@ -91,20 +73,16 @@ function buildSandboxedWorkerRuntimeConfigEffect() {
|
|
|
91
73
|
// eslint-disable-next-line typescript-eslint/no-explicit-any -- wildcard for host-provided ManagedRuntime
|
|
92
74
|
type WorkerManagedRuntime = ManagedRuntime.ManagedRuntime<any, any>
|
|
93
75
|
|
|
94
|
-
let
|
|
95
|
-
let
|
|
96
|
-
let sandboxedWorkerRuntimeSetupPromise: Promise<WorkerManagedRuntime> | null = null
|
|
76
|
+
let sandboxedWorkerSetupPromise: Promise<WorkerManagedRuntime> | null = null
|
|
77
|
+
let sandboxedWorkerInitPromise: Promise<WorkerManagedRuntime> | null = null
|
|
97
78
|
|
|
98
79
|
function ensureSandboxedWorkerRuntimeConfigured(): Promise<WorkerManagedRuntime> {
|
|
99
|
-
if (
|
|
100
|
-
return
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (sandboxedWorkerRuntimeSetupPromise) {
|
|
104
|
-
return sandboxedWorkerRuntimeSetupPromise
|
|
80
|
+
if (sandboxedWorkerSetupPromise) {
|
|
81
|
+
return sandboxedWorkerSetupPromise
|
|
105
82
|
}
|
|
106
83
|
|
|
107
|
-
|
|
84
|
+
// Assign before the async kicks off so concurrent callers observe the in-flight promise.
|
|
85
|
+
sandboxedWorkerSetupPromise = Effect.runPromise(
|
|
108
86
|
Effect.gen(function* () {
|
|
109
87
|
const runtimeConfig = yield* buildSandboxedWorkerRuntimeConfigEffect()
|
|
110
88
|
yield* Effect.sync(() => configureLotaLogger(resolveLotaLogLevel(Bun.env.LOG_LEVEL) ?? 'info'))
|
|
@@ -119,25 +97,25 @@ function ensureSandboxedWorkerRuntimeConfigured(): Promise<WorkerManagedRuntime>
|
|
|
119
97
|
|
|
120
98
|
yield* Effect.sync(() => {
|
|
121
99
|
setLotaSdkRuntime(managedRuntime)
|
|
122
|
-
sandboxedWorkerRuntime = managedRuntime
|
|
123
100
|
})
|
|
124
101
|
|
|
125
102
|
return managedRuntime
|
|
126
103
|
}),
|
|
127
|
-
).
|
|
128
|
-
|
|
104
|
+
).catch((error) => {
|
|
105
|
+
sandboxedWorkerSetupPromise = null
|
|
106
|
+
throw error
|
|
129
107
|
})
|
|
130
108
|
|
|
131
|
-
|
|
132
|
-
return setupPromise
|
|
109
|
+
return sandboxedWorkerSetupPromise
|
|
133
110
|
}
|
|
134
111
|
|
|
135
112
|
export function initializeSandboxedWorkerRuntime(): Promise<WorkerManagedRuntime> {
|
|
136
|
-
if (
|
|
137
|
-
return
|
|
113
|
+
if (sandboxedWorkerInitPromise) {
|
|
114
|
+
return sandboxedWorkerInitPromise
|
|
138
115
|
}
|
|
139
116
|
|
|
140
|
-
|
|
117
|
+
// Assign before the async kicks off so concurrent callers observe the in-flight promise.
|
|
118
|
+
sandboxedWorkerInitPromise = Effect.runPromise(
|
|
141
119
|
Effect.gen(function* () {
|
|
142
120
|
const env = parseWorkerBootstrapEnv(Bun.env)
|
|
143
121
|
const runtime = yield* Effect.tryPromise({
|
|
@@ -186,11 +164,10 @@ export function initializeSandboxedWorkerRuntime(): Promise<WorkerManagedRuntime
|
|
|
186
164
|
|
|
187
165
|
return runtime
|
|
188
166
|
}),
|
|
189
|
-
)
|
|
190
|
-
|
|
191
|
-
sandboxedWorkerRuntimePromise = initPromise
|
|
192
|
-
return initPromise.catch((error) => {
|
|
193
|
-
sandboxedWorkerRuntimePromise = null
|
|
167
|
+
).catch((error) => {
|
|
168
|
+
sandboxedWorkerInitPromise = null
|
|
194
169
|
throw error
|
|
195
170
|
})
|
|
171
|
+
|
|
172
|
+
return sandboxedWorkerInitPromise
|
|
196
173
|
}
|
|
@@ -18,7 +18,7 @@ import { toSandboxedWorkerError } from './utils/sandbox-error'
|
|
|
18
18
|
import { createTracedWorkerProcessor } from './worker-utils'
|
|
19
19
|
|
|
20
20
|
const runtime = await initializeSandboxedWorkerRuntime()
|
|
21
|
-
const resolve =
|
|
21
|
+
const resolve = <I, T>(tag: Context.Key<I, T>): Promise<T> => runtime.runPromise(Effect.service(tag))
|
|
22
22
|
const regularChatDigestServices: RegularChatDigestServices = {
|
|
23
23
|
databaseService: await resolve(DatabaseServiceTag),
|
|
24
24
|
memoryService: await resolve(MemoryServiceTag),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Effect, Schema } from 'effect'
|
|
2
2
|
import type { Context } from 'effect'
|
|
3
3
|
import { BoundQuery } from 'surrealdb'
|
|
4
4
|
import { z } from 'zod'
|
|
@@ -35,6 +35,11 @@ import type { DigestMessage } from './utils/thread-message-query'
|
|
|
35
35
|
// can be digested into durable memory and profile projections in the background.
|
|
36
36
|
const StructuredProfilePatchSchema = z.record(z.string(), z.unknown()).default({})
|
|
37
37
|
|
|
38
|
+
class MemoryDigestError extends Schema.TaggedErrorClass<MemoryDigestError>()('MemoryDigestError', {
|
|
39
|
+
message: Schema.String,
|
|
40
|
+
cause: Schema.Defect,
|
|
41
|
+
}) {}
|
|
42
|
+
|
|
38
43
|
const REGULAR_CHAT_MEMORY_DIGEST_TIMEOUT_MS = 10 * 60 * 1000
|
|
39
44
|
const WorkspaceMemoryRowSchema = z.object({ content: z.string() })
|
|
40
45
|
export interface RegularChatDigestServices {
|
|
@@ -120,11 +125,9 @@ function hasNewEligibleThreadMessages(params: {
|
|
|
120
125
|
Effect.gen(function* () {
|
|
121
126
|
if (params.threadIds.length === 0) return false
|
|
122
127
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
query = new BoundQuery(
|
|
127
|
-
`SELECT id, createdAt FROM ${TABLES.THREAD_MESSAGE}
|
|
128
|
+
const query: BoundQuery | null = params.cursor
|
|
129
|
+
? new BoundQuery(
|
|
130
|
+
`SELECT id, createdAt FROM ${TABLES.THREAD_MESSAGE}
|
|
128
131
|
WHERE threadId IN $threadIds
|
|
129
132
|
AND (
|
|
130
133
|
createdAt > $cursorCreatedAt
|
|
@@ -132,18 +135,22 @@ function hasNewEligibleThreadMessages(params: {
|
|
|
132
135
|
)
|
|
133
136
|
ORDER BY createdAt ASC, id ASC
|
|
134
137
|
LIMIT 1`,
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
{
|
|
139
|
+
threadIds: params.threadIds,
|
|
140
|
+
cursorCreatedAt: params.cursor.createdAt,
|
|
141
|
+
cursorRowId: ensureRecordId(params.cursor.id, TABLES.THREAD_MESSAGE),
|
|
142
|
+
},
|
|
143
|
+
)
|
|
144
|
+
: params.onboardingCutoff
|
|
145
|
+
? new BoundQuery(
|
|
146
|
+
`SELECT id, createdAt FROM ${TABLES.THREAD_MESSAGE}
|
|
140
147
|
WHERE threadId IN $threadIds
|
|
141
148
|
AND createdAt > $onboardingCutoff
|
|
142
149
|
ORDER BY createdAt ASC, id ASC
|
|
143
150
|
LIMIT 1`,
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
151
|
+
{ threadIds: params.threadIds, onboardingCutoff: params.onboardingCutoff },
|
|
152
|
+
)
|
|
153
|
+
: null
|
|
147
154
|
|
|
148
155
|
if (!query) return false
|
|
149
156
|
const rows = yield* effectTryPromise(() => params.db.query<unknown>(query))
|
|
@@ -261,7 +268,10 @@ function runRegularChatMemoryDigestEffect(
|
|
|
261
268
|
|
|
262
269
|
const summaryBlock = normalizeBlock(synthesis.summaryBlock)
|
|
263
270
|
if (!summaryBlock) {
|
|
264
|
-
return yield* new
|
|
271
|
+
return yield* new MemoryDigestError({
|
|
272
|
+
message: 'Regular chat memory digest returned an empty summaryBlock',
|
|
273
|
+
cause: new Error('Regular chat memory digest returned an empty summaryBlock'),
|
|
274
|
+
})
|
|
265
275
|
}
|
|
266
276
|
|
|
267
277
|
const processedThreadCursor = getLastCursor(threadMessages)
|
|
@@ -5,11 +5,21 @@ import { Effect } from 'effect'
|
|
|
5
5
|
import type { Context } from 'effect'
|
|
6
6
|
|
|
7
7
|
import { chatLogger } from '../config/logger'
|
|
8
|
-
import {
|
|
8
|
+
import { resolveLotaService } from '../effect/runtime'
|
|
9
9
|
import { QueueJobServiceTag } from '../services/queue-job.service'
|
|
10
10
|
|
|
11
|
+
let currentQueueJobService: Context.Service.Shape<typeof QueueJobServiceTag> | null = null
|
|
12
|
+
|
|
13
|
+
export function configureQueueJobService(service: Context.Service.Shape<typeof QueueJobServiceTag>): void {
|
|
14
|
+
currentQueueJobService = service
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function clearQueueJobService(): void {
|
|
18
|
+
currentQueueJobService = null
|
|
19
|
+
}
|
|
20
|
+
|
|
11
21
|
export function getQueueJobService(): Context.Service.Shape<typeof QueueJobServiceTag> {
|
|
12
|
-
return
|
|
22
|
+
return currentQueueJobService ?? resolveLotaService(QueueJobServiceTag)
|
|
13
23
|
}
|
|
14
24
|
|
|
15
25
|
export const DEFAULT_JOB_RETENTION = { removeOnComplete: true, removeOnFail: { age: 24 * 60 * 60, count: 200 } }
|
|
@@ -132,6 +142,14 @@ export function createTracedWorkerProcessor<TJob extends TracedWorkerJobLike, TR
|
|
|
132
142
|
)
|
|
133
143
|
return yield* error
|
|
134
144
|
}),
|
|
145
|
+
).pipe(
|
|
146
|
+
Effect.withSpan(`worker.${queueName}.${job.name}`),
|
|
147
|
+
Effect.annotateSpans({
|
|
148
|
+
'job.id': trackedJob.id !== undefined ? String(trackedJob.id) : 'unknown',
|
|
149
|
+
'job.name': job.name,
|
|
150
|
+
'job.attemptsMade': typeof job.attemptsMade === 'number' ? job.attemptsMade : -1,
|
|
151
|
+
'queue.name': queueName,
|
|
152
|
+
}),
|
|
135
153
|
),
|
|
136
154
|
)
|
|
137
155
|
}
|
package/src/config/search.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { ChatMode, CreateHelperToolLoopAgentOptions, CreateRoutedAgentOptions } from '@lota-sdk/shared'
|