feat(ai): add code interpreter for AI data analysis (#16559)
## Summary - Add code interpreter tool that enables AI to execute Python code for data analysis, CSV processing, and chart generation - Support for both local (development) and E2B (sandboxed production) execution drivers - Real-time streaming of stdout/stderr and generated files - Frontend components for displaying code execution results with expandable sections ## Code Quality Improvements - Extract `getMimeType` to shared utility to reduce code duplication between drivers - Fix security issue: escape single quotes/backslashes in E2B driver env variable injection - Add `buildExecutionState` helper to reduce duplicated state object construction - Add `DEFAULT_CODE_INTERPRETER_TIMEOUT_MS` constant for consistency - Fix lingui linting warning and TypeScript theme errors in frontend ## Test Plan - [ ] Test code interpreter with local driver in development - [ ] Test code interpreter with E2B driver in production environment - [ ] Verify streaming output displays correctly in chat UI - [ ] Verify generated files (charts, CSVs) are uploaded and downloadable - [ ] Test file upload flow (CSV, Excel) triggers code interpreter <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Updates generated i18n catalogs for Polish and pseudo-English, adding strings for code execution/output (code interpreter) and various UI messages, with minor text adjustments. > > - **Localization**: > - **Generated catalogs**: Refresh `locales/generated/pl-PL.ts` and `locales/generated/pseudo-en.ts`. > - Add strings for code execution/output (e.g., code, copy code/output, running/waiting states, download files, generated files, Python code execution). > - Include new UI texts (errors, prompts, menus) and minor text corrections. > - No changes to `pt-BR`; other files unchanged functionally. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit befc13d02c21e5a6647bc1aa6daa2a89f60b7ef8. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
This commit is contained in:
@@ -11,7 +11,12 @@ export type {
|
||||
AgentResponseFieldType,
|
||||
AgentResponseSchema,
|
||||
} from './types/agent-response-schema.type';
|
||||
export type { DataMessagePart } from './types/DataMessagePart';
|
||||
export type {
|
||||
CodeExecutionFile,
|
||||
CodeExecutionState,
|
||||
CodeExecutionData,
|
||||
DataMessagePart,
|
||||
} from './types/DataMessagePart';
|
||||
export type {
|
||||
AIChatUsageMetadata,
|
||||
AIChatModelMetadata,
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
export type CodeExecutionFile = {
|
||||
filename: string;
|
||||
url: string;
|
||||
mimeType: string;
|
||||
};
|
||||
|
||||
export type CodeExecutionState = 'pending' | 'running' | 'completed' | 'error';
|
||||
|
||||
export type CodeExecutionData = {
|
||||
executionId: string;
|
||||
state: CodeExecutionState;
|
||||
code: string;
|
||||
language: 'python';
|
||||
stdout: string;
|
||||
stderr: string;
|
||||
exitCode?: number;
|
||||
executionTimeMs?: number;
|
||||
files: CodeExecutionFile[];
|
||||
error?: string;
|
||||
};
|
||||
|
||||
export type DataMessagePart = {
|
||||
'routing-status': {
|
||||
text: string;
|
||||
@@ -43,4 +64,5 @@ export type DataMessagePart = {
|
||||
}>;
|
||||
};
|
||||
};
|
||||
'code-execution': CodeExecutionData;
|
||||
};
|
||||
|
||||
@@ -21,6 +21,7 @@ export enum PermissionFlagType {
|
||||
DOWNLOAD_FILE = 'DOWNLOAD_FILE',
|
||||
SEND_EMAIL_TOOL = 'SEND_EMAIL_TOOL',
|
||||
HTTP_REQUEST_TOOL = 'HTTP_REQUEST_TOOL',
|
||||
CODE_INTERPRETER_TOOL = 'CODE_INTERPRETER_TOOL',
|
||||
IMPORT_CSV = 'IMPORT_CSV',
|
||||
EXPORT_CSV = 'EXPORT_CSV',
|
||||
CONNECTED_ACCOUNTS = 'CONNECTED_ACCOUNTS',
|
||||
|
||||
Reference in New Issue
Block a user