@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ConsultTeamArgsSchema, withMessageCreatedAt } from '@lota-sdk/shared'
|
|
2
2
|
import type { ChatMessage, ConsultTeamResultData } from '@lota-sdk/shared'
|
|
3
3
|
import { convertToModelMessages, tool as createTool } from 'ai'
|
|
4
|
-
import { Schema, Effect, Fiber, Queue, Ref } from 'effect'
|
|
4
|
+
import { Schema, Deferred, Effect, Exit, Fiber, Queue, Ref, Scope } from 'effect'
|
|
5
5
|
|
|
6
6
|
import { getAgentDisplayNames, getTeamConsultParticipants } from '../../config/agent-defaults'
|
|
7
7
|
import { nowEpochMillis } from '../../utils/date-time'
|
|
@@ -114,8 +114,6 @@ interface ConsultTeamStreamResources {
|
|
|
114
114
|
workerFiber: Fiber.Fiber<unknown, unknown>
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
type TeamConsultationResourcesError = TeamConsultationError
|
|
118
|
-
|
|
119
117
|
function createConsultTeamStreamResources(params: {
|
|
120
118
|
task: string
|
|
121
119
|
uploadMetadataText: string
|
|
@@ -272,7 +270,10 @@ function createConsultTeamStreamResources(params: {
|
|
|
272
270
|
}
|
|
273
271
|
|
|
274
272
|
class ConsultTeamSnapshotIterable implements AsyncIterableIterator<ConsultTeamResultData> {
|
|
275
|
-
private readonly
|
|
273
|
+
private readonly scope: Scope.Closeable
|
|
274
|
+
private readonly resourcesDeferred: Deferred.Deferred<ConsultTeamStreamResources, TeamConsultationError>
|
|
275
|
+
private readonly buildEffect: Effect.Effect<ConsultTeamStreamResources, TeamConsultationError>
|
|
276
|
+
private initStarted = false
|
|
276
277
|
private closed = false
|
|
277
278
|
private completed = false
|
|
278
279
|
|
|
@@ -291,38 +292,52 @@ class ConsultTeamSnapshotIterable implements AsyncIterableIterator<ConsultTeamRe
|
|
|
291
292
|
return agentDisplayNames[agentId] ?? agentId
|
|
292
293
|
}
|
|
293
294
|
|
|
294
|
-
this.
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
)
|
|
295
|
+
this.scope = Scope.makeUnsafe()
|
|
296
|
+
this.resourcesDeferred = Deferred.makeUnsafe<ConsultTeamStreamResources, TeamConsultationError>()
|
|
297
|
+
this.buildEffect = createConsultTeamStreamResources({
|
|
298
|
+
task,
|
|
299
|
+
uploadMetadataText,
|
|
300
|
+
teamConsultParticipants,
|
|
301
|
+
resolveDisplayName,
|
|
302
|
+
historyMessages: params.historyMessages,
|
|
303
|
+
latestUserMessageId: params.latestUserMessageId,
|
|
304
|
+
availableUploads: params.availableUploads,
|
|
305
|
+
systemWorkspaceDetails: params.systemWorkspaceDetails,
|
|
306
|
+
getPreSeededMemoriesSection: params.getPreSeededMemoriesSection,
|
|
307
|
+
retrievedKnowledgeSection: params.retrievedKnowledgeSection,
|
|
308
|
+
abortSignal: params.abortSignal,
|
|
309
|
+
participantRunner: params.participantRunner,
|
|
310
|
+
onReadError: params.onReadError,
|
|
311
|
+
})
|
|
311
312
|
}
|
|
312
313
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
314
|
+
/**
|
|
315
|
+
* Acquire-release: on first call, build the stream resources and register
|
|
316
|
+
* cleanup as a finalizer in the iterable's scope. Subsequent calls await the
|
|
317
|
+
* cached `Deferred`. If init fails, no finalizer is registered, so closing
|
|
318
|
+
* the scope is a no-op for the leaked-resource path.
|
|
319
|
+
*/
|
|
320
|
+
private acquireResourcesEffect(): Effect.Effect<ConsultTeamStreamResources, TeamConsultationError> {
|
|
321
|
+
if (this.initStarted) {
|
|
322
|
+
return Deferred.await(this.resourcesDeferred)
|
|
323
|
+
}
|
|
324
|
+
this.initStarted = true
|
|
325
|
+
|
|
326
|
+
const acquire = Effect.acquireRelease(this.buildEffect, ({ snapshotQueue, workerFiber }) =>
|
|
327
|
+
Fiber.interrupt(workerFiber).pipe(Effect.andThen(Queue.shutdown(snapshotQueue))),
|
|
328
|
+
).pipe(Scope.provide(this.scope))
|
|
329
|
+
|
|
330
|
+
return acquire.pipe(
|
|
331
|
+
Effect.exit,
|
|
332
|
+
Effect.flatMap((exit) =>
|
|
333
|
+
Deferred.done(this.resourcesDeferred, exit).pipe(Effect.andThen(Deferred.await(this.resourcesDeferred))),
|
|
334
|
+
),
|
|
335
|
+
)
|
|
319
336
|
}
|
|
320
337
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
): Effect.Effect<void, never> {
|
|
325
|
-
return Effect.andThen(Fiber.interrupt(workerFiber), Queue.shutdown(snapshotQueue))
|
|
338
|
+
/** Close the scope idempotently. Runs cleanup finalizers iff init succeeded. */
|
|
339
|
+
private closeScopeEffect(): Effect.Effect<void, never> {
|
|
340
|
+
return Scope.close(this.scope, Exit.void).pipe(Effect.catchCause(() => Effect.void))
|
|
326
341
|
}
|
|
327
342
|
|
|
328
343
|
[Symbol.asyncIterator](): AsyncIterableIterator<ConsultTeamResultData> {
|
|
@@ -337,7 +352,7 @@ class ConsultTeamSnapshotIterable implements AsyncIterableIterator<ConsultTeamRe
|
|
|
337
352
|
return Effect.runPromise(
|
|
338
353
|
Effect.gen(
|
|
339
354
|
function* (this: ConsultTeamSnapshotIterable) {
|
|
340
|
-
const { snapshotQueue
|
|
355
|
+
const { snapshotQueue } = yield* this.acquireResourcesEffect()
|
|
341
356
|
|
|
342
357
|
if (this.completed) {
|
|
343
358
|
return { done: true, value: undefined as never }
|
|
@@ -346,40 +361,31 @@ class ConsultTeamSnapshotIterable implements AsyncIterableIterator<ConsultTeamRe
|
|
|
346
361
|
const item = yield* Queue.take(snapshotQueue)
|
|
347
362
|
if (item === DONE) {
|
|
348
363
|
this.completed = true
|
|
349
|
-
|
|
364
|
+
this.closed = true
|
|
365
|
+
yield* this.closeScopeEffect()
|
|
350
366
|
return { done: true, value: undefined as never }
|
|
351
367
|
}
|
|
352
368
|
|
|
353
369
|
return { done: false, value: item }
|
|
354
370
|
}.bind(this),
|
|
371
|
+
).pipe(
|
|
372
|
+
Effect.tapCause(() =>
|
|
373
|
+
Effect.sync(() => {
|
|
374
|
+
this.closed = true
|
|
375
|
+
}).pipe(Effect.andThen(this.closeScopeEffect())),
|
|
376
|
+
),
|
|
355
377
|
),
|
|
356
378
|
)
|
|
357
379
|
}
|
|
358
380
|
|
|
359
381
|
return(): Promise<IteratorResult<ConsultTeamResultData>> {
|
|
360
382
|
this.closed = true
|
|
361
|
-
return Effect.runPromise(
|
|
362
|
-
Effect.gen(
|
|
363
|
-
function* (this: ConsultTeamSnapshotIterable) {
|
|
364
|
-
const { snapshotQueue, workerFiber } = yield* this.initResourcesEffect()
|
|
365
|
-
yield* this.cleanupEffect(snapshotQueue, workerFiber)
|
|
366
|
-
return { done: true, value: undefined as never }
|
|
367
|
-
}.bind(this),
|
|
368
|
-
),
|
|
369
|
-
)
|
|
383
|
+
return Effect.runPromise(this.closeScopeEffect().pipe(Effect.as({ done: true, value: undefined as never })))
|
|
370
384
|
}
|
|
371
385
|
|
|
372
386
|
throw(error: unknown): Promise<never> {
|
|
373
387
|
this.closed = true
|
|
374
|
-
return Effect.runPromise(
|
|
375
|
-
Effect.gen(
|
|
376
|
-
function* (this: ConsultTeamSnapshotIterable) {
|
|
377
|
-
const { snapshotQueue, workerFiber } = yield* this.initResourcesEffect()
|
|
378
|
-
yield* this.cleanupEffect(snapshotQueue, workerFiber)
|
|
379
|
-
return yield* Effect.fail(error as never)
|
|
380
|
-
}.bind(this),
|
|
381
|
-
),
|
|
382
|
-
)
|
|
388
|
+
return Effect.runPromise(this.closeScopeEffect().pipe(Effect.andThen(Effect.fail(error as never))))
|
|
383
389
|
}
|
|
384
390
|
}
|
|
385
391
|
|
|
@@ -3,10 +3,7 @@ import { Schema, Effect } from 'effect'
|
|
|
3
3
|
import type { RecordIdRef } from '../db/record-id'
|
|
4
4
|
import { recordIdToString } from '../db/record-id'
|
|
5
5
|
import { TABLES } from '../db/tables'
|
|
6
|
-
import {
|
|
7
|
-
effectTryMaybeAsync as effectTryMaybeAsyncShared,
|
|
8
|
-
effectTryPromise as effectTryPromiseShared,
|
|
9
|
-
} from '../effect/helpers'
|
|
6
|
+
import { effectTryMaybeAsync as effectTryMaybeAsyncShared, makeEffectTryPromiseWithMessage } from '../effect/helpers'
|
|
10
7
|
import { buildAgentPromptContext } from './agent-prompt-context'
|
|
11
8
|
import {
|
|
12
9
|
buildIndexedRepositoriesContext,
|
|
@@ -35,9 +32,9 @@ class ThreadTurnContextError extends Schema.TaggedErrorClass<ThreadTurnContextEr
|
|
|
35
32
|
cause: Schema.optional(Schema.Defect),
|
|
36
33
|
}) {}
|
|
37
34
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
const effectTryPromise = makeEffectTryPromiseWithMessage(
|
|
36
|
+
(message, cause) => new ThreadTurnContextError({ message, cause }),
|
|
37
|
+
)
|
|
41
38
|
|
|
42
39
|
function effectTryMaybeAsync<A>(
|
|
43
40
|
evaluate: () => A | PromiseLike<A>,
|
|
@@ -129,16 +126,16 @@ const assembleThreadTurnContextEffect = Effect.fn('ThreadTurnContext.assemble')(
|
|
|
129
126
|
Effect.withSpan('ThreadTurnContext.buildPromptSummary'),
|
|
130
127
|
)
|
|
131
128
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
const initialLinearInstalled = Boolean(linearInstallation)
|
|
130
|
+
const initialGithubInstalled = Boolean(githubInstallation)
|
|
131
|
+
const initialPromptContext = buildAgentPromptContext({
|
|
135
132
|
workspaceName: workspaceProfileState?.workspaceName ?? readOptionalString(workspace.name) ?? undefined,
|
|
136
133
|
summaryBlock: workspaceProfileState?.summaryBlock,
|
|
137
134
|
promptSummary,
|
|
138
135
|
userName: params.userName ?? undefined,
|
|
139
136
|
recentDomainEvents,
|
|
140
137
|
})
|
|
141
|
-
|
|
138
|
+
const initialRetrievedKnowledgeSection: string | undefined = !params.messageText
|
|
142
139
|
? undefined
|
|
143
140
|
: yield* effectTryMaybeAsync(
|
|
144
141
|
() =>
|
|
@@ -161,36 +158,33 @@ const assembleThreadTurnContextEffect = Effect.fn('ThreadTurnContext.assemble')(
|
|
|
161
158
|
workspace,
|
|
162
159
|
onboardingActive,
|
|
163
160
|
messageText: params.messageText,
|
|
164
|
-
linearInstalled,
|
|
165
|
-
githubInstalled,
|
|
161
|
+
linearInstalled: initialLinearInstalled,
|
|
162
|
+
githubInstalled: initialGithubInstalled,
|
|
166
163
|
indexedRepoContext,
|
|
167
|
-
promptContext,
|
|
164
|
+
promptContext: initialPromptContext,
|
|
168
165
|
workspaceLifecycleState,
|
|
169
166
|
workspaceProfileState,
|
|
170
167
|
promptSummary,
|
|
171
168
|
recentDomainEvents,
|
|
172
|
-
retrievedKnowledgeSection,
|
|
169
|
+
retrievedKnowledgeSection: initialRetrievedKnowledgeSection,
|
|
173
170
|
}),
|
|
174
171
|
'Failed to build thread context',
|
|
175
172
|
).pipe(Effect.withSpan('ThreadTurnContext.buildContextHook'))
|
|
176
173
|
const buildContextResult = isRecord(buildContextResultValue) ? buildContextResultValue : null
|
|
177
174
|
|
|
178
175
|
const buildContextPromptDetails = readOptionalString(buildContextResult?.systemWorkspaceDetails)
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
176
|
+
const promptContext = buildContextPromptDetails
|
|
177
|
+
? { systemWorkspaceDetails: buildContextPromptDetails }
|
|
178
|
+
: initialPromptContext
|
|
182
179
|
const buildContextRetrievedKnowledge = readOptionalString(buildContextResult?.retrievedKnowledgeSection)
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
180
|
+
const retrievedKnowledgeSection =
|
|
181
|
+
buildContextRetrievedKnowledge !== undefined ? buildContextRetrievedKnowledge : initialRetrievedKnowledgeSection
|
|
186
182
|
const buildContextLinearInstalled = readOptionalBoolean(buildContextResult?.linearInstalled)
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}
|
|
183
|
+
const linearInstalled =
|
|
184
|
+
buildContextLinearInstalled !== undefined ? buildContextLinearInstalled : initialLinearInstalled
|
|
190
185
|
const buildContextGithubInstalled = readOptionalBoolean(buildContextResult?.githubInstalled)
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}
|
|
186
|
+
const githubInstalled =
|
|
187
|
+
buildContextGithubInstalled !== undefined ? buildContextGithubInstalled : initialGithubInstalled
|
|
194
188
|
|
|
195
189
|
const hookInstructionSections = readInstructionSections(
|
|
196
190
|
yield* effectTryMaybeAsync(
|
|
@@ -446,7 +446,7 @@ export function createAgentActivityService(deps: AgentActivityDeps | (() => Agen
|
|
|
446
446
|
export type AgentActivityService = ReturnType<typeof createAgentActivityService>
|
|
447
447
|
|
|
448
448
|
export class AgentActivityServiceTag extends Context.Service<AgentActivityServiceTag, AgentActivityService>()(
|
|
449
|
-
'AgentActivityService',
|
|
449
|
+
'@lota-sdk/core/AgentActivityService',
|
|
450
450
|
) {}
|
|
451
451
|
|
|
452
452
|
export const AgentActivityServiceLive = Layer.effect(
|