Member Junction
    Preparing search index...

    Abstract base class for agent management actions. Provides common functionality for validating permissions, loading entities, and managing agent metadata. Only the Agent Manager agent should be able to execute these actions.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    AuthorizesCaller: boolean

    True when the action authorizes its caller itself, so a public entry point such as the RunAction mutation may run it for an authenticated user without an MJ: Action Authorizations link. Set it only on an action that either checks an authorization the caller must hold, or reads and writes only with the caller's own permissions. Leave it false for an action that acts with more authority than its caller, or that reaches data or sends messages the caller chooses but could not otherwise reach.

    The engine reads the marker only from the class that runs, never from its parent classes. A subclass that overrides a marked action must declare the marker again.

    Methods

    • Get database provider with transaction support validation

      Returns { error?: ActionResultSimple; provider?: DatabaseProviderBase }

      // Example usage for implementing transactions in actions:
      const providerResult = this.getTransactionProvider();
      if (providerResult.error) return providerResult.error;
      const provider = providerResult.provider!;

      // Begin transaction for multi-record operations
      await provider.BeginTransaction();

      try {
      // Perform multiple database operations
      const agent = await md.GetEntityObject<MJAIAgentEntity>('MJ: AI Agents', contextUser);
      await agent.Save();

      const prompt = await md.GetEntityObject<MJAIPromptEntity>('MJ: AI Prompts', contextUser);
      await prompt.Save();

      // Commit transaction - all operations succeeded
      await provider.CommitTransaction();

      return { Success: true, ResultCode: 'SUCCESS', Message: 'All operations completed successfully' };

      } catch (transactionError) {
      // Rollback transaction on any error
      await provider.RollbackTransaction();
      throw transactionError; // Re-throw to be caught by outer try-catch
      }