@codemation/host 0.2.5 → 0.3.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 (109) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/{AppConfigFactory-CqKWXqOm.js → AppConfigFactory-BPp02HMv.js} +82 -5
  3. package/dist/{AppConfigFactory-CqKWXqOm.js.map → AppConfigFactory-BPp02HMv.js.map} +1 -1
  4. package/dist/{AppConfigFactory-CK28UPK0.d.ts → AppConfigFactory-Dq7ttwQ_.d.ts} +6001 -144
  5. package/dist/{AppContainerFactory-CcSGFNLW.js → AppContainerFactory-D9je1sSV.js} +2604 -155
  6. package/dist/AppContainerFactory-D9je1sSV.js.map +1 -0
  7. package/dist/{CodemationAppContext-KqDoeHqN.d.ts → CodemationAppContext-P7P-xZhQ.d.ts} +2 -2
  8. package/dist/{CodemationAuthoring.types-BP6Inucu.d.ts → CodemationAuthoring.types-OMYu7vKP.d.ts} +3 -3
  9. package/dist/{CodemationConfigNormalizer-DIAE0VHw.d.ts → CodemationConfigNormalizer-BCtBrJDe.d.ts} +2 -2
  10. package/dist/{CodemationConsumerConfigLoader-nj9kTmfJ.d.ts → CodemationConsumerConfigLoader-evvw4b_a.d.ts} +2 -2
  11. package/dist/CodemationPluginListMerger-PSTtEQjC.d.ts +674 -0
  12. package/dist/{CredentialServices-BFQD_VN1.d.ts → CredentialServices-0Hk8RFY1.d.ts} +3 -3
  13. package/dist/{CredentialServices-BPKUF8Xs.js → CredentialServices-BNBMFOPt.js} +6 -1
  14. package/dist/CredentialServices-BNBMFOPt.js.map +1 -0
  15. package/dist/{PublicFrontendBootstrapFactory-DTA1iDo0.d.ts → PublicFrontendBootstrapFactory-D0_ds7nS.d.ts} +2 -2
  16. package/dist/authoring.d.ts +3 -3
  17. package/dist/consumer.d.ts +4 -4
  18. package/dist/credentials.d.ts +3 -3
  19. package/dist/credentials.js +1 -1
  20. package/dist/devServerSidecar.d.ts +1 -1
  21. package/dist/{index-Dd6BrWyH.d.ts → index-CeS2saCe.d.ts} +105 -2
  22. package/dist/index.d.ts +12 -11
  23. package/dist/index.js +5 -5
  24. package/dist/nextServer.d.ts +8 -58
  25. package/dist/nextServer.js +6 -100
  26. package/dist/{persistenceServer-DKbFDxoS.js → persistenceServer-CA0_q0D7.js} +2 -2
  27. package/dist/{persistenceServer-DKbFDxoS.js.map → persistenceServer-CA0_q0D7.js.map} +1 -1
  28. package/dist/{persistenceServer-Y-u7lV7f.d.ts → persistenceServer-CJeu1STC.d.ts} +2 -2
  29. package/dist/persistenceServer.d.ts +5 -5
  30. package/dist/persistenceServer.js +2 -2
  31. package/dist/{server-CFpgKuVE.js → server-C_ZIEOTY.js} +4 -4
  32. package/dist/{server-CFpgKuVE.js.map → server-C_ZIEOTY.js.map} +1 -1
  33. package/dist/{server-axppTMgo.d.ts → server-Clvg5x1w.d.ts} +11 -5
  34. package/dist/server.d.ts +8 -8
  35. package/dist/server.js +5 -5
  36. package/package.json +6 -5
  37. package/prisma/migrations/20260414120000_telemetry_foundation/migration.sql +112 -0
  38. package/prisma/migrations/20260414153000_telemetry_retention_metrics_refactor/migration.sql +239 -0
  39. package/prisma/migrations.sqlite/20260414120000_telemetry_foundation/migration.sql +103 -0
  40. package/prisma/migrations.sqlite/20260414153000_telemetry_retention_metrics_refactor/migration.sql +540 -0
  41. package/prisma/schema.postgresql.prisma +100 -1
  42. package/prisma/schema.sqlite.prisma +100 -1
  43. package/scripts/generate-prisma-clients.mjs +89 -1
  44. package/src/application/contracts/TelemetryDashboardContracts.ts +113 -0
  45. package/src/application/contracts/TelemetryRunTraceContracts.ts +13 -0
  46. package/src/application/cost/FrameworkCostCatalogEntries.ts +126 -0
  47. package/src/application/queries/GetTelemetryDashboardDimensionsQuery.ts +11 -0
  48. package/src/application/queries/GetTelemetryDashboardDimensionsQueryHandler.ts +20 -0
  49. package/src/application/queries/GetTelemetryDashboardRunsQuery.ts +11 -0
  50. package/src/application/queries/GetTelemetryDashboardRunsQueryHandler.ts +20 -0
  51. package/src/application/queries/GetTelemetryDashboardSummaryQuery.ts +11 -0
  52. package/src/application/queries/GetTelemetryDashboardSummaryQueryHandler.ts +29 -0
  53. package/src/application/queries/GetTelemetryDashboardTimeseriesQuery.ts +11 -0
  54. package/src/application/queries/GetTelemetryDashboardTimeseriesQueryHandler.ts +36 -0
  55. package/src/application/queries/GetTelemetryRunTraceQuery.ts +8 -0
  56. package/src/application/queries/GetTelemetryRunTraceQueryHandler.ts +20 -0
  57. package/src/application/queries/WorkflowQueryHandlers.ts +5 -0
  58. package/src/application/runs/WorkflowRunRetentionPruneScheduler.ts +71 -26
  59. package/src/application/telemetry/CompositeTelemetryExporter.ts +13 -0
  60. package/src/application/telemetry/LazyExecutionTelemetryFactory.ts +21 -0
  61. package/src/application/telemetry/NoOpTelemetryExporter.ts +7 -0
  62. package/src/application/telemetry/OtelExecutionTelemetry.types.ts +41 -0
  63. package/src/application/telemetry/OtelExecutionTelemetryFactory.ts +56 -0
  64. package/src/application/telemetry/OtelIdentityFactory.ts +41 -0
  65. package/src/application/telemetry/RunEventBusTelemetryReporter.ts +188 -0
  66. package/src/application/telemetry/StoredExecutionTelemetry.ts +56 -0
  67. package/src/application/telemetry/StoredNodeExecutionTelemetry.ts +35 -0
  68. package/src/application/telemetry/StoredTelemetrySpanScope.ts +188 -0
  69. package/src/application/telemetry/TelemetryEnricherChain.ts +85 -0
  70. package/src/application/telemetry/TelemetryPrivacyPolicy.ts +19 -0
  71. package/src/application/telemetry/TelemetryQueryService.ts +815 -0
  72. package/src/application/telemetry/TelemetryRetentionTimestampFactory.ts +40 -0
  73. package/src/applicationTokens.ts +18 -0
  74. package/src/bootstrap/AppContainerFactory.ts +124 -1
  75. package/src/bootstrap/AppContainerLifecycle.ts +8 -0
  76. package/src/bootstrap/runtime/FrontendRuntime.ts +8 -0
  77. package/src/bootstrap/runtime/WorkerRuntime.ts +8 -0
  78. package/src/domain/runs/WorkflowRunRepository.ts +3 -1
  79. package/src/domain/telemetry/TelemetryContracts.ts +197 -0
  80. package/src/infrastructure/persistence/InMemoryRunTraceContextRepository.ts +56 -0
  81. package/src/infrastructure/persistence/InMemoryTelemetryArtifactStore.ts +56 -0
  82. package/src/infrastructure/persistence/InMemoryTelemetryMetricPointStore.ts +97 -0
  83. package/src/infrastructure/persistence/InMemoryTelemetrySpanStore.ts +113 -0
  84. package/src/infrastructure/persistence/InMemoryWorkflowRunRepository.ts +4 -2
  85. package/src/infrastructure/persistence/PrismaRunTraceContextRepository.ts +92 -0
  86. package/src/infrastructure/persistence/PrismaTelemetryArtifactStore.ts +125 -0
  87. package/src/infrastructure/persistence/PrismaTelemetryMetricPointStore.ts +134 -0
  88. package/src/infrastructure/persistence/PrismaTelemetrySpanStore.ts +166 -0
  89. package/src/infrastructure/persistence/PrismaWorkflowRunRepository.ts +20 -7
  90. package/src/infrastructure/persistence/generated/prisma-postgresql-client/edge.js +85 -4
  91. package/src/infrastructure/persistence/generated/prisma-postgresql-client/index-browser.js +81 -0
  92. package/src/infrastructure/persistence/generated/prisma-postgresql-client/index.d.ts +6488 -102
  93. package/src/infrastructure/persistence/generated/prisma-postgresql-client/index.js +85 -4
  94. package/src/infrastructure/persistence/generated/prisma-postgresql-client/package.json +1 -1
  95. package/src/infrastructure/persistence/generated/prisma-postgresql-client/schema.prisma +100 -0
  96. package/src/infrastructure/persistence/generated/prisma-sqlite-client/edge.js +85 -4
  97. package/src/infrastructure/persistence/generated/prisma-sqlite-client/index-browser.js +81 -0
  98. package/src/infrastructure/persistence/generated/prisma-sqlite-client/index.d.ts +6476 -98
  99. package/src/infrastructure/persistence/generated/prisma-sqlite-client/index.js +85 -4
  100. package/src/infrastructure/persistence/generated/prisma-sqlite-client/package.json +1 -1
  101. package/src/infrastructure/persistence/generated/prisma-sqlite-client/schema.prisma +100 -0
  102. package/src/presentation/http/ApiPaths.ts +22 -0
  103. package/src/presentation/http/hono/registrars/TelemetryHonoApiRouteRegistrar.ts +19 -0
  104. package/src/presentation/http/routeHandlers/TelemetryDashboardRequestError.ts +1 -0
  105. package/src/presentation/http/routeHandlers/TelemetryHttpRouteHandler.ts +181 -0
  106. package/dist/AppContainerFactory-CcSGFNLW.js.map +0 -1
  107. package/dist/CodemationPluginListMerger-QvUa2SIt.d.ts +0 -357
  108. package/dist/CredentialServices-BPKUF8Xs.js.map +0 -1
  109. package/dist/nextServer.js.map +0 -1
@@ -0,0 +1,540 @@
1
+ PRAGMA foreign_keys=OFF;
2
+
3
+ CREATE TABLE "new_RunTraceContext" (
4
+ "run_id" TEXT NOT NULL PRIMARY KEY,
5
+ "workflow_id" TEXT NOT NULL,
6
+ "trace_id" TEXT NOT NULL,
7
+ "root_span_id" TEXT NOT NULL,
8
+ "service_name" TEXT,
9
+ "created_at" TEXT NOT NULL,
10
+ "expires_at" TEXT
11
+ );
12
+
13
+ INSERT INTO "new_RunTraceContext" (
14
+ "run_id",
15
+ "workflow_id",
16
+ "trace_id",
17
+ "root_span_id",
18
+ "service_name",
19
+ "created_at",
20
+ "expires_at"
21
+ )
22
+ SELECT
23
+ "run_id",
24
+ "workflow_id",
25
+ "trace_id",
26
+ "root_span_id",
27
+ "service_name",
28
+ "created_at",
29
+ NULL
30
+ FROM "RunTraceContext";
31
+
32
+ CREATE TABLE "new_TelemetrySpan" (
33
+ "telemetry_span_id" TEXT NOT NULL PRIMARY KEY,
34
+ "trace_id" TEXT NOT NULL,
35
+ "span_id" TEXT NOT NULL,
36
+ "parent_span_id" TEXT,
37
+ "run_id" TEXT NOT NULL,
38
+ "workflow_id" TEXT NOT NULL,
39
+ "node_id" TEXT,
40
+ "activation_id" TEXT,
41
+ "connection_invocation_id" TEXT,
42
+ "name" TEXT NOT NULL,
43
+ "kind" TEXT NOT NULL,
44
+ "status" TEXT,
45
+ "status_message" TEXT,
46
+ "start_time" TEXT,
47
+ "end_time" TEXT,
48
+ "workflow_folder" TEXT,
49
+ "node_type" TEXT,
50
+ "node_role" TEXT,
51
+ "model_name" TEXT,
52
+ "attributes_json" TEXT,
53
+ "events_json" TEXT,
54
+ "retention_expires_at" TEXT,
55
+ "updated_at" TEXT NOT NULL
56
+ );
57
+
58
+ INSERT INTO "new_TelemetrySpan" (
59
+ "telemetry_span_id",
60
+ "trace_id",
61
+ "span_id",
62
+ "parent_span_id",
63
+ "run_id",
64
+ "workflow_id",
65
+ "node_id",
66
+ "activation_id",
67
+ "connection_invocation_id",
68
+ "name",
69
+ "kind",
70
+ "status",
71
+ "status_message",
72
+ "start_time",
73
+ "end_time",
74
+ "workflow_folder",
75
+ "node_type",
76
+ "node_role",
77
+ "model_name",
78
+ "attributes_json",
79
+ "events_json",
80
+ "retention_expires_at",
81
+ "updated_at"
82
+ )
83
+ SELECT
84
+ "telemetry_span_id",
85
+ "trace_id",
86
+ "span_id",
87
+ "parent_span_id",
88
+ "run_id",
89
+ "workflow_id",
90
+ "node_id",
91
+ "activation_id",
92
+ "connection_invocation_id",
93
+ "name",
94
+ "kind",
95
+ "status",
96
+ "status_message",
97
+ "start_time",
98
+ "end_time",
99
+ "workflow_folder",
100
+ "node_type",
101
+ "node_role",
102
+ "model_name",
103
+ "attributes_json",
104
+ "events_json",
105
+ NULL,
106
+ "updated_at"
107
+ FROM "TelemetrySpan";
108
+
109
+ CREATE TABLE "TelemetryMetricPoint" (
110
+ "metric_point_id" TEXT NOT NULL PRIMARY KEY,
111
+ "trace_id" TEXT,
112
+ "span_id" TEXT,
113
+ "run_id" TEXT,
114
+ "workflow_id" TEXT NOT NULL,
115
+ "node_id" TEXT,
116
+ "activation_id" TEXT,
117
+ "metric_name" TEXT NOT NULL,
118
+ "value" REAL NOT NULL,
119
+ "unit" TEXT,
120
+ "observed_at" TEXT NOT NULL,
121
+ "workflow_folder" TEXT,
122
+ "node_type" TEXT,
123
+ "node_role" TEXT,
124
+ "model_name" TEXT,
125
+ "dimensions_json" TEXT,
126
+ "retention_expires_at" TEXT
127
+ );
128
+
129
+ INSERT INTO "TelemetryMetricPoint" (
130
+ "metric_point_id",
131
+ "trace_id",
132
+ "span_id",
133
+ "run_id",
134
+ "workflow_id",
135
+ "node_id",
136
+ "activation_id",
137
+ "metric_name",
138
+ "value",
139
+ "unit",
140
+ "observed_at",
141
+ "workflow_folder",
142
+ "node_type",
143
+ "node_role",
144
+ "model_name",
145
+ "dimensions_json",
146
+ "retention_expires_at"
147
+ )
148
+ SELECT
149
+ lower(hex(randomblob(16))),
150
+ "trace_id",
151
+ "span_id",
152
+ "run_id",
153
+ "workflow_id",
154
+ "node_id",
155
+ "activation_id",
156
+ 'gen_ai.usage.input_tokens',
157
+ "input_tokens",
158
+ NULL,
159
+ COALESCE("end_time", "start_time", "updated_at"),
160
+ "workflow_folder",
161
+ "node_type",
162
+ "node_role",
163
+ "model_name",
164
+ NULL,
165
+ NULL
166
+ FROM "TelemetrySpan"
167
+ WHERE "input_tokens" IS NOT NULL;
168
+
169
+ INSERT INTO "TelemetryMetricPoint" (
170
+ "metric_point_id",
171
+ "trace_id",
172
+ "span_id",
173
+ "run_id",
174
+ "workflow_id",
175
+ "node_id",
176
+ "activation_id",
177
+ "metric_name",
178
+ "value",
179
+ "unit",
180
+ "observed_at",
181
+ "workflow_folder",
182
+ "node_type",
183
+ "node_role",
184
+ "model_name",
185
+ "dimensions_json",
186
+ "retention_expires_at"
187
+ )
188
+ SELECT
189
+ lower(hex(randomblob(16))),
190
+ "trace_id",
191
+ "span_id",
192
+ "run_id",
193
+ "workflow_id",
194
+ "node_id",
195
+ "activation_id",
196
+ 'gen_ai.usage.output_tokens',
197
+ "output_tokens",
198
+ NULL,
199
+ COALESCE("end_time", "start_time", "updated_at"),
200
+ "workflow_folder",
201
+ "node_type",
202
+ "node_role",
203
+ "model_name",
204
+ NULL,
205
+ NULL
206
+ FROM "TelemetrySpan"
207
+ WHERE "output_tokens" IS NOT NULL;
208
+
209
+ INSERT INTO "TelemetryMetricPoint" (
210
+ "metric_point_id",
211
+ "trace_id",
212
+ "span_id",
213
+ "run_id",
214
+ "workflow_id",
215
+ "node_id",
216
+ "activation_id",
217
+ "metric_name",
218
+ "value",
219
+ "unit",
220
+ "observed_at",
221
+ "workflow_folder",
222
+ "node_type",
223
+ "node_role",
224
+ "model_name",
225
+ "dimensions_json",
226
+ "retention_expires_at"
227
+ )
228
+ SELECT
229
+ lower(hex(randomblob(16))),
230
+ "trace_id",
231
+ "span_id",
232
+ "run_id",
233
+ "workflow_id",
234
+ "node_id",
235
+ "activation_id",
236
+ 'gen_ai.usage.total_tokens',
237
+ "total_tokens",
238
+ NULL,
239
+ COALESCE("end_time", "start_time", "updated_at"),
240
+ "workflow_folder",
241
+ "node_type",
242
+ "node_role",
243
+ "model_name",
244
+ NULL,
245
+ NULL
246
+ FROM "TelemetrySpan"
247
+ WHERE "total_tokens" IS NOT NULL;
248
+
249
+ INSERT INTO "TelemetryMetricPoint" (
250
+ "metric_point_id",
251
+ "trace_id",
252
+ "span_id",
253
+ "run_id",
254
+ "workflow_id",
255
+ "node_id",
256
+ "activation_id",
257
+ "metric_name",
258
+ "value",
259
+ "unit",
260
+ "observed_at",
261
+ "workflow_folder",
262
+ "node_type",
263
+ "node_role",
264
+ "model_name",
265
+ "dimensions_json",
266
+ "retention_expires_at"
267
+ )
268
+ SELECT
269
+ lower(hex(randomblob(16))),
270
+ "trace_id",
271
+ "span_id",
272
+ "run_id",
273
+ "workflow_id",
274
+ "node_id",
275
+ "activation_id",
276
+ 'gen_ai.usage.cache_read.input_tokens',
277
+ "cached_input_tokens",
278
+ NULL,
279
+ COALESCE("end_time", "start_time", "updated_at"),
280
+ "workflow_folder",
281
+ "node_type",
282
+ "node_role",
283
+ "model_name",
284
+ NULL,
285
+ NULL
286
+ FROM "TelemetrySpan"
287
+ WHERE "cached_input_tokens" IS NOT NULL;
288
+
289
+ INSERT INTO "TelemetryMetricPoint" (
290
+ "metric_point_id",
291
+ "trace_id",
292
+ "span_id",
293
+ "run_id",
294
+ "workflow_id",
295
+ "node_id",
296
+ "activation_id",
297
+ "metric_name",
298
+ "value",
299
+ "unit",
300
+ "observed_at",
301
+ "workflow_folder",
302
+ "node_type",
303
+ "node_role",
304
+ "model_name",
305
+ "dimensions_json",
306
+ "retention_expires_at"
307
+ )
308
+ SELECT
309
+ lower(hex(randomblob(16))),
310
+ "trace_id",
311
+ "span_id",
312
+ "run_id",
313
+ "workflow_id",
314
+ "node_id",
315
+ "activation_id",
316
+ 'codemation.gen_ai.usage.reasoning_tokens',
317
+ "reasoning_tokens",
318
+ NULL,
319
+ COALESCE("end_time", "start_time", "updated_at"),
320
+ "workflow_folder",
321
+ "node_type",
322
+ "node_role",
323
+ "model_name",
324
+ NULL,
325
+ NULL
326
+ FROM "TelemetrySpan"
327
+ WHERE "reasoning_tokens" IS NOT NULL;
328
+
329
+ INSERT INTO "TelemetryMetricPoint" (
330
+ "metric_point_id",
331
+ "trace_id",
332
+ "span_id",
333
+ "run_id",
334
+ "workflow_id",
335
+ "node_id",
336
+ "activation_id",
337
+ "metric_name",
338
+ "value",
339
+ "unit",
340
+ "observed_at",
341
+ "workflow_folder",
342
+ "node_type",
343
+ "node_role",
344
+ "model_name",
345
+ "dimensions_json",
346
+ "retention_expires_at"
347
+ )
348
+ SELECT
349
+ lower(hex(randomblob(16))),
350
+ "trace_id",
351
+ "span_id",
352
+ "run_id",
353
+ "workflow_id",
354
+ "node_id",
355
+ "activation_id",
356
+ 'codemation.ai.turns',
357
+ "turn_count",
358
+ NULL,
359
+ COALESCE("end_time", "start_time", "updated_at"),
360
+ "workflow_folder",
361
+ "node_type",
362
+ "node_role",
363
+ "model_name",
364
+ NULL,
365
+ NULL
366
+ FROM "TelemetrySpan"
367
+ WHERE "turn_count" IS NOT NULL;
368
+
369
+ INSERT INTO "TelemetryMetricPoint" (
370
+ "metric_point_id",
371
+ "trace_id",
372
+ "span_id",
373
+ "run_id",
374
+ "workflow_id",
375
+ "node_id",
376
+ "activation_id",
377
+ "metric_name",
378
+ "value",
379
+ "unit",
380
+ "observed_at",
381
+ "workflow_folder",
382
+ "node_type",
383
+ "node_role",
384
+ "model_name",
385
+ "dimensions_json",
386
+ "retention_expires_at"
387
+ )
388
+ SELECT
389
+ lower(hex(randomblob(16))),
390
+ "trace_id",
391
+ "span_id",
392
+ "run_id",
393
+ "workflow_id",
394
+ "node_id",
395
+ "activation_id",
396
+ 'codemation.ai.tool_calls',
397
+ "tool_call_count",
398
+ NULL,
399
+ COALESCE("end_time", "start_time", "updated_at"),
400
+ "workflow_folder",
401
+ "node_type",
402
+ "node_role",
403
+ "model_name",
404
+ NULL,
405
+ NULL
406
+ FROM "TelemetrySpan"
407
+ WHERE "tool_call_count" IS NOT NULL;
408
+
409
+ CREATE TABLE "new_TelemetryArtifact" (
410
+ "artifact_id" TEXT NOT NULL PRIMARY KEY,
411
+ "trace_id" TEXT NOT NULL,
412
+ "span_id" TEXT NOT NULL,
413
+ "run_id" TEXT NOT NULL,
414
+ "workflow_id" TEXT NOT NULL,
415
+ "node_id" TEXT,
416
+ "activation_id" TEXT,
417
+ "kind" TEXT NOT NULL,
418
+ "content_type" TEXT NOT NULL,
419
+ "preview_text" TEXT,
420
+ "preview_json" TEXT,
421
+ "payload_text" TEXT,
422
+ "payload_json" TEXT,
423
+ "bytes" INTEGER,
424
+ "truncated" BOOLEAN,
425
+ "created_at" TEXT NOT NULL,
426
+ "expires_at" TEXT,
427
+ "retention_expires_at" TEXT
428
+ );
429
+
430
+ INSERT INTO "new_TelemetryArtifact" (
431
+ "artifact_id",
432
+ "trace_id",
433
+ "span_id",
434
+ "run_id",
435
+ "workflow_id",
436
+ "node_id",
437
+ "activation_id",
438
+ "kind",
439
+ "content_type",
440
+ "preview_text",
441
+ "preview_json",
442
+ "payload_text",
443
+ "payload_json",
444
+ "bytes",
445
+ "truncated",
446
+ "created_at",
447
+ "expires_at",
448
+ "retention_expires_at"
449
+ )
450
+ SELECT
451
+ "artifact_id",
452
+ "trace_id",
453
+ "span_id",
454
+ "run_id",
455
+ "workflow_id",
456
+ "node_id",
457
+ "activation_id",
458
+ "kind",
459
+ "content_type",
460
+ "preview_text",
461
+ "preview_json",
462
+ "payload_text",
463
+ "payload_json",
464
+ "bytes",
465
+ "truncated",
466
+ "created_at",
467
+ "expires_at",
468
+ NULL
469
+ FROM "TelemetryArtifact";
470
+
471
+ DROP TABLE "RunTraceContext";
472
+ ALTER TABLE "new_RunTraceContext" RENAME TO "RunTraceContext";
473
+
474
+ DROP TABLE "TelemetrySpan";
475
+ ALTER TABLE "new_TelemetrySpan" RENAME TO "TelemetrySpan";
476
+
477
+ DROP TABLE "TelemetryArtifact";
478
+ ALTER TABLE "new_TelemetryArtifact" RENAME TO "TelemetryArtifact";
479
+
480
+ CREATE UNIQUE INDEX "RunTraceContext_trace_id_key"
481
+ ON "RunTraceContext"("trace_id");
482
+
483
+ CREATE INDEX "RunTraceContext_workflow_id_created_at_idx"
484
+ ON "RunTraceContext"("workflow_id", "created_at");
485
+
486
+ CREATE UNIQUE INDEX "TelemetrySpan_trace_id_span_id_key"
487
+ ON "TelemetrySpan"("trace_id", "span_id");
488
+
489
+ CREATE INDEX "TelemetrySpan_trace_id_start_time_idx"
490
+ ON "TelemetrySpan"("trace_id", "start_time");
491
+
492
+ CREATE INDEX "TelemetrySpan_workflow_id_end_time_idx"
493
+ ON "TelemetrySpan"("workflow_id", "end_time");
494
+
495
+ CREATE INDEX "TelemetrySpan_workflow_id_status_end_time_idx"
496
+ ON "TelemetrySpan"("workflow_id", "status", "end_time");
497
+
498
+ CREATE INDEX "TelemetrySpan_run_id_end_time_idx"
499
+ ON "TelemetrySpan"("run_id", "end_time");
500
+
501
+ CREATE INDEX "TelemetrySpan_model_name_end_time_idx"
502
+ ON "TelemetrySpan"("model_name", "end_time");
503
+
504
+ CREATE INDEX "TelemetrySpan_connection_invocation_id_idx"
505
+ ON "TelemetrySpan"("connection_invocation_id");
506
+
507
+ CREATE INDEX "TelemetrySpan_retention_expires_at_idx"
508
+ ON "TelemetrySpan"("retention_expires_at");
509
+
510
+ CREATE INDEX "TelemetryArtifact_trace_id_created_at_idx"
511
+ ON "TelemetryArtifact"("trace_id", "created_at");
512
+
513
+ CREATE INDEX "TelemetryArtifact_span_id_created_at_idx"
514
+ ON "TelemetryArtifact"("span_id", "created_at");
515
+
516
+ CREATE INDEX "TelemetryArtifact_run_id_created_at_idx"
517
+ ON "TelemetryArtifact"("run_id", "created_at");
518
+
519
+ CREATE INDEX "TelemetryArtifact_retention_expires_at_idx"
520
+ ON "TelemetryArtifact"("retention_expires_at");
521
+
522
+ CREATE INDEX "TelemetryMetricPoint_workflow_id_observed_at_idx"
523
+ ON "TelemetryMetricPoint"("workflow_id", "observed_at");
524
+
525
+ CREATE INDEX "TelemetryMetricPoint_workflow_id_metric_name_observed_at_idx"
526
+ ON "TelemetryMetricPoint"("workflow_id", "metric_name", "observed_at");
527
+
528
+ CREATE INDEX "TelemetryMetricPoint_run_id_observed_at_idx"
529
+ ON "TelemetryMetricPoint"("run_id", "observed_at");
530
+
531
+ CREATE INDEX "TelemetryMetricPoint_trace_id_observed_at_idx"
532
+ ON "TelemetryMetricPoint"("trace_id", "observed_at");
533
+
534
+ CREATE INDEX "TelemetryMetricPoint_model_name_observed_at_idx"
535
+ ON "TelemetryMetricPoint"("model_name", "observed_at");
536
+
537
+ CREATE INDEX "TelemetryMetricPoint_retention_expires_at_idx"
538
+ ON "TelemetryMetricPoint"("retention_expires_at");
539
+
540
+ PRAGMA foreign_keys=ON;
@@ -27,7 +27,6 @@ model Run {
27
27
  workItems RunWorkItem[]
28
28
  executionInstances ExecutionInstance[]
29
29
  slotProjection RunSlotProjection?
30
-
31
30
  @@index([workflowId, startedAt])
32
31
  @@index([workflowId, status, finishedAt])
33
32
  }
@@ -139,6 +138,106 @@ model TriggerSetupState {
139
138
  @@id([workflowId, nodeId])
140
139
  }
141
140
 
141
+ model RunTraceContext {
142
+ runId String @id @map("run_id")
143
+ workflowId String @map("workflow_id")
144
+ traceId String @unique @map("trace_id")
145
+ rootSpanId String @map("root_span_id")
146
+ serviceName String? @map("service_name")
147
+ createdAt String @map("created_at")
148
+ expiresAt String? @map("expires_at")
149
+
150
+ @@index([workflowId, createdAt])
151
+ }
152
+
153
+ model TelemetrySpan {
154
+ telemetrySpanId String @id @map("telemetry_span_id")
155
+ traceId String @map("trace_id")
156
+ spanId String @map("span_id")
157
+ parentSpanId String? @map("parent_span_id")
158
+ runId String @map("run_id")
159
+ workflowId String @map("workflow_id")
160
+ nodeId String? @map("node_id")
161
+ activationId String? @map("activation_id")
162
+ connectionInvocationId String? @map("connection_invocation_id")
163
+ name String
164
+ kind String
165
+ status String?
166
+ statusMessage String? @map("status_message")
167
+ startTime String? @map("start_time")
168
+ endTime String? @map("end_time")
169
+ workflowFolder String? @map("workflow_folder")
170
+ nodeType String? @map("node_type")
171
+ nodeRole String? @map("node_role")
172
+ modelName String? @map("model_name")
173
+ attributesJson String? @map("attributes_json")
174
+ eventsJson String? @map("events_json")
175
+ retentionExpiresAt String? @map("retention_expires_at")
176
+ updatedAt String @map("updated_at")
177
+
178
+ @@unique([traceId, spanId])
179
+ @@index([traceId, startTime])
180
+ @@index([workflowId, endTime])
181
+ @@index([workflowId, status, endTime])
182
+ @@index([runId, endTime])
183
+ @@index([modelName, endTime])
184
+ @@index([connectionInvocationId])
185
+ @@index([retentionExpiresAt])
186
+ }
187
+
188
+ model TelemetryArtifact {
189
+ artifactId String @id @map("artifact_id")
190
+ traceId String @map("trace_id")
191
+ spanId String @map("span_id")
192
+ runId String @map("run_id")
193
+ workflowId String @map("workflow_id")
194
+ nodeId String? @map("node_id")
195
+ activationId String? @map("activation_id")
196
+ kind String
197
+ contentType String @map("content_type")
198
+ previewText String? @map("preview_text")
199
+ previewJson String? @map("preview_json")
200
+ payloadText String? @map("payload_text")
201
+ payloadJson String? @map("payload_json")
202
+ bytes Int?
203
+ truncated Boolean?
204
+ createdAt String @map("created_at")
205
+ expiresAt String? @map("expires_at")
206
+ retentionExpiresAt String? @map("retention_expires_at")
207
+
208
+ @@index([traceId, createdAt])
209
+ @@index([spanId, createdAt])
210
+ @@index([runId, createdAt])
211
+ @@index([retentionExpiresAt])
212
+ }
213
+
214
+ model TelemetryMetricPoint {
215
+ metricPointId String @id @map("metric_point_id")
216
+ traceId String? @map("trace_id")
217
+ spanId String? @map("span_id")
218
+ runId String? @map("run_id")
219
+ workflowId String @map("workflow_id")
220
+ nodeId String? @map("node_id")
221
+ activationId String? @map("activation_id")
222
+ metricName String @map("metric_name")
223
+ value Float
224
+ unit String?
225
+ observedAt String @map("observed_at")
226
+ workflowFolder String? @map("workflow_folder")
227
+ nodeType String? @map("node_type")
228
+ nodeRole String? @map("node_role")
229
+ modelName String? @map("model_name")
230
+ dimensionsJson String? @map("dimensions_json")
231
+ retentionExpiresAt String? @map("retention_expires_at")
232
+
233
+ @@index([workflowId, observedAt])
234
+ @@index([workflowId, metricName, observedAt])
235
+ @@index([runId, observedAt])
236
+ @@index([traceId, observedAt])
237
+ @@index([modelName, observedAt])
238
+ @@index([retentionExpiresAt])
239
+ }
240
+
142
241
  model CredentialInstance {
143
242
  instanceId String @id @map("instance_id")
144
243
  typeId String @map("type_id")