Class AgencyMemoryManager

Manages shared RAG memory for Agency collectives.

Remarks

This manager provides:

  • Initialization of dedicated data sources for agencies
  • Ingestion with role-based access control
  • Cross-GMI context queries with permission checks
  • Memory lifecycle management (retention, eviction)

Architecture:

AgencyMemoryManager

├─► VectorStoreManager (storage backend)

├─► AgencyRegistry (session state)

└─► Per-Agency Collections
└─► agency-{agencyId}-shared

Constructors

Methods

  • Broadcasts context from one GMI to all others in the agency. This is useful for sharing discoveries, decisions, or important updates.

    Parameters

    • agencyId: string

      Target agency

    • input: {
          content: string;
          senderGmiId: string;
          senderRoleId: string;
          broadcastType: "finding" | "decision" | "update" | "request" | "alert";
          priority?: "low" | "normal" | "high" | "critical";
          targetRoles?: string[];
          metadata?: Record<string, unknown>;
      }

      Broadcast input

      • content: string
      • senderGmiId: string
      • senderRoleId: string
      • broadcastType: "finding" | "decision" | "update" | "request" | "alert"
      • Optional priority?: "low" | "normal" | "high" | "critical"
      • Optional targetRoles?: string[]
      • Optional metadata?: Record<string, unknown>
    • Optional config: AgencyMemoryConfig

      Agency memory configuration

    Returns Promise<AgencyMemoryOperationResult>

    Operation result with broadcast metadata

    Example

    await memoryManager.broadcastToAgency(agencyId, {
    content: 'Found critical security vulnerability in auth module',
    senderGmiId: 'security-analyst-gmi',
    senderRoleId: 'security-analyst',
    broadcastType: 'finding',
    priority: 'high',
    });
  • Gets recent context contributions from specific roles. Enables GMIs to selectively query context from collaborators.

    Parameters

    • agencyId: string

      Target agency

    • options: {
          fromRoles: string[];
          categories?: ("context" | "finding" | "decision" | "communication" | "summary")[];
          requestingGmiId: string;
          requestingRoleId: string;
          limit?: number;
          minScore?: number;
      }

      Query options with role filtering

      • fromRoles: string[]
      • Optional categories?: ("context" | "finding" | "decision" | "communication" | "summary")[]
      • requestingGmiId: string
      • requestingRoleId: string
      • Optional limit?: number
      • Optional minScore?: number
    • Optional config: AgencyMemoryConfig

      Agency memory configuration

    Returns Promise<AgencyMemoryQueryResult>

    Query result filtered by contributor roles

    Example

    // Get recent findings from the researcher role
    const findings = await memoryManager.getContextFromRoles(agencyId, {
    fromRoles: ['researcher', 'analyst'],
    categories: ['finding', 'summary'],
    requestingGmiId: 'coordinator-gmi',
    requestingRoleId: 'coordinator',
    limit: 10,
    });
  • Shares a synthesis or summary across all GMIs in the agency. Typically used by coordinator or synthesizer roles.

    Parameters

    • agencyId: string

      Target agency

    • summary: {
          content: string;
          synthesizerId: string;
          synthesizerRoleId: string;
          sourceRoles?: string[];
          summaryType: "interim" | "final" | "action_items" | "consensus";
          metadata?: Record<string, unknown>;
      }

      Summary content and metadata

      • content: string
      • synthesizerId: string
      • synthesizerRoleId: string
      • Optional sourceRoles?: string[]
      • summaryType: "interim" | "final" | "action_items" | "consensus"
      • Optional metadata?: Record<string, unknown>
    • Optional config: AgencyMemoryConfig

      Agency memory configuration

    Returns Promise<AgencyMemoryOperationResult>

    Operation result

  • Records a decision made by the agency for future reference.

    Parameters

    • agencyId: string

      Target agency

    • decision: {
          content: string;
          decisionMakerId: string;
          decisionMakerRoleId: string;
          decisionType: "consensus" | "delegation" | "escalation" | "resolution";
          affectedRoles?: string[];
          rationale?: string;
          metadata?: Record<string, unknown>;
      }

      Decision details

      • content: string
      • decisionMakerId: string
      • decisionMakerRoleId: string
      • decisionType: "consensus" | "delegation" | "escalation" | "resolution"
      • Optional affectedRoles?: string[]
      • Optional rationale?: string
      • Optional metadata?: Record<string, unknown>
    • Optional config: AgencyMemoryConfig

      Agency memory configuration

    Returns Promise<AgencyMemoryOperationResult>

    Operation result

  • Gets all decisions made by the agency.

    Parameters

    • agencyId: string

      Target agency

    • options: {
          requestingGmiId: string;
          requestingRoleId: string;
          decisionTypes?: ("consensus" | "delegation" | "escalation" | "resolution")[];
          limit?: number;
      }

      Query options

      • requestingGmiId: string
      • requestingRoleId: string
      • Optional decisionTypes?: ("consensus" | "delegation" | "escalation" | "resolution")[]
      • Optional limit?: number
    • Optional config: AgencyMemoryConfig

      Agency memory configuration

    Returns Promise<AgencyMemoryQueryResult>

    Query result with decision chunks