import type { AppBskyNotificationListNotifications } from "@atproto/api"; import { allAgentTools, configAgentTools, requiredAgentTools, validAutomationLevels, validNotifTypes, } from "./const.ts"; import type { AutomationLevel, AutonomyDeclaration, ResponsibleParty, ResponsiblePartyType, } from "@voyager/autonomy-lexicon"; export type Notification = AppBskyNotificationListNotifications.Notification; // Re-export types from autonomy-lexicon package export type { AutomationLevel, AutonomyDeclaration, ResponsibleParty, ResponsiblePartyType, }; export type notifType = typeof validNotifTypes[number]; export type configAgentTool = typeof configAgentTools[number]; export type requiredAgentTool = typeof requiredAgentTools[number]; export type allAgentTool = typeof allAgentTools[number]; export type agentContextObject = { // state busy: boolean; sleeping: boolean; checkCount: number; reflectionCount: number; processingCount: number; proactiveCount: number; likeCount: number; repostCount: number; followCount: number; mentionCount: number; replyCount: number; quoteCount: number; notifCount: number; // required manual variables lettaProjectIdentifier: string; agentBskyHandle: string; agentBskyName: string; responsiblePartyName: string; // what person or org is responsible for this bot? responsiblePartyContact: string; // email or url for people to contact about bot // required variables with fallbacks agentBskyServiceUrl: string; automationLevel: AutomationLevel; supportedNotifTypes: notifType[]; supportedTools: allAgentTool[]; notifDelayMinimum: number; notifDelayMaximum: number; notifDelayMultiplier: number; reflectionDelayMinimum: number; reflectionDelayMaximum: number; proactiveDelayMinimum: number; proactiveDelayMaximum: number; wakeTime: number; sleepTime: number; timeZone: string; responsiblePartyType: string; // person / organization preserveAgentMemory: boolean; // if true, mount won't update existing memory blocks maxThreadPosts: number; // maximum number of posts to include in thread context // set automatically agentBskyDID: string; reflectionEnabled: boolean; proactiveEnabled: boolean; sleepEnabled: boolean; notifDelayCurrent: number; // optional automationDescription?: string; // short description of what this agent does disclosureUrl?: string; // url to a ToS/Privacy Policy style page responsiblePartyBsky?: string; // handle w/o @ or DID of responsible party externalServices?: string[]; // external tools/services this agent relies on }; export type memoryBlock = { label: string; description: string; readOnly: boolean; limit: number; value: string; };