divi 0.0.1.dev13__tar.gz → 0.0.1.dev14__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 (240) hide show
  1. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/.github/dependabot.yml +1 -1
  2. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/PKG-INFO +1 -1
  3. divi-0.0.1.dev14/README.md +14 -0
  4. divi-0.0.1.dev14/apps/docs/README.md +32 -0
  5. divi-0.0.1.dev14/apps/docs/concepts/session.mdx +4 -0
  6. divi-0.0.1.dev14/apps/docs/development/roadmap.mdx +4 -0
  7. divi-0.0.1.dev14/apps/docs/docs.json +68 -0
  8. divi-0.0.1.dev14/apps/docs/favicon.ico +0 -0
  9. divi-0.0.1.dev14/apps/docs/images/researcher-angel.png +0 -0
  10. divi-0.0.1.dev14/apps/docs/images/scholar-angel.png +0 -0
  11. divi-0.0.1.dev14/apps/docs/introduction.mdx +15 -0
  12. divi-0.0.1.dev14/apps/docs/package.json +11 -0
  13. divi-0.0.1.dev14/apps/docs/quickstart/trace.mdx +4 -0
  14. divi-0.0.1.dev14/apps/docs/snippets/snippet-intro.mdx +4 -0
  15. divi-0.0.1.dev14/apps/docs/tutorials/openai.mdx +4 -0
  16. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/package.json +9 -9
  17. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/src/datasources/auth-api.ts +20 -9
  18. divi-0.0.1.dev14/apps/graphql/src/datasources/datapark-api.ts +32 -0
  19. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/src/index.ts +2 -0
  20. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/src/resolvers.ts +27 -3
  21. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/src/schema.graphql +58 -3
  22. divi-0.0.1.dev14/apps/graphql/src/types/context.d.ts +9 -0
  23. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/src/types/types.d.ts +157 -7
  24. divi-0.0.1.dev14/apps/web/app/dashboard/@modal/(.)trace/[id]/page.tsx +19 -0
  25. divi-0.0.1.dev14/apps/web/app/dashboard/@modal/default.tsx +3 -0
  26. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/actions.ts +130 -0
  27. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/components/columns.tsx +72 -0
  28. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/components/create-dialog.tsx +134 -0
  29. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/components/data-table-cell-viewer.tsx +105 -0
  30. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/components/data-table-toolbar.tsx +50 -0
  31. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/components/data-table.tsx +132 -0
  32. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/components/delete-dialog.tsx +70 -0
  33. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/data/data.tsx +10 -0
  34. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/data/schema.ts +11 -0
  35. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/layout.tsx +26 -0
  36. divi-0.0.1.dev14/apps/web/app/dashboard/api-keys/page.tsx +15 -0
  37. divi-0.0.1.dev14/apps/web/app/dashboard/layout.tsx +57 -0
  38. divi-0.0.1.dev14/apps/web/app/dashboard/page.tsx +15 -0
  39. divi-0.0.1.dev14/apps/web/app/dashboard/settings/account/page.tsx +63 -0
  40. divi-0.0.1.dev14/apps/web/app/dashboard/settings/appearance/page.tsx +18 -0
  41. divi-0.0.1.dev14/apps/web/app/dashboard/settings/layout.tsx +49 -0
  42. divi-0.0.1.dev14/apps/web/app/dashboard/settings/page.tsx +23 -0
  43. divi-0.0.1.dev14/apps/web/app/dashboard/trace/[id]/page.tsx +19 -0
  44. divi-0.0.1.dev14/apps/web/app/dashboard/trace/components/columns.tsx +96 -0
  45. divi-0.0.1.dev14/apps/web/app/dashboard/trace/components/data-table-row-action.tsx +46 -0
  46. divi-0.0.1.dev14/apps/web/app/dashboard/trace/components/data-table-toolbar.tsx +51 -0
  47. divi-0.0.1.dev14/apps/web/app/dashboard/trace/components/data-table.tsx +132 -0
  48. divi-0.0.1.dev14/apps/web/app/dashboard/trace/data/data.tsx +19 -0
  49. divi-0.0.1.dev14/apps/web/app/dashboard/trace/data/schema.ts +12 -0
  50. divi-0.0.1.dev14/apps/web/app/dashboard/trace/layout.tsx +23 -0
  51. divi-0.0.1.dev14/apps/web/app/dashboard/trace/page.tsx +36 -0
  52. divi-0.0.1.dev14/apps/web/app/dashboard/usage/page.tsx +15 -0
  53. divi-0.0.1.dev14/apps/web/app/home/components/home-header.tsx +52 -0
  54. divi-0.0.1.dev14/apps/web/app/home/components/home-hero.tsx +41 -0
  55. divi-0.0.1.dev14/apps/web/app/home/page.tsx +11 -0
  56. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/app/layout.tsx +14 -2
  57. divi-0.0.1.dev14/apps/web/app/login/page.tsx +44 -0
  58. divi-0.0.1.dev14/apps/web/app/page.tsx +5 -0
  59. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/app/signup/page.tsx +25 -24
  60. divi-0.0.1.dev14/apps/web/components/Modal.tsx +69 -0
  61. divi-0.0.1.dev14/apps/web/components/account-form.tsx +86 -0
  62. divi-0.0.1.dev14/apps/web/components/app-sidebar.tsx +102 -0
  63. divi-0.0.1.dev14/apps/web/components/appearance-form.tsx +47 -0
  64. divi-0.0.1.dev14/apps/web/components/chart-area-interactive.tsx +292 -0
  65. divi-0.0.1.dev14/apps/web/components/data-table-column-header.tsx +102 -0
  66. divi-0.0.1.dev14/apps/web/components/data-table-faceted-filter.tsx +153 -0
  67. divi-0.0.1.dev14/apps/web/components/data-table-pagination.tsx +92 -0
  68. divi-0.0.1.dev14/apps/web/components/data-table-row.tsx +63 -0
  69. divi-0.0.1.dev14/apps/web/components/data-table-view-options.tsx +56 -0
  70. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/components/login-form.tsx +1 -1
  71. divi-0.0.1.dev14/apps/web/components/nav-main.tsx +38 -0
  72. divi-0.0.1.dev14/apps/web/components/nav-secondary.tsx +41 -0
  73. divi-0.0.1.dev14/apps/web/components/nav-user.tsx +104 -0
  74. divi-0.0.1.dev14/apps/web/components/profile-form.tsx +96 -0
  75. divi-0.0.1.dev14/apps/web/components/section-cards.tsx +102 -0
  76. divi-0.0.1.dev14/apps/web/components/sidebar-nav.tsx +45 -0
  77. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/components/signup-form.tsx +1 -0
  78. divi-0.0.1.dev14/apps/web/components/site-header.tsx +22 -0
  79. divi-0.0.1.dev14/apps/web/components/theme-provider.tsx +11 -0
  80. divi-0.0.1.dev14/apps/web/components/trace-chart.tsx +84 -0
  81. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/components.json +3 -3
  82. divi-0.0.1.dev14/apps/web/hooks/actionState.ts +29 -0
  83. divi-0.0.1.dev14/apps/web/lib/callback/toast-callback.ts +25 -0
  84. divi-0.0.1.dev14/apps/web/lib/callback/with-callback.ts +29 -0
  85. divi-0.0.1.dev14/apps/web/lib/server/README.md +3 -0
  86. divi-0.0.1.dev14/apps/web/lib/server/auth.ts +23 -0
  87. divi-0.0.1.dev14/apps/web/lib/server/cookies.ts +32 -0
  88. divi-0.0.1.dev14/apps/web/lib/server/span.ts +106 -0
  89. divi-0.0.1.dev14/apps/web/lib/types/state.d.ts +8 -0
  90. divi-0.0.1.dev14/apps/web/lib/utils.ts +20 -0
  91. divi-0.0.1.dev14/apps/web/middleware.ts +75 -0
  92. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/package.json +17 -3
  93. divi-0.0.1.dev14/apps/web/vercel.json +12 -0
  94. divi-0.0.1.dev14/compose-dev.yml +34 -0
  95. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/__init__.py +3 -3
  96. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/decorators/obs_openai.py +1 -1
  97. divi-0.0.1.dev14/divi/decorators/observable.py +137 -0
  98. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/common/v1/common.proto +1 -15
  99. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/common/v1/common_pb2.py +2 -4
  100. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/common/v1/common_pb2.pyi +0 -12
  101. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/core/health/v1/health_service.proto +1 -1
  102. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/core/health/v1/health_service_pb2.py +2 -2
  103. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/metric/v1/metric.proto +1 -4
  104. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/metric/v1/metric_pb2.py +5 -5
  105. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/metric/v1/metric_pb2.pyi +2 -4
  106. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/trace/v1/trace.proto +1 -4
  107. divi-0.0.1.dev14/divi/proto/trace/v1/trace_pb2.py +44 -0
  108. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/trace/v1/trace_pb2.pyi +14 -4
  109. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/core/init.py +1 -1
  110. divi-0.0.1.dev14/divi/services/datapark/datapark.py +63 -0
  111. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/init.py +3 -2
  112. divi-0.0.1.dev14/divi/session/__init__.py +3 -0
  113. divi-0.0.1.dev14/divi/session/session.py +40 -0
  114. divi-0.0.1.dev14/divi/session/setup.py +62 -0
  115. {divi-0.0.1.dev13/divi/run → divi-0.0.1.dev14/divi/session}/teardown.py +1 -1
  116. divi-0.0.1.dev14/divi/signals/trace/trace.py +151 -0
  117. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/docker-compose.yml +29 -2
  118. divi-0.0.1.dev14/docs/images/favicon.ico +0 -0
  119. divi-0.0.1.dev14/docs/images/og-image.png +0 -0
  120. divi-0.0.1.dev14/go.work.sum +106 -0
  121. divi-0.0.1.dev14/hatch.toml +10 -0
  122. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/package.json +3 -2
  123. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/pnpm-lock.yaml +2356 -679
  124. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/pnpm-workspace.yaml +2 -1
  125. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/scripts/proto_build.py +0 -1
  126. divi-0.0.1.dev14/services/go.mod +75 -0
  127. divi-0.0.1.dev14/services/go.sum +253 -0
  128. divi-0.0.1.dev14/services/internal/app/auth/handler/api_key.go +128 -0
  129. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/services/internal/app/auth/handler/user.go +36 -18
  130. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/services/internal/app/auth/router/router.go +5 -3
  131. divi-0.0.1.dev14/services/internal/app/datapark/handler/api.go +15 -0
  132. divi-0.0.1.dev14/services/internal/app/datapark/handler/metric.go +7 -0
  133. divi-0.0.1.dev14/services/internal/app/datapark/handler/openai.go +75 -0
  134. divi-0.0.1.dev14/services/internal/app/datapark/handler/session.go +43 -0
  135. divi-0.0.1.dev14/services/internal/app/datapark/handler/trace.go +264 -0
  136. divi-0.0.1.dev14/services/internal/app/datapark/router/router.go +42 -0
  137. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/services/internal/pkg/auth/auth.go +5 -0
  138. divi-0.0.1.dev13/services/internal/app/auth/middleware/auth.go → divi-0.0.1.dev14/services/internal/pkg/auth/middleware.go +2 -3
  139. divi-0.0.1.dev14/services/internal/pkg/database/connect.go +73 -0
  140. divi-0.0.1.dev14/services/internal/pkg/database/database.go +16 -0
  141. divi-0.0.1.dev14/services/internal/pkg/model/api_key.go +27 -0
  142. divi-0.0.1.dev14/services/internal/pkg/model/session.go +17 -0
  143. divi-0.0.1.dev14/services/internal/pkg/model/trace.go +48 -0
  144. divi-0.0.1.dev14/services/internal/pkg/model/user.go +25 -0
  145. {divi-0.0.1.dev13/services/proto → divi-0.0.1.dev14/services/pb}/common.pb.go +11 -98
  146. {divi-0.0.1.dev13/services/proto → divi-0.0.1.dev14/services/pb}/health_service.pb.go +3 -3
  147. {divi-0.0.1.dev13/services/proto → divi-0.0.1.dev14/services/pb}/health_service_grpc.pb.go +1 -1
  148. {divi-0.0.1.dev13/services/proto → divi-0.0.1.dev14/services/pb}/metric.pb.go +28 -43
  149. {divi-0.0.1.dev13/services/proto → divi-0.0.1.dev14/services/pb}/trace.pb.go +129 -58
  150. divi-0.0.1.dev14/tests/unit_tests/decorators/test_obs_openai.py +146 -0
  151. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/tests/unit_tests/decorators/test_observable.py +8 -7
  152. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/turbo.json +3 -0
  153. divi-0.0.1.dev13/README.md +0 -16
  154. divi-0.0.1.dev13/apps/graphql/src/types/api-key.d.ts +0 -4
  155. divi-0.0.1.dev13/apps/graphql/src/types/context.d.ts +0 -7
  156. divi-0.0.1.dev13/apps/graphql/src/types/user.d.ts +0 -9
  157. divi-0.0.1.dev13/apps/web/app/login/page.tsx +0 -43
  158. divi-0.0.1.dev13/apps/web/app/page.tsx +0 -10
  159. divi-0.0.1.dev13/divi/decorators/observable.py +0 -108
  160. divi-0.0.1.dev13/divi/proto/run/v1/run.proto +0 -38
  161. divi-0.0.1.dev13/divi/proto/run/v1/run_pb2.py +0 -40
  162. divi-0.0.1.dev13/divi/proto/run/v1/run_pb2.pyi +0 -34
  163. divi-0.0.1.dev13/divi/proto/trace/v1/trace_pb2.py +0 -42
  164. divi-0.0.1.dev13/divi/run/__init__.py +0 -3
  165. divi-0.0.1.dev13/divi/run/run.py +0 -24
  166. divi-0.0.1.dev13/divi/run/setup.py +0 -50
  167. divi-0.0.1.dev13/divi/services/datapark/datapark.py +0 -6
  168. divi-0.0.1.dev13/divi/signals/trace/trace.py +0 -81
  169. divi-0.0.1.dev13/go.work.sum +0 -46
  170. divi-0.0.1.dev13/hatch.toml +0 -9
  171. divi-0.0.1.dev13/services/go.mod +0 -45
  172. divi-0.0.1.dev13/services/go.sum +0 -109
  173. divi-0.0.1.dev13/services/internal/app/auth/handler/api_key.go +0 -78
  174. divi-0.0.1.dev13/services/internal/app/datapark/.keep +0 -0
  175. divi-0.0.1.dev13/services/internal/pkg/database/connect.go +0 -39
  176. divi-0.0.1.dev13/services/internal/pkg/database/database.go +0 -6
  177. divi-0.0.1.dev13/services/internal/pkg/model/api_key.go +0 -16
  178. divi-0.0.1.dev13/services/internal/pkg/model/user.go +0 -22
  179. divi-0.0.1.dev13/services/proto/resource.pb.go +0 -153
  180. divi-0.0.1.dev13/services/proto/run.pb.go +0 -261
  181. divi-0.0.1.dev13/tests/unit_tests/decorators/test_obs_openai.py +0 -54
  182. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/.air.toml +0 -0
  183. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/.dockerignore +0 -0
  184. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/.gitignore +0 -0
  185. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/LICENSE +0 -0
  186. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/README.md +0 -0
  187. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/Dockerfile +0 -0
  188. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/README.md +0 -0
  189. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/codegen.ts +0 -0
  190. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/src/types/response.d.ts +0 -0
  191. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/graphql/tsconfig.json +0 -0
  192. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/.gitignore +0 -0
  193. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/README.md +0 -0
  194. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/app/favicon.ico +0 -0
  195. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/components/ApolloWrapper.tsx +0 -0
  196. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/hooks/apolloClient.ts +0 -0
  197. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/next-env.d.ts +0 -0
  198. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/next.config.ts +0 -0
  199. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/postcss.config.mjs +0 -0
  200. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/public/peeking-angel.png +0 -0
  201. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/public/thinking-angel.png +0 -0
  202. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/apps/web/tsconfig.json +0 -0
  203. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/biome.json +0 -0
  204. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/config/config.py +0 -0
  205. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/decorators/__init__.py +0 -0
  206. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/core/health/v1/health_service_pb2.pyi +0 -0
  207. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/proto/core/health/v1/health_service_pb2_grpc.py +0 -0
  208. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/__init__.py +0 -0
  209. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/auth/__init__.py +0 -0
  210. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/auth/auth.py +0 -0
  211. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/auth/init.py +0 -0
  212. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/auth/tokman.py +0 -0
  213. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/core/__init__.py +0 -0
  214. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/core/core.py +0 -0
  215. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/core/finish.py +0 -0
  216. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/datapark/__init__.py +0 -0
  217. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/datapark/init.py +0 -0
  218. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/finish.py +0 -0
  219. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/services/service.py +0 -0
  220. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/signals/__init__.py +0 -0
  221. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/signals/trace/__init__.py +0 -0
  222. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/divi/utils.py +0 -0
  223. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/docs/README.md +0 -0
  224. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/docs/developer_tools.md +0 -0
  225. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/docs/images/architecture.svg +0 -0
  226. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/docs/images/storage.svg +0 -0
  227. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/docs/package_readme.md +0 -0
  228. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/go.work +0 -0
  229. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/packages/README.md +0 -0
  230. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/pyproject.toml +0 -0
  231. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/scripts/README.md +0 -0
  232. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/scripts/hatch_build.py +0 -0
  233. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/scripts/key_build.py +0 -0
  234. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/services/README.md +0 -0
  235. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/services/internal/app/auth/handler/api.go +0 -0
  236. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/services/internal/app/auth/handler/auth.go +0 -0
  237. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/services/internal/app/core/.keep +0 -0
  238. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/services/internal/pkg/config/config.go +0 -0
  239. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/tests/__init__.py +0 -0
  240. {divi-0.0.1.dev13 → divi-0.0.1.dev14}/uv.lock +0 -0
@@ -5,7 +5,7 @@
5
5
 
6
6
  version: 2
7
7
  updates:
8
- - package-ecosystem: "" # See documentation for possible values
8
+ - package-ecosystem: uv # See documentation for possible values
9
9
  directory: "/" # Location of package manifests
10
10
  schedule:
11
11
  interval: "weekly"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: divi
3
- Version: 0.0.1.dev13
3
+ Version: 0.0.1.dev14
4
4
  Summary: The Agent Platform for Observability & Evaluation
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.11
@@ -0,0 +1,14 @@
1
+ # divine-agent
2
+
3
+ **Agent Platform for Observability**
4
+
5
+ ## TODO
6
+
7
+ - [ ] Web
8
+ - [ ] Docs
9
+
10
+ ## Architecture
11
+
12
+ ![architecture](./docs/images/architecture.svg)
13
+
14
+ ![storage](./docs/images/storage.svg)
@@ -0,0 +1,32 @@
1
+ # Mintlify Starter Kit
2
+
3
+ Click on `Use this template` to copy the Mintlify starter kit. The starter kit contains examples including
4
+
5
+ - Guide pages
6
+ - Navigation
7
+ - Customizations
8
+ - API Reference pages
9
+ - Use of popular components
10
+
11
+ ### Development
12
+
13
+ Install the [Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the documentation changes locally. To install, use the following command
14
+
15
+ ```
16
+ npm i -g mintlify
17
+ ```
18
+
19
+ Run the following command at the root of your documentation (where docs.json is)
20
+
21
+ ```
22
+ mintlify dev
23
+ ```
24
+
25
+ ### Publishing Changes
26
+
27
+ Install our Github App to auto propagate changes from your repo to your deployment. Changes will be deployed to production automatically after pushing to the default branch. Find the link to install on your dashboard.
28
+
29
+ #### Troubleshooting
30
+
31
+ - Mintlify dev isn't running - Run `mintlify install` it'll re-install dependencies.
32
+ - Page loads as a 404 - Make sure you are running in a folder with `docs.json`
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: 'Session'
3
+ description: 'Session is a one-time run of your codes'
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: 'Roadmap'
3
+ description: 'Development Roadmap for Divine Agent'
4
+ ---
@@ -0,0 +1,68 @@
1
+ {
2
+ "$schema": "https://mintlify.com/docs.json",
3
+ "theme": "maple",
4
+ "name": "Divine Agent",
5
+ "colors": {
6
+ "primary": "#09090b",
7
+ "light": "#FAFAFA",
8
+ "dark": "#09090b"
9
+ },
10
+ "favicon": "/favicon.ico",
11
+ "navigation": {
12
+ "groups": [
13
+ {
14
+ "group": "Get Started",
15
+ "pages": ["introduction"]
16
+ },
17
+ {
18
+ "group": "Tutorials",
19
+ "pages": ["tutorials/openai"]
20
+ },
21
+ {
22
+ "group": "Concepts",
23
+ "pages": ["concepts/session"]
24
+ },
25
+ {
26
+ "group": "Development",
27
+ "pages": ["development/roadmap"]
28
+ }
29
+ ],
30
+ "global": {
31
+ "anchors": [
32
+ {
33
+ "anchor": "Dashboard",
34
+ "href": "https://divine-agent.com",
35
+ "icon": "gauge-high"
36
+ }
37
+ ]
38
+ }
39
+ },
40
+ "logo": {
41
+ "light": "/images/researcher-angel.png",
42
+ "dark": "/images/scholar-angel.png"
43
+ },
44
+ "navbar": {
45
+ "links": [
46
+ {
47
+ "label": "GitHub",
48
+ "href": "https://github.com/Kaikaikaifang/divine-agent"
49
+ }
50
+ ],
51
+ "primary": {
52
+ "type": "button",
53
+ "label": "Divine Agent",
54
+ "href": "https://divine-agent.com"
55
+ }
56
+ },
57
+ "seo": {
58
+ "metatags": {
59
+ "og:image": "https://raw.githubusercontent.com/Kaikaikaifang/divine-agent/refs/heads/main/docs/images/og-image.png?token=GHSAT0AAAAAAC7SUUQIZIJIKDD5UWUKWX2CZ66TXVA"
60
+ },
61
+ "indexing": "navigable"
62
+ },
63
+ "footer": {
64
+ "socials": {
65
+ "github": "https://github.com/Kaikaikaifang/divine-agent"
66
+ }
67
+ }
68
+ }
Binary file
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: Introduction
3
+ description: "Welcome to the docs of Divine Agent"
4
+ ---
5
+
6
+ <img
7
+ className="block dark:hidden w-20"
8
+ src="/images/researcher-angel.png"
9
+ alt="Hero Light"
10
+ />
11
+ <img
12
+ className="hidden dark:block w-20"
13
+ src="/images/scholar-angel.png"
14
+ alt="Hero Dark"
15
+ />
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "@app/docs",
3
+ "private": true,
4
+ "scripts": {
5
+ "dev": "mintlify dev --port 4002 --no-open",
6
+ "lint": "mintlify broken-links"
7
+ },
8
+ "devDependencies": {
9
+ "typescript": "catalog:"
10
+ }
11
+ }
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: 'Trace'
3
+ description: 'Start observe your agents in under 5 minutes'
4
+ ---
@@ -0,0 +1,4 @@
1
+ One of the core principles of software development is DRY (Don't Repeat
2
+ Yourself). This is a principle that apply to documentation as
3
+ well. If you find yourself repeating the same content in multiple places, you
4
+ should consider creating a custom snippet to keep your content in sync.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: 'OpenAI'
3
+ description: 'Start observe your agents with OpenAI SDK'
4
+ ---
@@ -10,19 +10,19 @@
10
10
  "postbuild": "cp src/schema.graphql dist/"
11
11
  },
12
12
  "dependencies": {
13
- "graphql": "^16.10.0",
14
- "graphql-tag": "^2.12.6",
15
- "@apollo/server": "^4.11.3",
16
13
  "@apollo/datasource-rest": "^6.4.1",
17
- "@apollo/utils.keyvaluecache": "^3.1.0"
14
+ "@apollo/server": "^4.11.3",
15
+ "@apollo/utils.keyvaluecache": "^3.1.0",
16
+ "graphql": "^16.10.0",
17
+ "graphql-tag": "^2.12.6"
18
18
  },
19
19
  "devDependencies": {
20
- "typescript": "catalog:",
20
+ "@graphql-codegen/cli": "^4.0.1",
21
+ "@graphql-codegen/typescript": "^4.1.6",
22
+ "@graphql-codegen/typescript-resolvers": "^4.5.0",
23
+ "@workspace/typescript-config": "workspace:*",
21
24
  "nodemon": "^3.1.9",
22
25
  "ts-node-dev": "^2.0.0",
23
- "@graphql-codegen/cli": "^4.0.1",
24
- "@graphql-codegen/typescript": "^4.1.5",
25
- "@graphql-codegen/typescript-resolvers": "^4.4.4",
26
- "@workspace/typescript-config": "workspace:*"
26
+ "typescript": "catalog:"
27
27
  }
28
28
  }
@@ -1,6 +1,5 @@
1
- import type { APIKeyModel } from '@/types/api-key';
2
1
  import type { FetchResponse } from '@/types/response';
3
- import type { UserModel } from '@/types/user';
2
+ import type { ApiKey, User } from '@/types/types';
4
3
  import { type AugmentedRequest, RESTDataSource } from '@apollo/datasource-rest';
5
4
  import type { KeyValueCache } from '@apollo/utils.keyvaluecache';
6
5
 
@@ -18,17 +17,21 @@ export class AuthAPI extends RESTDataSource {
18
17
  }
19
18
 
20
19
  async createUser(email: string, password: string, username: string) {
21
- return await this.post<FetchResponse<UserModel>>('/api/user/', {
20
+ return await this.post<FetchResponse<User>>('/api/user/', {
22
21
  body: { email, password, username },
23
22
  });
24
23
  }
25
24
 
25
+ async getCurrentUser() {
26
+ return await this.get<FetchResponse<User>>('/api/user/');
27
+ }
28
+
26
29
  async getUser(userId: string) {
27
- return await this.get<FetchResponse<UserModel>>(`/api/user/${userId}`);
30
+ return await this.get<FetchResponse<User>>(`/api/user/${userId}`);
28
31
  }
29
32
 
30
- async updateUser(userId: string, name: string) {
31
- return await this.patch<FetchResponse<UserModel>>(`/api/user/${userId}`, {
33
+ async updateUser(userId: string, name: string | undefined) {
34
+ return await this.patch<FetchResponse<User>>(`/api/user/${userId}`, {
32
35
  body: { name },
33
36
  });
34
37
  }
@@ -40,11 +43,19 @@ export class AuthAPI extends RESTDataSource {
40
43
  }
41
44
 
42
45
  async getAPIKeys() {
43
- return await this.get<FetchResponse<APIKeyModel[]>>('/api/api_key/');
46
+ return await this.get<FetchResponse<ApiKey[]>>('/api/api_key/');
47
+ }
48
+
49
+ async createAPIKey(name: string) {
50
+ return await this.post<FetchResponse<ApiKey>>('/api/api_key/', {
51
+ body: { name },
52
+ });
44
53
  }
45
54
 
46
- async createAPIKey() {
47
- return await this.post<FetchResponse<APIKeyModel>>('/api/api_key/');
55
+ async updateAPIKey(apiKeyId: string, name: string | undefined) {
56
+ return await this.patch<FetchResponse<ApiKey>>(`/api/api_key/${apiKeyId}`, {
57
+ body: { name },
58
+ });
48
59
  }
49
60
 
50
61
  async revokeAPIKey(apiKeyId: string) {
@@ -0,0 +1,32 @@
1
+ import type { FetchResponse } from '@/types/response';
2
+ import type { Span, Trace } from '@/types/types';
3
+ import { type AugmentedRequest, RESTDataSource } from '@apollo/datasource-rest';
4
+ import type { KeyValueCache } from '@apollo/utils.keyvaluecache';
5
+
6
+ export class DataParkAPI extends RESTDataSource {
7
+ override baseURL = process.env.AUTH_SERVICE_URL ?? 'http://localhost:3001/';
8
+ private token: string;
9
+
10
+ constructor(options: { token: string; cache: KeyValueCache }) {
11
+ super(options);
12
+ this.token = options.token;
13
+ }
14
+
15
+ override willSendRequest(_path: string, request: AugmentedRequest) {
16
+ request.headers.authorization = this.token;
17
+ }
18
+
19
+ async getTraces(sessionId: string) {
20
+ return await this.get<FetchResponse<Trace[]>>(
21
+ `/api/session/${sessionId}/traces`
22
+ );
23
+ }
24
+
25
+ async getAllTraces() {
26
+ return await this.get<FetchResponse<Trace[]>>('/api/trace/');
27
+ }
28
+
29
+ async getSpans(traceId: string) {
30
+ return await this.get<FetchResponse<Span[]>>(`/api/trace/${traceId}/spans`);
31
+ }
32
+ }
@@ -4,6 +4,7 @@ import { ApolloServer } from '@apollo/server';
4
4
  import { startStandaloneServer } from '@apollo/server/standalone';
5
5
  import gql from 'graphql-tag';
6
6
  import { AuthAPI } from './datasources/auth-api';
7
+ import { DataParkAPI } from './datasources/datapark-api';
7
8
  import { resolvers } from './resolvers';
8
9
 
9
10
  const typeDefs = gql(
@@ -19,6 +20,7 @@ async function startApolloServer() {
19
20
  return Promise.resolve({
20
21
  dataSources: {
21
22
  authAPI: new AuthAPI({ token, cache }),
23
+ dataparkAPI: new DataParkAPI({ token, cache }),
22
24
  },
23
25
  });
24
26
  },
@@ -8,13 +8,35 @@ import type { GraphQLError } from 'graphql';
8
8
 
9
9
  export const resolvers: Resolvers = {
10
10
  Query: {
11
+ me: async (_, _args, { dataSources }) => {
12
+ return (await dataSources.authAPI.getCurrentUser()).data;
13
+ },
11
14
  user: async (_, { id }, { dataSources }) => {
12
15
  return (await dataSources.authAPI.getUser(id)).data;
13
16
  },
17
+ api_keys: async (_, _args, { dataSources }) => {
18
+ return (await dataSources.authAPI.getAPIKeys()).data;
19
+ },
20
+ traces: async (_, { session_id }, { dataSources }) => {
21
+ return (await dataSources.dataparkAPI.getTraces(session_id)).data;
22
+ },
23
+ all_traces: async (_, _args, { dataSources }) => {
24
+ return (await dataSources.dataparkAPI.getAllTraces()).data;
25
+ },
26
+ spans: async (_, { trace_id }, { dataSources }) => {
27
+ return (await dataSources.dataparkAPI.getSpans(trace_id)).data;
28
+ },
14
29
  },
15
30
  Mutation: {
16
- createAPIKey: async (_, _args, { dataSources }) => {
17
- return await mutationAdaptor(dataSources.authAPI.createAPIKey());
31
+ createAPIKey: async (_, { name }, { dataSources }) => {
32
+ return await mutationAdaptor(
33
+ dataSources.authAPI.createAPIKey(name || 'Secret Key')
34
+ );
35
+ },
36
+ updateAPIKey: async (_, { id, name }, { dataSources }) => {
37
+ return await mutationAdaptor(
38
+ dataSources.authAPI.updateAPIKey(id, name || undefined)
39
+ );
18
40
  },
19
41
  revokeAPIKey: async (_, { id }, { dataSources }) => {
20
42
  return await mutationAdaptor(dataSources.authAPI.revokeAPIKey(id));
@@ -35,7 +57,9 @@ export const resolvers: Resolvers = {
35
57
  );
36
58
  },
37
59
  updateUser: async (_, { id, name }, { dataSources }) => {
38
- return await mutationAdaptor(dataSources.authAPI.updateUser(id, name));
60
+ return await mutationAdaptor(
61
+ dataSources.authAPI.updateUser(id, name ?? undefined)
62
+ );
39
63
  },
40
64
  createUser: async (_, { email, password, username }, { dataSources }) => {
41
65
  return await mutationAdaptor(
@@ -1,7 +1,29 @@
1
1
  "Query is a collection of queries that can be made to the API"
2
2
  type Query {
3
+ "Fetch current user"
4
+ me: User!
3
5
  "Fetch a specific user by id"
4
6
  user(id: ID!): User!
7
+ "Fetch current user's API keys"
8
+ api_keys: [APIKey!]
9
+ "Fetch traces by session id"
10
+ traces(session_id: ID!): [Trace!]
11
+ "Fetch all traces"
12
+ all_traces: [Trace!]
13
+ "Fetch all spans by trace id"
14
+ spans(trace_id: ID!): [Span!]
15
+ }
16
+
17
+ "NullTime is a custom scalar type that represents a time value that can be null"
18
+ type NullTime {
19
+ Time: String!
20
+ Valid: Boolean!
21
+ }
22
+
23
+ "KeyValue is a key-value pair"
24
+ type KeyValue {
25
+ key: String!
26
+ value: String!
5
27
  }
6
28
 
7
29
  "User is a registered user of the application"
@@ -10,13 +32,37 @@ type User {
10
32
  name: String
11
33
  username: String!
12
34
  email: String!
13
- api_keys: [APIKey]
35
+ api_keys: [APIKey!]
14
36
  }
15
37
 
16
38
  "APIKey is a key used to authenticate requests to the API"
17
39
  type APIKey {
18
40
  id: ID!
19
41
  api_key: String!
42
+ name: String
43
+ created_at: String!
44
+ }
45
+
46
+ "Trace is a record to track the execution of a session"
47
+ type Trace {
48
+ id: ID!
49
+ name: String
50
+ start_time: String!
51
+ end_time: NullTime!
52
+ session_id: ID!
53
+ }
54
+
55
+ "Span is a record of a single unit of work within a trace"
56
+ type Span {
57
+ id: ID!
58
+ parent_id: ID!
59
+ trace_id: ID!
60
+ name: String!
61
+ start_time: String!
62
+ end_time: String!
63
+ duration: Int!
64
+ kind: String!
65
+ metadata: [KeyValue!]
20
66
  }
21
67
 
22
68
  "Mutation is a collection of mutations that can be made to the API"
@@ -25,7 +71,8 @@ type Mutation {
25
71
  login(identity: String!, password: String!): CreateTokenResponse!
26
72
  loginWithAPIKey(api_key: String!): CreateTokenResponse!
27
73
  "API Key Mutations"
28
- createAPIKey: CreateAPIKeyResponse!
74
+ createAPIKey(name: String): CreateAPIKeyResponse!
75
+ updateAPIKey(id: ID!, name: String): UpdateAPIKeyResponse!
29
76
  revokeAPIKey(id: ID!): RevokeAPIKeyResponse!
30
77
  "User Mutations"
31
78
  createUser(
@@ -33,7 +80,7 @@ type Mutation {
33
80
  email: String!
34
81
  password: String!
35
82
  ): CreateUserResponse!
36
- updateUser(id: ID!, name: String!): UpdateUserResponse!
83
+ updateUser(id: ID!, name: String): UpdateUserResponse!
37
84
  deleteUser(id: ID!, password: String!): DeleteUserResponse!
38
85
  }
39
86
 
@@ -52,6 +99,14 @@ type CreateAPIKeyResponse implements MutationResponse {
52
99
  data: APIKey
53
100
  }
54
101
 
102
+ "UpdateAPIKeyResponse is a response to the updateAPIKey mutation"
103
+ type UpdateAPIKeyResponse implements MutationResponse {
104
+ code: Int!
105
+ message: String!
106
+ success: Boolean!
107
+ data: APIKey
108
+ }
109
+
55
110
  "RevokeAPIKeyResponse is a response to the revokeAPIKey mutation"
56
111
  type RevokeAPIKeyResponse implements MutationResponse {
57
112
  code: Int!
@@ -0,0 +1,9 @@
1
+ import type { AuthAPI } from '@/datasources/auth-api';
2
+ import type { DataParkAPI } from '@/datasources/datapark-api';
3
+
4
+ export type DataSourceContext = {
5
+ dataSources: {
6
+ authAPI: AuthAPI;
7
+ dataparkAPI: DataParkAPI;
8
+ };
9
+ };