divi 0.0.1b2__tar.gz → 0.0.1b3__tar.gz

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 (259) hide show
  1. {divi-0.0.1b2 → divi-0.0.1b3}/PKG-INFO +1 -1
  2. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/components/create-dialog.tsx +1 -1
  3. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/layout.tsx +4 -3
  4. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/Modal.tsx +8 -2
  5. {divi-0.0.1b2 → divi-0.0.1b3}/divi/__init__.py +1 -1
  6. {divi-0.0.1b2 → divi-0.0.1b3}/divi/evaluation/evaluator.py +12 -3
  7. {divi-0.0.1b2 → divi-0.0.1b3}/divi/evaluation/prompts.py +1 -1
  8. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/datapark/handler/evaluation.go +0 -17
  9. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/datapark/handler/openai.go +0 -18
  10. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/datapark/handler/trace.go +0 -22
  11. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/database/connect.go +1 -1
  12. divi-0.0.1b3/services/internal/pkg/database/create.go +75 -0
  13. {divi-0.0.1b2 → divi-0.0.1b3}/.dockerignore +0 -0
  14. {divi-0.0.1b2 → divi-0.0.1b3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  15. {divi-0.0.1b2 → divi-0.0.1b3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  16. {divi-0.0.1b2 → divi-0.0.1b3}/.github/dependabot.yml +0 -0
  17. {divi-0.0.1b2 → divi-0.0.1b3}/.github/pull_request_template.md +0 -0
  18. {divi-0.0.1b2 → divi-0.0.1b3}/.gitignore +0 -0
  19. {divi-0.0.1b2 → divi-0.0.1b3}/LICENSE +0 -0
  20. {divi-0.0.1b2 → divi-0.0.1b3}/README.md +0 -0
  21. {divi-0.0.1b2 → divi-0.0.1b3}/apps/README.md +0 -0
  22. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/README.md +0 -0
  23. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/docs.json +0 -0
  24. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/en/concepts/score.mdx +0 -0
  25. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/en/concepts/session.mdx +0 -0
  26. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/en/development/roadmap.mdx +0 -0
  27. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/en/introduction.mdx +0 -0
  28. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/en/quickstart/evaluation.mdx +0 -0
  29. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/en/quickstart/trace.mdx +0 -0
  30. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/en/tutorials/self-refine.mdx +0 -0
  31. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/favicon.ico +0 -0
  32. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/images/pirate-eval-example-dark.png +0 -0
  33. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/images/pirate-eval-example.png +0 -0
  34. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/images/pirate-example-dark.png +0 -0
  35. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/images/pirate-example.png +0 -0
  36. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/images/researcher-angel.png +0 -0
  37. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/images/scholar-angel.png +0 -0
  38. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/package.json +0 -0
  39. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/snippets/evaluation/pirate-custom-eval.mdx +0 -0
  40. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/snippets/evaluation/pirate-eval.mdx +0 -0
  41. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/snippets/pirate-example.mdx +0 -0
  42. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/snippets/snippet-intro.mdx +0 -0
  43. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/zh/concepts/score.mdx +0 -0
  44. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/zh/concepts/session.mdx +0 -0
  45. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/zh/development/roadmap.mdx +0 -0
  46. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/zh/introduction.mdx +0 -0
  47. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/zh/quickstart/evaluation.mdx +0 -0
  48. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/zh/quickstart/trace.mdx +0 -0
  49. {divi-0.0.1b2 → divi-0.0.1b3}/apps/docs/zh/tutorials/self-refine.mdx +0 -0
  50. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/Dockerfile +0 -0
  51. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/README.md +0 -0
  52. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/codegen.ts +0 -0
  53. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/package.json +0 -0
  54. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/src/datasources/auth-api.ts +0 -0
  55. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/src/datasources/datapark-api.ts +0 -0
  56. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/src/index.ts +0 -0
  57. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/src/resolvers.ts +0 -0
  58. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/src/schema.graphql +0 -0
  59. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/src/types/context.d.ts +0 -0
  60. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/src/types/response.d.ts +0 -0
  61. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/src/types/types.d.ts +0 -0
  62. {divi-0.0.1b2 → divi-0.0.1b3}/apps/graphql/tsconfig.json +0 -0
  63. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/.gitignore +0 -0
  64. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/README.md +0 -0
  65. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/@modal/(.)traces/[id]/page.tsx +1 -1
  66. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/@modal/default.tsx +0 -0
  67. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/actions.ts +0 -0
  68. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/components/columns.tsx +0 -0
  69. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/components/data-table-cell-viewer.tsx +0 -0
  70. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/components/data-table-toolbar.tsx +0 -0
  71. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/components/data-table.tsx +0 -0
  72. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/components/delete-dialog.tsx +0 -0
  73. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/data/data.tsx +0 -0
  74. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/data/schema.ts +0 -0
  75. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/layout.tsx +0 -0
  76. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/api-keys/page.tsx +0 -0
  77. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/components/app-sidebar.tsx +0 -0
  78. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/components/nav-main.tsx +0 -0
  79. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/components/nav-secondary.tsx +0 -0
  80. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/components/nav-user.tsx +0 -0
  81. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/components/site-header.tsx +0 -0
  82. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/settings/account/components/account-form.tsx +0 -0
  83. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/settings/account/page.tsx +0 -0
  84. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/settings/appearance/components/appearance-form.tsx +0 -0
  85. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/settings/appearance/page.tsx +0 -0
  86. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/settings/components/profile-form.tsx +0 -0
  87. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/settings/components/sidebar-nav.tsx +0 -0
  88. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/settings/layout.tsx +0 -0
  89. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/settings/page.tsx +0 -0
  90. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(children)/[id]/components/Span.tsx +0 -0
  91. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(children)/[id]/components/responsive-resizable.tsx +0 -0
  92. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(children)/[id]/components/trace-board.tsx +0 -0
  93. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(children)/[id]/components/trace-chart.tsx +0 -0
  94. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(children)/[id]/page.tsx +0 -0
  95. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(overview)/components/columns.tsx +0 -0
  96. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(overview)/components/data-table-row-action.tsx +0 -0
  97. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(overview)/components/data-table-toolbar.tsx +0 -0
  98. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(overview)/components/data-table.tsx +0 -0
  99. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(overview)/data/data.tsx +0 -0
  100. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(overview)/data/schema.ts +0 -0
  101. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(overview)/layout.tsx +0 -0
  102. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/traces/(overview)/page.tsx +0 -0
  103. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/usages/actions.ts +0 -0
  104. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/usages/components/usage-board.tsx +0 -0
  105. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/usages/components/usage-chart.tsx +0 -0
  106. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/usages/layout.tsx +0 -0
  107. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/dashboard/usages/page.tsx +0 -0
  108. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/favicon.ico +0 -0
  109. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/home/components/home-header.tsx +0 -0
  110. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/home/components/home-hero.tsx +0 -0
  111. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/home/page.tsx +0 -0
  112. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/layout.tsx +0 -0
  113. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/login/components/login-form.tsx +0 -0
  114. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/login/page.tsx +0 -0
  115. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/page.tsx +0 -0
  116. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/signup/components/signup-form.tsx +0 -0
  117. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/app/signup/page.tsx +0 -0
  118. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/ApolloWrapper.tsx +0 -0
  119. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/Highter.tsx +0 -0
  120. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/calendar.tsx +0 -0
  121. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/data-table-column-header.tsx +0 -0
  122. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/data-table-faceted-filter.tsx +0 -0
  123. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/data-table-pagination.tsx +0 -0
  124. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/data-table-row.tsx +0 -0
  125. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/data-table-view-options.tsx +0 -0
  126. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/date-picker.tsx +0 -0
  127. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/mode-switcher.tsx +0 -0
  128. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components/theme-provider.tsx +0 -0
  129. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/components.json +0 -0
  130. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/hooks/actionState.ts +0 -0
  131. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/hooks/apolloClient.ts +0 -0
  132. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/callback/toast-callback.ts +0 -0
  133. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/callback/with-callback.ts +0 -0
  134. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/server/README.md +0 -0
  135. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/server/auth.ts +0 -0
  136. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/server/cookies.ts +0 -0
  137. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/server/evaluation.ts +0 -0
  138. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/server/openai.ts +0 -0
  139. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/server/span.ts +0 -0
  140. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/types/span.d.ts +0 -0
  141. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/types/state.d.ts +0 -0
  142. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/types/usage.d.ts +0 -0
  143. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/lib/utils.ts +0 -0
  144. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/middleware.ts +0 -0
  145. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/next-env.d.ts +0 -0
  146. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/next.config.ts +0 -0
  147. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/package.json +0 -0
  148. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/postcss.config.mjs +0 -0
  149. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/public/peeking-angel.png +0 -0
  150. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/public/thinking-angel.png +0 -0
  151. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/tsconfig.json +0 -0
  152. {divi-0.0.1b2 → divi-0.0.1b3}/apps/web/vercel.json +0 -0
  153. {divi-0.0.1b2 → divi-0.0.1b3}/biome.json +0 -0
  154. {divi-0.0.1b2 → divi-0.0.1b3}/compose-dev.yml +0 -0
  155. {divi-0.0.1b2 → divi-0.0.1b3}/divi/README.md +0 -0
  156. {divi-0.0.1b2 → divi-0.0.1b3}/divi/decorators/__init__.py +0 -0
  157. {divi-0.0.1b2 → divi-0.0.1b3}/divi/decorators/collect.py +0 -0
  158. {divi-0.0.1b2 → divi-0.0.1b3}/divi/decorators/obs_openai.py +0 -0
  159. {divi-0.0.1b2 → divi-0.0.1b3}/divi/decorators/observable.py +0 -0
  160. {divi-0.0.1b2 → divi-0.0.1b3}/divi/decorators/observe.py +0 -0
  161. {divi-0.0.1b2 → divi-0.0.1b3}/divi/evaluation/__init__.py +0 -0
  162. {divi-0.0.1b2 → divi-0.0.1b3}/divi/evaluation/evaluate.py +0 -0
  163. {divi-0.0.1b2 → divi-0.0.1b3}/divi/evaluation/scores.py +0 -0
  164. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/common/v1/common.proto +0 -0
  165. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/common/v1/common_pb2.py +0 -0
  166. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/common/v1/common_pb2.pyi +0 -0
  167. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/core/health/v1/health_service.proto +0 -0
  168. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/core/health/v1/health_service_pb2.py +0 -0
  169. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/core/health/v1/health_service_pb2.pyi +0 -0
  170. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/core/health/v1/health_service_pb2_grpc.py +0 -0
  171. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/metric/v1/metric.proto +0 -0
  172. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/metric/v1/metric_pb2.py +0 -0
  173. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/metric/v1/metric_pb2.pyi +0 -0
  174. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/trace/v1/trace.proto +0 -0
  175. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/trace/v1/trace_pb2.py +0 -0
  176. {divi-0.0.1b2 → divi-0.0.1b3}/divi/proto/trace/v1/trace_pb2.pyi +0 -0
  177. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/__init__.py +0 -0
  178. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/auth/__init__.py +0 -0
  179. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/auth/auth.py +0 -0
  180. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/auth/init.py +0 -0
  181. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/auth/tokman.py +0 -0
  182. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/core/__init__.py +0 -0
  183. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/core/core.py +0 -0
  184. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/core/finish.py +0 -0
  185. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/core/init.py +0 -0
  186. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/datapark/__init__.py +0 -0
  187. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/datapark/datapark.py +0 -0
  188. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/datapark/init.py +0 -0
  189. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/finish.py +0 -0
  190. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/init.py +0 -0
  191. {divi-0.0.1b2 → divi-0.0.1b3}/divi/services/service.py +0 -0
  192. {divi-0.0.1b2 → divi-0.0.1b3}/divi/session/__init__.py +0 -0
  193. {divi-0.0.1b2 → divi-0.0.1b3}/divi/session/session.py +0 -0
  194. {divi-0.0.1b2 → divi-0.0.1b3}/divi/session/setup.py +0 -0
  195. {divi-0.0.1b2 → divi-0.0.1b3}/divi/session/teardown.py +0 -0
  196. {divi-0.0.1b2 → divi-0.0.1b3}/divi/signals/__init__.py +0 -0
  197. {divi-0.0.1b2 → divi-0.0.1b3}/divi/signals/span.py +0 -0
  198. {divi-0.0.1b2 → divi-0.0.1b3}/divi/signals/trace.py +0 -0
  199. {divi-0.0.1b2 → divi-0.0.1b3}/divi/utils.py +0 -0
  200. {divi-0.0.1b2 → divi-0.0.1b3}/docker-compose.yml +0 -0
  201. {divi-0.0.1b2 → divi-0.0.1b3}/docs/CODE_OF_CONDUCT.md +0 -0
  202. {divi-0.0.1b2 → divi-0.0.1b3}/docs/CONTRIBUTING.md +0 -0
  203. {divi-0.0.1b2 → divi-0.0.1b3}/docs/README_ZH.md +0 -0
  204. {divi-0.0.1b2 → divi-0.0.1b3}/docs/SECURITY.md +0 -0
  205. {divi-0.0.1b2 → divi-0.0.1b3}/docs/developer_tools.md +0 -0
  206. {divi-0.0.1b2 → divi-0.0.1b3}/docs/images/architecture.svg +0 -0
  207. {divi-0.0.1b2 → divi-0.0.1b3}/docs/images/favicon.ico +0 -0
  208. {divi-0.0.1b2 → divi-0.0.1b3}/docs/images/og-image.png +0 -0
  209. {divi-0.0.1b2 → divi-0.0.1b3}/docs/images/storage.svg +0 -0
  210. {divi-0.0.1b2 → divi-0.0.1b3}/docs/images/thinking-angel.png +0 -0
  211. {divi-0.0.1b2 → divi-0.0.1b3}/docs/package_readme.md +0 -0
  212. {divi-0.0.1b2 → divi-0.0.1b3}/go.work +0 -0
  213. {divi-0.0.1b2 → divi-0.0.1b3}/go.work.sum +0 -0
  214. {divi-0.0.1b2 → divi-0.0.1b3}/hatch.toml +0 -0
  215. {divi-0.0.1b2 → divi-0.0.1b3}/package.json +0 -0
  216. {divi-0.0.1b2 → divi-0.0.1b3}/packages/README.md +0 -0
  217. {divi-0.0.1b2 → divi-0.0.1b3}/pnpm-lock.yaml +0 -0
  218. {divi-0.0.1b2 → divi-0.0.1b3}/pnpm-workspace.yaml +0 -0
  219. {divi-0.0.1b2 → divi-0.0.1b3}/pyproject.toml +0 -0
  220. {divi-0.0.1b2 → divi-0.0.1b3}/scripts/README.md +0 -0
  221. {divi-0.0.1b2 → divi-0.0.1b3}/scripts/hatch_build.py +0 -0
  222. {divi-0.0.1b2 → divi-0.0.1b3}/scripts/image_build.py +0 -0
  223. {divi-0.0.1b2 → divi-0.0.1b3}/scripts/key_build.py +0 -0
  224. {divi-0.0.1b2 → divi-0.0.1b3}/scripts/proto_build.py +0 -0
  225. {divi-0.0.1b2 → divi-0.0.1b3}/services/README.md +0 -0
  226. {divi-0.0.1b2 → divi-0.0.1b3}/services/go.mod +0 -0
  227. {divi-0.0.1b2 → divi-0.0.1b3}/services/go.sum +0 -0
  228. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/auth/handler/api.go +0 -0
  229. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/auth/handler/api_key.go +0 -0
  230. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/auth/handler/auth.go +0 -0
  231. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/auth/handler/user.go +0 -0
  232. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/auth/router/router.go +0 -0
  233. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/core/.keep +0 -0
  234. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/datapark/handler/api.go +0 -0
  235. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/datapark/handler/metric.go +0 -0
  236. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/datapark/handler/session.go +0 -0
  237. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/datapark/handler/usage.go +0 -0
  238. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/app/datapark/router/router.go +0 -0
  239. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/auth/auth.go +0 -0
  240. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/auth/middleware.go +0 -0
  241. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/config/config.go +0 -0
  242. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/database/database.go +0 -0
  243. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/model/api_key.go +0 -0
  244. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/model/openai.go +0 -0
  245. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/model/score.go +0 -0
  246. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/model/session.go +0 -0
  247. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/model/trace.go +0 -0
  248. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/model/usage.go +0 -0
  249. {divi-0.0.1b2 → divi-0.0.1b3}/services/internal/pkg/model/user.go +0 -0
  250. {divi-0.0.1b2 → divi-0.0.1b3}/services/pb/common.pb.go +0 -0
  251. {divi-0.0.1b2 → divi-0.0.1b3}/services/pb/health_service.pb.go +0 -0
  252. {divi-0.0.1b2 → divi-0.0.1b3}/services/pb/health_service_grpc.pb.go +0 -0
  253. {divi-0.0.1b2 → divi-0.0.1b3}/services/pb/metric.pb.go +0 -0
  254. {divi-0.0.1b2 → divi-0.0.1b3}/services/pb/trace.pb.go +0 -0
  255. {divi-0.0.1b2 → divi-0.0.1b3}/tests/__init__.py +0 -0
  256. {divi-0.0.1b2 → divi-0.0.1b3}/tests/unit_tests/decorators/test_obs_openai.py +0 -0
  257. {divi-0.0.1b2 → divi-0.0.1b3}/tests/unit_tests/decorators/test_observable.py +0 -0
  258. {divi-0.0.1b2 → divi-0.0.1b3}/turbo.json +0 -0
  259. {divi-0.0.1b2 → divi-0.0.1b3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: divi
3
- Version: 0.0.1b2
3
+ Version: 0.0.1b3
4
4
  Summary: The Agent Platform for Observability & Evaluation
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.11
@@ -35,7 +35,7 @@ export function CreateDialog() {
35
35
  return (
36
36
  <Dialog>
37
37
  <DialogTrigger asChild>
38
- <Button size="sm">
38
+ <Button size="sm" className="h-7">
39
39
  <IconPlus />
40
40
  Create API Key
41
41
  </Button>
@@ -1,5 +1,3 @@
1
- import { AppSidebar } from './components/app-sidebar';
2
- import { SiteHeader } from './components/site-header';
3
1
  import { getCurrentUser } from '@/lib/server/auth';
4
2
  import { deleteSessionTokenCookie } from '@/lib/server/cookies';
5
3
  import {
@@ -9,6 +7,8 @@ import {
9
7
  import { cookies } from 'next/headers';
10
8
  import { redirect } from 'next/navigation';
11
9
  import type { CSSProperties, ReactNode } from 'react';
10
+ import { AppSidebar } from './components/app-sidebar';
11
+ import { SiteHeader } from './components/site-header';
12
12
 
13
13
  /**
14
14
  * Sign out
@@ -29,7 +29,8 @@ export default async function DashboardLayout({
29
29
  modal?: ReactNode;
30
30
  }) {
31
31
  const cookieStore = await cookies();
32
- const defaultOpen = cookieStore.get('sidebar_state')?.value === 'true';
32
+ // defaultOpen is true if the cookie 'sidebar_state' is not set or is set to 'true'
33
+ const defaultOpen = cookieStore.get('sidebar_state')?.value !== 'false';
33
34
  const user = await getCurrentUser();
34
35
  if (!user) {
35
36
  return null;
@@ -18,6 +18,7 @@ import {
18
18
  DrawerTitle,
19
19
  } from '@workspace/ui/components/drawer';
20
20
  import { useMediaQuery } from '@workspace/ui/hooks/use-media-query';
21
+ import { useIsMobile } from '@workspace/ui/hooks/use-mobile';
21
22
  import { Expand } from 'lucide-react';
22
23
  import { usePathname, useRouter } from 'next/navigation';
23
24
  import type * as React from 'react';
@@ -88,15 +89,20 @@ export function ResponsiveDrawer({
88
89
  setTimeout(router.back, 200);
89
90
  }
90
91
  };
92
+ const isMobile = useIsMobile();
93
+ if (isMobile === undefined) {
94
+ return null;
95
+ }
96
+ const _direction = isMobile ? 'bottom' : 'right';
91
97
 
92
98
  return (
93
99
  <Drawer
94
100
  defaultOpen={false}
95
101
  open={open}
96
102
  onOpenChange={handleOpenChange}
97
- direction="right"
103
+ direction={_direction}
98
104
  >
99
- <DrawerContent>
105
+ <DrawerContent className={isMobile ? 'h-[75vh]' : 'h-screen'}>
100
106
  <DrawerHeader>
101
107
  <DrawerTitle className="flex items-center justify-between">
102
108
  <Button variant="ghost" size="icon" asChild>
@@ -13,5 +13,5 @@ _auth: Optional[Auth] = None
13
13
  _datapark: Optional[DataPark] = None
14
14
  _evaluator: Optional[Evaluator] = None
15
15
 
16
- __version__ = "0.0.1b2"
16
+ __version__ = "0.0.1b3"
17
17
  __all__ = ["obs_openai", "observable"]
@@ -19,6 +19,7 @@ class EvaluatorConfig:
19
19
  max_concurrency: int = 10,
20
20
  api_key: Optional[str] = None,
21
21
  base_url: Optional[str] = None,
22
+ language: str = "zh",
22
23
  ):
23
24
  self.model = model
24
25
  self.api_key = api_key
@@ -26,6 +27,7 @@ class EvaluatorConfig:
26
27
  self.temperature = temperature
27
28
  self.n_rounds = n_rounds
28
29
  self.max_concurrency = max_concurrency
30
+ self.language = language
29
31
 
30
32
 
31
33
  class EvaluationResult(BaseModel):
@@ -52,17 +54,22 @@ class Evaluator:
52
54
  )
53
55
 
54
56
  @staticmethod
55
- def generate_prompt(target: str, conversation: str, score: Score) -> str:
57
+ def generate_prompt(
58
+ target: str, conversation: str, score: Score, language: str
59
+ ) -> str:
56
60
  return PROMPT_TEMPLATE.format(
57
61
  requirements=PRESET_PROMPT[score.value],
58
62
  target=target,
59
63
  conversation=conversation,
64
+ language=language,
60
65
  )
61
66
 
62
67
  def _sync_evaluate_once(
63
68
  self, target: str, conversation: str, score: Score
64
69
  ) -> Optional[EvaluationResult]:
65
- prompt = self.generate_prompt(target, conversation, score)
70
+ prompt = self.generate_prompt(
71
+ target, conversation, score, self.config.language
72
+ )
66
73
  response = self.sync_client.beta.chat.completions.parse(
67
74
  model=self.config.model,
68
75
  messages=[{"role": "user", "content": prompt}],
@@ -77,7 +84,9 @@ class Evaluator:
77
84
  async def _async_evaluate_once(
78
85
  self, target: str, conversation: str, score: Score
79
86
  ) -> Optional[EvaluationResult]:
80
- prompt = self.generate_prompt(target, conversation, score)
87
+ prompt = self.generate_prompt(
88
+ target, conversation, score, self.config.language
89
+ )
81
90
  response = await self.async_client.beta.chat.completions.parse(
82
91
  model=self.config.model,
83
92
  messages=[{"role": "user", "content": prompt}],
@@ -8,7 +8,7 @@ PROMPT_TEMPLATE = (
8
8
  "Strictly output your answer in the following JSON format:\n"
9
9
  "{{\n"
10
10
  ' "judgment": bool, # true if the response meets all requirements\n'
11
- ' "reasoning": "string" # concise explanation, hitting only the key points\n'
11
+ ' "reasoning": "string" # concise explanation, in {language}, hitting only the key points\n'
12
12
  "}}\n"
13
13
  "Do not output anything else."
14
14
  )
@@ -54,23 +54,6 @@ func CreateScores(c *fiber.Ctx) error {
54
54
  // store scores in clickhouse
55
55
  conn := *database.CH
56
56
  ctx = context.Background()
57
- err = conn.Exec(ctx, `
58
- CREATE TABLE IF NOT EXISTS scores (
59
- span_id FixedString(8),
60
- trace_id UUID,
61
- user_id UUID,
62
- name LowCardinality(String),
63
- score Float32,
64
- representative_reasoning String,
65
- created DateTime DEFAULT now()
66
- ) ENGINE = MergeTree()
67
- PARTITION BY toYYYYMM(created)
68
- ORDER BY (trace_id, span_id, name)
69
- PRIMARY KEY (trace_id, span_id, name)
70
- `)
71
- if err != nil {
72
- return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"status": "error", "message": "Failed to create scores table", "data": nil})
73
- }
74
57
 
75
58
  batch, err := conn.PrepareBatch(ctx, "INSERT INTO scores")
76
59
  if err != nil {
@@ -54,24 +54,6 @@ func CreateChatCompletion(c *fiber.Ctx) error {
54
54
  // store usage in clickhouse
55
55
  conn := *database.CH
56
56
  ctx = context.Background()
57
- err = conn.Exec(ctx, `
58
- CREATE TABLE IF NOT EXISTS usages (
59
- span_id String,
60
- trace_id UUID,
61
- user_id UUID,
62
- model String,
63
- input_tokens UInt64,
64
- output_tokens UInt64,
65
- total_tokens UInt64,
66
- created DateTime DEFAULT now()
67
- ) ENGINE = MergeTree()
68
- PARTITION BY toYYYYMM(created)
69
- ORDER BY (user_id, created, model)
70
- PRIMARY KEY (user_id, created, model)
71
- `)
72
- if err != nil {
73
- return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"status": "error", "message": "Failed to create table", "data": nil})
74
- }
75
57
 
76
58
  // Insert data into the table
77
59
  usage := model.Usage{
@@ -227,28 +227,6 @@ func CreateSpans(c *fiber.Ctx) error {
227
227
  }
228
228
 
229
229
  ctx := context.Background()
230
- err = conn.Exec(ctx, `
231
- CREATE TABLE IF NOT EXISTS spans (
232
- span_id FixedString(8),
233
- trace_id UUID,
234
- parent_span_id FixedString(8),
235
- name VARCHAR(255),
236
- kind Enum8('SPAN_KIND_FUNCTION'=0, 'SPAN_KIND_LLM'=1, 'SPAN_KIND_EVALUATION'=2),
237
- start_time DateTime64(9),
238
- end_time Nullable(DateTime64(9)),
239
- duration Nullable(Float64),
240
- metadata Map(String, String),
241
- update_time DateTime DEFAULT now()
242
- ) ENGINE = ReplacingMergeTree(update_time)
243
- PARTITION BY toYYYYMM(start_time)
244
- ORDER BY (trace_id, span_id, start_time)
245
- PRIMARY KEY (trace_id, span_id);
246
- `)
247
- if err != nil {
248
- fmt.Println(err)
249
- return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"status": "error", "message": "Failed to create table", "data": nil})
250
- }
251
-
252
230
  batch, err := conn.PrepareBatch(ctx, "INSERT INTO spans")
253
231
  if err != nil {
254
232
  return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"status": "error", "message": "Failed to prepare batch", "data": nil})
@@ -54,7 +54,7 @@ func ConnectClickhouse() error {
54
54
  return err
55
55
  }
56
56
  CH = &conn
57
- return conn.Ping(context.Background())
57
+ return CreateCHTables()
58
58
  }
59
59
 
60
60
  func ConnectMongoDB() error {
@@ -0,0 +1,75 @@
1
+ package database
2
+
3
+ import (
4
+ "context"
5
+ )
6
+
7
+ func executeSQL(query string) error {
8
+ conn := *CH
9
+ ctx := context.Background()
10
+ return conn.Exec(ctx, query)
11
+ }
12
+
13
+ func CreateCHTables() error {
14
+ sqls := []string{
15
+ scoreTableSQL,
16
+ usageTableSQL,
17
+ spanTableSQL,
18
+ }
19
+
20
+ for _, sql := range sqls {
21
+ if err := executeSQL(sql); err != nil {
22
+ return err
23
+ }
24
+ }
25
+ return nil
26
+ }
27
+
28
+ var scoreTableSQL = `
29
+ CREATE TABLE IF NOT EXISTS scores (
30
+ span_id FixedString(8),
31
+ trace_id UUID,
32
+ user_id UUID,
33
+ name LowCardinality(String),
34
+ score Float32,
35
+ representative_reasoning String,
36
+ created DateTime DEFAULT now()
37
+ ) ENGINE = MergeTree()
38
+ PARTITION BY toYYYYMM(created)
39
+ ORDER BY (trace_id, span_id, name)
40
+ PRIMARY KEY (trace_id, span_id, name)
41
+ `
42
+
43
+ var usageTableSQL = `
44
+ CREATE TABLE IF NOT EXISTS usages (
45
+ span_id String,
46
+ trace_id UUID,
47
+ user_id UUID,
48
+ model String,
49
+ input_tokens UInt64,
50
+ output_tokens UInt64,
51
+ total_tokens UInt64,
52
+ created DateTime DEFAULT now()
53
+ ) ENGINE = MergeTree()
54
+ PARTITION BY toYYYYMM(created)
55
+ ORDER BY (user_id, created, model)
56
+ PRIMARY KEY (user_id, created, model)
57
+ `
58
+
59
+ var spanTableSQL = `
60
+ CREATE TABLE IF NOT EXISTS spans (
61
+ span_id FixedString(8),
62
+ trace_id UUID,
63
+ parent_span_id FixedString(8),
64
+ name VARCHAR(255),
65
+ kind Enum8('SPAN_KIND_FUNCTION'=0, 'SPAN_KIND_LLM'=1, 'SPAN_KIND_EVALUATION'=2),
66
+ start_time DateTime64(9),
67
+ end_time Nullable(DateTime64(9)),
68
+ duration Nullable(Float64),
69
+ metadata Map(String, String),
70
+ update_time DateTime DEFAULT now()
71
+ ) ENGINE = ReplacingMergeTree(update_time)
72
+ PARTITION BY toYYYYMM(start_time)
73
+ ORDER BY (trace_id, span_id, start_time)
74
+ PRIMARY KEY (trace_id, span_id);
75
+ `
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,5 +1,5 @@
1
- import { ResponsiveDrawer } from '@/components/Modal';
2
1
  import { TraceBoard } from '@/app/dashboard/traces/(children)/[id]/components/trace-board';
2
+ import { ResponsiveDrawer } from '@/components/Modal';
3
3
  import { getTraceChartData } from '@/lib/server/span';
4
4
 
5
5
  interface TraceModalPageProps {
File without changes
File without changes
File without changes
File without changes