Files
twenty/packages/twenty-server/test/integration/metadata/suites/agent/successful-agent-deletion.integration-spec.ts
T
Félix Malfait 908aefe7c1 feat: replace hardcoded AI model constants with JSON seed catalog (#18818)
## Summary

- Replaces per-provider TypeScript constant files
(`openai-models.const.ts`, `anthropic-models.const.ts`, etc.) with a
single `ai-providers.json` catalog as the source of truth
- Adds runtime model discovery via AI SDK for self-hosted providers,
with `models.dev` enrichment for pricing/capabilities
- Introduces composite model IDs (`provider/modelId`) for canonical,
conflict-free identification
- Simplifies provider configuration: API keys are injected from
environment variables (e.g., `OPENAI_API_KEY`)
- Adds admin panel UI for provider management (add/remove/test), model
discovery, recommended model configuration, and default fast/smart model
selection per workspace
- Removes deprecated config variables (`AI_DISABLED_MODEL_IDS`,
`AUTO_ENABLE_NEW_AI_MODELS`, etc.)
- Adds database migration for composite model ID format

## Test plan

- [ ] Server typecheck passes
- [ ] Frontend typecheck passes
- [ ] Server unit tests pass
- [ ] Frontend unit tests pass
- [ ] CI pipeline green
- [ ] Admin panel AI tab loads correctly
- [ ] Provider discovery works for configured providers
- [ ] Model recommendation toggles persist
- [ ] Default fast/smart model selection works


Made with [Cursor](https://cursor.com)
2026-03-21 16:03:58 +01:00

42 lines
1.2 KiB
TypeScript

import { createOneAgent } from 'test/integration/metadata/suites/agent/utils/create-one-agent.util';
import { deleteOneAgent } from 'test/integration/metadata/suites/agent/utils/delete-one-agent.util';
import { findOneAgent } from 'test/integration/metadata/suites/agent/utils/find-one-agent.util';
describe('Agent deletion should succeed', () => {
it('should successfully delete a custom agent', async () => {
const { data: createData } = await createOneAgent({
expectToFail: false,
input: {
label: 'Agent To Delete',
prompt: 'This agent will be deleted',
modelId: 'openai/gpt-4.1',
},
});
const agentId = createData.createOneAgent.id;
const { data: findBeforeData } = await findOneAgent({
expectToFail: false,
input: { id: agentId },
});
expect(findBeforeData.findOneAgent.id).toBe(agentId);
const { data: deleteData } = await deleteOneAgent({
expectToFail: false,
input: { id: agentId },
});
expect(deleteData.deleteOneAgent).toMatchObject({
id: agentId,
});
const { errors: findAfterErrors } = await findOneAgent({
expectToFail: true,
input: { id: agentId },
});
expect(findAfterErrors).toBeDefined();
});
});