@bubblelab/shared-schemas 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.
Files changed (75) hide show
  1. package/LICENSE.txt +202 -0
  2. package/README.md +138 -0
  3. package/dist/api-schema.d.ts +38 -0
  4. package/dist/api-schema.d.ts.map +1 -0
  5. package/dist/api-schema.js +26 -0
  6. package/dist/api-schema.js.map +1 -0
  7. package/dist/bubble-definition-schema.d.ts +242 -0
  8. package/dist/bubble-definition-schema.d.ts.map +1 -0
  9. package/dist/bubble-definition-schema.js +95 -0
  10. package/dist/bubble-definition-schema.js.map +1 -0
  11. package/dist/bubbleflow-execution-schema.d.ts +580 -0
  12. package/dist/bubbleflow-execution-schema.d.ts.map +1 -0
  13. package/dist/bubbleflow-execution-schema.js +230 -0
  14. package/dist/bubbleflow-execution-schema.js.map +1 -0
  15. package/dist/bubbleflow-schema.d.ts +785 -0
  16. package/dist/bubbleflow-schema.d.ts.map +1 -0
  17. package/dist/bubbleflow-schema.js +206 -0
  18. package/dist/bubbleflow-schema.js.map +1 -0
  19. package/dist/credential-schema.d.ts +405 -0
  20. package/dist/credential-schema.d.ts.map +1 -0
  21. package/dist/credential-schema.js +327 -0
  22. package/dist/credential-schema.js.map +1 -0
  23. package/dist/database-definition-schema.d.ts +97 -0
  24. package/dist/database-definition-schema.d.ts.map +1 -0
  25. package/dist/database-definition-schema.js +36 -0
  26. package/dist/database-definition-schema.js.map +1 -0
  27. package/dist/generate-bubbleflow-schema.d.ts +481 -0
  28. package/dist/generate-bubbleflow-schema.d.ts.map +1 -0
  29. package/dist/generate-bubbleflow-schema.js +247 -0
  30. package/dist/generate-bubbleflow-schema.js.map +1 -0
  31. package/dist/index.d.ts +16 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +18 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/mock-data-generator.d.ts +51 -0
  36. package/dist/mock-data-generator.d.ts.map +1 -0
  37. package/dist/mock-data-generator.js +325 -0
  38. package/dist/mock-data-generator.js.map +1 -0
  39. package/dist/mock-data-generator.test.d.ts +2 -0
  40. package/dist/mock-data-generator.test.d.ts.map +1 -0
  41. package/dist/mock-data-generator.test.js +176 -0
  42. package/dist/mock-data-generator.test.js.map +1 -0
  43. package/dist/oauth-schema.d.ts +61 -0
  44. package/dist/oauth-schema.d.ts.map +1 -0
  45. package/dist/oauth-schema.js +75 -0
  46. package/dist/oauth-schema.js.map +1 -0
  47. package/dist/prompts.d.ts +12 -0
  48. package/dist/prompts.d.ts.map +1 -0
  49. package/dist/prompts.js +40 -0
  50. package/dist/prompts.js.map +1 -0
  51. package/dist/routes.d.ts +2207 -0
  52. package/dist/routes.d.ts.map +1 -0
  53. package/dist/routes.js +978 -0
  54. package/dist/routes.js.map +1 -0
  55. package/dist/streaming-events.d.ts +35 -0
  56. package/dist/streaming-events.d.ts.map +1 -0
  57. package/dist/streaming-events.js +5 -0
  58. package/dist/streaming-events.js.map +1 -0
  59. package/dist/subscription-status-schema.d.ts +90 -0
  60. package/dist/subscription-status-schema.d.ts.map +1 -0
  61. package/dist/subscription-status-schema.js +66 -0
  62. package/dist/subscription-status-schema.js.map +1 -0
  63. package/dist/types.d.ts +19 -0
  64. package/dist/types.d.ts.map +1 -0
  65. package/dist/types.js +27 -0
  66. package/dist/types.js.map +1 -0
  67. package/dist/waitlist-schema.d.ts +30 -0
  68. package/dist/waitlist-schema.d.ts.map +1 -0
  69. package/dist/waitlist-schema.js +39 -0
  70. package/dist/waitlist-schema.js.map +1 -0
  71. package/dist/webhook-schema.d.ts +95 -0
  72. package/dist/webhook-schema.d.ts.map +1 -0
  73. package/dist/webhook-schema.js +50 -0
  74. package/dist/webhook-schema.js.map +1 -0
  75. package/package.json +45 -0
@@ -0,0 +1,230 @@
1
+ import { z } from '@hono/zod-openapi';
2
+ import { ParsedBubbleWithInfoSchema } from './bubble-definition-schema';
3
+ export const TokenUsageSchema = z
4
+ .object({
5
+ inputTokens: z.number().openapi({
6
+ description: 'Number of input tokens used',
7
+ example: 150,
8
+ }),
9
+ outputTokens: z.number().openapi({
10
+ description: 'Number of output tokens generated',
11
+ example: 75,
12
+ }),
13
+ totalTokens: z.number().openapi({
14
+ description: 'Total number of tokens used (input + output)',
15
+ example: 225,
16
+ }),
17
+ modelName: z.string().optional().openapi({
18
+ description: 'Name of the model used for token consumption',
19
+ example: 'google/gemini-2.5-flash',
20
+ }),
21
+ })
22
+ .openapi('TokenUsage');
23
+ export const ExecutionSummarySchema = z
24
+ .object({
25
+ totalDuration: z.number().openapi({
26
+ description: 'Total execution duration in milliseconds',
27
+ example: 1500,
28
+ }),
29
+ lineExecutionCount: z.number().openapi({
30
+ description: 'Number of lines executed',
31
+ example: 25,
32
+ }),
33
+ bubbleExecutionCount: z.number().openapi({
34
+ description: 'Number of bubbles executed',
35
+ example: 5,
36
+ }),
37
+ errorCount: z.number().openapi({
38
+ description: 'Number of errors encountered',
39
+ example: 0,
40
+ }),
41
+ warningCount: z.number().openapi({
42
+ description: 'Number of warnings encountered',
43
+ example: 1,
44
+ }),
45
+ averageLineExecutionTime: z.number().openapi({
46
+ description: 'Average execution time per line in milliseconds',
47
+ example: 60,
48
+ }),
49
+ slowestLines: z
50
+ .array(z.object({
51
+ lineNumber: z.number().openapi({
52
+ description: 'Line number',
53
+ example: 15,
54
+ }),
55
+ duration: z.number().openapi({
56
+ description: 'Execution duration in milliseconds',
57
+ example: 250,
58
+ }),
59
+ message: z.string().openapi({
60
+ description: 'Description of what was executed on this line',
61
+ example: 'API call to external service',
62
+ }),
63
+ }))
64
+ .openapi({
65
+ description: 'Array of the slowest executing lines',
66
+ }),
67
+ memoryPeakUsage: z.any().optional().openapi({
68
+ description: 'Peak memory usage during execution (NodeJS.MemoryUsage type)',
69
+ }), // NodeJS.MemoryUsage type
70
+ startTime: z.number().openapi({
71
+ description: 'Execution start timestamp (Unix timestamp)',
72
+ example: 1703123456789,
73
+ }),
74
+ endTime: z.number().openapi({
75
+ description: 'Execution end timestamp (Unix timestamp)',
76
+ example: 1703123458289,
77
+ }),
78
+ tokenUsage: TokenUsageSchema,
79
+ tokenUsageByModel: z
80
+ .record(z.string(), TokenUsageSchema.omit({ modelName: true }))
81
+ .optional()
82
+ .openapi({
83
+ description: 'Token usage breakdown by model (key: model name, value: token usage)',
84
+ example: {
85
+ 'google/gemini-2.5-flash': {
86
+ inputTokens: 1500,
87
+ outputTokens: 750,
88
+ totalTokens: 2250,
89
+ },
90
+ },
91
+ }),
92
+ })
93
+ .openapi('ExecutionSummary');
94
+ // BubbleFlow execution history item schema
95
+ export const bubbleFlowExecutionSchema = z.object({
96
+ id: z.number().openapi({ description: 'Execution ID' }),
97
+ status: z
98
+ .enum(['running', 'success', 'error'])
99
+ .openapi({ description: 'Execution status' }),
100
+ payload: z
101
+ .record(z.string(), z.any())
102
+ .openapi({ description: 'Execution payload' }),
103
+ result: z.any().optional().openapi({ description: 'Execution result data' }),
104
+ error: z
105
+ .string()
106
+ .optional()
107
+ .openapi({ description: 'Error message if failed' }),
108
+ startedAt: z.string().openapi({ description: 'Execution start timestamp' }),
109
+ webhook_url: z.string().openapi({ description: 'Webhook URL' }),
110
+ completedAt: z
111
+ .string()
112
+ .optional()
113
+ .openapi({ description: 'Execution completion timestamp' }),
114
+ });
115
+ // GET /bubble-flow/:id/executions - List BubbleFlow executions response
116
+ export const listBubbleFlowExecutionsResponseSchema = z
117
+ .array(bubbleFlowExecutionSchema)
118
+ .openapi('ListBubbleFlowExecutionsResponse');
119
+ export const executeBubbleFlowResponseSchema = z
120
+ .object({
121
+ executionId: z.number().openapi({
122
+ description: 'ID of the execution record',
123
+ example: 789,
124
+ }),
125
+ success: z.boolean().openapi({
126
+ description: 'Whether the execution was successful',
127
+ example: true,
128
+ }),
129
+ data: z
130
+ .any()
131
+ .optional()
132
+ .openapi({
133
+ description: 'Data returned by the BubbleFlow (if successful)',
134
+ example: { result: 'processed successfully', count: 42 },
135
+ }),
136
+ summary: ExecutionSummarySchema.optional().openapi({
137
+ description: 'Execution summary',
138
+ }),
139
+ error: z.string().optional().openapi({
140
+ description: 'Error message (if execution failed)',
141
+ example: 'Validation error in BubbleFlow',
142
+ }),
143
+ })
144
+ .openapi('ExecuteBubbleFlowResponse');
145
+ // Validation schemas
146
+ export const validateBubbleFlowCodeSchema = z.object({
147
+ code: z.string().min(1).openapi({
148
+ description: 'TypeScript BubbleFlow code to validate',
149
+ example: 'export class TestFlow extends BubbleFlow<"webhook/http"> { async handle() { return {}; } }',
150
+ }),
151
+ options: z
152
+ .object({
153
+ includeDetails: z.boolean().default(true).openapi({
154
+ description: 'Include detailed bubble analysis',
155
+ }),
156
+ strictMode: z.boolean().default(true).openapi({
157
+ description: 'Enable strict TypeScript validation',
158
+ }),
159
+ })
160
+ .optional()
161
+ .openapi({
162
+ description: 'Validation options',
163
+ }),
164
+ flowId: z.number().positive().optional().openapi({
165
+ description: 'Optional BubbleFlow ID to update with validation results if user owns the flow',
166
+ example: 123,
167
+ }),
168
+ credentials: z
169
+ .record(z.string(), z.record(z.string(), z.number()))
170
+ .optional()
171
+ .openapi({
172
+ description: 'Optional credentials mapping: bubble name -> credential type -> credential ID',
173
+ example: {
174
+ 'slack-sender': {
175
+ SLACK_CRED: 123,
176
+ },
177
+ 'ai-agent': {
178
+ OPENAI_CRED: 456,
179
+ },
180
+ },
181
+ }),
182
+ });
183
+ export const validateBubbleFlowCodeResponseSchema = z.object({
184
+ valid: z.boolean().openapi({
185
+ description: 'Whether the code is valid',
186
+ }),
187
+ errors: z.array(z.string()).optional().openapi({
188
+ description: 'List of validation errors if any',
189
+ }),
190
+ bubbleCount: z.number().optional().openapi({
191
+ description: 'Number of bubbles found in the code',
192
+ }),
193
+ inputSchema: z.record(z.string(), z.unknown()).openapi({
194
+ description: 'Input schema',
195
+ example: {
196
+ name: 'string',
197
+ age: 'number',
198
+ },
199
+ }),
200
+ bubbles: z.record(z.string(), ParsedBubbleWithInfoSchema).optional().openapi({
201
+ description: 'Record mapping bubble IDs to their detailed information',
202
+ }),
203
+ requiredCredentials: z
204
+ .record(z.string(), z.array(z.string()))
205
+ .optional()
206
+ .openapi({
207
+ description: 'Required credentials for the bubbles in the code',
208
+ }),
209
+ metadata: z
210
+ .object({
211
+ validatedAt: z.string().openapi({
212
+ description: 'Timestamp when validation was performed',
213
+ }),
214
+ codeLength: z.number().openapi({
215
+ description: 'Length of the code in characters',
216
+ }),
217
+ strictMode: z.boolean().openapi({
218
+ description: 'Whether strict mode was used',
219
+ }),
220
+ flowUpdated: z.boolean().optional().openapi({
221
+ description: 'Whether the BubbleFlow was updated with validation results',
222
+ }),
223
+ })
224
+ .openapi({
225
+ description: 'Validation metadata',
226
+ }),
227
+ success: z.boolean(),
228
+ error: z.string(),
229
+ });
230
+ //# sourceMappingURL=bubbleflow-execution-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bubbleflow-execution-schema.js","sourceRoot":"","sources":["../src/bubbleflow-execution-schema.ts"],"names":[],"mappings":"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"}