@reactive-agents/interaction 0.1.0
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/LICENSE +21 -0
- package/README.md +46 -0
- package/dist/index.d.ts +423 -0
- package/dist/index.js +782 -0
- package/dist/index.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/mode.ts","../src/types/checkpoint.ts","../src/types/notification.ts","../src/types/interrupt.ts","../src/types/collaboration.ts","../src/types/preference.ts","../src/types/config.ts","../src/errors/errors.ts","../src/services/interaction-manager.ts","../src/services/mode-switcher.ts","../src/services/notification-service.ts","../src/services/checkpoint-service.ts","../src/services/collaboration-service.ts","../src/services/preference-learner.ts","../src/runtime.ts"],"sourcesContent":["// File: src/types/mode.ts\nimport { Schema } from \"effect\";\n\n// ─── Interaction Mode Type ───\n\nexport const InteractionModeType = Schema.Literal(\n \"autonomous\", // Fire-and-forget: agent runs independently\n \"supervised\", // Checkpoints: agent pauses at milestones for approval\n \"collaborative\", // Real-time: agent and user work together\n \"consultative\", // Advisory: agent observes and suggests\n \"interrogative\", // Drill-down: user explores agent state/reasoning\n);\nexport type InteractionModeType = typeof InteractionModeType.Type;\n\n// ─── Session ID ───\n\nexport const SessionId = Schema.String.pipe(Schema.brand(\"SessionId\"));\nexport type SessionId = typeof SessionId.Type;\n\n// ─── Interaction Mode ───\n\nexport const InteractionModeSchema = Schema.Struct({\n mode: InteractionModeType,\n agentId: Schema.String,\n sessionId: SessionId,\n startedAt: Schema.DateFromSelf,\n metadata: Schema.optional(\n Schema.Record({ key: Schema.String, value: Schema.Unknown }),\n ),\n});\nexport type InteractionMode = typeof InteractionModeSchema.Type;\n","import { Schema } from \"effect\";\n\n// ─── Checkpoint Status ───\n\nexport const CheckpointStatus = Schema.Literal(\n \"pending\",\n \"approved\",\n \"rejected\",\n \"auto-approved\",\n \"expired\",\n);\nexport type CheckpointStatus = typeof CheckpointStatus.Type;\n\n// ─── Checkpoint ───\n\nexport const CheckpointSchema = Schema.Struct({\n id: Schema.String,\n agentId: Schema.String,\n taskId: Schema.String,\n milestoneName: Schema.String,\n description: Schema.String,\n status: CheckpointStatus,\n createdAt: Schema.DateFromSelf,\n resolvedAt: Schema.optional(Schema.DateFromSelf),\n userComment: Schema.optional(Schema.String),\n});\nexport type Checkpoint = typeof CheckpointSchema.Type;\n\n// ─── Checkpoint Config ───\n\nexport const CheckpointFrequency = Schema.Literal(\"milestone\", \"time-based\");\nexport type CheckpointFrequency = typeof CheckpointFrequency.Type;\n\nexport const AutoApproveAction = Schema.Literal(\"approve\", \"reject\", \"pause\");\nexport type AutoApproveAction = typeof AutoApproveAction.Type;\n\nexport const CheckpointConfigSchema = Schema.Struct({\n frequency: CheckpointFrequency,\n intervalMs: Schema.optional(Schema.Number),\n milestones: Schema.optional(Schema.Array(Schema.String)),\n autoApprove: Schema.Struct({\n enabled: Schema.Boolean,\n timeoutMs: Schema.Number,\n defaultAction: AutoApproveAction,\n }),\n});\nexport type CheckpointConfig = typeof CheckpointConfigSchema.Type;\n","// File: src/types/notification.ts\nimport { Schema } from \"effect\";\n\n// ─── Notification Channel ───\n\nexport const NotificationChannel = Schema.Literal(\n \"in-app\", // Dashboard notification\n \"callback\", // Programmatic callback\n \"event-bus\", // EventBus from Layer 1\n);\nexport type NotificationChannel = typeof NotificationChannel.Type;\n\n// ─── Notification Priority ───\n\nexport const NotificationPriority = Schema.Literal(\n \"low\",\n \"normal\",\n \"high\",\n \"urgent\",\n);\nexport type NotificationPriority = typeof NotificationPriority.Type;\n\n// ─── Notification ───\n\nexport const NotificationSchema = Schema.Struct({\n id: Schema.String,\n agentId: Schema.String,\n channel: NotificationChannel,\n priority: NotificationPriority,\n title: Schema.String,\n body: Schema.String,\n data: Schema.optional(Schema.Unknown),\n createdAt: Schema.DateFromSelf,\n readAt: Schema.optional(Schema.DateFromSelf),\n});\nexport type Notification = typeof NotificationSchema.Type;\n\n// ─── Reporting Config ───\n\nexport const ReportingFrequency = Schema.Literal(\n \"realtime\",\n \"milestone\",\n \"hourly\",\n \"daily\",\n);\nexport type ReportingFrequency = typeof ReportingFrequency.Type;\n\nexport const ReportingDetailLevel = Schema.Literal(\n \"minimal\",\n \"summary\",\n \"detailed\",\n);\nexport type ReportingDetailLevel = typeof ReportingDetailLevel.Type;\n\nexport const ReportingConfigSchema = Schema.Struct({\n frequency: ReportingFrequency,\n channel: NotificationChannel,\n detail: ReportingDetailLevel,\n streaming: Schema.Boolean,\n});\nexport type ReportingConfig = typeof ReportingConfigSchema.Type;\n","import { Schema } from \"effect\";\n\nexport const InterruptTrigger = Schema.Literal(\n \"error\",\n \"uncertainty\",\n \"high-cost\",\n \"critical-decision\",\n \"user-requested\",\n \"custom\",\n);\nexport type InterruptTrigger = typeof InterruptTrigger.Type;\n\nexport const InterruptSeverity = Schema.Literal(\"low\", \"medium\", \"high\", \"critical\");\nexport type InterruptSeverity = typeof InterruptSeverity.Type;\n\nexport const InterruptRuleSchema = Schema.Struct({\n trigger: InterruptTrigger,\n severity: InterruptSeverity,\n threshold: Schema.optional(Schema.Number),\n enabled: Schema.Boolean,\n});\nexport type InterruptRule = typeof InterruptRuleSchema.Type;\n\nexport const InterruptEventSchema = Schema.Struct({\n id: Schema.String,\n trigger: InterruptTrigger,\n severity: InterruptSeverity,\n agentId: Schema.String,\n taskId: Schema.String,\n message: Schema.String,\n context: Schema.optional(Schema.Unknown),\n timestamp: Schema.DateFromSelf,\n acknowledged: Schema.Boolean,\n});\nexport type InterruptEvent = typeof InterruptEventSchema.Type;\n","import { Schema } from \"effect\";\nimport { SessionId } from \"./mode.js\";\n\nexport const CollaborationStatus = Schema.Literal(\"active\", \"paused\", \"ended\");\nexport type CollaborationStatus = typeof CollaborationStatus.Type;\n\nexport const QuestionStyle = Schema.Literal(\"inline\", \"batch\", \"separate\");\nexport type QuestionStyle = typeof QuestionStyle.Type;\n\nexport const CollaborationSessionSchema = Schema.Struct({\n id: SessionId,\n agentId: Schema.String,\n taskId: Schema.String,\n status: CollaborationStatus,\n thinkingVisible: Schema.Boolean,\n streamingEnabled: Schema.Boolean,\n questionStyle: QuestionStyle,\n rollbackEnabled: Schema.Boolean,\n startedAt: Schema.DateFromSelf,\n endedAt: Schema.optional(Schema.DateFromSelf),\n});\nexport type CollaborationSession = typeof CollaborationSessionSchema.Type;\n\nexport const CollaborationMessageType = Schema.Literal(\n \"thought\", \"question\", \"answer\", \"suggestion\", \"update\", \"action\",\n);\nexport type CollaborationMessageType = typeof CollaborationMessageType.Type;\n\nexport const CollaborationMessageSchema = Schema.Struct({\n id: Schema.String,\n sessionId: SessionId,\n type: CollaborationMessageType,\n sender: Schema.Literal(\"agent\", \"user\"),\n content: Schema.String,\n timestamp: Schema.DateFromSelf,\n});\nexport type CollaborationMessage = typeof CollaborationMessageSchema.Type;\n","import { Schema } from \"effect\";\n\nexport const ApprovalAction = Schema.Literal(\"auto-approve\", \"auto-reject\", \"ask\");\nexport type ApprovalAction = typeof ApprovalAction.Type;\n\nexport const ApprovalPatternSchema = Schema.Struct({\n id: Schema.String,\n taskType: Schema.String,\n costThreshold: Schema.optional(Schema.Number),\n action: ApprovalAction,\n confidence: Schema.Number,\n occurrences: Schema.Number,\n lastSeen: Schema.DateFromSelf,\n});\nexport type ApprovalPattern = typeof ApprovalPatternSchema.Type;\n\nexport const InterruptionTolerance = Schema.Literal(\"low\", \"medium\", \"high\");\nexport type InterruptionTolerance = typeof InterruptionTolerance.Type;\n\nexport const UserPreferenceSchema = Schema.Struct({\n userId: Schema.String,\n learningEnabled: Schema.Boolean,\n interruptionTolerance: InterruptionTolerance,\n preferredMode: Schema.optional(Schema.String),\n approvalPatterns: Schema.Array(ApprovalPatternSchema),\n lastUpdated: Schema.DateFromSelf,\n});\nexport type UserPreference = typeof UserPreferenceSchema.Type;\n","import { Schema } from \"effect\";\nimport { InteractionModeType } from \"./mode.js\";\nimport { CheckpointConfigSchema } from \"./checkpoint.js\";\nimport { ReportingConfigSchema } from \"./notification.js\";\nimport { InterruptRuleSchema } from \"./interrupt.js\";\n\n// ─── Escalation / De-escalation rules ───\n\nexport const EscalationConditionType = Schema.Literal(\n \"uncertainty\",\n \"cost\",\n \"duration\",\n \"user-active\",\n \"confidence\",\n \"consecutive-approvals\",\n);\nexport type EscalationConditionType = typeof EscalationConditionType.Type;\n\nexport const EscalationConditionSchema = Schema.Struct({\n type: EscalationConditionType,\n threshold: Schema.Number,\n});\nexport type EscalationCondition = typeof EscalationConditionSchema.Type;\n\nexport const ModeTransitionRuleSchema = Schema.Struct({\n from: InteractionModeType,\n to: InteractionModeType,\n conditions: Schema.Array(EscalationConditionSchema),\n});\nexport type ModeTransitionRule = typeof ModeTransitionRuleSchema.Type;\n\n// ─── Full Interaction Config ───\n\nexport const InteractionConfigSchema = Schema.Struct({\n defaultMode: InteractionModeType,\n interruptRules: Schema.Array(InterruptRuleSchema),\n reporting: ReportingConfigSchema,\n checkpoints: Schema.optional(CheckpointConfigSchema),\n escalationRules: Schema.Array(ModeTransitionRuleSchema),\n deescalationRules: Schema.Array(ModeTransitionRuleSchema),\n learningEnabled: Schema.Boolean,\n});\nexport type InteractionConfig = typeof InteractionConfigSchema.Type;\n\n// ─── Default Config ───\n\nexport const defaultInteractionConfig: InteractionConfig = {\n defaultMode: \"autonomous\",\n interruptRules: [\n { trigger: \"error\", severity: \"high\", enabled: true },\n { trigger: \"uncertainty\", severity: \"medium\", threshold: 0.3, enabled: true },\n { trigger: \"high-cost\", severity: \"medium\", threshold: 10.0, enabled: true },\n { trigger: \"critical-decision\", severity: \"critical\", enabled: true },\n ],\n reporting: {\n frequency: \"milestone\",\n channel: \"event-bus\",\n detail: \"summary\",\n streaming: false,\n },\n escalationRules: [\n {\n from: \"autonomous\",\n to: \"supervised\",\n conditions: [{ type: \"uncertainty\", threshold: 0.3 }],\n },\n {\n from: \"supervised\",\n to: \"collaborative\",\n conditions: [\n { type: \"uncertainty\", threshold: 0.5 },\n { type: \"user-active\", threshold: 1 },\n ],\n },\n ],\n deescalationRules: [\n {\n from: \"collaborative\",\n to: \"autonomous\",\n conditions: [\n { type: \"confidence\", threshold: 0.9 },\n { type: \"consecutive-approvals\", threshold: 3 },\n ],\n },\n ],\n learningEnabled: true,\n};\n","import { Data } from \"effect\";\n\n// ─── Base interaction error ───\nexport class InteractionError extends Data.TaggedError(\"InteractionError\")<{\n readonly message: string;\n readonly cause?: unknown;\n}> {}\n\n// ─── Invalid mode transition ───\nexport class ModeError extends Data.TaggedError(\"ModeError\")<{\n readonly from: string;\n readonly to: string;\n readonly reason: string;\n}> {}\n\n// ─── Checkpoint operation failed ───\nexport class CheckpointError extends Data.TaggedError(\"CheckpointError\")<{\n readonly checkpointId: string;\n readonly message: string;\n}> {}\n\n// ─── No active session ───\nexport class SessionNotFoundError extends Data.TaggedError(\"SessionNotFoundError\")<{\n readonly sessionId: string;\n}> {}\n\n// ─── Notification delivery failed ───\nexport class NotificationError extends Data.TaggedError(\"NotificationError\")<{\n readonly channel: string;\n readonly message: string;\n readonly cause?: unknown;\n}> {}\n\n// ─── User input timeout ───\nexport class InputTimeoutError extends Data.TaggedError(\"InputTimeoutError\")<{\n readonly timeoutMs: number;\n readonly message: string;\n}> {}\n\n// ─── Union type ───\nexport type InteractionErrors =\n | InteractionError\n | ModeError\n | CheckpointError\n | SessionNotFoundError\n | NotificationError\n | InputTimeoutError;\n","import { Context, Effect, Layer } from \"effect\";\nimport type { InteractionModeType } from \"../types/mode.js\";\nimport type { SessionId } from \"../types/mode.js\";\nimport type {\n Notification,\n NotificationChannel,\n NotificationPriority,\n} from \"../types/notification.js\";\nimport type { Checkpoint } from \"../types/checkpoint.js\";\nimport type { CollaborationSession, CollaborationMessage } from \"../types/collaboration.js\";\nimport type { UserPreference } from \"../types/preference.js\";\nimport type { InteractionErrors, CheckpointError, SessionNotFoundError } from \"../errors/errors.js\";\nimport { ModeSwitcher } from \"./mode-switcher.js\";\nimport { NotificationService } from \"./notification-service.js\";\nimport { CheckpointService } from \"./checkpoint-service.js\";\nimport { CollaborationService } from \"./collaboration-service.js\";\nimport { PreferenceLearner } from \"./preference-learner.js\";\nimport { EventBus } from \"@reactive-agents/core\";\n\nexport class InteractionManager extends Context.Tag(\"InteractionManager\")<\n InteractionManager,\n {\n // ─── Mode management ───\n readonly getMode: (agentId: string) => Effect.Effect<InteractionModeType>;\n readonly switchMode: (\n agentId: string,\n mode: InteractionModeType,\n ) => Effect.Effect<void, InteractionErrors>;\n readonly evaluateTransition: (\n agentId: string,\n context: {\n confidence?: number;\n cost?: number;\n durationMs?: number;\n userActive?: boolean;\n consecutiveApprovals?: number;\n },\n ) => Effect.Effect<InteractionModeType | null>;\n\n // ─── Notifications ───\n readonly notify: (params: {\n readonly agentId: string;\n readonly channel: NotificationChannel;\n readonly priority: NotificationPriority;\n readonly title: string;\n readonly body: string;\n }) => Effect.Effect<Notification, InteractionErrors>;\n readonly listUnread: () => Effect.Effect<readonly Notification[]>;\n readonly markRead: (notificationId: string) => Effect.Effect<void>;\n\n // ─── Checkpoints (supervised mode) ───\n readonly createCheckpoint: (params: {\n agentId: string;\n taskId: string;\n milestoneName: string;\n description: string;\n }) => Effect.Effect<Checkpoint>;\n readonly resolveCheckpoint: (\n checkpointId: string,\n status: \"approved\" | \"rejected\",\n comment?: string,\n ) => Effect.Effect<Checkpoint, CheckpointError>;\n readonly listPendingCheckpoints: (\n agentId?: string,\n ) => Effect.Effect<readonly Checkpoint[]>;\n\n // ─── Collaboration (collaborative mode) ───\n readonly startCollaboration: (params: {\n agentId: string;\n taskId: string;\n thinkingVisible?: boolean;\n }) => Effect.Effect<CollaborationSession>;\n readonly endCollaboration: (\n sessionId: SessionId,\n ) => Effect.Effect<void, SessionNotFoundError>;\n readonly sendCollaborationMessage: (params: {\n sessionId: SessionId;\n type: CollaborationMessage[\"type\"];\n sender: \"agent\" | \"user\";\n content: string;\n }) => Effect.Effect<CollaborationMessage, SessionNotFoundError>;\n\n // ─── Preferences ───\n readonly getPreference: (userId: string) => Effect.Effect<UserPreference>;\n readonly shouldAutoApprove: (params: {\n userId: string;\n taskType: string;\n cost?: number;\n }) => Effect.Effect<boolean>;\n }\n>() {}\n\nexport const InteractionManagerLive = Layer.effect(\n InteractionManager,\n Effect.gen(function* () {\n const modeSwitcher = yield* ModeSwitcher;\n const notifications = yield* NotificationService;\n const checkpoints = yield* CheckpointService;\n const collaboration = yield* CollaborationService;\n const preferences = yield* PreferenceLearner;\n const eventBus = yield* EventBus;\n\n return {\n // Mode\n getMode: (agentId) => modeSwitcher.getMode(agentId),\n\n switchMode: (agentId, mode) =>\n Effect.gen(function* () {\n yield* modeSwitcher.setMode(agentId, mode);\n yield* eventBus.publish({\n _tag: \"Custom\",\n type: \"interaction.mode-changed\",\n payload: { agentId, mode },\n });\n }),\n\n evaluateTransition: (agentId, context) =>\n modeSwitcher.evaluateTransition(agentId, context),\n\n // Notifications\n notify: (params) => notifications.send({ ...params, data: undefined }),\n listUnread: () => notifications.listUnread(),\n markRead: (notificationId) => notifications.markRead(notificationId),\n\n // Checkpoints\n createCheckpoint: (params) => checkpoints.createCheckpoint(params),\n resolveCheckpoint: (id, status, comment) =>\n checkpoints.resolveCheckpoint(id, status, comment),\n listPendingCheckpoints: (agentId) => checkpoints.listPending(agentId),\n\n // Collaboration\n startCollaboration: (params) => collaboration.startSession(params),\n endCollaboration: (sessionId) => collaboration.endSession(sessionId),\n sendCollaborationMessage: (params) => collaboration.sendMessage(params),\n\n // Preferences\n getPreference: (userId) => preferences.getPreference(userId),\n shouldAutoApprove: (params) => preferences.shouldAutoApprove(params),\n };\n }),\n);\n","import { Context, Effect, Layer, Ref } from \"effect\";\nimport type { InteractionModeType } from \"../types/mode.js\";\nimport type { InteractionConfig, ModeTransitionRule } from \"../types/config.js\";\nimport { defaultInteractionConfig } from \"../types/config.js\";\nimport type { ModeError } from \"../errors/errors.js\";\nimport { EventBus } from \"@reactive-agents/core\";\n\nexport class ModeSwitcher extends Context.Tag(\"ModeSwitcher\")<\n ModeSwitcher,\n {\n readonly getMode: (agentId: string) => Effect.Effect<InteractionModeType>;\n\n readonly setMode: (\n agentId: string,\n targetMode: InteractionModeType,\n ) => Effect.Effect<void, ModeError>;\n\n readonly evaluateTransition: (\n agentId: string,\n context: {\n confidence?: number;\n cost?: number;\n durationMs?: number;\n userActive?: boolean;\n consecutiveApprovals?: number;\n },\n ) => Effect.Effect<InteractionModeType | null>;\n }\n>() {}\n\nexport const ModeSwitcherLive = (\n config: InteractionConfig = defaultInteractionConfig,\n) =>\n Layer.effect(\n ModeSwitcher,\n Effect.gen(function* () {\n const eventBus = yield* EventBus;\n const modesRef = yield* Ref.make<Map<string, InteractionModeType>>(new Map());\n\n const checkConditions = (\n rule: ModeTransitionRule,\n context: {\n confidence?: number;\n cost?: number;\n durationMs?: number;\n userActive?: boolean;\n consecutiveApprovals?: number;\n },\n ): boolean => {\n return rule.conditions.every((condition) => {\n switch (condition.type) {\n case \"uncertainty\":\n return context.confidence !== undefined && context.confidence < condition.threshold;\n case \"cost\":\n return context.cost !== undefined && context.cost > condition.threshold;\n case \"duration\":\n return context.durationMs !== undefined && context.durationMs > condition.threshold;\n case \"user-active\":\n return context.userActive === true;\n case \"confidence\":\n return context.confidence !== undefined && context.confidence >= condition.threshold;\n case \"consecutive-approvals\":\n return (\n context.consecutiveApprovals !== undefined &&\n context.consecutiveApprovals >= condition.threshold\n );\n default:\n return false;\n }\n });\n };\n\n return {\n getMode: (agentId) =>\n Ref.get(modesRef).pipe(\n Effect.map((m) => m.get(agentId) ?? config.defaultMode),\n ),\n\n setMode: (agentId, targetMode) =>\n Effect.gen(function* () {\n const currentMode = yield* Ref.get(modesRef).pipe(\n Effect.map((m) => m.get(agentId) ?? config.defaultMode),\n );\n\n if (currentMode === targetMode) return;\n\n yield* Ref.update(modesRef, (m) => {\n const next = new Map(m);\n next.set(agentId, targetMode);\n return next;\n });\n\n yield* eventBus.publish({\n _tag: \"Custom\",\n type: \"interaction.mode-changed\",\n payload: { agentId, from: currentMode, to: targetMode },\n });\n }),\n\n evaluateTransition: (agentId, context) =>\n Effect.gen(function* () {\n const currentMode = yield* Ref.get(modesRef).pipe(\n Effect.map((m) => m.get(agentId) ?? config.defaultMode),\n );\n\n // Check escalation rules first\n for (const rule of config.escalationRules) {\n if (rule.from === currentMode && checkConditions(rule, context)) {\n return rule.to;\n }\n }\n\n // Then check de-escalation rules\n for (const rule of config.deescalationRules) {\n if (rule.from === currentMode && checkConditions(rule, context)) {\n return rule.to;\n }\n }\n\n return null;\n }),\n };\n }),\n );\n","// File: src/services/notification-service.ts\nimport { Context, Effect, Layer, Ref } from \"effect\";\nimport { ulid } from \"ulid\";\nimport type {\n Notification,\n NotificationChannel,\n NotificationPriority,\n} from \"../types/notification.js\";\nimport type { NotificationError } from \"../errors/errors.js\";\nimport { EventBus } from \"@reactive-agents/core\";\n\n// ─── Service Tag ───\n\nexport class NotificationService extends Context.Tag(\"NotificationService\")<\n NotificationService,\n {\n /** Send a notification to user via configured channel. */\n readonly send: (params: {\n readonly agentId: string;\n readonly channel: NotificationChannel;\n readonly priority: NotificationPriority;\n readonly title: string;\n readonly body: string;\n readonly data?: unknown;\n }) => Effect.Effect<Notification, NotificationError>;\n\n /** List unread notifications. */\n readonly listUnread: () => Effect.Effect<readonly Notification[]>;\n\n /** Mark a notification as read. */\n readonly markRead: (notificationId: string) => Effect.Effect<void>;\n }\n>() {}\n\n// ─── Live Layer ───\n\nexport const NotificationServiceLive = Layer.effect(\n NotificationService,\n Effect.gen(function* () {\n const eventBus = yield* EventBus;\n const notificationsRef = yield* Ref.make<Map<string, Notification>>(\n new Map(),\n );\n\n return {\n send: (params) =>\n Effect.gen(function* () {\n const notification: Notification = {\n id: ulid(),\n agentId: params.agentId,\n channel: params.channel,\n priority: params.priority,\n title: params.title,\n body: params.body,\n data: params.data,\n createdAt: new Date(),\n readAt: undefined,\n };\n\n // Store notification\n yield* Ref.update(notificationsRef, (m) => {\n const next = new Map(m);\n next.set(notification.id, notification);\n return next;\n });\n\n // Emit via event bus for subscribers\n yield* eventBus.publish({\n _tag: \"Custom\",\n type: \"interaction.notification\",\n payload: notification,\n });\n\n return notification;\n }),\n\n listUnread: () =>\n Ref.get(notificationsRef).pipe(\n Effect.map((m) =>\n Array.from(m.values()).filter((n) => n.readAt == null),\n ),\n ),\n\n markRead: (notificationId) =>\n Ref.update(notificationsRef, (m) => {\n const next = new Map(m);\n const n = next.get(notificationId);\n if (n) {\n next.set(notificationId, { ...n, readAt: new Date() });\n }\n return next;\n }),\n };\n }),\n);\n","import { Context, Effect, Layer, Ref } from \"effect\";\nimport type { Checkpoint, CheckpointStatus } from \"../types/checkpoint.js\";\nimport { CheckpointError } from \"../errors/errors.js\";\nimport { EventBus } from \"@reactive-agents/core\";\n\nexport class CheckpointService extends Context.Tag(\"CheckpointService\")<\n CheckpointService,\n {\n readonly createCheckpoint: (params: {\n agentId: string;\n taskId: string;\n milestoneName: string;\n description: string;\n }) => Effect.Effect<Checkpoint>;\n\n readonly resolveCheckpoint: (\n checkpointId: string,\n status: \"approved\" | \"rejected\",\n comment?: string,\n ) => Effect.Effect<Checkpoint, CheckpointError>;\n\n readonly getCheckpoint: (\n checkpointId: string,\n ) => Effect.Effect<Checkpoint, CheckpointError>;\n\n readonly listPending: (\n agentId?: string,\n ) => Effect.Effect<readonly Checkpoint[]>;\n }\n>() {}\n\nexport const CheckpointServiceLive = Layer.effect(\n CheckpointService,\n Effect.gen(function* () {\n const eventBus = yield* EventBus;\n const checkpointsRef = yield* Ref.make<Map<string, Checkpoint>>(new Map());\n\n return {\n createCheckpoint: (params) =>\n Effect.gen(function* () {\n const checkpoint: Checkpoint = {\n id: crypto.randomUUID(),\n agentId: params.agentId,\n taskId: params.taskId,\n milestoneName: params.milestoneName,\n description: params.description,\n status: \"pending\",\n createdAt: new Date(),\n };\n\n yield* Ref.update(checkpointsRef, (m) => {\n const next = new Map(m);\n next.set(checkpoint.id, checkpoint);\n return next;\n });\n\n yield* eventBus.publish({\n _tag: \"Custom\",\n type: \"interaction.checkpoint-created\",\n payload: checkpoint,\n });\n\n return checkpoint;\n }),\n\n resolveCheckpoint: (checkpointId, status, comment) =>\n Effect.gen(function* () {\n const checkpoints = yield* Ref.get(checkpointsRef);\n const existing = checkpoints.get(checkpointId);\n if (!existing) {\n return yield* Effect.fail(\n new CheckpointError({ checkpointId, message: \"Checkpoint not found\" }),\n );\n }\n\n const resolved: Checkpoint = {\n ...existing,\n status,\n resolvedAt: new Date(),\n userComment: comment,\n };\n\n yield* Ref.update(checkpointsRef, (m) => {\n const next = new Map(m);\n next.set(checkpointId, resolved);\n return next;\n });\n\n yield* eventBus.publish({\n _tag: \"Custom\",\n type: \"interaction.checkpoint-resolved\",\n payload: resolved,\n });\n\n return resolved;\n }),\n\n getCheckpoint: (checkpointId) =>\n Effect.gen(function* () {\n const checkpoints = yield* Ref.get(checkpointsRef);\n const cp = checkpoints.get(checkpointId);\n if (!cp) {\n return yield* Effect.fail(\n new CheckpointError({ checkpointId, message: \"Checkpoint not found\" }),\n );\n }\n return cp;\n }),\n\n listPending: (agentId) =>\n Ref.get(checkpointsRef).pipe(\n Effect.map((m) =>\n Array.from(m.values()).filter(\n (cp) => cp.status === \"pending\" && (!agentId || cp.agentId === agentId),\n ),\n ),\n ),\n };\n }),\n);\n","import { Context, Effect, Layer, Ref } from \"effect\";\nimport type { SessionId } from \"../types/mode.js\";\nimport type { CollaborationSession, CollaborationMessage } from \"../types/collaboration.js\";\nimport { SessionNotFoundError } from \"../errors/errors.js\";\nimport { EventBus } from \"@reactive-agents/core\";\n\nexport class CollaborationService extends Context.Tag(\"CollaborationService\")<\n CollaborationService,\n {\n readonly startSession: (params: {\n agentId: string;\n taskId: string;\n thinkingVisible?: boolean;\n streamingEnabled?: boolean;\n }) => Effect.Effect<CollaborationSession>;\n\n readonly endSession: (\n sessionId: SessionId,\n ) => Effect.Effect<void, SessionNotFoundError>;\n\n readonly sendMessage: (params: {\n sessionId: SessionId;\n type: CollaborationMessage[\"type\"];\n sender: \"agent\" | \"user\";\n content: string;\n }) => Effect.Effect<CollaborationMessage, SessionNotFoundError>;\n\n readonly getMessages: (\n sessionId: SessionId,\n ) => Effect.Effect<readonly CollaborationMessage[], SessionNotFoundError>;\n\n readonly getSession: (\n sessionId: SessionId,\n ) => Effect.Effect<CollaborationSession, SessionNotFoundError>;\n }\n>() {}\n\nexport const CollaborationServiceLive = Layer.effect(\n CollaborationService,\n Effect.gen(function* () {\n const eventBus = yield* EventBus;\n const sessionsRef = yield* Ref.make<Map<string, CollaborationSession>>(new Map());\n const messagesRef = yield* Ref.make<Map<string, CollaborationMessage[]>>(new Map());\n\n return {\n startSession: (params) =>\n Effect.gen(function* () {\n const sessionId = crypto.randomUUID() as SessionId;\n const session: CollaborationSession = {\n id: sessionId,\n agentId: params.agentId,\n taskId: params.taskId,\n status: \"active\",\n thinkingVisible: params.thinkingVisible ?? true,\n streamingEnabled: params.streamingEnabled ?? false,\n questionStyle: \"inline\",\n rollbackEnabled: false,\n startedAt: new Date(),\n };\n\n yield* Ref.update(sessionsRef, (m) => {\n const next = new Map(m);\n next.set(sessionId, session);\n return next;\n });\n yield* Ref.update(messagesRef, (m) => {\n const next = new Map(m);\n next.set(sessionId, []);\n return next;\n });\n\n yield* eventBus.publish({\n _tag: \"Custom\",\n type: \"interaction.collaboration-started\",\n payload: session,\n });\n\n return session;\n }),\n\n endSession: (sessionId) =>\n Effect.gen(function* () {\n const sessions = yield* Ref.get(sessionsRef);\n const session = sessions.get(sessionId);\n if (!session) {\n return yield* Effect.fail(new SessionNotFoundError({ sessionId }));\n }\n\n yield* Ref.update(sessionsRef, (m) => {\n const next = new Map(m);\n next.set(sessionId, { ...session, status: \"ended\" as const, endedAt: new Date() });\n return next;\n });\n }),\n\n sendMessage: (params) =>\n Effect.gen(function* () {\n const sessions = yield* Ref.get(sessionsRef);\n if (!sessions.has(params.sessionId)) {\n return yield* Effect.fail(new SessionNotFoundError({ sessionId: params.sessionId }));\n }\n\n const message: CollaborationMessage = {\n id: crypto.randomUUID(),\n sessionId: params.sessionId,\n type: params.type,\n sender: params.sender,\n content: params.content,\n timestamp: new Date(),\n };\n\n yield* Ref.update(messagesRef, (m) => {\n const next = new Map(m);\n const existing = next.get(params.sessionId) ?? [];\n next.set(params.sessionId, [...existing, message]);\n return next;\n });\n\n return message;\n }),\n\n getMessages: (sessionId) =>\n Effect.gen(function* () {\n const sessions = yield* Ref.get(sessionsRef);\n if (!sessions.has(sessionId)) {\n return yield* Effect.fail(new SessionNotFoundError({ sessionId }));\n }\n const msgs = yield* Ref.get(messagesRef);\n return msgs.get(sessionId) ?? [];\n }),\n\n getSession: (sessionId) =>\n Effect.gen(function* () {\n const sessions = yield* Ref.get(sessionsRef);\n const session = sessions.get(sessionId);\n if (!session) {\n return yield* Effect.fail(new SessionNotFoundError({ sessionId }));\n }\n return session;\n }),\n };\n }),\n);\n","import { Context, Effect, Layer, Ref } from \"effect\";\nimport type { UserPreference, ApprovalPattern } from \"../types/preference.js\";\n\nexport class PreferenceLearner extends Context.Tag(\"PreferenceLearner\")<\n PreferenceLearner,\n {\n readonly getPreference: (userId: string) => Effect.Effect<UserPreference>;\n\n readonly recordApproval: (params: {\n userId: string;\n taskType: string;\n approved: boolean;\n cost?: number;\n }) => Effect.Effect<void>;\n\n readonly shouldAutoApprove: (params: {\n userId: string;\n taskType: string;\n cost?: number;\n }) => Effect.Effect<boolean>;\n\n readonly updateTolerance: (\n userId: string,\n tolerance: \"low\" | \"medium\" | \"high\",\n ) => Effect.Effect<void>;\n }\n>() {}\n\nexport const PreferenceLearnerLive = Layer.effect(\n PreferenceLearner,\n Effect.gen(function* () {\n const prefsRef = yield* Ref.make<Map<string, UserPreference>>(new Map());\n\n const getOrCreatePref = (userId: string): Effect.Effect<UserPreference> =>\n Ref.get(prefsRef).pipe(\n Effect.map((m) =>\n m.get(userId) ?? {\n userId,\n learningEnabled: true,\n interruptionTolerance: \"medium\" as const,\n approvalPatterns: [],\n lastUpdated: new Date(),\n },\n ),\n );\n\n return {\n getPreference: (userId) => getOrCreatePref(userId),\n\n recordApproval: (params) =>\n Effect.gen(function* () {\n const pref = yield* getOrCreatePref(params.userId);\n const existing = pref.approvalPatterns.find(\n (p) => p.taskType === params.taskType,\n );\n\n let updatedPatterns: ApprovalPattern[];\n\n if (existing) {\n updatedPatterns = pref.approvalPatterns.map((p) =>\n p.taskType === params.taskType\n ? {\n ...p,\n occurrences: p.occurrences + 1,\n confidence: Math.min(1.0, p.confidence + 0.1),\n action: params.approved ? (\"auto-approve\" as const) : p.action,\n lastSeen: new Date(),\n }\n : p,\n );\n } else {\n updatedPatterns = [\n ...pref.approvalPatterns,\n {\n id: crypto.randomUUID(),\n taskType: params.taskType,\n costThreshold: params.cost,\n action: params.approved ? (\"auto-approve\" as const) : (\"ask\" as const),\n confidence: 0.3,\n occurrences: 1,\n lastSeen: new Date(),\n },\n ];\n }\n\n yield* Ref.update(prefsRef, (m) => {\n const next = new Map(m);\n next.set(params.userId, {\n ...pref,\n approvalPatterns: updatedPatterns,\n lastUpdated: new Date(),\n });\n return next;\n });\n }),\n\n shouldAutoApprove: (params) =>\n Effect.gen(function* () {\n const pref = yield* getOrCreatePref(params.userId);\n if (!pref.learningEnabled) return false;\n\n const pattern = pref.approvalPatterns.find(\n (p) => p.taskType === params.taskType,\n );\n if (!pattern) return false;\n\n // Need enough confidence and occurrences\n if (pattern.confidence < 0.7 || pattern.occurrences < 3) return false;\n if (pattern.action !== \"auto-approve\") return false;\n\n // Check cost threshold\n if (params.cost && pattern.costThreshold && params.cost > pattern.costThreshold) {\n return false;\n }\n\n return true;\n }),\n\n updateTolerance: (userId, tolerance) =>\n Effect.gen(function* () {\n const pref = yield* getOrCreatePref(userId);\n yield* Ref.update(prefsRef, (m) => {\n const next = new Map(m);\n next.set(userId, {\n ...pref,\n interruptionTolerance: tolerance,\n lastUpdated: new Date(),\n });\n return next;\n });\n }),\n };\n }),\n);\n","import { Layer } from \"effect\";\nimport type { InteractionConfig } from \"./types/config.js\";\nimport { defaultInteractionConfig } from \"./types/config.js\";\nimport { NotificationServiceLive } from \"./services/notification-service.js\";\nimport { ModeSwitcherLive } from \"./services/mode-switcher.js\";\nimport { CheckpointServiceLive } from \"./services/checkpoint-service.js\";\nimport { CollaborationServiceLive } from \"./services/collaboration-service.js\";\nimport { PreferenceLearnerLive } from \"./services/preference-learner.js\";\nimport { InteractionManagerLive } from \"./services/interaction-manager.js\";\n\n/**\n * Create the Interaction layer (Phase 3 — all 5 modes).\n *\n * Provides: InteractionManager, ModeSwitcher, NotificationService,\n * CheckpointService, CollaborationService, PreferenceLearner\n * Requires: EventBus (from @reactive-agents/core)\n */\nexport const createInteractionLayer = (\n config: InteractionConfig = defaultInteractionConfig,\n) => {\n // Leaf services (depend only on EventBus from L1 Core)\n const NotificationLayer = NotificationServiceLive;\n const SwitcherLayer = ModeSwitcherLive(config);\n const CheckpointLayer = CheckpointServiceLive;\n const CollaborationLayer = CollaborationServiceLive;\n const PreferenceLayer = PreferenceLearnerLive;\n\n const LeafLayers = Layer.mergeAll(\n NotificationLayer,\n SwitcherLayer,\n CheckpointLayer,\n CollaborationLayer,\n PreferenceLayer,\n );\n\n // InteractionManager orchestrates all services\n const ManagerLayer = InteractionManagerLive.pipe(Layer.provide(LeafLayers));\n\n return Layer.mergeAll(ManagerLayer, LeafLayers);\n};\n"],"mappings":"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","names":["Schema","Schema","Schema","Schema","Schema","Schema","Schema","Schema","Context","Effect","Layer","Context","Effect","Layer","Ref","EventBus","Context","Effect","Layer","Ref","EventBus","Context","Layer","Effect","Ref","Context","Effect","Layer","Ref","EventBus","Context","Layer","Effect","Ref","Context","Effect","Layer","Ref","EventBus","Context","Layer","Effect","Layer","Layer"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@reactive-agents/interaction",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsup --config ../../tsup.config.base.ts",
|
|
9
|
+
"typecheck": "tsc --noEmit",
|
|
10
|
+
"test": "bun test",
|
|
11
|
+
"test:watch": "bun test --watch"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"effect": "^3.10.0",
|
|
15
|
+
"@reactive-agents/core": "0.1.0",
|
|
16
|
+
"@reactive-agents/reasoning": "0.1.0",
|
|
17
|
+
"@reactive-agents/observability": "0.1.0",
|
|
18
|
+
"ulid": "^2.3.0"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"typescript": "^5.7.0",
|
|
22
|
+
"bun-types": "latest"
|
|
23
|
+
},
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/tylerjrbuell/reactive-agents-ts.git",
|
|
28
|
+
"directory": "packages/interaction"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist",
|
|
35
|
+
"README.md",
|
|
36
|
+
"LICENSE"
|
|
37
|
+
],
|
|
38
|
+
"exports": {
|
|
39
|
+
".": {
|
|
40
|
+
"types": "./dist/index.d.ts",
|
|
41
|
+
"import": "./dist/index.js",
|
|
42
|
+
"default": "./dist/index.js"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"description": "Interaction modes for Reactive Agents — 5 autonomy modes, checkpoints, and human collaboration",
|
|
46
|
+
"homepage": "https://tylerjrbuell.github.io/reactive-agents-ts/",
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/tylerjrbuell/reactive-agents-ts/issues"
|
|
49
|
+
}
|
|
50
|
+
}
|