@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
|
@@ -2,7 +2,7 @@ import { stepCountIs } from 'ai'
|
|
|
2
2
|
import type { ToolSet } from 'ai'
|
|
3
3
|
import { Schema, Effect } from 'effect'
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import type { ResolvedAgentFactoryConfig } from '../../config/agent-defaults'
|
|
6
6
|
import { aiLogger } from '../../config/logger'
|
|
7
7
|
|
|
8
8
|
interface ExecutableToolDefinition {
|
|
@@ -46,13 +46,13 @@ export function withLoggedSocialToolSet(
|
|
|
46
46
|
execute: (...args: unknown[]): Promise<unknown> =>
|
|
47
47
|
Effect.runPromise(
|
|
48
48
|
Effect.gen(function* () {
|
|
49
|
-
aiLogger.
|
|
49
|
+
aiLogger.debug`Slack social-chat tool start: agentId=${params.agentId}, tool=${toolName}, channelId=${params.channelId}, threadId=${params.threadId}`
|
|
50
50
|
const result: unknown = yield* Effect.tryPromise({
|
|
51
51
|
try: () => executableTool.execute(...args),
|
|
52
52
|
catch: (error: unknown) => new SocialChatAgentRunnerError({ message: String(error), cause: error }),
|
|
53
53
|
})
|
|
54
54
|
params.executedToolNames.push(toolName)
|
|
55
|
-
aiLogger.
|
|
55
|
+
aiLogger.debug`Slack social-chat tool finish: agentId=${params.agentId}, tool=${toolName}, channelId=${params.channelId}, threadId=${params.threadId}`
|
|
56
56
|
return result
|
|
57
57
|
}).pipe(
|
|
58
58
|
Effect.tapError((error) =>
|
|
@@ -69,6 +69,7 @@ export function withLoggedSocialToolSet(
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
function runSocialAgentTurnEffect(params: {
|
|
72
|
+
agentFactoryConfig: ResolvedAgentFactoryConfig
|
|
72
73
|
agentId: string
|
|
73
74
|
mode: 'fixedThreadMode' | 'threadMode'
|
|
74
75
|
threadType: 'group'
|
|
@@ -85,7 +86,8 @@ function runSocialAgentTurnEffect(params: {
|
|
|
85
86
|
abortSignal: AbortSignal
|
|
86
87
|
}): Effect.Effect<{ text: string; displayName: string }, SocialChatAgentRunnerError> {
|
|
87
88
|
return Effect.gen(function* () {
|
|
88
|
-
const
|
|
89
|
+
const { agentFactoryConfig } = params
|
|
90
|
+
const runtimeConfig = agentFactoryConfig.getAgentRuntimeConfig({
|
|
89
91
|
agentId: params.agentId,
|
|
90
92
|
threadType: params.threadType,
|
|
91
93
|
mode: params.mode,
|
|
@@ -103,7 +105,7 @@ function runSocialAgentTurnEffect(params: {
|
|
|
103
105
|
additionalInstructionSections: params.additionalInstructionSections,
|
|
104
106
|
})
|
|
105
107
|
|
|
106
|
-
const agentFactoryEntry =
|
|
108
|
+
const agentFactoryEntry = agentFactoryConfig.createAgent[runtimeConfig.id]
|
|
107
109
|
if (typeof agentFactoryEntry !== 'function') {
|
|
108
110
|
return yield* new SocialChatAgentRunnerError({
|
|
109
111
|
message: `Social chat agent factory is not configured for ${runtimeConfig.id}`,
|
|
@@ -117,9 +119,11 @@ function runSocialAgentTurnEffect(params: {
|
|
|
117
119
|
extraInstructions: runtimeConfig.extraInstructions,
|
|
118
120
|
stopWhen: [stepCountIs(runtimeConfig.maxSteps)],
|
|
119
121
|
})
|
|
120
|
-
const response = yield* Effect.
|
|
121
|
-
agent.generate({ prompt: params.prompt, abortSignal: params.abortSignal }),
|
|
122
|
-
|
|
122
|
+
const response = yield* Effect.tryPromise({
|
|
123
|
+
try: () => agent.generate({ prompt: params.prompt, abortSignal: params.abortSignal }),
|
|
124
|
+
catch: (cause) =>
|
|
125
|
+
new SocialChatAgentRunnerError({ message: `Social chat agent ${params.agentId} generate() failed.`, cause }),
|
|
126
|
+
})
|
|
123
127
|
const text = response.text.trim()
|
|
124
128
|
if (!text) {
|
|
125
129
|
return yield* new SocialChatAgentRunnerError({
|
|
@@ -138,6 +142,7 @@ function runSocialAgentTurnEffect(params: {
|
|
|
138
142
|
}
|
|
139
143
|
|
|
140
144
|
export function runSocialAgentTurn(params: {
|
|
145
|
+
agentFactoryConfig: ResolvedAgentFactoryConfig
|
|
141
146
|
agentId: string
|
|
142
147
|
mode: 'fixedThreadMode' | 'threadMode'
|
|
143
148
|
threadType: 'group'
|
|
@@ -2,6 +2,8 @@ import { stripSlackToolExecutionNoticeMarkdown } from '@lota-sdk/shared'
|
|
|
2
2
|
import type { Message, Thread } from 'chat'
|
|
3
3
|
import { Schema, Effect } from 'effect'
|
|
4
4
|
|
|
5
|
+
import type { ResolvedAgentConfig } from '../../config/agent-defaults'
|
|
6
|
+
import { iterateEffect } from '../../effect/helpers'
|
|
5
7
|
import type {
|
|
6
8
|
SocialChatHistoryMessage,
|
|
7
9
|
SocialChatHistoryMetadata,
|
|
@@ -24,9 +26,10 @@ export function readSlackAuthorName(message: Message): string | undefined {
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
export function buildSocialChatThreadTranscript(
|
|
29
|
+
agentConfig: ResolvedAgentConfig,
|
|
27
30
|
messages: ReadonlyArray<Pick<SocialChatHistoryMessage, 'role' | 'parts' | 'metadata'>>,
|
|
28
31
|
): string {
|
|
29
|
-
const historyMessages = toHistoryMessages([...messages])
|
|
32
|
+
const historyMessages = toHistoryMessages(agentConfig, [...messages])
|
|
30
33
|
if (historyMessages.length === 0) return 'No prior thread history.'
|
|
31
34
|
|
|
32
35
|
return historyMessages
|
|
@@ -107,21 +110,29 @@ export function collectThreadMessages(thread: Thread, incomingMessage: Message):
|
|
|
107
110
|
return Effect.runPromise(
|
|
108
111
|
Effect.catch(
|
|
109
112
|
Effect.gen(function* () {
|
|
110
|
-
const collected: Message[] = []
|
|
111
113
|
const iterator = thread.allMessages[Symbol.asyncIterator]()
|
|
112
114
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
115
|
+
const collected = yield* iterateEffect<{ messages: Message[]; done: boolean }, SocialChatHistoryError, never>(
|
|
116
|
+
{ messages: [], done: false },
|
|
117
|
+
{
|
|
118
|
+
while: (state) => !state.done,
|
|
119
|
+
body: (state) =>
|
|
120
|
+
Effect.tryPromise({
|
|
121
|
+
try: () => iterator.next(),
|
|
122
|
+
catch: (error: unknown) =>
|
|
123
|
+
new SocialChatHistoryError({ message: 'Failed to read thread messages', cause: error }),
|
|
124
|
+
}).pipe(
|
|
125
|
+
Effect.map((next) =>
|
|
126
|
+
next.done
|
|
127
|
+
? { messages: state.messages, done: true }
|
|
128
|
+
: { messages: [...state.messages, next.value], done: false },
|
|
129
|
+
),
|
|
130
|
+
),
|
|
131
|
+
},
|
|
132
|
+
)
|
|
122
133
|
|
|
123
|
-
return collected.length > 0
|
|
124
|
-
? collected
|
|
134
|
+
return collected.messages.length > 0
|
|
135
|
+
? collected.messages
|
|
125
136
|
: thread.recentMessages.length > 0
|
|
126
137
|
? [...thread.recentMessages]
|
|
127
138
|
: [incomingMessage]
|