@zhijianma/studio 1.0.10

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 (235) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +158 -0
  3. package/bin/cli.js +7 -0
  4. package/dist/app/friday/args.py +65 -0
  5. package/dist/app/friday/hook.py +52 -0
  6. package/dist/app/friday/main.py +164 -0
  7. package/dist/app/friday/model.py +124 -0
  8. package/dist/app/friday/tool/agentscope_tools.py +159 -0
  9. package/dist/app/friday/tool/utils.py +161 -0
  10. package/dist/app/friday/utils/common.py +28 -0
  11. package/dist/app/friday/utils/connect.py +63 -0
  12. package/dist/app/friday/utils/constants.py +8 -0
  13. package/dist/app/requirements.txt +1 -0
  14. package/dist/public/assets/001-aaron-Bb4ZO8rt.js +1 -0
  15. package/dist/public/assets/001-little girl-CnyQBZ0k.js +1 -0
  16. package/dist/public/assets/001-man-16-BO6NLPD_.js +1 -0
  17. package/dist/public/assets/002-avatar-C3FPnFjo.js +1 -0
  18. package/dist/public/assets/002-man-15-DfiiX2xR.js +1 -0
  19. package/dist/public/assets/002-old man-D4L-hA2l.js +1 -0
  20. package/dist/public/assets/003-avatar-UMXD80xE.js +1 -0
  21. package/dist/public/assets/003-cat-Cgyj1qJU.js +1 -0
  22. package/dist/public/assets/003-woman-20-Dy0WdjIG.js +1 -0
  23. package/dist/public/assets/004-avatar-D6Aw4tpO.js +1 -0
  24. package/dist/public/assets/004-dog-DUajs1ZO.js +1 -0
  25. package/dist/public/assets/004-woman-19-D5go5okE.js +1 -0
  26. package/dist/public/assets/005-avatar-NNQ3sWMe.js +1 -0
  27. package/dist/public/assets/005-child-SN-FoL0R.js +1 -0
  28. package/dist/public/assets/005-woman-18-AedSRg8a.js +1 -0
  29. package/dist/public/assets/006-avatar-FD8IUNL_.js +1 -0
  30. package/dist/public/assets/006-grandpa-T90IdpYr.js +1 -0
  31. package/dist/public/assets/006-man-14-DuMA-IZ-.js +1 -0
  32. package/dist/public/assets/007-avatar-eSQZtpkg.js +1 -0
  33. package/dist/public/assets/007-grandson-DV7UWhrR.js +1 -0
  34. package/dist/public/assets/007-man-13-owFTee2M.js +1 -0
  35. package/dist/public/assets/008-avatar-B9Rcm8D2.js +1 -0
  36. package/dist/public/assets/008-grandmother-1-BrQNVu9I.js +1 -0
  37. package/dist/public/assets/008-teenager-ClYxB7sG.js +1 -0
  38. package/dist/public/assets/009-avatar-DNSTEyOZ.js +1 -0
  39. package/dist/public/assets/009-grandfather-1-CPOn7LN0.js +1 -0
  40. package/dist/public/assets/009-grandmother-BAW_dEQC.js +1 -0
  41. package/dist/public/assets/010-avatar-CRXWH-A0.js +1 -0
  42. package/dist/public/assets/010-boy-1-C21LhAEr.js +1 -0
  43. package/dist/public/assets/011-woman-17-CI0UoPMR.js +1 -0
  44. package/dist/public/assets/012-avatar-BO5j-gGw.js +1 -0
  45. package/dist/public/assets/012-boy-T-hL8z9d.js +1 -0
  46. package/dist/public/assets/012-niece-M-tDMWMW.js +1 -0
  47. package/dist/public/assets/013-avatar-BTyOVKVo.js +1 -0
  48. package/dist/public/assets/013-granddaughter-D4VonRL-.js +1 -0
  49. package/dist/public/assets/013-woman-16-CuR7_ppw.js +1 -0
  50. package/dist/public/assets/014-avatar-DAW_Hvos.js +1 -0
  51. package/dist/public/assets/014-man-k8AXOF1Q.js +1 -0
  52. package/dist/public/assets/014-nurse-DnVigtmM.js +1 -0
  53. package/dist/public/assets/015-avatar-AxHR3j7h.js +1 -0
  54. package/dist/public/assets/015-woman-15-rDPwBxxc.js +1 -0
  55. package/dist/public/assets/015-woman-B71QRPrr.js +1 -0
  56. package/dist/public/assets/016-avatar-BVbMUisT.js +1 -0
  57. package/dist/public/assets/016-boy-BV_jzAu3.js +1 -0
  58. package/dist/public/assets/016-woman-14-D08zoPt9.js +1 -0
  59. package/dist/public/assets/017-gaming-BEpEpa1H.js +1 -0
  60. package/dist/public/assets/017-superpower-9xQAqiKN.js +1 -0
  61. package/dist/public/assets/017-uncle-EB1lmqAo.js +1 -0
  62. package/dist/public/assets/017-woman-13-BFsTAnGR.js +1 -0
  63. package/dist/public/assets/018-avatar-CnCLJXqW.js +1 -0
  64. package/dist/public/assets/018-young-QpIX6g3z.js +1 -0
  65. package/dist/public/assets/019-gaming-Dz5tR0Te.js +1 -0
  66. package/dist/public/assets/019-man-12-DiRb1dri.js +1 -0
  67. package/dist/public/assets/019-nephew-tXAgA9cr.js +1 -0
  68. package/dist/public/assets/020-avatar-Djtnu7jj.js +1 -0
  69. package/dist/public/assets/020-man-11-BNIZQyX4.js +1 -0
  70. package/dist/public/assets/020-young woman-BzklF8tq.js +1 -0
  71. package/dist/public/assets/021-aunt-CX9ikaTy.js +1 -0
  72. package/dist/public/assets/021-avatar-DP2sODK2.js +1 -0
  73. package/dist/public/assets/021-superhero-CIWREXp0.js +1 -0
  74. package/dist/public/assets/021-wizard-Dc9X50m_.js +1 -0
  75. package/dist/public/assets/021-woman-12-n9ipJK5z.js +1 -0
  76. package/dist/public/assets/022-father-B1_-ZTn1.js +1 -0
  77. package/dist/public/assets/022-woman-11-BUCsm06E.js +1 -0
  78. package/dist/public/assets/023-avatar-TeJ6vGqs.js +1 -0
  79. package/dist/public/assets/023-ghost-BYvGsa7H.js +1 -0
  80. package/dist/public/assets/023-man-10-Dfii-GE1.js +1 -0
  81. package/dist/public/assets/023-uncle-DoAMe1Iy.js +1 -0
  82. package/dist/public/assets/024-gaming-5ovd4aeT.js +1 -0
  83. package/dist/public/assets/024-man-9-CEenp_2W.js +1 -0
  84. package/dist/public/assets/024-prince-Fx3eCiNX.js +1 -0
  85. package/dist/public/assets/024-uncle-B6tqhqxU.js +1 -0
  86. package/dist/public/assets/025-gaming-CdlTp3Ub.js +1 -0
  87. package/dist/public/assets/025-man-8-Cfp6jNt4.js +1 -0
  88. package/dist/public/assets/025-man-BxhR-XTO.js +1 -0
  89. package/dist/public/assets/025-princess-Di5TdSnG.js +1 -0
  90. package/dist/public/assets/026-avatar-DojOPRVd.js +1 -0
  91. package/dist/public/assets/026-dad-CHaoMWM5.js +1 -0
  92. package/dist/public/assets/026-owl-Dl-UtZM8.js +1 -0
  93. package/dist/public/assets/026-woman-10-CywXJiaj.js +1 -0
  94. package/dist/public/assets/027-avatar-CrEyLmOb.js +1 -0
  95. package/dist/public/assets/027-girl-Box_GaMO.js +1 -0
  96. package/dist/public/assets/028-gaming-CmOZ2uGp.js +1 -0
  97. package/dist/public/assets/028-mom-tEacX7K4.js +1 -0
  98. package/dist/public/assets/028-woman-9-C1oq4sFk.js +1 -0
  99. package/dist/public/assets/029-boy-CVg6oMuZ.js +1 -0
  100. package/dist/public/assets/029-man-7-C4eeEeTQ.js +1 -0
  101. package/dist/public/assets/030-elf-C8vikAvx.js +1 -0
  102. package/dist/public/assets/030-gaming-ufCRMN7S.js +1 -0
  103. package/dist/public/assets/030-granddaughter-DVCp3D8k.js +1 -0
  104. package/dist/public/assets/030-woman-8-Bv_tRQci.js +1 -0
  105. package/dist/public/assets/031-avatar-D0u5HVaC.js +1 -0
  106. package/dist/public/assets/031-grandpa-jKj5oB8I.js +1 -0
  107. package/dist/public/assets/031-superhero-DfSkK-j2.js +1 -0
  108. package/dist/public/assets/031-woman-7-DJHfCbTS.js +1 -0
  109. package/dist/public/assets/032-avatar-BvY6LKIZ.js +1 -0
  110. package/dist/public/assets/032-grandson-DIjRxDr-.js +1 -0
  111. package/dist/public/assets/032-man-6-CU7pJmmt.js +1 -0
  112. package/dist/public/assets/033-avatar-Dviobgw8.js +1 -0
  113. package/dist/public/assets/033-elf-CTAEJgfN.js +1 -0
  114. package/dist/public/assets/033-grandfather-BCXPgoJj.js +1 -0
  115. package/dist/public/assets/033-man-5-wgMylvNO.js +1 -0
  116. package/dist/public/assets/034-avatar-BqtUHT3_.js +1 -0
  117. package/dist/public/assets/034-little girl-CrgnV25d.js +1 -0
  118. package/dist/public/assets/034-man-4-DJdzfcSi.js +1 -0
  119. package/dist/public/assets/035-gaming-Bp8xnJp_.js +1 -0
  120. package/dist/public/assets/035-mother-Ccg5FDO8.js +1 -0
  121. package/dist/public/assets/036-avatar-q6pZKQVf.js +1 -0
  122. package/dist/public/assets/036-father-DzpzeKJJ.js +1 -0
  123. package/dist/public/assets/036-goblin-vDsj4aP0.js +1 -0
  124. package/dist/public/assets/036-grandmother-BI_Fl_aR.js +1 -0
  125. package/dist/public/assets/037-avatar-CmfvVc7v.js +1 -0
  126. package/dist/public/assets/037-grandfather-Dtp4XH-s.js +1 -0
  127. package/dist/public/assets/037-sister-BQv83Uhf.js +1 -0
  128. package/dist/public/assets/038-gaming-UtXFtv5k.js +1 -0
  129. package/dist/public/assets/038-girl-Cwg5Rv36.js +1 -0
  130. package/dist/public/assets/038-gnome-HbogTmVa.js +1 -0
  131. package/dist/public/assets/038-woman-6-B7jMwsP0.js +1 -0
  132. package/dist/public/assets/039-avatar-Bb3kVg4l.js +1 -0
  133. package/dist/public/assets/039-man-3-BSjLnoLV.js +1 -0
  134. package/dist/public/assets/039-student-CIi32WG9.js +1 -0
  135. package/dist/public/assets/040-aunt-B5XQH_sJ.js +1 -0
  136. package/dist/public/assets/040-gaming-CzTjib4v.js +1 -0
  137. package/dist/public/assets/040-vampire-UFzaHu5c.js +1 -0
  138. package/dist/public/assets/040-woman-5-Byal-gfX.js +1 -0
  139. package/dist/public/assets/041-avatar-CPQN2PvT.js +1 -0
  140. package/dist/public/assets/041-little boy-DUZFMrmJ.js +1 -0
  141. package/dist/public/assets/041-queen-CqFzW3uO.js +1 -0
  142. package/dist/public/assets/041-woman-4-CKi_Q-ns.js +1 -0
  143. package/dist/public/assets/042-avatar-BatY-WQG.js +1 -0
  144. package/dist/public/assets/042-cyclops-DAxxBVqG.js +1 -0
  145. package/dist/public/assets/042-man-omzAnpu1.js +1 -0
  146. package/dist/public/assets/042-woman-3-2Ki1Qz3j.js +1 -0
  147. package/dist/public/assets/043-avatar-DN026abg.js +1 -0
  148. package/dist/public/assets/043-child-D8_xXkcm.js +1 -0
  149. package/dist/public/assets/043-genie-DK78Ykl6.js +1 -0
  150. package/dist/public/assets/043-woman-2-DMnB0A-0.js +1 -0
  151. package/dist/public/assets/044-avatar-Bz2FAXUw.js +1 -0
  152. package/dist/public/assets/044-avatar-DzDIyuj0.js +1 -0
  153. package/dist/public/assets/044-fairy-BT73odE0.js +1 -0
  154. package/dist/public/assets/044-sister-CtNPPHh-.js +1 -0
  155. package/dist/public/assets/045-avatar-DgiFAlxj.js +1 -0
  156. package/dist/public/assets/045-man-2-BZPavI2b.js +1 -0
  157. package/dist/public/assets/045-young-B39gytpm.js +1 -0
  158. package/dist/public/assets/046-avatar-ClHeZPOV.js +1 -0
  159. package/dist/public/assets/046-brother-BSvJBKnA.js +1 -0
  160. package/dist/public/assets/046-witch-CVjM2-iJ.js +1 -0
  161. package/dist/public/assets/046-woman-1-CHWuzLfU.js +1 -0
  162. package/dist/public/assets/047-avatar-DM01i1ZC.js +1 -0
  163. package/dist/public/assets/047-king-knA4oWNa.js +1 -0
  164. package/dist/public/assets/047-man-1-DRWdGzL5.js +1 -0
  165. package/dist/public/assets/048-father-B0wiM2h6.js +1 -0
  166. package/dist/public/assets/048-gaming-D7s83-h3.js +1 -0
  167. package/dist/public/assets/048-girl-CxGcfLgU.js +1 -0
  168. package/dist/public/assets/049-avatar-BfGDVwlO.js +1 -0
  169. package/dist/public/assets/049-little boy-Bu5mmsUf.js +1 -0
  170. package/dist/public/assets/049-man-B3xcAso3.js +1 -0
  171. package/dist/public/assets/050-avatar-itJOA0dd.js +1 -0
  172. package/dist/public/assets/050-boy-DEIcVyYT.js +1 -0
  173. package/dist/public/assets/050-knight-KRUkfXDS.js +1 -0
  174. package/dist/public/assets/051-avatar-fISL-mLU.js +1 -0
  175. package/dist/public/assets/052-avatar-BYrM0aPD.js +1 -0
  176. package/dist/public/assets/053-avatar-B-rnufvm.js +1 -0
  177. package/dist/public/assets/054-avatar-B7rwS7Qv.js +1 -0
  178. package/dist/public/assets/055-gaming-DqUOmMvT.js +1 -0
  179. package/dist/public/assets/056-avatar-D1lb7KL9.js +1 -0
  180. package/dist/public/assets/057-avatar-Df7NRaJW.js +1 -0
  181. package/dist/public/assets/058-avatar-C8zso2zk.js +1 -0
  182. package/dist/public/assets/059-avatar-zEhHpOcr.js +1 -0
  183. package/dist/public/assets/060-avatar-DkNabW8M.js +1 -0
  184. package/dist/public/assets/index-CWvY7i3l.css +1 -0
  185. package/dist/public/assets/index-Zxr-JuKD.js +820 -0
  186. package/dist/public/index.html +14 -0
  187. package/dist/public/logo.svg +42 -0
  188. package/dist/server/src/dao/FridayAppMessage.js +103 -0
  189. package/dist/server/src/dao/InputRequest.js +99 -0
  190. package/dist/server/src/dao/Message.js +42 -0
  191. package/dist/server/src/dao/Reply.js +96 -0
  192. package/dist/server/src/dao/Run.js +395 -0
  193. package/dist/server/src/dao/Trace.js +643 -0
  194. package/dist/server/src/database.js +54 -0
  195. package/dist/server/src/index.js +211 -0
  196. package/dist/server/src/migrations/1730000000000-AddMessageReplyForeignKey.js +216 -0
  197. package/dist/server/src/migrations/1740000000000-MigrateSpanTable.js +638 -0
  198. package/dist/server/src/migrations/index.js +19 -0
  199. package/dist/server/src/models/FridayApp.js +69 -0
  200. package/dist/server/src/models/FridayAppView.js +94 -0
  201. package/dist/server/src/models/InputRequest.js +41 -0
  202. package/dist/server/src/models/Message.js +39 -0
  203. package/dist/server/src/models/ModelInvocationView.js +127 -0
  204. package/dist/server/src/models/Reply.js +50 -0
  205. package/dist/server/src/models/Run.js +63 -0
  206. package/dist/server/src/models/RunView.js +111 -0
  207. package/dist/server/src/models/Trace.js +154 -0
  208. package/dist/server/src/otel/grpc-server.js +154 -0
  209. package/dist/server/src/otel/opentelemetry/proto/collector/trace/v1/trace_service.js +309 -0
  210. package/dist/server/src/otel/opentelemetry/proto/common/v1/common.js +747 -0
  211. package/dist/server/src/otel/opentelemetry/proto/resource/v1/resource.js +170 -0
  212. package/dist/server/src/otel/opentelemetry/proto/trace/v1/trace.js +1134 -0
  213. package/dist/server/src/otel/processor.js +395 -0
  214. package/dist/server/src/otel/router.js +128 -0
  215. package/dist/server/src/services/ReplyingStateManager.js +21 -0
  216. package/dist/server/src/trpc/router.js +385 -0
  217. package/dist/server/src/trpc/socket.js +589 -0
  218. package/dist/server/src/utils/index.js +17 -0
  219. package/dist/server/src/utils/processUtils.js +27 -0
  220. package/dist/shared/src/config/client.js +6 -0
  221. package/dist/shared/src/config/common.js +32 -0
  222. package/dist/shared/src/config/friday.js +168 -0
  223. package/dist/shared/src/config/index.js +19 -0
  224. package/dist/shared/src/config/server.js +104 -0
  225. package/dist/shared/src/index.js +18 -0
  226. package/dist/shared/src/types/index.js +20 -0
  227. package/dist/shared/src/types/messageForm.js +25 -0
  228. package/dist/shared/src/types/trace.js +20 -0
  229. package/dist/shared/src/types/trpc.js +98 -0
  230. package/dist/shared/src/types/usage.js +7 -0
  231. package/dist/shared/src/utils/banner.js +74 -0
  232. package/dist/shared/src/utils/objectUtils.js +74 -0
  233. package/dist/shared/src/utils/terminal.js +30 -0
  234. package/dist/shared/src/utils/timeUtils.js +86 -0
  235. package/package.json +89 -0
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SpanTable = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ // Span table - optimized for trace listing and filtering
15
+ let SpanTable = class SpanTable extends typeorm_1.BaseEntity {
16
+ };
17
+ exports.SpanTable = SpanTable;
18
+ __decorate([
19
+ (0, typeorm_1.PrimaryColumn)({ nullable: false }),
20
+ __metadata("design:type", String)
21
+ ], SpanTable.prototype, "id", void 0);
22
+ __decorate([
23
+ (0, typeorm_1.Column)(),
24
+ __metadata("design:type", String)
25
+ ], SpanTable.prototype, "traceId", void 0);
26
+ __decorate([
27
+ (0, typeorm_1.Column)(),
28
+ __metadata("design:type", String)
29
+ ], SpanTable.prototype, "spanId", void 0);
30
+ __decorate([
31
+ (0, typeorm_1.Column)({ nullable: true }),
32
+ __metadata("design:type", String)
33
+ ], SpanTable.prototype, "traceState", void 0);
34
+ __decorate([
35
+ (0, typeorm_1.Column)({ nullable: true }),
36
+ __metadata("design:type", String)
37
+ ], SpanTable.prototype, "parentSpanId", void 0);
38
+ __decorate([
39
+ (0, typeorm_1.Column)({ nullable: true }),
40
+ __metadata("design:type", Number)
41
+ ], SpanTable.prototype, "flags", void 0);
42
+ __decorate([
43
+ (0, typeorm_1.Column)(),
44
+ __metadata("design:type", String)
45
+ ], SpanTable.prototype, "name", void 0);
46
+ __decorate([
47
+ (0, typeorm_1.Column)(),
48
+ __metadata("design:type", Number)
49
+ ], SpanTable.prototype, "kind", void 0);
50
+ __decorate([
51
+ (0, typeorm_1.Column)(),
52
+ __metadata("design:type", String)
53
+ ], SpanTable.prototype, "startTimeUnixNano", void 0);
54
+ __decorate([
55
+ (0, typeorm_1.Column)(),
56
+ __metadata("design:type", String)
57
+ ], SpanTable.prototype, "endTimeUnixNano", void 0);
58
+ __decorate([
59
+ (0, typeorm_1.Column)('json'),
60
+ __metadata("design:type", Object)
61
+ ], SpanTable.prototype, "attributes", void 0);
62
+ __decorate([
63
+ (0, typeorm_1.Column)({ nullable: true }),
64
+ __metadata("design:type", Number)
65
+ ], SpanTable.prototype, "droppedAttributesCount", void 0);
66
+ __decorate([
67
+ (0, typeorm_1.Column)('json', { nullable: true }),
68
+ __metadata("design:type", Array)
69
+ ], SpanTable.prototype, "events", void 0);
70
+ __decorate([
71
+ (0, typeorm_1.Column)({ nullable: true }),
72
+ __metadata("design:type", Number)
73
+ ], SpanTable.prototype, "droppedEventsCount", void 0);
74
+ __decorate([
75
+ (0, typeorm_1.Column)('json', { nullable: true }),
76
+ __metadata("design:type", Array)
77
+ ], SpanTable.prototype, "links", void 0);
78
+ __decorate([
79
+ (0, typeorm_1.Column)({ nullable: true }),
80
+ __metadata("design:type", Number)
81
+ ], SpanTable.prototype, "droppedLinksCount", void 0);
82
+ __decorate([
83
+ (0, typeorm_1.Column)('json'),
84
+ __metadata("design:type", Object)
85
+ ], SpanTable.prototype, "status", void 0);
86
+ __decorate([
87
+ (0, typeorm_1.Column)('json'),
88
+ __metadata("design:type", Object)
89
+ ], SpanTable.prototype, "resource", void 0);
90
+ __decorate([
91
+ (0, typeorm_1.Column)('json'),
92
+ __metadata("design:type", Object)
93
+ ], SpanTable.prototype, "scope", void 0);
94
+ __decorate([
95
+ (0, typeorm_1.Column)({ nullable: true }),
96
+ __metadata("design:type", Number)
97
+ ], SpanTable.prototype, "statusCode", void 0);
98
+ __decorate([
99
+ (0, typeorm_1.Column)({ nullable: true }),
100
+ __metadata("design:type", String)
101
+ ], SpanTable.prototype, "serviceName", void 0);
102
+ __decorate([
103
+ (0, typeorm_1.Column)({ nullable: true }),
104
+ __metadata("design:type", String)
105
+ ], SpanTable.prototype, "operationName", void 0);
106
+ __decorate([
107
+ (0, typeorm_1.Column)({ nullable: true }),
108
+ __metadata("design:type", String)
109
+ ], SpanTable.prototype, "instrumentationName", void 0);
110
+ __decorate([
111
+ (0, typeorm_1.Column)({ nullable: true }),
112
+ __metadata("design:type", String)
113
+ ], SpanTable.prototype, "instrumentationVersion", void 0);
114
+ __decorate([
115
+ (0, typeorm_1.Column)({ nullable: true }),
116
+ __metadata("design:type", String)
117
+ ], SpanTable.prototype, "model", void 0);
118
+ __decorate([
119
+ (0, typeorm_1.Column)({ nullable: true }),
120
+ __metadata("design:type", Number)
121
+ ], SpanTable.prototype, "inputTokens", void 0);
122
+ __decorate([
123
+ (0, typeorm_1.Column)({ nullable: true }),
124
+ __metadata("design:type", Number)
125
+ ], SpanTable.prototype, "outputTokens", void 0);
126
+ __decorate([
127
+ (0, typeorm_1.Column)({ nullable: true }),
128
+ __metadata("design:type", Number)
129
+ ], SpanTable.prototype, "totalTokens", void 0);
130
+ __decorate([
131
+ (0, typeorm_1.Column)({ nullable: true }),
132
+ __metadata("design:type", String)
133
+ ], SpanTable.prototype, "conversationId", void 0);
134
+ __decorate([
135
+ (0, typeorm_1.Column)('float'),
136
+ __metadata("design:type", Number)
137
+ ], SpanTable.prototype, "latencyNs", void 0);
138
+ exports.SpanTable = SpanTable = __decorate([
139
+ (0, typeorm_1.Entity)(),
140
+ (0, typeorm_1.Index)(['traceId']),
141
+ (0, typeorm_1.Index)(['spanId']),
142
+ (0, typeorm_1.Index)(['parentSpanId']),
143
+ (0, typeorm_1.Index)(['startTimeUnixNano']),
144
+ (0, typeorm_1.Index)(['statusCode']),
145
+ (0, typeorm_1.Index)(['latencyNs']),
146
+ (0, typeorm_1.Index)(['serviceName']),
147
+ (0, typeorm_1.Index)(['operationName']),
148
+ (0, typeorm_1.Index)(['instrumentationName']),
149
+ (0, typeorm_1.Index)(['model']),
150
+ (0, typeorm_1.Index)(['inputTokens']),
151
+ (0, typeorm_1.Index)(['outputTokens']),
152
+ (0, typeorm_1.Index)(['totalTokens']),
153
+ (0, typeorm_1.Index)(['conversationId'])
154
+ ], SpanTable);
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.OtelGrpcServer = void 0;
46
+ const grpc = __importStar(require("@grpc/grpc-js"));
47
+ const Trace_1 = require("../dao/Trace");
48
+ const socket_1 = require("../trpc/socket");
49
+ const trace_service_1 = require("./opentelemetry/proto/collector/trace/v1/trace_service");
50
+ const processor_1 = require("./processor");
51
+ /**
52
+ * gRPC server implementation for OpenTelemetry TraceService
53
+ */
54
+ class OtelGrpcServer {
55
+ constructor(defaultPort = 4317) {
56
+ this.defaultPort = defaultPort;
57
+ this.server = new grpc.Server();
58
+ this.setupService();
59
+ }
60
+ setupService() {
61
+ // Create TraceService implementation
62
+ const traceServiceImpl = {
63
+ Export: this.handleExport.bind(this),
64
+ };
65
+ // Add the service to the server
66
+ this.server.addService(trace_service_1.opentelemetry.proto.collector.trace.v1
67
+ .UnimplementedTraceServiceService.definition, traceServiceImpl);
68
+ }
69
+ /**
70
+ * Handle Export RPC call
71
+ */
72
+ handleExport(call, callback) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ try {
75
+ console.debug('[OTEL gRPC] Received ExportTraceServiceRequest');
76
+ const request = call.request;
77
+ const resourceSpans = request.resource_spans || [];
78
+ if (resourceSpans.length === 0) {
79
+ console.warn('[OTEL gRPC] Empty resource_spans in request');
80
+ const response = new trace_service_1.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse();
81
+ callback(null, response);
82
+ return;
83
+ }
84
+ // Convert ResourceSpans to plain objects for processing
85
+ const resourceSpansArray = resourceSpans.map((rs) => rs.toObject());
86
+ // Process spans using the existing processor
87
+ const spans = processor_1.SpanProcessor.batchProcessOTLPTraces(resourceSpansArray);
88
+ // Save spans to the database
89
+ yield Trace_1.SpanDao.saveSpans(spans);
90
+ // Broadcast spans to the run room
91
+ socket_1.SocketManager.broadcastSpanDataToRunRoom(spans);
92
+ console.debug(`[OTEL gRPC] Successfully processed ${spans.length} spans`);
93
+ // Create success response
94
+ const response = new trace_service_1.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse();
95
+ callback(null, response);
96
+ }
97
+ catch (error) {
98
+ console.error('[OTEL gRPC] Error processing traces:', error);
99
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
100
+ const response = new trace_service_1.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse();
101
+ const partialSuccess = new trace_service_1.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess();
102
+ partialSuccess.error_message = errorMessage;
103
+ response.partial_success = partialSuccess;
104
+ callback({
105
+ code: grpc.status.INTERNAL,
106
+ details: errorMessage,
107
+ metadata: new grpc.Metadata(),
108
+ }, response);
109
+ }
110
+ });
111
+ }
112
+ /**
113
+ * Start the gRPC server
114
+ * @param port - Port to bind the server to. If not provided, uses the default port from constructor.
115
+ */
116
+ start(port) {
117
+ const bindPort = port !== null && port !== void 0 ? port : this.defaultPort;
118
+ return new Promise((resolve, reject) => {
119
+ this.server.bindAsync(`0.0.0.0:${bindPort}`, grpc.ServerCredentials.createInsecure(), (error) => {
120
+ if (error) {
121
+ console.error(`[OTEL gRPC] Failed to start server on port ${bindPort}:`, error);
122
+ reject(error);
123
+ return;
124
+ }
125
+ resolve();
126
+ });
127
+ });
128
+ }
129
+ /**
130
+ * Stop the gRPC server
131
+ */
132
+ stop() {
133
+ return new Promise((resolve, reject) => {
134
+ this.server.tryShutdown((error) => {
135
+ if (error) {
136
+ console.error('[OTEL gRPC] Error shutting down server:', error);
137
+ reject(error);
138
+ }
139
+ else {
140
+ console.debug('[OTEL gRPC] Server stopped');
141
+ resolve();
142
+ }
143
+ });
144
+ });
145
+ }
146
+ /**
147
+ * Force shutdown the gRPC server
148
+ */
149
+ forceShutdown() {
150
+ this.server.forceShutdown();
151
+ console.debug('[OTEL gRPC] Server force shutdown');
152
+ }
153
+ }
154
+ exports.OtelGrpcServer = OtelGrpcServer;
@@ -0,0 +1,309 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
36
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
37
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
38
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
39
+ };
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.opentelemetry = void 0;
42
+ /**
43
+ * Generated by the protoc-gen-ts. DO NOT EDIT!
44
+ * compiler version: 5.27.0
45
+ * source: opentelemetry/proto/collector/trace/v1/trace_service.proto
46
+ * git: https://github.com/thesayyn/protoc-gen-ts */
47
+ const grpc_1 = __importStar(require("@grpc/grpc-js"));
48
+ const pb_1 = __importStar(require("google-protobuf"));
49
+ const dependency_1 = __importStar(require("../../../trace/v1/trace"));
50
+ var opentelemetry;
51
+ (function (opentelemetry) {
52
+ var proto;
53
+ (function (proto) {
54
+ var collector;
55
+ (function (collector) {
56
+ var trace;
57
+ (function (trace) {
58
+ var v1;
59
+ (function (v1) {
60
+ var _ExportTraceServiceRequest_one_of_decls, _ExportTraceServiceResponse_one_of_decls, _ExportTracePartialSuccess_one_of_decls;
61
+ class ExportTraceServiceRequest extends pb_1.Message {
62
+ constructor(data) {
63
+ super();
64
+ _ExportTraceServiceRequest_one_of_decls.set(this, []);
65
+ pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], __classPrivateFieldGet(this, _ExportTraceServiceRequest_one_of_decls, "f"));
66
+ if (!Array.isArray(data) && typeof data == 'object') {
67
+ if ('resource_spans' in data &&
68
+ data.resource_spans != undefined) {
69
+ this.resource_spans = data.resource_spans;
70
+ }
71
+ }
72
+ }
73
+ get resource_spans() {
74
+ return pb_1.Message.getRepeatedWrapperField(this, dependency_1.opentelemetry.proto.trace.v1.ResourceSpans, 1);
75
+ }
76
+ set resource_spans(value) {
77
+ pb_1.Message.setRepeatedWrapperField(this, 1, value);
78
+ }
79
+ static fromObject(data) {
80
+ const message = new ExportTraceServiceRequest({});
81
+ if (data.resource_spans != null) {
82
+ message.resource_spans = data.resource_spans.map((item) => dependency_1.opentelemetry.proto.trace.v1.ResourceSpans.fromObject(item));
83
+ }
84
+ return message;
85
+ }
86
+ toObject() {
87
+ const data = {};
88
+ if (this.resource_spans != null) {
89
+ data.resource_spans = this.resource_spans.map((item) => item.toObject());
90
+ }
91
+ return data;
92
+ }
93
+ serialize(w) {
94
+ const writer = w || new pb_1.BinaryWriter();
95
+ if (this.resource_spans.length)
96
+ writer.writeRepeatedMessage(1, this.resource_spans, (item) => item.serialize(writer));
97
+ if (!w)
98
+ return writer.getResultBuffer();
99
+ }
100
+ static deserialize(bytes) {
101
+ const reader = bytes instanceof pb_1.BinaryReader
102
+ ? bytes
103
+ : new pb_1.BinaryReader(bytes), message = new ExportTraceServiceRequest();
104
+ while (reader.nextField()) {
105
+ if (reader.isEndGroup())
106
+ break;
107
+ switch (reader.getFieldNumber()) {
108
+ case 1:
109
+ reader.readMessage(message.resource_spans, () => pb_1.Message.addToRepeatedWrapperField(message, 1, dependency_1.opentelemetry.proto.trace.v1.ResourceSpans.deserialize(reader), dependency_1.opentelemetry.proto.trace.v1
110
+ .ResourceSpans));
111
+ break;
112
+ default:
113
+ reader.skipField();
114
+ }
115
+ }
116
+ return message;
117
+ }
118
+ serializeBinary() {
119
+ return this.serialize();
120
+ }
121
+ static deserializeBinary(bytes) {
122
+ return ExportTraceServiceRequest.deserialize(bytes);
123
+ }
124
+ }
125
+ _ExportTraceServiceRequest_one_of_decls = new WeakMap();
126
+ v1.ExportTraceServiceRequest = ExportTraceServiceRequest;
127
+ class ExportTraceServiceResponse extends pb_1.Message {
128
+ constructor(data) {
129
+ super();
130
+ _ExportTraceServiceResponse_one_of_decls.set(this, []);
131
+ pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], __classPrivateFieldGet(this, _ExportTraceServiceResponse_one_of_decls, "f"));
132
+ if (!Array.isArray(data) && typeof data == 'object') {
133
+ if ('partial_success' in data &&
134
+ data.partial_success != undefined) {
135
+ this.partial_success = data.partial_success;
136
+ }
137
+ }
138
+ }
139
+ get partial_success() {
140
+ return pb_1.Message.getWrapperField(this, ExportTracePartialSuccess, 1);
141
+ }
142
+ set partial_success(value) {
143
+ pb_1.Message.setWrapperField(this, 1, value);
144
+ }
145
+ get has_partial_success() {
146
+ return pb_1.Message.getField(this, 1) != null;
147
+ }
148
+ static fromObject(data) {
149
+ const message = new ExportTraceServiceResponse({});
150
+ if (data.partial_success != null) {
151
+ message.partial_success = ExportTracePartialSuccess.fromObject(data.partial_success);
152
+ }
153
+ return message;
154
+ }
155
+ toObject() {
156
+ const data = {};
157
+ if (this.partial_success != null) {
158
+ data.partial_success = this.partial_success.toObject();
159
+ }
160
+ return data;
161
+ }
162
+ serialize(w) {
163
+ const writer = w || new pb_1.BinaryWriter();
164
+ if (this.has_partial_success)
165
+ writer.writeMessage(1, this.partial_success, () => this.partial_success.serialize(writer));
166
+ if (!w)
167
+ return writer.getResultBuffer();
168
+ }
169
+ static deserialize(bytes) {
170
+ const reader = bytes instanceof pb_1.BinaryReader
171
+ ? bytes
172
+ : new pb_1.BinaryReader(bytes), message = new ExportTraceServiceResponse();
173
+ while (reader.nextField()) {
174
+ if (reader.isEndGroup())
175
+ break;
176
+ switch (reader.getFieldNumber()) {
177
+ case 1:
178
+ reader.readMessage(message.partial_success, () => (message.partial_success =
179
+ ExportTracePartialSuccess.deserialize(reader)));
180
+ break;
181
+ default:
182
+ reader.skipField();
183
+ }
184
+ }
185
+ return message;
186
+ }
187
+ serializeBinary() {
188
+ return this.serialize();
189
+ }
190
+ static deserializeBinary(bytes) {
191
+ return ExportTraceServiceResponse.deserialize(bytes);
192
+ }
193
+ }
194
+ _ExportTraceServiceResponse_one_of_decls = new WeakMap();
195
+ v1.ExportTraceServiceResponse = ExportTraceServiceResponse;
196
+ class ExportTracePartialSuccess extends pb_1.Message {
197
+ constructor(data) {
198
+ super();
199
+ _ExportTracePartialSuccess_one_of_decls.set(this, []);
200
+ pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], __classPrivateFieldGet(this, _ExportTracePartialSuccess_one_of_decls, "f"));
201
+ if (!Array.isArray(data) && typeof data == 'object') {
202
+ if ('rejected_spans' in data &&
203
+ data.rejected_spans != undefined) {
204
+ this.rejected_spans = data.rejected_spans;
205
+ }
206
+ if ('error_message' in data &&
207
+ data.error_message != undefined) {
208
+ this.error_message = data.error_message;
209
+ }
210
+ }
211
+ }
212
+ get rejected_spans() {
213
+ return pb_1.Message.getFieldWithDefault(this, 1, 0);
214
+ }
215
+ set rejected_spans(value) {
216
+ pb_1.Message.setField(this, 1, value);
217
+ }
218
+ get error_message() {
219
+ return pb_1.Message.getFieldWithDefault(this, 2, '');
220
+ }
221
+ set error_message(value) {
222
+ pb_1.Message.setField(this, 2, value);
223
+ }
224
+ static fromObject(data) {
225
+ const message = new ExportTracePartialSuccess({});
226
+ if (data.rejected_spans != null) {
227
+ message.rejected_spans = data.rejected_spans;
228
+ }
229
+ if (data.error_message != null) {
230
+ message.error_message = data.error_message;
231
+ }
232
+ return message;
233
+ }
234
+ toObject() {
235
+ const data = {};
236
+ if (this.rejected_spans != null) {
237
+ data.rejected_spans = this.rejected_spans;
238
+ }
239
+ if (this.error_message != null) {
240
+ data.error_message = this.error_message;
241
+ }
242
+ return data;
243
+ }
244
+ serialize(w) {
245
+ const writer = w || new pb_1.BinaryWriter();
246
+ if (this.rejected_spans != 0)
247
+ writer.writeInt64(1, this.rejected_spans);
248
+ if (this.error_message.length)
249
+ writer.writeString(2, this.error_message);
250
+ if (!w)
251
+ return writer.getResultBuffer();
252
+ }
253
+ static deserialize(bytes) {
254
+ const reader = bytes instanceof pb_1.BinaryReader
255
+ ? bytes
256
+ : new pb_1.BinaryReader(bytes), message = new ExportTracePartialSuccess();
257
+ while (reader.nextField()) {
258
+ if (reader.isEndGroup())
259
+ break;
260
+ switch (reader.getFieldNumber()) {
261
+ case 1:
262
+ message.rejected_spans = reader.readInt64();
263
+ break;
264
+ case 2:
265
+ message.error_message = reader.readString();
266
+ break;
267
+ default:
268
+ reader.skipField();
269
+ }
270
+ }
271
+ return message;
272
+ }
273
+ serializeBinary() {
274
+ return this.serialize();
275
+ }
276
+ static deserializeBinary(bytes) {
277
+ return ExportTracePartialSuccess.deserialize(bytes);
278
+ }
279
+ }
280
+ _ExportTracePartialSuccess_one_of_decls = new WeakMap();
281
+ v1.ExportTracePartialSuccess = ExportTracePartialSuccess;
282
+ class UnimplementedTraceServiceService {
283
+ }
284
+ UnimplementedTraceServiceService.definition = {
285
+ Export: {
286
+ path: '/opentelemetry.proto.collector.trace.v1.TraceService/Export',
287
+ requestStream: false,
288
+ responseStream: false,
289
+ requestSerialize: (message) => Buffer.from(message.serialize()),
290
+ requestDeserialize: (bytes) => ExportTraceServiceRequest.deserialize(new Uint8Array(bytes)),
291
+ responseSerialize: (message) => Buffer.from(message.serialize()),
292
+ responseDeserialize: (bytes) => ExportTraceServiceResponse.deserialize(new Uint8Array(bytes)),
293
+ },
294
+ };
295
+ v1.UnimplementedTraceServiceService = UnimplementedTraceServiceService;
296
+ class TraceServiceClient extends grpc_1.makeGenericClientConstructor(UnimplementedTraceServiceService.definition, 'TraceService', {}) {
297
+ constructor(address, credentials, options) {
298
+ super(address, credentials, options);
299
+ this.Export = (message, metadata, options, callback) => {
300
+ return super.Export(message, metadata, options, callback);
301
+ };
302
+ }
303
+ }
304
+ v1.TraceServiceClient = TraceServiceClient;
305
+ })(v1 = trace.v1 || (trace.v1 = {}));
306
+ })(trace = collector.trace || (collector.trace = {}));
307
+ })(collector = proto.collector || (proto.collector = {}));
308
+ })(proto = opentelemetry.proto || (opentelemetry.proto = {}));
309
+ })(opentelemetry || (exports.opentelemetry = opentelemetry = {}));