Skip to content

Commit 0c89562

Browse files
committed
Add EscalationPolicy to AgentEnvironment
Integrate the new EscalationPolicy pattern into the AgentEnvironment so it's available to components that handle escalations. The policy evaluates blocker reasons to classify escalation types and determines urgency based on project state. - Add escalationPolicy parameter to AgentEnvironment with default - Update AgentEnvironmentFactory to accept optional EscalationPolicy - Use DefaultEscalationPolicy as the default implementation
1 parent 6fd6b19 commit 0c89562

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

shared/src/commonMain/kotlin/link/socket/ampere/agents/events/AgentEnvironment.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import link.socket.ampere.agents.events.meetings.MeetingOrchestrator
1010
import link.socket.ampere.agents.events.meetings.MeetingRepository
1111
import link.socket.ampere.agents.events.messages.AgentMessageApi
1212
import link.socket.ampere.agents.events.messages.MessageRepository
13+
import link.socket.ampere.agents.events.messages.escalation.DefaultEscalationPolicy
14+
import link.socket.ampere.agents.events.messages.escalation.EscalationPolicy
1315
import link.socket.ampere.agents.events.tickets.TicketOrchestrator
1416
import link.socket.ampere.agents.events.tickets.TicketRepository
1517
import link.socket.ampere.agents.events.utils.ConsoleEventLogger
@@ -23,6 +25,7 @@ import link.socket.ampere.agents.events.utils.EventLogger
2325
* - Messaging infrastructure (MessageRepository)
2426
* - Meeting infrastructure (MeetingRepository, MeetingBuilder, MeetingOrchestrator)
2527
* - Ticket infrastructure (TicketRepository, TicketOrchestrator)
28+
* - Escalation infrastructure (EscalationPolicy)
2629
*
2730
* This pattern reduces constructor parameter sprawl and simplifies dependency management
2831
* for handlers and orchestrators.
@@ -41,6 +44,7 @@ class AgentEnvironment(
4144
val messageRepository: MessageRepository,
4245
val meetingRepository: MeetingRepository,
4346
val ticketRepository: TicketRepository,
47+
val escalationPolicy: EscalationPolicy = DefaultEscalationPolicy(),
4448
val logger: EventLogger = ConsoleEventLogger(),
4549
) {
4650
// Lazy-initialized orchestrators to avoid circular dependencies

shared/src/commonMain/kotlin/link/socket/ampere/agents/events/AgentEnvironmentFactory.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import kotlinx.serialization.json.Json
66
import link.socket.ampere.agents.events.bus.EventBus
77
import link.socket.ampere.agents.events.meetings.MeetingRepository
88
import link.socket.ampere.agents.events.messages.MessageRepository
9+
import link.socket.ampere.agents.events.messages.escalation.DefaultEscalationPolicy
10+
import link.socket.ampere.agents.events.messages.escalation.EscalationPolicy
911
import link.socket.ampere.agents.events.tickets.TicketRepository
1012
import link.socket.ampere.agents.events.utils.ConsoleEventLogger
1113
import link.socket.ampere.agents.events.utils.EventLogger
@@ -31,13 +33,15 @@ object AgentEnvironmentFactory {
3133
* @param scope The coroutine scope for async operations
3234
* @param driver The SQL driver for database access
3335
* @param json The JSON serializer configuration (defaults to DEFAULT_JSON)
36+
* @param escalationPolicy The policy for evaluating escalations (defaults to DefaultEscalationPolicy)
3437
* @param logger The event logger (defaults to ConsoleEventLogger)
3538
* @return A fully initialized AgentEnvironment
3639
*/
3740
fun create(
3841
scope: CoroutineScope,
3942
driver: SqlDriver,
4043
json: Json = DEFAULT_JSON,
44+
escalationPolicy: EscalationPolicy = DefaultEscalationPolicy(),
4145
logger: EventLogger = ConsoleEventLogger(),
4246
): AgentEnvironment {
4347
// Create database
@@ -59,6 +63,7 @@ object AgentEnvironmentFactory {
5963
messageRepository = messageRepository,
6064
meetingRepository = meetingRepository,
6165
ticketRepository = ticketRepository,
66+
escalationPolicy = escalationPolicy,
6267
logger = logger,
6368
)
6469
}
@@ -71,13 +76,15 @@ object AgentEnvironmentFactory {
7176
* @param scope The coroutine scope for async operations
7277
* @param database The existing database instance
7378
* @param json The JSON serializer configuration (defaults to DEFAULT_JSON)
79+
* @param escalationPolicy The policy for evaluating escalations (defaults to DefaultEscalationPolicy)
7480
* @param logger The event logger (defaults to ConsoleEventLogger)
7581
* @return A fully initialized AgentEnvironment
7682
*/
7783
fun create(
7884
scope: CoroutineScope,
7985
database: Database,
8086
json: Json = DEFAULT_JSON,
87+
escalationPolicy: EscalationPolicy = DefaultEscalationPolicy(),
8188
logger: EventLogger = ConsoleEventLogger(),
8289
): AgentEnvironment {
8390
// Create event bus
@@ -96,6 +103,7 @@ object AgentEnvironmentFactory {
96103
messageRepository = messageRepository,
97104
meetingRepository = meetingRepository,
98105
ticketRepository = ticketRepository,
106+
escalationPolicy = escalationPolicy,
99107
logger = logger,
100108
)
101109
}

0 commit comments

Comments
 (0)