divi 0.0.1b0__tar.gz → 0.0.1b1__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.
- {divi-0.0.1b0 → divi-0.0.1b1}/PKG-INFO +1 -1
- divi-0.0.1b1/README.md +72 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/README.md +0 -4
- divi-0.0.1b1/apps/docs/README.md +3 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/docs.json +2 -10
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/en/introduction.mdx +2 -0
- divi-0.0.1b1/apps/docs/en/quickstart/evaluation.mdx +5 -0
- divi-0.0.1b1/apps/docs/en/quickstart/trace.mdx +56 -0
- divi-0.0.1b1/apps/docs/images/pirate-example.png +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/zh/development/roadmap.mdx +2 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/zh/introduction.mdx +2 -0
- divi-0.0.1b1/apps/docs/zh/quickstart/trace.mdx +56 -0
- divi-0.0.1b1/apps/graphql/README.md +3 -0
- divi-0.0.1b1/apps/web/README.md +3 -0
- divi-0.0.1b1/divi/README.md +3 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/__init__.py +3 -4
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/decorators/obs_openai.py +7 -6
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/decorators/observable.py +6 -1
- divi-0.0.1b1/divi/evaluation/__init__.py +4 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/evaluation/evaluator.py +20 -6
- divi-0.0.1b1/docs/images/thinking-angel.png +0 -0
- divi-0.0.1b1/packages/README.md +15 -0
- divi-0.0.1b0/README.md +0 -14
- divi-0.0.1b0/apps/docs/README.md +0 -32
- divi-0.0.1b0/apps/docs/en/quickstart/trace.mdx +0 -4
- divi-0.0.1b0/apps/docs/zh/quickstart/trace.mdx +0 -4
- divi-0.0.1b0/apps/graphql/README.md +0 -3
- divi-0.0.1b0/apps/web/README.md +0 -36
- divi-0.0.1b0/divi/evaluation/__init__.py +0 -4
- divi-0.0.1b0/packages/README.md +0 -15
- {divi-0.0.1b0 → divi-0.0.1b1}/.dockerignore +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/.github/dependabot.yml +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/.gitignore +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/LICENSE +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/en/concepts/score.mdx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/en/concepts/session.mdx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/en/development/roadmap.mdx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/en/tutorials/self-refine.mdx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/favicon.ico +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/images/researcher-angel.png +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/images/scholar-angel.png +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/package.json +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/snippets/snippet-intro.mdx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/zh/concepts/score.mdx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/zh/concepts/session.mdx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/docs/zh/tutorials/self-refine.mdx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/Dockerfile +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/codegen.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/package.json +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/src/datasources/auth-api.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/src/datasources/datapark-api.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/src/index.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/src/resolvers.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/src/schema.graphql +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/src/types/context.d.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/src/types/response.d.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/src/types/types.d.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/graphql/tsconfig.json +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/.gitignore +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/@modal/(.)traces/[id]/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/@modal/default.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/actions.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/components/columns.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/components/create-dialog.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/components/data-table-cell-viewer.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/components/data-table-toolbar.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/components/data-table.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/components/delete-dialog.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/data/data.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/data/schema.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/layout.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/api-keys/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/components/app-sidebar.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/components/nav-main.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/components/nav-secondary.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/components/nav-user.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/components/site-header.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/layout.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/settings/account/components/account-form.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/settings/account/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/settings/appearance/components/appearance-form.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/settings/appearance/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/settings/components/profile-form.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/settings/components/sidebar-nav.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/settings/layout.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/settings/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(children)/[id]/components/Span.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(children)/[id]/components/responsive-resizable.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(children)/[id]/components/trace-board.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(children)/[id]/components/trace-chart.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(children)/[id]/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(overview)/components/columns.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(overview)/components/data-table-row-action.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(overview)/components/data-table-toolbar.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(overview)/components/data-table.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(overview)/data/data.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(overview)/data/schema.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(overview)/layout.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/traces/(overview)/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/usages/actions.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/usages/components/usage-board.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/usages/components/usage-chart.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/usages/layout.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/dashboard/usages/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/favicon.ico +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/home/components/home-header.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/home/components/home-hero.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/home/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/layout.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/login/components/login-form.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/login/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/signup/components/signup-form.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/app/signup/page.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/ApolloWrapper.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/Highter.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/Modal.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/calendar.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/data-table-column-header.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/data-table-faceted-filter.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/data-table-pagination.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/data-table-row.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/data-table-view-options.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/date-picker.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/mode-switcher.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components/theme-provider.tsx +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/components.json +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/hooks/actionState.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/hooks/apolloClient.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/callback/toast-callback.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/callback/with-callback.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/server/README.md +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/server/auth.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/server/cookies.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/server/evaluation.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/server/openai.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/server/span.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/types/span.d.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/types/state.d.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/types/usage.d.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/lib/utils.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/middleware.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/next-env.d.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/next.config.ts +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/package.json +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/postcss.config.mjs +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/public/peeking-angel.png +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/public/thinking-angel.png +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/tsconfig.json +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/apps/web/vercel.json +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/biome.json +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/compose-dev.yml +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/decorators/__init__.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/decorators/collect.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/decorators/observe.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/evaluation/evaluate.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/evaluation/prompts.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/evaluation/scores.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/common/v1/common.proto +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/common/v1/common_pb2.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/common/v1/common_pb2.pyi +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/core/health/v1/health_service.proto +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/core/health/v1/health_service_pb2.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/core/health/v1/health_service_pb2.pyi +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/core/health/v1/health_service_pb2_grpc.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/metric/v1/metric.proto +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/metric/v1/metric_pb2.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/metric/v1/metric_pb2.pyi +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/trace/v1/trace.proto +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/trace/v1/trace_pb2.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/proto/trace/v1/trace_pb2.pyi +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/__init__.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/auth/__init__.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/auth/auth.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/auth/init.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/auth/tokman.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/core/__init__.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/core/core.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/core/finish.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/core/init.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/datapark/__init__.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/datapark/datapark.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/datapark/init.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/finish.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/init.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/services/service.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/session/__init__.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/session/session.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/session/setup.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/session/teardown.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/signals/__init__.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/signals/span.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/signals/trace.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/divi/utils.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/docker-compose.yml +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/docs/README.md +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/docs/developer_tools.md +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/docs/images/architecture.svg +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/docs/images/favicon.ico +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/docs/images/og-image.png +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/docs/images/storage.svg +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/docs/package_readme.md +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/go.work +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/go.work.sum +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/hatch.toml +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/package.json +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/pnpm-lock.yaml +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/pnpm-workspace.yaml +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/pyproject.toml +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/scripts/README.md +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/scripts/hatch_build.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/scripts/image_build.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/scripts/key_build.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/scripts/proto_build.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/README.md +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/go.mod +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/go.sum +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/auth/handler/api.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/auth/handler/api_key.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/auth/handler/auth.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/auth/handler/user.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/auth/router/router.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/core/.keep +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/datapark/handler/api.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/datapark/handler/evaluation.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/datapark/handler/metric.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/datapark/handler/openai.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/datapark/handler/session.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/datapark/handler/trace.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/datapark/handler/usage.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/app/datapark/router/router.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/auth/auth.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/auth/middleware.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/config/config.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/database/connect.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/database/database.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/model/api_key.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/model/openai.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/model/score.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/model/session.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/model/trace.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/model/usage.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/internal/pkg/model/user.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/pb/common.pb.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/pb/health_service.pb.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/pb/health_service_grpc.pb.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/pb/metric.pb.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/services/pb/trace.pb.go +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/tests/__init__.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/tests/unit_tests/decorators/test_obs_openai.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/tests/unit_tests/decorators/test_observable.py +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/turbo.json +0 -0
- {divi-0.0.1b0 → divi-0.0.1b1}/uv.lock +0 -0
divi-0.0.1b1/README.md
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
<p align="center">
|
2
|
+
<a href="https://divine-agent.com/"><img width="128" height="128" src="https://raw.githubusercontent.com/Kaikaikaifang/divine-agent/main/docs/images/thinking-angel.png" alt='Divine Agent'></a>
|
3
|
+
</p>
|
4
|
+
|
5
|
+
<p align="center"><strong>Divine Agent</strong> <em>– Fully open-source agent observability. Simple. Clear.</em></p>
|
6
|
+
|
7
|
+
<p align="center">
|
8
|
+
<a href="https://pypi.org/project/divi/">
|
9
|
+
<img src="https://img.shields.io/pypi/v/divi.svg" alt="Package version">
|
10
|
+
</a>
|
11
|
+
</p>
|
12
|
+
|
13
|
+
divine-agent is an observability tool for LLM-based agents, offering tracing, evaluation, and usage statistics.
|
14
|
+
|
15
|
+
---
|
16
|
+
|
17
|
+
> [!IMPORTANT]
|
18
|
+
> **divine-agent is currently experimental** and may undergo significant changes at any time. This project is in active development, which means APIs and features might change without prior notice.
|
19
|
+
>
|
20
|
+
> We do not recommend using divine-agent in production environments until a stable release is available.
|
21
|
+
|
22
|
+
## Install
|
23
|
+
|
24
|
+
Requires Python 3.11+
|
25
|
+
|
26
|
+
```shell
|
27
|
+
pip install divi
|
28
|
+
```
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
|
32
|
+
1. Get API Key from [Web](https://www.divine-agent.com/dashboard/api-keys).
|
33
|
+
2. Create a `.env` file and add the following line:
|
34
|
+
```env
|
35
|
+
DIVI_API_KEY=your_api_key
|
36
|
+
```
|
37
|
+
3. Run the following code:
|
38
|
+
```python
|
39
|
+
from divi import Score, obs_openai, observable
|
40
|
+
from dotenv import load_dotenv
|
41
|
+
from openai import OpenAI
|
42
|
+
|
43
|
+
load_dotenv()
|
44
|
+
|
45
|
+
|
46
|
+
class Pirate:
|
47
|
+
def __init__(self):
|
48
|
+
self.client = obs_openai(
|
49
|
+
OpenAI(),
|
50
|
+
name="Pirate",
|
51
|
+
scores=[Score.instruction_adherence],
|
52
|
+
)
|
53
|
+
|
54
|
+
@observable(name="Talk with pirate")
|
55
|
+
def talk(self, message: str):
|
56
|
+
"""Talk like a pirate."""
|
57
|
+
res = self.client.chat.completions.create(
|
58
|
+
model="gpt-4o",
|
59
|
+
messages=[
|
60
|
+
{"role": "developer", "content": "Talk like a pirate."},
|
61
|
+
{
|
62
|
+
"role": "user",
|
63
|
+
"content": message,
|
64
|
+
},
|
65
|
+
],
|
66
|
+
)
|
67
|
+
return res.choices[0].message.content
|
68
|
+
|
69
|
+
|
70
|
+
pirate = Pirate()
|
71
|
+
pirate.talk("How do I check if a Python object is an instance of a class?")
|
72
|
+
```
|
@@ -9,7 +9,3 @@
|
|
9
9
|
| graphql | A GraphQL server | 4000 |
|
10
10
|
| web | A Next.js web server | 4001 |
|
11
11
|
| docs | A documentation server | 4002 |
|
12
|
-
|
13
|
-
## Rules
|
14
|
-
|
15
|
-
1. [Split project files by feature or route](https://nextjs.org/docs/app/getting-started/project-structure#split-project-files-by-feature-or-route)
|
@@ -15,11 +15,7 @@
|
|
15
15
|
"groups": [
|
16
16
|
{
|
17
17
|
"group": "Get Started",
|
18
|
-
"pages": ["en/introduction"]
|
19
|
-
},
|
20
|
-
{
|
21
|
-
"group": "Tutorials",
|
22
|
-
"pages": ["en/tutorials/self-refine"]
|
18
|
+
"pages": ["en/introduction", "en/quickstart/trace"]
|
23
19
|
}
|
24
20
|
]
|
25
21
|
},
|
@@ -28,11 +24,7 @@
|
|
28
24
|
"groups": [
|
29
25
|
{
|
30
26
|
"group": "快速开始",
|
31
|
-
"pages": ["zh/introduction"]
|
32
|
-
},
|
33
|
-
{
|
34
|
-
"group": "使用案例",
|
35
|
-
"pages": ["zh/tutorials/self-refine"]
|
27
|
+
"pages": ["zh/introduction", "zh/quickstart/trace"]
|
36
28
|
}
|
37
29
|
]
|
38
30
|
}
|
@@ -13,3 +13,5 @@ description: "Welcome to the docs of Divine Agent"
|
|
13
13
|
src="/images/scholar-angel.png"
|
14
14
|
alt="Hero Dark"
|
15
15
|
/>
|
16
|
+
|
17
|
+
**Divine-Agent** is an observability tool for agents, offering tracing, evaluation, and usage statistics to help users observe the performance and behavior of their agents.
|
@@ -0,0 +1,56 @@
|
|
1
|
+
---
|
2
|
+
title: 'Trace'
|
3
|
+
description: 'Start observe your agents in under 5 minutes'
|
4
|
+
---
|
5
|
+

|
6
|
+
|
7
|
+
## Install
|
8
|
+
|
9
|
+
Requires Python 3.11+
|
10
|
+
|
11
|
+
```shell
|
12
|
+
pip install divi
|
13
|
+
```
|
14
|
+
|
15
|
+
## Steps
|
16
|
+
|
17
|
+
1. Get API Key from [Web](https://www.divine-agent.com/dashboard/api-keys).
|
18
|
+
2. Create a `.env` file and add the following line:
|
19
|
+
```env
|
20
|
+
DIVI_API_KEY=your_api_key
|
21
|
+
```
|
22
|
+
3. Run the following code:
|
23
|
+
```python Pirate Example {1,10-13,15} [expandable]
|
24
|
+
from divi import obs_openai, observable
|
25
|
+
from dotenv import load_dotenv
|
26
|
+
from openai import OpenAI
|
27
|
+
|
28
|
+
load_dotenv()
|
29
|
+
|
30
|
+
|
31
|
+
class Pirate:
|
32
|
+
def __init__(self):
|
33
|
+
self.client = obs_openai(
|
34
|
+
OpenAI(),
|
35
|
+
name="Pirate",
|
36
|
+
)
|
37
|
+
|
38
|
+
@observable(name="Talk with pirate")
|
39
|
+
def talk(self, message: str):
|
40
|
+
"""Talk like a pirate."""
|
41
|
+
res = self.client.chat.completions.create(
|
42
|
+
model="gpt-4o",
|
43
|
+
messages=[
|
44
|
+
{"role": "developer", "content": "Talk like a pirate."},
|
45
|
+
{
|
46
|
+
"role": "user",
|
47
|
+
"content": message,
|
48
|
+
},
|
49
|
+
],
|
50
|
+
)
|
51
|
+
return res.choices[0].message.content
|
52
|
+
|
53
|
+
|
54
|
+
pirate = Pirate()
|
55
|
+
pirate.talk("How do I check if a Python object is an instance of a class?")
|
56
|
+
```
|
Binary file
|
@@ -0,0 +1,56 @@
|
|
1
|
+
---
|
2
|
+
title: '追踪'
|
3
|
+
description: '5 分钟内开启智能体追踪'
|
4
|
+
---
|
5
|
+

|
6
|
+
|
7
|
+
## Install
|
8
|
+
|
9
|
+
需要 Python 版本 3.11+
|
10
|
+
|
11
|
+
```shell
|
12
|
+
pip install divi
|
13
|
+
```
|
14
|
+
|
15
|
+
## Steps
|
16
|
+
|
17
|
+
1. 从 [Web](https://www.divine-agent.com/dashboard/api-keys) 获取 API Key.
|
18
|
+
2. 创建 `.env` 文件并添加以下行:
|
19
|
+
```env
|
20
|
+
DIVI_API_KEY=your_api_key
|
21
|
+
```
|
22
|
+
3. 运行以下代码:
|
23
|
+
```python Pirate Example {1,10-13,15} [expandable]
|
24
|
+
from divi import obs_openai, observable
|
25
|
+
from dotenv import load_dotenv
|
26
|
+
from openai import OpenAI
|
27
|
+
|
28
|
+
load_dotenv()
|
29
|
+
|
30
|
+
|
31
|
+
class Pirate:
|
32
|
+
def __init__(self):
|
33
|
+
self.client = obs_openai(
|
34
|
+
OpenAI(),
|
35
|
+
name="Pirate",
|
36
|
+
)
|
37
|
+
|
38
|
+
@observable(name="Talk with pirate")
|
39
|
+
def talk(self, message: str):
|
40
|
+
"""Talk like a pirate."""
|
41
|
+
res = self.client.chat.completions.create(
|
42
|
+
model="gpt-4o",
|
43
|
+
messages=[
|
44
|
+
{"role": "developer", "content": "Talk like a pirate."},
|
45
|
+
{
|
46
|
+
"role": "user",
|
47
|
+
"content": message,
|
48
|
+
},
|
49
|
+
],
|
50
|
+
)
|
51
|
+
return res.choices[0].message.content
|
52
|
+
|
53
|
+
|
54
|
+
pirate = Pirate()
|
55
|
+
pirate.talk("How do I check if a Python object is an instance of a class?")
|
56
|
+
```
|
@@ -1,10 +1,9 @@
|
|
1
1
|
from typing import Optional
|
2
2
|
|
3
3
|
from .decorators import obs_openai, observable
|
4
|
-
from .evaluation import Evaluator
|
4
|
+
from .evaluation import Evaluator
|
5
5
|
from .services import Auth, Core, DataPark
|
6
6
|
from .session import Session
|
7
|
-
from .signals import Kind
|
8
7
|
|
9
8
|
name: str = "divi"
|
10
9
|
|
@@ -14,5 +13,5 @@ _auth: Optional[Auth] = None
|
|
14
13
|
_datapark: Optional[DataPark] = None
|
15
14
|
_evaluator: Optional[Evaluator] = None
|
16
15
|
|
17
|
-
__version__ = "0.0.
|
18
|
-
__all__ = ["obs_openai", "observable"
|
16
|
+
__version__ = "0.0.1b1"
|
17
|
+
__all__ = ["obs_openai", "observable"]
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING, TypeVar, Union
|
|
5
5
|
from typing_extensions import Optional
|
6
6
|
|
7
7
|
from divi.decorators.observable import observable
|
8
|
+
from divi.evaluation.evaluator import EvaluatorConfig
|
8
9
|
from divi.evaluation.scores import Score
|
9
10
|
from divi.signals.span import Kind
|
10
11
|
from divi.utils import is_async
|
@@ -19,10 +20,13 @@ def _get_observable_create(
|
|
19
20
|
create: Callable,
|
20
21
|
name: Optional[str] = None,
|
21
22
|
scores: Optional[list[Score]] = None,
|
23
|
+
eval: Optional[EvaluatorConfig] = None,
|
22
24
|
) -> Callable:
|
23
25
|
@functools.wraps(create)
|
24
26
|
def observable_create(*args, stream: bool = False, **kwargs):
|
25
|
-
decorator = observable(
|
27
|
+
decorator = observable(
|
28
|
+
kind=Kind.llm, name=name, scores=scores, eval=eval
|
29
|
+
)
|
26
30
|
return decorator(create)(*args, stream=stream, **kwargs)
|
27
31
|
|
28
32
|
# TODO Async Observable Create
|
@@ -33,16 +37,13 @@ def obs_openai(
|
|
33
37
|
client: C,
|
34
38
|
name: Optional[str] = "Agent",
|
35
39
|
scores: Optional[list[Score]] = None,
|
40
|
+
eval: Optional[EvaluatorConfig] = None,
|
36
41
|
) -> C:
|
37
42
|
"""Make OpenAI client observable."""
|
38
43
|
client.chat.completions.create = _get_observable_create(
|
39
44
|
client.chat.completions.create,
|
40
45
|
name=name,
|
41
46
|
scores=scores,
|
42
|
-
|
43
|
-
client.completions.create = _get_observable_create(
|
44
|
-
client.completions.create,
|
45
|
-
name=name,
|
46
|
-
scores=scores,
|
47
|
+
eval=eval,
|
47
48
|
)
|
48
49
|
return client
|
@@ -15,6 +15,7 @@ from typing import (
|
|
15
15
|
|
16
16
|
from divi.decorators.observe import observe
|
17
17
|
from divi.evaluation.evaluate import evaluate_scores
|
18
|
+
from divi.evaluation.evaluator import EvaluatorConfig
|
18
19
|
from divi.evaluation.scores import Score
|
19
20
|
from divi.session import SessionExtra
|
20
21
|
from divi.signals.span import Kind, Span
|
@@ -43,6 +44,7 @@ def observable(
|
|
43
44
|
*,
|
44
45
|
name: Optional[str] = None,
|
45
46
|
scores: Optional[list[Score]] = None,
|
47
|
+
eval: Optional[EvaluatorConfig] = None,
|
46
48
|
metadata: Optional[Mapping[str, Any]] = None,
|
47
49
|
) -> Callable[[Callable[P, R]], WithSessionExtra[P, R]]: ...
|
48
50
|
|
@@ -56,6 +58,7 @@ def observable(
|
|
56
58
|
name = kwargs.pop("name", None)
|
57
59
|
metadata = kwargs.pop("metadata", None)
|
58
60
|
scores: list[Score] = kwargs.pop("scores", None)
|
61
|
+
eval: EvaluatorConfig = kwargs.pop("eval", None)
|
59
62
|
|
60
63
|
def decorator(func):
|
61
64
|
@functools.wraps(func)
|
@@ -78,7 +81,9 @@ def observable(
|
|
78
81
|
|
79
82
|
# 3. evaluate the scores if they are provided
|
80
83
|
messages = kwargs.get("messages", [])
|
81
|
-
evaluate_scores(
|
84
|
+
evaluate_scores(
|
85
|
+
messages, outputs=result, scores=scores, config=eval
|
86
|
+
)
|
82
87
|
|
83
88
|
return result
|
84
89
|
|
@@ -13,8 +13,9 @@ from divi.evaluation.scores import Score
|
|
13
13
|
class EvaluatorConfig:
|
14
14
|
def __init__(
|
15
15
|
self,
|
16
|
-
model: str = "gpt-
|
16
|
+
model: str = "gpt-4o",
|
17
17
|
temperature: float = 0.5,
|
18
|
+
n_rounds: int = 5,
|
18
19
|
max_concurrency: int = 10,
|
19
20
|
api_key: Optional[str] = None,
|
20
21
|
base_url: Optional[str] = None,
|
@@ -23,6 +24,7 @@ class EvaluatorConfig:
|
|
23
24
|
self.api_key = api_key
|
24
25
|
self.base_url = base_url
|
25
26
|
self.temperature = temperature
|
27
|
+
self.n_rounds = n_rounds
|
26
28
|
self.max_concurrency = max_concurrency
|
27
29
|
|
28
30
|
|
@@ -123,7 +125,11 @@ class Evaluator:
|
|
123
125
|
return aggregated_results
|
124
126
|
|
125
127
|
def evaluate_sync(
|
126
|
-
self,
|
128
|
+
self,
|
129
|
+
target: str,
|
130
|
+
conversation: str,
|
131
|
+
scores: list[Score],
|
132
|
+
n_rounds: Optional[int] = None,
|
127
133
|
) -> List[EvaluationScore]:
|
128
134
|
with concurrent.futures.ThreadPoolExecutor(
|
129
135
|
max_workers=self.config.max_concurrency
|
@@ -132,7 +138,7 @@ class Evaluator:
|
|
132
138
|
executor.submit(
|
133
139
|
self._sync_evaluate_once, target, conversation, score
|
134
140
|
)
|
135
|
-
for _ in range(n_rounds)
|
141
|
+
for _ in range(n_rounds if n_rounds else self.config.n_rounds)
|
136
142
|
for score in scores
|
137
143
|
]
|
138
144
|
evaluations = [
|
@@ -143,7 +149,11 @@ class Evaluator:
|
|
143
149
|
)
|
144
150
|
|
145
151
|
async def evaluate_async(
|
146
|
-
self,
|
152
|
+
self,
|
153
|
+
target: str,
|
154
|
+
conversation: str,
|
155
|
+
scores: list[Score],
|
156
|
+
n_rounds: Optional[int] = None,
|
147
157
|
) -> List[EvaluationScore]:
|
148
158
|
semaphore = asyncio.Semaphore(self.config.max_concurrency)
|
149
159
|
|
@@ -153,7 +163,11 @@ class Evaluator:
|
|
153
163
|
target, conversation, score
|
154
164
|
)
|
155
165
|
|
156
|
-
tasks = [
|
166
|
+
tasks = [
|
167
|
+
sem_task(score)
|
168
|
+
for _ in range(n_rounds if n_rounds else self.config.n_rounds)
|
169
|
+
for score in scores
|
170
|
+
]
|
157
171
|
evaluations = await asyncio.gather(*tasks)
|
158
172
|
return self._aggregate_results(
|
159
173
|
[e for e in evaluations if e is not None]
|
@@ -164,7 +178,7 @@ class Evaluator:
|
|
164
178
|
target: str,
|
165
179
|
conversation: str,
|
166
180
|
scores: list[Score],
|
167
|
-
n_rounds: int =
|
181
|
+
n_rounds: Optional[int] = None,
|
168
182
|
mode: Literal["sync", "async"] = "sync",
|
169
183
|
) -> List[EvaluationScore]:
|
170
184
|
if mode == "async":
|
Binary file
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Packages
|
2
|
+
|
3
|
+
> Js packages shared across the apps.
|
4
|
+
|
5
|
+
## ui
|
6
|
+
|
7
|
+
> Shared shadcn ui for the project.
|
8
|
+
|
9
|
+
## typescript-config
|
10
|
+
|
11
|
+
> Shared typescript configuration for the project.
|
12
|
+
|
13
|
+
## graphql-client
|
14
|
+
|
15
|
+
> Shared GraphQL client codes for the project.
|
divi-0.0.1b0/README.md
DELETED
divi-0.0.1b0/apps/docs/README.md
DELETED
@@ -1,32 +0,0 @@
|
|
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`
|
divi-0.0.1b0/apps/web/README.md
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/create-next-app).
|
2
|
-
|
3
|
-
## Getting Started
|
4
|
-
|
5
|
-
First, run the development server:
|
6
|
-
|
7
|
-
```bash
|
8
|
-
npm run dev
|
9
|
-
# or
|
10
|
-
yarn dev
|
11
|
-
# or
|
12
|
-
pnpm dev
|
13
|
-
# or
|
14
|
-
bun dev
|
15
|
-
```
|
16
|
-
|
17
|
-
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
18
|
-
|
19
|
-
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
20
|
-
|
21
|
-
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load Inter, a custom Google Font.
|
22
|
-
|
23
|
-
## Learn More
|
24
|
-
|
25
|
-
To learn more about Next.js, take a look at the following resources:
|
26
|
-
|
27
|
-
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
28
|
-
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
29
|
-
|
30
|
-
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
31
|
-
|
32
|
-
## Deploy on Vercel
|
33
|
-
|
34
|
-
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
35
|
-
|
36
|
-
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
divi-0.0.1b0/packages/README.md
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# Packages
|
2
|
-
|
3
|
-
> Js packages shared across the apps.
|
4
|
-
|
5
|
-
## eslint-config
|
6
|
-
|
7
|
-
> Shared eslint configuration for the project.
|
8
|
-
|
9
|
-
## typescript-config
|
10
|
-
|
11
|
-
> Shared typescript configuration for the project.
|
12
|
-
|
13
|
-
## [tailwind-config](https://github.com/vercel/turborepo/tree/main/examples/with-tailwind)
|
14
|
-
|
15
|
-
> Shared tailwind configuration for the project.
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|