@teamflojo/floimg-studio-shared 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,237 @@
1
+ /**
2
+ * Shared types for floimg-studio
3
+ */
4
+ export type StudioNodeType = "generator" | "transform" | "save" | "input" | "vision" | "text";
5
+ export interface Position {
6
+ x: number;
7
+ y: number;
8
+ }
9
+ export interface GeneratorNodeData {
10
+ generatorName: string;
11
+ params: Record<string, unknown>;
12
+ }
13
+ export interface TransformNodeData {
14
+ operation: string;
15
+ params: Record<string, unknown>;
16
+ }
17
+ export interface SaveNodeData {
18
+ destination: string;
19
+ provider?: "filesystem" | "s3";
20
+ }
21
+ export interface InputNodeData {
22
+ uploadId?: string;
23
+ filename?: string;
24
+ mime?: string;
25
+ }
26
+ export interface VisionNodeData {
27
+ providerName: string;
28
+ params: Record<string, unknown>;
29
+ }
30
+ export interface TextNodeData {
31
+ providerName: string;
32
+ params: Record<string, unknown>;
33
+ }
34
+ export type StudioNodeData = GeneratorNodeData | TransformNodeData | SaveNodeData | InputNodeData | VisionNodeData | TextNodeData;
35
+ export interface StudioNode {
36
+ id: string;
37
+ type: StudioNodeType;
38
+ position: Position;
39
+ data: StudioNodeData;
40
+ }
41
+ export interface StudioEdge {
42
+ id: string;
43
+ source: string;
44
+ target: string;
45
+ sourceHandle?: string;
46
+ targetHandle?: string;
47
+ }
48
+ export interface StudioWorkflow {
49
+ id: string;
50
+ name: string;
51
+ description?: string;
52
+ nodes: StudioNode[];
53
+ edges: StudioEdge[];
54
+ createdAt: number;
55
+ updatedAt: number;
56
+ }
57
+ export type ExecutionStatus = "pending" | "running" | "completed" | "error" | "cancelled";
58
+ export interface ExecutionStepResult {
59
+ stepIndex: number;
60
+ nodeId: string;
61
+ status: "running" | "completed" | "error";
62
+ imageId?: string;
63
+ preview?: string;
64
+ dataType?: "text" | "json";
65
+ content?: string;
66
+ parsed?: Record<string, unknown>;
67
+ error?: string;
68
+ }
69
+ export interface ExecutionResult {
70
+ id: string;
71
+ workflowId: string;
72
+ status: ExecutionStatus;
73
+ steps: ExecutionStepResult[];
74
+ startedAt: number;
75
+ completedAt?: number;
76
+ error?: string;
77
+ }
78
+ export interface GeneratedImage {
79
+ id: string;
80
+ workflowId?: string;
81
+ executionId: string;
82
+ stepIndex: number;
83
+ nodeId: string;
84
+ mime: string;
85
+ width?: number;
86
+ height?: number;
87
+ params?: Record<string, unknown>;
88
+ createdAt: number;
89
+ }
90
+ export interface NodeDefinition {
91
+ id: string;
92
+ type: StudioNodeType;
93
+ name: string;
94
+ label: string;
95
+ description?: string;
96
+ category: string;
97
+ params: ParamSchema;
98
+ }
99
+ export interface ParamSchema {
100
+ type: "object";
101
+ properties: Record<string, ParamField>;
102
+ required?: string[];
103
+ }
104
+ export interface ParamField {
105
+ type: "string" | "number" | "boolean" | "object" | "array";
106
+ title?: string;
107
+ description?: string;
108
+ default?: unknown;
109
+ enum?: string[];
110
+ minimum?: number;
111
+ maximum?: number;
112
+ properties?: Record<string, ParamField>;
113
+ }
114
+ export interface CreateWorkflowRequest {
115
+ name: string;
116
+ description?: string;
117
+ nodes: StudioNode[];
118
+ edges: StudioEdge[];
119
+ }
120
+ export interface ExecuteRequest {
121
+ nodes: StudioNode[];
122
+ edges: StudioEdge[];
123
+ }
124
+ export interface ExecuteResponse {
125
+ executionId: string;
126
+ }
127
+ export type WSEventType = "execution.started" | "execution.step" | "execution.completed" | "execution.error";
128
+ export interface WSEvent {
129
+ type: WSEventType;
130
+ executionId: string;
131
+ data?: unknown;
132
+ }
133
+ export interface WSExecutionStarted extends WSEvent {
134
+ type: "execution.started";
135
+ data: {
136
+ workflowId?: string;
137
+ totalSteps: number;
138
+ };
139
+ }
140
+ export interface WSExecutionStep extends WSEvent {
141
+ type: "execution.step";
142
+ data: ExecutionStepResult;
143
+ }
144
+ export interface WSExecutionCompleted extends WSEvent {
145
+ type: "execution.completed";
146
+ data: {
147
+ imageIds: string[];
148
+ };
149
+ }
150
+ export interface WSExecutionError extends WSEvent {
151
+ type: "execution.error";
152
+ data: {
153
+ error: string;
154
+ };
155
+ }
156
+ /**
157
+ * A bundled workflow template that can be loaded into the editor
158
+ */
159
+ export interface GalleryTemplate {
160
+ /** Unique identifier for the template (e.g., "sales-dashboard") */
161
+ id: string;
162
+ /** Display name (e.g., "Sales Dashboard") */
163
+ name: string;
164
+ /** Short description (e.g., "Bar chart with quarterly revenue") */
165
+ description: string;
166
+ /** Category for filtering (e.g., "Charts", "Diagrams", "QR Codes") */
167
+ category: string;
168
+ /** Primary generator used (e.g., "quickchart", "mermaid", "qr") */
169
+ generator: string;
170
+ /** Optional tags for search */
171
+ tags?: string[];
172
+ /** The workflow definition */
173
+ workflow: {
174
+ nodes: StudioNode[];
175
+ edges: StudioEdge[];
176
+ };
177
+ /** Optional preview image info */
178
+ preview?: {
179
+ /** URL to preview image (e.g., "/templates/sales-dashboard.png") */
180
+ imageUrl: string;
181
+ width: number;
182
+ height: number;
183
+ };
184
+ }
185
+ /**
186
+ * Metadata stored alongside generated images (sidecar files)
187
+ * Enables "what workflow created this image?" queries
188
+ */
189
+ export interface ImageMetadata {
190
+ /** Image identifier */
191
+ id: string;
192
+ /** Filename on disk */
193
+ filename: string;
194
+ /** MIME type */
195
+ mime: string;
196
+ /** File size in bytes */
197
+ size: number;
198
+ /** Creation timestamp */
199
+ createdAt: number;
200
+ /** Workflow that created this image (if available) */
201
+ workflow?: {
202
+ nodes: StudioNode[];
203
+ edges: StudioEdge[];
204
+ /** When the workflow was executed */
205
+ executedAt: number;
206
+ /** Template ID if created from a template */
207
+ templateId?: string;
208
+ };
209
+ }
210
+ /**
211
+ * Content moderation result (used by moderation service)
212
+ */
213
+ export interface ModerationResult {
214
+ /** Whether the content is safe */
215
+ safe: boolean;
216
+ /** Whether the content was flagged */
217
+ flagged: boolean;
218
+ /** Individual category flags */
219
+ categories: {
220
+ sexual: boolean;
221
+ sexualMinors: boolean;
222
+ hate: boolean;
223
+ hateThreatening: boolean;
224
+ harassment: boolean;
225
+ harassmentThreatening: boolean;
226
+ selfHarm: boolean;
227
+ selfHarmIntent: boolean;
228
+ selfHarmInstructions: boolean;
229
+ violence: boolean;
230
+ violenceGraphic: boolean;
231
+ };
232
+ /** Raw category scores (0-1) */
233
+ categoryScores: Record<string, number>;
234
+ /** List of categories that were flagged */
235
+ flaggedCategories: string[];
236
+ }
237
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared types for floimg-studio
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@teamflojo/floimg-studio-shared",
3
+ "version": "0.1.0",
4
+ "description": "Shared types and utilities for FloImg Studio",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": "Flojo, Inc.",
8
+ "homepage": "https://floimg.com/studio",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/teamflojo/floimg.git",
12
+ "directory": "apps/studio/shared"
13
+ },
14
+ "main": "./dist/index.js",
15
+ "types": "./dist/index.d.ts",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "import": "./dist/index.js"
20
+ }
21
+ },
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "scripts": {
26
+ "build": "tsc",
27
+ "dev": "tsc --watch",
28
+ "typecheck": "tsc --noEmit"
29
+ },
30
+ "devDependencies": {
31
+ "typescript": "^5.7.2"
32
+ }
33
+ }