2162 Add asset watcher in twenty-sdk dev mode (#17513)

- assets are pushed in .twenty/output
- assets are uploaded in FileFolder.Assets
- not handled yet by the sync-manifest endpoint
This commit is contained in:
martmull
2026-01-29 10:08:44 +01:00
committed by GitHub
parent 1cc08b84c4
commit 3412992e99
42 changed files with 414 additions and 135 deletions
@@ -4,6 +4,7 @@ import {
type ObjectManifest,
type LogicFunctionManifest,
} from '@/application';
import { type AssetManifest } from '@/application/assetManifestType';
import { type FrontComponentManifest } from '@/application/frontComponentManifestType';
import { type ObjectExtensionManifest } from '@/application/objectExtensionManifestType';
import { type RoleManifest } from '@/application/roleManifestType';
@@ -16,6 +17,7 @@ export type ApplicationManifest = {
functions: LogicFunctionManifest[];
frontComponents: FrontComponentManifest[];
roles?: RoleManifest[];
publicAssets?: AssetManifest[];
sources: Sources;
packageJson: PackageJson;
yarnLock: string;
@@ -0,0 +1,6 @@
export type AssetManifest = {
filePath: string;
fileName: string;
fileType: string;
checksum: string | null;
};
@@ -0,0 +1 @@
export const ASSETS_DIR = 'public';
@@ -0,0 +1 @@
export const GENERATED_DIR = 'generated';
@@ -0,0 +1 @@
export const OUTPUT_DIR = '.twenty/output';
@@ -4,4 +4,5 @@ export enum SyncableEntity {
Function = 'function',
FrontComponent = 'frontComponent',
Role = 'role',
PublicAsset = 'publicAsset',
}
@@ -10,8 +10,12 @@
export type { ApplicationManifest } from './applicationManifestType';
export type { Application } from './applicationType';
export type { ApplicationVariables } from './applicationVariablesType';
export type { AssetManifest } from './assetManifestType';
export { ASSETS_DIR } from './constants/AssetDirectory';
export { DEFAULT_API_KEY_NAME } from './constants/DefaultApiKeyName';
export { DEFAULT_API_URL_NAME } from './constants/DefaultApiUrlName';
export { GENERATED_DIR } from './constants/GeneratedDirectory';
export { OUTPUT_DIR } from './constants/OutputDirectory';
export { SyncableEntity } from './enums/syncable-entities.enum';
export type { FieldManifest } from './fieldManifestType';
export type { FrontComponentManifest } from './frontComponentManifestType';