Add preconfigured Workflow creation agent (#13855)

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This commit is contained in:
Abdul Rahman
2025-08-27 17:50:38 +05:30
committed by GitHub
parent 28de78bfc0
commit 9098df7ddf
50 changed files with 1949 additions and 339 deletions
@@ -182,4 +182,39 @@ export class AiModelRegistryService {
refreshRegistry(): void {
this.buildModelRegistry();
}
async resolveModelForAgent(agent: { modelId: string } | null) {
const aiModel = this.getEffectiveModelConfig(agent?.modelId ?? 'auto');
await this.validateApiKey(aiModel.provider);
const registeredModel = this.getModel(aiModel.modelId);
if (!registeredModel) {
throw new Error(`Model ${aiModel.modelId} not found in registry`);
}
return registeredModel;
}
async validateApiKey(provider: ModelProvider): Promise<void> {
let apiKey: string | undefined;
switch (provider) {
case ModelProvider.OPENAI:
apiKey = this.twentyConfigService.get('OPENAI_API_KEY');
break;
case ModelProvider.ANTHROPIC:
apiKey = this.twentyConfigService.get('ANTHROPIC_API_KEY');
break;
case ModelProvider.OPENAI_COMPATIBLE:
apiKey = this.twentyConfigService.get('OPENAI_COMPATIBLE_API_KEY');
break;
default:
return;
}
if (!apiKey) {
throw new Error(`${provider.toUpperCase()} API key not configured`);
}
}
}
@@ -11,7 +11,7 @@ import {
generateSoftDeleteToolSchema,
getRecordInputSchema,
} from 'src/engine/metadata-modules/agent/utils/agent-tool-schema.utils';
import { isWorkflowRelatedObject } from 'src/engine/metadata-modules/agent/utils/is-workflow-related-object.util';
import { isWorkflowRunObject } from 'src/engine/metadata-modules/agent/utils/is-workflow-run-object.util';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { getObjectMetadataMapItemByNameSingular } from 'src/engine/metadata-modules/utils/get-object-metadata-map-item-by-name-singular.util';
import { WorkspacePermissionsCacheService } from 'src/engine/metadata-modules/workspace-permissions-cache/workspace-permissions-cache.service';
@@ -48,7 +48,7 @@ export class ToolService {
});
const filteredObjectMetadata = allObjectMetadata.filter(
(objectMetadata) => !isWorkflowRelatedObject(objectMetadata),
(objectMetadata) => !isWorkflowRunObject(objectMetadata),
);
filteredObjectMetadata.forEach((objectMetadata) => {