@memberjunction/ai-agent-manager-actions
Version:
Agent Management actions for creating and managing AI agents in MemberJunction
134 lines • 5.83 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LoadGetActionDetailsAction = exports.GetActionDetailsAction = void 0;
const global_1 = require("@memberjunction/global");
const core_1 = require("@memberjunction/core");
const base_agent_management_action_1 = require("./base-agent-management.action");
const actions_1 = require("@memberjunction/actions");
/**
* Gets detailed information about a specific action including all metadata,
* parameters, and result codes.
* This action is restricted to the Agent Manager agent only.
*
* @example
* ```typescript
* const result = await runAction({
* ActionName: 'Get Action Details',
* Params: [
* { Name: 'ActionID', Value: 'action-id' }
* ]
* });
* // Returns ActionDetails object in output params
* ```
*/
let GetActionDetailsAction = class GetActionDetailsAction extends base_agent_management_action_1.BaseAgentManagementAction {
async InternalRunAction(params) {
try {
// Validate permission
const permissionError = await this.validateAgentManagerPermission(params);
if (permissionError)
return permissionError;
// Extract parameters
const actionIDResult = this.getStringParam(params, 'ActionID');
if (actionIDResult.error)
return actionIDResult.error;
// Load the action
const md = this.getMetadata();
const action = await md.GetEntityObject('Actions', params.ContextUser);
if (!action) {
return {
Success: false,
ResultCode: 'FAILED',
Message: 'Failed to create Action entity object'
};
}
const loadResult = await action.Load(actionIDResult.value);
if (!loadResult) {
return {
Success: false,
ResultCode: 'NOT_FOUND',
Message: `Action with ID '${actionIDResult.value}' not found`
};
}
// Get action parameters and result codes in parallel
const rv = new core_1.RunView();
const viewsToRun = [
{
EntityName: 'Action Params',
ExtraFilter: `ActionID = '${action.ID}'`,
OrderBy: 'Sequence, Name',
ResultType: 'entity_object'
},
{
EntityName: 'Action Result Codes',
ExtraFilter: `ActionID = '${action.ID}'`,
OrderBy: 'ResultCode',
ResultType: 'entity_object'
}
];
// Run both views in parallel with a single database operation
const results = await rv.RunViews(viewsToRun, params.ContextUser);
const paramsResult = results[0];
const resultCodesResult = results[1];
const actionParams = paramsResult.Success ? (paramsResult.Results || []) : [];
const resultCodes = resultCodesResult.Success ? (resultCodesResult.Results || []) : [];
// Build the action details object
const actionDetails = {
ID: action.ID,
Name: action.Name,
Description: action.Description,
Type: action.Type,
Status: action.Status,
CategoryID: action.CategoryID,
Category: action.Category,
DriverClass: action.DriverClass,
Parameters: actionParams.map(p => ({
ID: p.ID,
Name: p.Name,
Type: p.Type,
ValueType: p.ValueType,
IsArray: p.IsArray,
Description: p.Description,
IsRequired: p.IsRequired,
DefaultValue: p.DefaultValue
})),
ResultCodes: resultCodes.map(rc => ({
ID: rc.ID,
ResultCode: rc.ResultCode,
IsSuccess: rc.IsSuccess,
Description: rc.Description
}))
};
// Add output parameter
params.Params.push({
Name: 'ActionDetails',
Value: actionDetails,
Type: 'Output'
});
return {
Success: true,
ResultCode: 'SUCCESS',
Message: `Successfully retrieved details for action '${action.Name}'`,
Params: params.Params
};
}
catch (e) {
return this.handleError(e, 'get action details');
}
}
};
exports.GetActionDetailsAction = GetActionDetailsAction;
exports.GetActionDetailsAction = GetActionDetailsAction = __decorate([
(0, global_1.RegisterClass)(actions_1.BaseAction, "Get Action Details")
], GetActionDetailsAction);
function LoadGetActionDetailsAction() {
// This function exists to prevent tree shaking from removing the action class
}
exports.LoadGetActionDetailsAction = LoadGetActionDetailsAction;
//# sourceMappingURL=get-action-details.action.js.map