sea-dev 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/tasks/README.md +89 -0
- package/.cursor/rules/commits.mdc +31 -0
- package/.cursor/rules/general.mdc +84 -0
- package/.github/workflows/ci-cd.yml +141 -0
- package/CLAUDE.md +337 -0
- package/README.md +129 -0
- package/apps/api/.prettierignore +6 -0
- package/apps/api/.prettierrc.js +3 -0
- package/apps/api/dotenvx-safe.sh +11 -0
- package/apps/api/eslint.config.mjs +3 -0
- package/apps/api/package.json +58 -0
- package/apps/api/src/clients/posthog.ts +25 -0
- package/apps/api/src/dal/submission.ts +59 -0
- package/apps/api/src/errors.ts +55 -0
- package/apps/api/src/index.ts +21 -0
- package/apps/api/src/lib/channel.ts +28 -0
- package/apps/api/src/lib/config.ts +9 -0
- package/apps/api/src/lib/fmt.test.ts +9 -0
- package/apps/api/src/lib/fmt.ts +62 -0
- package/apps/api/src/lib/invariant.ts +23 -0
- package/apps/api/src/middleware/auth.ts +66 -0
- package/apps/api/src/routes/index.ts +20 -0
- package/apps/api/src/routes/v2/chat/handlers.ts +693 -0
- package/apps/api/src/routes/v2/chat/index.ts +257 -0
- package/apps/api/src/routes/v2/chat/schemas.ts +43 -0
- package/apps/api/src/routes/v2/deals/handlers.ts +64 -0
- package/apps/api/src/routes/v2/deals/index.ts +88 -0
- package/apps/api/src/routes/v2/deals/schemas.ts +38 -0
- package/apps/api/src/routes/v2/forms/handlers.ts +415 -0
- package/apps/api/src/routes/v2/forms/index.ts +382 -0
- package/apps/api/src/routes/v2/forms/schemas.ts +243 -0
- package/apps/api/src/routes/v2/index.ts +19 -0
- package/apps/api/src/routes/v2/pipelines/handlers.ts +261 -0
- package/apps/api/src/routes/v2/pipelines/index.ts +224 -0
- package/apps/api/src/routes/v2/pipelines/schemas.ts +173 -0
- package/apps/api/src/routes/v2/submissions/handlers.ts +555 -0
- package/apps/api/src/routes/v2/submissions/index.ts +366 -0
- package/apps/api/src/routes/v2/submissions/schemas.ts +233 -0
- package/apps/api/src/routes/v2/workflows/handlers.ts +81 -0
- package/apps/api/src/routes/v2/workflows/index.ts +88 -0
- package/apps/api/src/routes/v2/workflows/schemas.ts +40 -0
- package/apps/api/src/server.ts +146 -0
- package/apps/api/src/static/favicon.ico +0 -0
- package/apps/api/src/types/api.ts +14 -0
- package/apps/api/src/types/result.ts +3 -0
- package/apps/api/tsconfig.json +22 -0
- package/apps/api/vite.config.ts +28 -0
- package/apps/api/vitest.config.ts +14 -0
- package/apps/conversion-worker/Dockerfile +59 -0
- package/apps/conversion-worker/package.json +31 -0
- package/apps/conversion-worker/src/lib/config.ts +7 -0
- package/apps/conversion-worker/src/main.ts +22 -0
- package/apps/conversion-worker/src/workflows/convert-pptx.ts +116 -0
- package/apps/conversion-worker/tsconfig.json +27 -0
- package/apps/conversion-worker/vite.config.ts +33 -0
- package/apps/main/.prettierignore +6 -0
- package/apps/main/.prettierrc.js +3 -0
- package/apps/main/CLAUDE.md +245 -0
- package/apps/main/Procfile +1 -0
- package/apps/main/README.md +193 -0
- package/apps/main/db-tests.jsonl +116 -0
- package/apps/main/dotenvx-safe.sh +11 -0
- package/apps/main/drizzle/meta/_journal.json +1 -0
- package/apps/main/drizzle.config.ts +25 -0
- package/apps/main/eslint.config.mjs +3 -0
- package/apps/main/generate-routes.mjs +5 -0
- package/apps/main/package.json +131 -0
- package/apps/main/playwright.config.ts +23 -0
- package/apps/main/postcss.config.ts +5 -0
- package/apps/main/public/bg-dark.svg +10 -0
- package/apps/main/public/bg.svg +10 -0
- package/apps/main/public/favicon.ico +0 -0
- package/apps/main/run.sh +146 -0
- package/apps/main/scripts/browser.ts +14 -0
- package/apps/main/scripts/db-test-cov.ts +277 -0
- package/apps/main/scripts/login.ts +78 -0
- package/apps/main/scripts/repl.ts +61 -0
- package/apps/main/src/_foo.ts +31 -0
- package/apps/main/src/_tests/db.test.ts +19 -0
- package/apps/main/src/_tests/mock-db.ts +60 -0
- package/apps/main/src/client.tsx +13 -0
- package/apps/main/src/clients/loops.ts +13 -0
- package/apps/main/src/clients/polar.ts +12 -0
- package/apps/main/src/clients/posthog.ts +12 -0
- package/apps/main/src/components/chat/chat-context.tsx +99 -0
- package/apps/main/src/components/chat/chat-messages.tsx +184 -0
- package/apps/main/src/components/chat/chat-status.tsx +140 -0
- package/apps/main/src/components/chat/chat.tsx +458 -0
- package/apps/main/src/components/chat/citation-modal.tsx +54 -0
- package/apps/main/src/components/cta.tsx +21 -0
- package/apps/main/src/components/data-display/derived.tsx +40 -0
- package/apps/main/src/components/data-display/group-single.tsx +57 -0
- package/apps/main/src/components/data-display/group-table.tsx +165 -0
- package/apps/main/src/components/data-display/group-wrapper.tsx +54 -0
- package/apps/main/src/components/data-display/item.tsx +678 -0
- package/apps/main/src/components/error.tsx +45 -0
- package/apps/main/src/components/forms/error.tsx +22 -0
- package/apps/main/src/components/grid.tsx +7 -0
- package/apps/main/src/components/header/container.tsx +73 -0
- package/apps/main/src/components/header/header-bar.tsx +102 -0
- package/apps/main/src/components/modals/copy-display.tsx +37 -0
- package/apps/main/src/components/modals/copy-form.tsx +152 -0
- package/apps/main/src/components/modals/duplicate-workflow.tsx +89 -0
- package/apps/main/src/components/modals/field-correction.tsx +323 -0
- package/apps/main/src/components/modals/form-viewer.tsx +126 -0
- package/apps/main/src/components/modals/modals.tsx +44 -0
- package/apps/main/src/components/modals/new-deal.tsx +78 -0
- package/apps/main/src/components/modals/new-form.tsx +133 -0
- package/apps/main/src/components/modals/new-pipeline.tsx +70 -0
- package/apps/main/src/components/modals/new-submission.tsx +321 -0
- package/apps/main/src/components/modals/new-workflow.tsx +342 -0
- package/apps/main/src/components/modals/transformation-sources-modal.tsx +157 -0
- package/apps/main/src/components/modals/view-report.tsx +193 -0
- package/apps/main/src/components/not-found.tsx +14 -0
- package/apps/main/src/components/search/search-bar.tsx +178 -0
- package/apps/main/src/components/sheet-selector.tsx +135 -0
- package/apps/main/src/components/side-panel/doc-list.tsx +480 -0
- package/apps/main/src/components/sidebar/admin-sidebar.tsx +75 -0
- package/apps/main/src/components/sidebar/app-sidebar.tsx +417 -0
- package/apps/main/src/components/sidebar/model-select.tsx +134 -0
- package/apps/main/src/components/sidebar/settings-sidebar.tsx +132 -0
- package/apps/main/src/components/sidebar/sidebar-right.tsx +22 -0
- package/apps/main/src/components/sidebar/stop-impersonate.tsx +21 -0
- package/apps/main/src/components/svg/loading.tsx +33 -0
- package/apps/main/src/components/theme-selector.tsx +43 -0
- package/apps/main/src/components/unsaved-badge.tsx +19 -0
- package/apps/main/src/components/upload/file-upload.tsx +354 -0
- package/apps/main/src/fns/submission-groups.ts +28 -0
- package/apps/main/src/fns/submission-items.ts +11 -0
- package/apps/main/src/global-middleware.ts +16 -0
- package/apps/main/src/hooks/use-update-state.ts +18 -0
- package/apps/main/src/lib/auth-client.ts +16 -0
- package/apps/main/src/lib/auth.test.ts +359 -0
- package/apps/main/src/lib/auth.ts +144 -0
- package/apps/main/src/lib/billing.ts +23 -0
- package/apps/main/src/lib/config-iso.ts +76 -0
- package/apps/main/src/lib/config.ts +61 -0
- package/apps/main/src/lib/excel.ts +16 -0
- package/apps/main/src/lib/feedback-cache.ts +70 -0
- package/apps/main/src/lib/logger.ts +44 -0
- package/apps/main/src/lib/models.ts +22 -0
- package/apps/main/src/lib/not-found.ts +17 -0
- package/apps/main/src/lib/pdf.ts +16 -0
- package/apps/main/src/lib/tabularize.ts +54 -0
- package/apps/main/src/lib/utils.ts +10 -0
- package/apps/main/src/lib/zfd.ts +217 -0
- package/apps/main/src/middleware.ts +55 -0
- package/apps/main/src/routeTree.gen.ts +1255 -0
- package/apps/main/src/router.tsx +24 -0
- package/apps/main/src/routes/__root.tsx +92 -0
- package/apps/main/src/routes/_authed/_app/(dashboard)/index.tsx +227 -0
- package/apps/main/src/routes/_authed/_app/agents/$agentId/config.tsx +224 -0
- package/apps/main/src/routes/_authed/_app/agents/$agentId/index.tsx +206 -0
- package/apps/main/src/routes/_authed/_app/agents/-components/agent-actions-menu.tsx +94 -0
- package/apps/main/src/routes/_authed/_app/agents/-components/agent-artifacts.tsx +153 -0
- package/apps/main/src/routes/_authed/_app/agents/-components/agent-chat.tsx +220 -0
- package/apps/main/src/routes/_authed/_app/agents/-components/agent-history-menu.tsx +81 -0
- package/apps/main/src/routes/_authed/_app/agents/-components/agent-model-select.tsx +84 -0
- package/apps/main/src/routes/_authed/_app/agents/-components/agent-relevant-items.tsx +226 -0
- package/apps/main/src/routes/_authed/_app/agents/-components/agent-upload-button.tsx +298 -0
- package/apps/main/src/routes/_authed/_app/agents/-components/context-modal.tsx +187 -0
- package/apps/main/src/routes/_authed/_app/agents/-fns.ts +560 -0
- package/apps/main/src/routes/_authed/_app/agents/index.tsx +65 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/$subId/-components/citation-tree.tsx +268 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/$subId.tsx +655 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/doc-loading.tsx +37 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/share-link.tsx +42 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/submission-card.tsx +89 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/submission-filter.tsx +193 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/submissions.tsx +36 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/summary.tsx +82 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/upload-doc.tsx +120 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/-fns.ts +653 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/index.tsx +259 -0
- package/apps/main/src/routes/_authed/_app/deals/$dealId/route.tsx +29 -0
- package/apps/main/src/routes/_authed/_app/deals/index.tsx +104 -0
- package/apps/main/src/routes/_authed/_app/feedback/index.tsx +639 -0
- package/apps/main/src/routes/_authed/_app/feedback/insights.tsx +250 -0
- package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/$runId/-components/blockers-panel.tsx +260 -0
- package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/$runId/-components/manual-input-panel.tsx +301 -0
- package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/$runId/-components/submission-selector-modal.tsx +143 -0
- package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/$runId/-components/upload-doc.tsx +120 -0
- package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/$runId/index.tsx +1485 -0
- package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/-components/dag-view.tsx +296 -0
- package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/-components/step-config-modal.tsx +634 -0
- package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/index.tsx +911 -0
- package/apps/main/src/routes/_authed/_app/pipelines/-fns.ts +510 -0
- package/apps/main/src/routes/_authed/_app/pipelines/index.tsx +103 -0
- package/apps/main/src/routes/_authed/_app/reports/$reportId.tsx +397 -0
- package/apps/main/src/routes/_authed/_app/reports/-fns.ts +11 -0
- package/apps/main/src/routes/_authed/_app/reports/index.tsx +22 -0
- package/apps/main/src/routes/_authed/_app/route.tsx +48 -0
- package/apps/main/src/routes/_authed/_app/submissions/-columns.tsx +161 -0
- package/apps/main/src/routes/_authed/_app/submissions/-fns.ts +128 -0
- package/apps/main/src/routes/_authed/_app/submissions/index.tsx +190 -0
- package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/$formId.tsx +542 -0
- package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/-components/derived.tsx +154 -0
- package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/-components/field.tsx +369 -0
- package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/-components/group.tsx +475 -0
- package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/index.tsx +263 -0
- package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/route.tsx +33 -0
- package/apps/main/src/routes/_authed/_app/workflows/-components/form-card.tsx +315 -0
- package/apps/main/src/routes/_authed/_app/workflows/index.tsx +86 -0
- package/apps/main/src/routes/_authed/admin/index.tsx +12 -0
- package/apps/main/src/routes/_authed/admin/route.tsx +42 -0
- package/apps/main/src/routes/_authed/admin/users/-columns.tsx +124 -0
- package/apps/main/src/routes/_authed/admin/users/-fns.ts +30 -0
- package/apps/main/src/routes/_authed/admin/users/index.tsx +29 -0
- package/apps/main/src/routes/_authed/catchNotFound.tsx +114 -0
- package/apps/main/src/routes/_authed/redirects/forms.$id.tsx +29 -0
- package/apps/main/src/routes/_authed/redirects/submissions.$id.tsx +27 -0
- package/apps/main/src/routes/_authed/redirects/workflows.$id.tsx +27 -0
- package/apps/main/src/routes/_authed/route.tsx +51 -0
- package/apps/main/src/routes/_authed/settings/-components/new-api-key.tsx +85 -0
- package/apps/main/src/routes/_authed/settings/-components/new-invite.tsx +100 -0
- package/apps/main/src/routes/_authed/settings/analytics.tsx +1710 -0
- package/apps/main/src/routes/_authed/settings/billing/-components/price-table.tsx +129 -0
- package/apps/main/src/routes/_authed/settings/billing/-fns.ts +76 -0
- package/apps/main/src/routes/_authed/settings/billing/index.tsx +119 -0
- package/apps/main/src/routes/_authed/settings/embed.tsx +337 -0
- package/apps/main/src/routes/_authed/settings/index.tsx +12 -0
- package/apps/main/src/routes/_authed/settings/keys.tsx +157 -0
- package/apps/main/src/routes/_authed/settings/members.tsx +276 -0
- package/apps/main/src/routes/_authed/settings/route.tsx +22 -0
- package/apps/main/src/routes/_authed/settings/user.tsx +87 -0
- package/apps/main/src/routes/_authed/settings/workspace.tsx +206 -0
- package/apps/main/src/routes/_public/-components/sign-in-up.tsx +96 -0
- package/apps/main/src/routes/_public/embedded.tsx +57 -0
- package/apps/main/src/routes/_public/invite.$inviteId.tsx +143 -0
- package/apps/main/src/routes/_public/no-access.tsx +38 -0
- package/apps/main/src/routes/_public/no-invite.tsx +39 -0
- package/apps/main/src/routes/_public/otp.tsx +103 -0
- package/apps/main/src/routes/_public/route.tsx +15 -0
- package/apps/main/src/routes/_public/sign-in.tsx +111 -0
- package/apps/main/src/routes/_public/sign-up.tsx +114 -0
- package/apps/main/src/routes/api/auth/$.ts +11 -0
- package/apps/main/src/routes/api/billing/paid.ts +42 -0
- package/apps/main/src/routes/api/billing/webhooks.ts +70 -0
- package/apps/main/src/routes/api/chat/agent.ts +40 -0
- package/apps/main/src/routes/api/chat/key.ts +42 -0
- package/apps/main/src/routes/api/chat/member.ts +35 -0
- package/apps/main/src/routes/api/test/index.ts +19 -0
- package/apps/main/src/server.tsx +6 -0
- package/apps/main/src/styles/app.css +23 -0
- package/apps/main/src/vite-env.d.ts +7 -0
- package/apps/main/test.http +6 -0
- package/apps/main/tsconfig.json +17 -0
- package/apps/main/vite.config.ts +24 -0
- package/apps/main/vitest.config.js +17 -0
- package/apps/mcp/README.md +171 -0
- package/apps/mcp/eslint.config.mjs +3 -0
- package/apps/mcp/package.json +37 -0
- package/apps/mcp/src/index.ts +414 -0
- package/apps/mcp/tsconfig.json +19 -0
- package/apps/mcp/vite.config.ts +22 -0
- package/apps/posthog-proxy/index.html +9 -0
- package/apps/workers/.prettierignore +7 -0
- package/apps/workers/.prettierrc.js +3 -0
- package/apps/workers/dotenvx-safe.sh +11 -0
- package/apps/workers/eslint.config.mjs +3 -0
- package/apps/workers/package.json +65 -0
- package/apps/workers/src/lib/config.ts +7 -0
- package/apps/workers/src/lib/messages.ts +0 -0
- package/apps/workers/src/lib/posthog.ts +25 -0
- package/apps/workers/src/main.ts +58 -0
- package/apps/workers/src/workflows/extraction.ts +866 -0
- package/apps/workers/src/workflows/index.ts +3 -0
- package/apps/workers/src/workflows/pipeline-dag.ts +210 -0
- package/apps/workers/src/workflows/pipeline-steps.ts +1393 -0
- package/apps/workers/tsconfig.json +16 -0
- package/apps/workers/vite.config.ts +35 -0
- package/docs/CHANGELOG.md +84 -0
- package/docs/agent-templates-and-runs.md +859 -0
- package/docs/aws-migration-plan.md +267 -0
- package/docs/impl-p0-form-builder-improvements.md +683 -0
- package/docs/on-prem-deployment-spec.docx +0 -0
- package/docs/on-prem-deployment-spec.md +378 -0
- package/docs/prd-form-builder-strategy.md +1120 -0
- package/docs/widget-ng-apf-packaging-spec.md +43 -0
- package/infra/k8s/charts/seadotdev/Chart.yaml +6 -0
- package/infra/k8s/charts/seadotdev/templates/_helpers.tpl +27 -0
- package/infra/k8s/charts/seadotdev/templates/api-v2.yaml +105 -0
- package/infra/k8s/charts/seadotdev/templates/external-secrets.yaml +83 -0
- package/infra/k8s/charts/seadotdev/templates/ingress.yaml +54 -0
- package/infra/k8s/charts/seadotdev/templates/main-app.yaml +104 -0
- package/infra/k8s/charts/seadotdev/templates/workers.yaml +182 -0
- package/infra/k8s/charts/seadotdev/values.yaml +143 -0
- package/infra/terraform/main.tf +399 -0
- package/libs/ai/.prettierignore +2 -0
- package/libs/ai/.prettierrc.js +5 -0
- package/libs/ai/README.md +139 -0
- package/libs/ai/eslint.config.mjs +3 -0
- package/libs/ai/package.json +42 -0
- package/libs/ai/src/index.ts +5 -0
- package/libs/ai/src/models.ts +19 -0
- package/libs/ai/src/rag/index.ts +1 -0
- package/libs/ai/src/rag/rag.test.ts +99 -0
- package/libs/ai/src/rag/rag.ts +510 -0
- package/libs/ai/tsconfig.json +21 -0
- package/libs/ai/vite.config.ts +38 -0
- package/libs/cache/.prettierignore +2 -0
- package/libs/cache/eslint.config.mjs +3 -0
- package/libs/cache/package.json +35 -0
- package/libs/cache/src/feedback.ts +77 -0
- package/libs/cache/src/index.ts +2 -0
- package/libs/cache/tsconfig.json +19 -0
- package/libs/cache/vite.config.ts +36 -0
- package/libs/clients/.prettierignore +6 -0
- package/libs/clients/eslint.config.mjs +3 -0
- package/libs/clients/package.json +59 -0
- package/libs/clients/src/azure.ts +249 -0
- package/libs/clients/src/gcp.ts +220 -0
- package/libs/clients/src/hatchet.ts +86 -0
- package/libs/clients/src/index.ts +8 -0
- package/libs/clients/src/loops.ts +86 -0
- package/libs/clients/src/polar.ts +77 -0
- package/libs/clients/src/posthog.ts +55 -0
- package/libs/clients/tsconfig.json +19 -0
- package/libs/clients/vite.config.ts +35 -0
- package/libs/config/.prettierignore +6 -0
- package/libs/config/.prettierrc.js +12 -0
- package/libs/config/eslint.config.mjs +3 -0
- package/libs/config/package.json +50 -0
- package/libs/config/src/azure.ts +54 -0
- package/libs/config/src/db.ts +18 -0
- package/libs/config/src/gcp.ts +53 -0
- package/libs/config/src/google.ts +17 -0
- package/libs/config/src/hatchet.ts +20 -0
- package/libs/config/src/index.ts +108 -0
- package/libs/config/src/llm.ts +17 -0
- package/libs/config/src/polar.ts +24 -0
- package/libs/config/src/util.ts +8 -0
- package/libs/config/src/vercel.ts +26 -0
- package/libs/config/tsconfig.json +19 -0
- package/libs/config/vite.config.ts +34 -0
- package/libs/core/.prettierignore +2 -0
- package/libs/core/eslint.config.mjs +3 -0
- package/libs/core/package.json +59 -0
- package/libs/core/src/chat/derived.ts +97 -0
- package/libs/core/src/chat/feedback.ts +293 -0
- package/libs/core/src/chat/index.ts +6 -0
- package/libs/core/src/chat/model.ts +92 -0
- package/libs/core/src/chat/prepare-tools.ts +286 -0
- package/libs/core/src/chat/prompts.ts +623 -0
- package/libs/core/src/chat/stream.ts +311 -0
- package/libs/core/src/chat/summarize.ts +168 -0
- package/libs/core/src/chat/tools/agent.ts +403 -0
- package/libs/core/src/chat/tools/chart-agent.ts +526 -0
- package/libs/core/src/chat/tools/chart-helpers/sandbox.ts +47 -0
- package/libs/core/src/chat/tools/chart.ts +86 -0
- package/libs/core/src/chat/tools/credit-agent.ts +1383 -0
- package/libs/core/src/chat/tools/credit.ts +1435 -0
- package/libs/core/src/chat/tools/deep-dive-agent.ts +100 -0
- package/libs/core/src/chat/tools/deep-dive.ts +141 -0
- package/libs/core/src/chat/tools/form.ts +449 -0
- package/libs/core/src/chat/tools/helpers.ts +91 -0
- package/libs/core/src/chat/tools/index.ts +42 -0
- package/libs/core/src/chat/tools/pipeline-artifact.ts +76 -0
- package/libs/core/src/chat/tools/report.ts +40 -0
- package/libs/core/src/chat/tools/search.ts +390 -0
- package/libs/core/src/chat/tools/submission.ts +227 -0
- package/libs/core/src/chat/tools/workflow.ts +684 -0
- package/libs/core/src/chat/types.ts +3 -0
- package/libs/core/src/data-extraction/classification/azure.ts +168 -0
- package/libs/core/src/data-extraction/classification/index.ts +1 -0
- package/libs/core/src/data-extraction/dal.ts +246 -0
- package/libs/core/src/data-extraction/form-structure-extractor.ts +294 -0
- package/libs/core/src/data-extraction/index.ts +4 -0
- package/libs/core/src/data-extraction/layout/azure.ts +730 -0
- package/libs/core/src/data-extraction/layout/excel.ts +180 -0
- package/libs/core/src/data-extraction/layout/gcp.ts +1071 -0
- package/libs/core/src/data-extraction/layout/index.ts +266 -0
- package/libs/core/src/data-extraction/layout/plaintext.ts +45 -0
- package/libs/core/src/data-extraction/models.ts +38 -0
- package/libs/core/src/data-extraction/pdf-utils.ts +96 -0
- package/libs/core/src/data-extraction/structuring/bank-statement.ts +1182 -0
- package/libs/core/src/data-extraction/structuring/custom.ts +495 -0
- package/libs/core/src/data-extraction/structuring/index.ts +290 -0
- package/libs/core/src/data-extraction/structuring/prompts.ts +69 -0
- package/libs/core/src/data-extraction/type-guards.ts +110 -0
- package/libs/core/src/data-extraction/types.ts +84 -0
- package/libs/core/src/data-extraction/utils.ts +31 -0
- package/libs/core/src/data-extraction/validation/bank-statement.ts +127 -0
- package/libs/core/src/deals.ts +17 -0
- package/libs/core/src/documents.ts +152 -0
- package/libs/core/src/index.ts +5 -0
- package/libs/core/src/pipelines/display.ts +678 -0
- package/libs/core/src/pipelines/execute.ts +2342 -0
- package/libs/core/src/pipelines/index.ts +4 -0
- package/libs/core/src/pipelines/list.ts +12 -0
- package/libs/core/src/pipelines/runs.ts +53 -0
- package/libs/core/tsconfig.json +20 -0
- package/libs/core/vite.config.ts +56 -0
- package/libs/dal/.prettierignore +6 -0
- package/libs/dal/.prettierrc.js +12 -0
- package/libs/dal/eslint.config.mjs +3 -0
- package/libs/dal/package.json +57 -0
- package/libs/dal/src/_tests/db.test.ts +19 -0
- package/libs/dal/src/_tests/mock-db.ts +60 -0
- package/libs/dal/src/api-key.test.ts +397 -0
- package/libs/dal/src/api-key.ts +110 -0
- package/libs/dal/src/billing.ts +23 -0
- package/libs/dal/src/conversation.test.ts +655 -0
- package/libs/dal/src/conversation.ts +532 -0
- package/libs/dal/src/deal.test.ts +45 -0
- package/libs/dal/src/deal.ts +87 -0
- package/libs/dal/src/defaults-consumer-lending-uk.ts +33 -0
- package/libs/dal/src/defaults-consumer-lending-us.ts +33 -0
- package/libs/dal/src/defaults-private-credit.ts +57 -0
- package/libs/dal/src/defaults-private-equity.ts +51 -0
- package/libs/dal/src/defaults-smb-lending-us.ts +1569 -0
- package/libs/dal/src/defaults-sme-lending-uk-express.ts +1527 -0
- package/libs/dal/src/defaults-sme-lending-uk.ts +1669 -0
- package/libs/dal/src/defaults-types.ts +23 -0
- package/libs/dal/src/defaults.ts +550 -0
- package/libs/dal/src/document.test.ts +70 -0
- package/libs/dal/src/document.ts +192 -0
- package/libs/dal/src/feedback.ts +255 -0
- package/libs/dal/src/form.test.ts +637 -0
- package/libs/dal/src/form.ts +1165 -0
- package/libs/dal/src/index.ts +20 -0
- package/libs/dal/src/invitation.test.ts +746 -0
- package/libs/dal/src/invitation.ts +207 -0
- package/libs/dal/src/member.test.ts +185 -0
- package/libs/dal/src/member.ts +80 -0
- package/libs/dal/src/organization.ts +116 -0
- package/libs/dal/src/permission.ts +25 -0
- package/libs/dal/src/pipeline.test.ts +388 -0
- package/libs/dal/src/pipeline.ts +4222 -0
- package/libs/dal/src/report.ts +199 -0
- package/libs/dal/src/result.ts +16 -0
- package/libs/dal/src/search.ts +172 -0
- package/libs/dal/src/session.test.ts +110 -0
- package/libs/dal/src/session.ts +31 -0
- package/libs/dal/src/submission.test.ts +1304 -0
- package/libs/dal/src/submission.ts +1396 -0
- package/libs/dal/src/tool.ts +159 -0
- package/libs/dal/src/user.ts +16 -0
- package/libs/dal/src/workflow.test.ts +89 -0
- package/libs/dal/src/workflow.ts +262 -0
- package/libs/dal/tsconfig.build.json +4 -0
- package/libs/dal/tsconfig.json +22 -0
- package/libs/dal/vite.config.ts +34 -0
- package/libs/db/.prettierignore +6 -0
- package/libs/db/.prettierrc.js +12 -0
- package/libs/db/eslint.config.mjs +3 -0
- package/libs/db/package.json +52 -0
- package/libs/db/src/index.ts +24 -0
- package/libs/db/src/relations.ts +549 -0
- package/libs/db/src/schema.ts +2 -0
- package/libs/db/src/schemas/api.ts +35 -0
- package/libs/db/src/schemas/conversations.ts +175 -0
- package/libs/db/src/schemas/core.ts +359 -0
- package/libs/db/src/schemas/documents.ts +181 -0
- package/libs/db/src/schemas/feedback.ts +40 -0
- package/libs/db/src/schemas/index.ts +26 -0
- package/libs/db/src/schemas/organisations.ts +97 -0
- package/libs/db/src/schemas/pipelines.ts +440 -0
- package/libs/db/src/schemas/users.ts +95 -0
- package/libs/db/src/types.ts +190 -0
- package/libs/db/src/utils.ts +14 -0
- package/libs/db/tsconfig.json +19 -0
- package/libs/db/vite.config.ts +31 -0
- package/libs/lint/.prettierignore +6 -0
- package/libs/lint/eslint.config.mjs +61 -0
- package/libs/lint/package.json +29 -0
- package/libs/lint/prettier.config.js +12 -0
- package/libs/schemas/.prettierignore +6 -0
- package/libs/schemas/.prettierrc.js +12 -0
- package/libs/schemas/README.md +15 -0
- package/libs/schemas/eslint.config.mjs +3 -0
- package/libs/schemas/package.json +67 -0
- package/libs/schemas/src/core/chat.ts +67 -0
- package/libs/schemas/src/core/core-result.ts +15 -0
- package/libs/schemas/src/core/data-extraction.ts +184 -0
- package/libs/schemas/src/core/layout.ts +478 -0
- package/libs/schemas/src/core/pipeline.ts +128 -0
- package/libs/schemas/src/core/submission.ts +97 -0
- package/libs/schemas/src/db/account.ts +57 -0
- package/libs/schemas/src/db/apiKey.ts +57 -0
- package/libs/schemas/src/db/context.ts +33 -0
- package/libs/schemas/src/db/conversation.ts +65 -0
- package/libs/schemas/src/db/deal.ts +42 -0
- package/libs/schemas/src/db/document.ts +103 -0
- package/libs/schemas/src/db/documentCitation.ts +58 -0
- package/libs/schemas/src/db/documentExtraction.ts +69 -0
- package/libs/schemas/src/db/fieldCorrection.ts +85 -0
- package/libs/schemas/src/db/form.ts +45 -0
- package/libs/schemas/src/db/formField.ts +59 -0
- package/libs/schemas/src/db/formGroup.ts +42 -0
- package/libs/schemas/src/db/impersonation.ts +39 -0
- package/libs/schemas/src/db/index.ts +25 -0
- package/libs/schemas/src/db/invitation.ts +42 -0
- package/libs/schemas/src/db/member.ts +36 -0
- package/libs/schemas/src/db/message.ts +58 -0
- package/libs/schemas/src/db/organization.ts +62 -0
- package/libs/schemas/src/db/session.ts +48 -0
- package/libs/schemas/src/db/submission.ts +54 -0
- package/libs/schemas/src/db/submissionGroup.ts +36 -0
- package/libs/schemas/src/db/submissionItem.ts +33 -0
- package/libs/schemas/src/db/submissionItemVersion.ts +70 -0
- package/libs/schemas/src/db/user.ts +51 -0
- package/libs/schemas/src/db/utils.ts +3 -0
- package/libs/schemas/src/db/verification.ts +36 -0
- package/libs/schemas/src/db/workflow.ts +42 -0
- package/libs/schemas/src/index.ts +10 -0
- package/libs/schemas/tsconfig.json +21 -0
- package/libs/schemas/vite.config.ts +38 -0
- package/libs/ui/.prettierignore +6 -0
- package/libs/ui/.prettierrc.js +12 -0
- package/libs/ui/components.json +24 -0
- package/libs/ui/eslint.config.mjs +3 -0
- package/libs/ui/package.json +142 -0
- package/libs/ui/src/components/chart-viz/chart.tsx +255 -0
- package/libs/ui/src/components/chart-viz/converters.ts +474 -0
- package/libs/ui/src/components/chart-viz/dashboard.tsx +146 -0
- package/libs/ui/src/components/chart-viz/index.ts +37 -0
- package/libs/ui/src/components/chart-viz/markdown.tsx +344 -0
- package/libs/ui/src/components/chart-viz/table.tsx +446 -0
- package/libs/ui/src/components/chart-viz/theme-context.tsx +70 -0
- package/libs/ui/src/components/chart-viz/themes/dark.ts +98 -0
- package/libs/ui/src/components/chart-viz/themes/index.ts +69 -0
- package/libs/ui/src/components/chart-viz/themes/light.ts +98 -0
- package/libs/ui/src/components/chart-viz/themes/tailwind.ts +326 -0
- package/libs/ui/src/components/chart-viz/themes/types.ts +99 -0
- package/libs/ui/src/components/chart-viz/tool-display.tsx +150 -0
- package/libs/ui/src/components/chart-viz/types.ts +95 -0
- package/libs/ui/src/components/doc-viewers/excel/index.tsx +431 -0
- package/libs/ui/src/components/doc-viewers/excel/themes.ts +160 -0
- package/libs/ui/src/components/doc-viewers/image/index.tsx +410 -0
- package/libs/ui/src/components/doc-viewers/pdf/index.tsx +258 -0
- package/libs/ui/src/components/doc-viewers/pdf/virtualized-pdf.tsx +556 -0
- package/libs/ui/src/components/misc/rel-date.tsx +52 -0
- package/libs/ui/src/components/misc/styled-link.tsx +2 -0
- package/libs/ui/src/components/table/data-table.tsx +546 -0
- package/libs/ui/src/components/table/report-table.tsx +305 -0
- package/libs/ui/src/components/table/sortable-column.tsx +34 -0
- package/libs/ui/src/components/ui/accordion.tsx +62 -0
- package/libs/ui/src/components/ui/alert-dialog.tsx +142 -0
- package/libs/ui/src/components/ui/alert.tsx +62 -0
- package/libs/ui/src/components/ui/artifact.tsx +118 -0
- package/libs/ui/src/components/ui/attachments.tsx +388 -0
- package/libs/ui/src/components/ui/avatar.tsx +39 -0
- package/libs/ui/src/components/ui/badge.tsx +43 -0
- package/libs/ui/src/components/ui/breadcrumb.tsx +102 -0
- package/libs/ui/src/components/ui/button-group.tsx +78 -0
- package/libs/ui/src/components/ui/button.tsx +79 -0
- package/libs/ui/src/components/ui/card.tsx +32 -0
- package/libs/ui/src/components/ui/carousel.tsx +228 -0
- package/libs/ui/src/components/ui/chain-of-thought.tsx +198 -0
- package/libs/ui/src/components/ui/checkbox.tsx +27 -0
- package/libs/ui/src/components/ui/citation.tsx +34 -0
- package/libs/ui/src/components/ui/code-block.tsx +500 -0
- package/libs/ui/src/components/ui/collapsible.tsx +19 -0
- package/libs/ui/src/components/ui/command.tsx +161 -0
- package/libs/ui/src/components/ui/conversation.tsx +90 -0
- package/libs/ui/src/components/ui/dialog.tsx +142 -0
- package/libs/ui/src/components/ui/dropdown-menu.tsx +246 -0
- package/libs/ui/src/components/ui/highlight.tsx +3 -0
- package/libs/ui/src/components/ui/hover-card.tsx +36 -0
- package/libs/ui/src/components/ui/inline-citation.tsx +251 -0
- package/libs/ui/src/components/ui/input-group.tsx +156 -0
- package/libs/ui/src/components/ui/input-otp.tsx +78 -0
- package/libs/ui/src/components/ui/input.tsx +21 -0
- package/libs/ui/src/components/ui/label.tsx +19 -0
- package/libs/ui/src/components/ui/model-selector.tsx +174 -0
- package/libs/ui/src/components/ui/multisidebar.tsx +750 -0
- package/libs/ui/src/components/ui/popover.tsx +43 -0
- package/libs/ui/src/components/ui/progress.tsx +28 -0
- package/libs/ui/src/components/ui/reasoning.tsx +178 -0
- package/libs/ui/src/components/ui/resizable.tsx +49 -0
- package/libs/ui/src/components/ui/scroll-area.tsx +54 -0
- package/libs/ui/src/components/ui/select.tsx +171 -0
- package/libs/ui/src/components/ui/separator.tsx +26 -0
- package/libs/ui/src/components/ui/sheet.tsx +128 -0
- package/libs/ui/src/components/ui/shimmer.tsx +53 -0
- package/libs/ui/src/components/ui/skeleton.tsx +13 -0
- package/libs/ui/src/components/ui/sonner.tsx +23 -0
- package/libs/ui/src/components/ui/switch.tsx +26 -0
- package/libs/ui/src/components/ui/table.tsx +96 -0
- package/libs/ui/src/components/ui/tabs.tsx +52 -0
- package/libs/ui/src/components/ui/textarea.tsx +41 -0
- package/libs/ui/src/components/ui/tool.tsx +209 -0
- package/libs/ui/src/components/ui/tooltip.tsx +58 -0
- package/libs/ui/src/components/ui/typography.tsx +113 -0
- package/libs/ui/src/fonts/manrope-v15-latin-300.woff2 +0 -0
- package/libs/ui/src/fonts/manrope-v15-latin-400.woff2 +0 -0
- package/libs/ui/src/fonts/manrope-v15-latin-500.woff2 +0 -0
- package/libs/ui/src/fonts/manrope-v15-latin-600.woff2 +0 -0
- package/libs/ui/src/hooks/use-mobile.ts +19 -0
- package/libs/ui/src/lib/utils.ts +6 -0
- package/libs/ui/src/styles/fonts.css +35 -0
- package/libs/ui/src/styles/style.css +218 -0
- package/libs/ui/tsconfig.json +21 -0
- package/libs/ui/vite.config.ts +80 -0
- package/libs/ui-lit/README.md +245 -0
- package/libs/ui-lit/TESTING_GUIDE.md +296 -0
- package/libs/ui-lit/eslint.config.mjs +3 -0
- package/libs/ui-lit/package.json +41 -0
- package/libs/ui-lit/scripts/build-css.js +43 -0
- package/libs/ui-lit/src/components/sea-alert.ts +132 -0
- package/libs/ui-lit/src/components/sea-button.ts +95 -0
- package/libs/ui-lit/src/components/sea-card.ts +113 -0
- package/libs/ui-lit/src/components/sea-input.ts +184 -0
- package/libs/ui-lit/src/components/sea-spinner.ts +65 -0
- package/libs/ui-lit/src/index.ts +15 -0
- package/libs/ui-lit/src/lib/utils.ts +6 -0
- package/libs/ui-lit/src/styles/tailwind.css +76 -0
- package/libs/ui-lit/src/theme.css +66 -0
- package/libs/ui-lit/src/theme.ts +79 -0
- package/libs/ui-lit/src/vite-env.d.ts +6 -0
- package/libs/ui-lit/tailwind.config.ts +50 -0
- package/libs/ui-lit/test.html +289 -0
- package/libs/ui-lit/tsconfig.json +23 -0
- package/libs/ui-lit/vite.config.ts +31 -0
- package/libs/ui-lit/vite.css.config.ts +20 -0
- package/libs/util/.prettierignore +6 -0
- package/libs/util/.prettierrc.js +12 -0
- package/libs/util/eslint.config.mjs +3 -0
- package/libs/util/package.json +45 -0
- package/libs/util/src/billing.ts +10 -0
- package/libs/util/src/data-transform.ts +19 -0
- package/libs/util/src/encryption.ts +45 -0
- package/libs/util/src/fmt.test.ts +9 -0
- package/libs/util/src/fmt.ts +71 -0
- package/libs/util/src/fuzzy.ts +47 -0
- package/libs/util/src/id.ts +24 -0
- package/libs/util/src/invariant.ts +31 -0
- package/libs/util/src/sub-name.ts +7 -0
- package/libs/util/tsconfig.json +19 -0
- package/libs/util/vite.config.ts +34 -0
- package/package.json +28 -0
- package/packages/widget/.prettierignore +6 -0
- package/packages/widget/.prettierrc.js +12 -0
- package/packages/widget/README.md +95 -0
- package/packages/widget/eslint.config.mjs +11 -0
- package/packages/widget/openapi-ts.config.ts +8 -0
- package/packages/widget/package.json +89 -0
- package/packages/widget/postcss.config.mjs +10 -0
- package/packages/widget/src/clients/api/client/client.ts +187 -0
- package/packages/widget/src/clients/api/client/index.ts +22 -0
- package/packages/widget/src/clients/api/client/types.ts +192 -0
- package/packages/widget/src/clients/api/client/utils.ts +394 -0
- package/packages/widget/src/clients/api/client.gen.ts +18 -0
- package/packages/widget/src/clients/api/core/auth.ts +39 -0
- package/packages/widget/src/clients/api/core/bodySerializer.ts +74 -0
- package/packages/widget/src/clients/api/core/params.ts +132 -0
- package/packages/widget/src/clients/api/core/pathSerializer.ts +169 -0
- package/packages/widget/src/clients/api/core/types.ts +80 -0
- package/packages/widget/src/clients/api/index.ts +3 -0
- package/packages/widget/src/clients/api/sdk.gen.ts +805 -0
- package/packages/widget/src/clients/api/types.gen.ts +2085 -0
- package/packages/widget/src/components/container.tsx +42 -0
- package/packages/widget/src/components/data-display.tsx +384 -0
- package/packages/widget/src/components/data-viewer.tsx +311 -0
- package/packages/widget/src/components/doc-list.tsx +102 -0
- package/packages/widget/src/components/field-correction-modal.tsx +265 -0
- package/packages/widget/src/components/header.tsx +71 -0
- package/packages/widget/src/components/new-submission.tsx +290 -0
- package/packages/widget/src/components/sidebar-right.tsx +19 -0
- package/packages/widget/src/components/submission-card.tsx +66 -0
- package/packages/widget/src/components/submission-page.tsx +75 -0
- package/packages/widget/src/components/upload-doc.tsx +241 -0
- package/packages/widget/src/components/widget.tsx +101 -0
- package/packages/widget/src/index.tsx +167 -0
- package/packages/widget/src/lib/config.ts +2 -0
- package/packages/widget/src/lib/util.ts +40 -0
- package/packages/widget/src/styles/index.css +5 -0
- package/packages/widget/src/styles/tw-properties.css +337 -0
- package/packages/widget/src/vite-env.d.ts +3 -0
- package/packages/widget/tsconfig.app.json +35 -0
- package/packages/widget/tsconfig.json +4 -0
- package/packages/widget/tsconfig.node.json +24 -0
- package/packages/widget/vite.config.ts +116 -0
- package/packages/widget-lit/BOTTLENECKS.md +250 -0
- package/packages/widget-lit/IMPLEMENTATION_SUMMARY.md +295 -0
- package/packages/widget-lit/README.md +232 -0
- package/packages/widget-lit/eslint.config.mjs +3 -0
- package/packages/widget-lit/package.json +52 -0
- package/packages/widget-lit/src/api-client.ts +230 -0
- package/packages/widget-lit/src/api-client.ts.backup +218 -0
- package/packages/widget-lit/src/components/sea-chat.ts +382 -0
- package/packages/widget-lit/src/components/sea-submission-viewer.ts +267 -0
- package/packages/widget-lit/src/components/sea-widget.ts +317 -0
- package/packages/widget-lit/src/index.ts +48 -0
- package/packages/widget-lit/src/react.ts +58 -0
- package/packages/widget-lit/src/style.css +47 -0
- package/packages/widget-lit/tsconfig.json +24 -0
- package/packages/widget-lit/vite.config.ts +29 -0
- package/packages/widget-ng/DEVELOPMENT.md +74 -0
- package/packages/widget-ng/README.md +657 -0
- package/packages/widget-ng/dev.sh +14 -0
- package/packages/widget-ng/eslint.config.mjs +24 -0
- package/packages/widget-ng/ng-package.json +9 -0
- package/packages/widget-ng/package.json +85 -0
- package/packages/widget-ng/src/index.ts +45 -0
- package/packages/widget-ng/src/lib/components/sea-chat.component.ts +737 -0
- package/packages/widget-ng/src/lib/components/sea-data-viewer.component.ts +2240 -0
- package/packages/widget-ng/src/lib/components/sea-deal-form-modal.component.ts +702 -0
- package/packages/widget-ng/src/lib/components/sea-document-list.component.ts +350 -0
- package/packages/widget-ng/src/lib/components/sea-feedback-modal.component.ts +461 -0
- package/packages/widget-ng/src/lib/components/sea-file-upload.component.ts +655 -0
- package/packages/widget-ng/src/lib/components/sea-model-selection-modal.component.ts +367 -0
- package/packages/widget-ng/src/lib/components/sea-new-submission-modal.component.ts +414 -0
- package/packages/widget-ng/src/lib/components/sea-pdf-viewer.component.ts +869 -0
- package/packages/widget-ng/src/lib/components/sea-submission-card.component.ts +251 -0
- package/packages/widget-ng/src/lib/components/sea-widget.component.ts +684 -0
- package/packages/widget-ng/src/lib/models/submission.model.ts +170 -0
- package/packages/widget-ng/src/lib/pipes/markdown.pipe.ts +57 -0
- package/packages/widget-ng/src/lib/services/api-client.service.ts +715 -0
- package/packages/widget-ng/src/lib/services/chat.service.ts +330 -0
- package/packages/widget-ng/src/lib/services/config.service.ts +107 -0
- package/packages/widget-ng/src/web-component.ts +56 -0
- package/packages/widget-ng/tsconfig.json +25 -0
- package/packages/widget-ng/tsconfig.lib.json +9 -0
- package/packages/widget-ng/vite.config.elements.ts +26 -0
- package/packages/widget-ng/vitest.config.ts +19 -0
- package/packages/widget-ng/vitest.setup.ts +13 -0
- package/pnpm-workspace.yaml +18 -0
- package/render.yaml +136 -0
- package/scripts/README.md +57 -0
- package/scripts/package.json +22 -0
- package/scripts/python/.python-version +1 -0
- package/scripts/python/README.md +3 -0
- package/scripts/python/export-org-data.py +693 -0
- package/scripts/python/pyproject.toml +29 -0
- package/scripts/python/requirements-dev.lock +36 -0
- package/scripts/python/requirements.lock +36 -0
- package/scripts/python/src/gen.py +297 -0
- package/scripts/python/test.py +34 -0
- package/scripts/src/fix-storage-provider-mismatch.ts +239 -0
- package/scripts/src/sync-render-yaml.ts +290 -0
- package/scripts/src/test-chat-stream.ts +300 -0
- package/scripts/src/test-reconciliation.ts +230 -0
- package/scripts/tsconfig.json +15 -0
- package/tests/angular-test-app/.vscode/extensions.json +4 -0
- package/tests/angular-test-app/.vscode/launch.json +13 -0
- package/tests/angular-test-app/.vscode/tasks.json +24 -0
- package/tests/angular-test-app/README.md +59 -0
- package/tests/angular-test-app/angular.json +111 -0
- package/tests/angular-test-app/clean-start.sh +14 -0
- package/tests/angular-test-app/package.json +36 -0
- package/tests/angular-test-app/public/favicon.ico +0 -0
- package/tests/angular-test-app/src/app/app.component.ts +220 -0
- package/tests/angular-test-app/src/app/app.config.ts +5 -0
- package/tests/angular-test-app/src/env.d.ts +13 -0
- package/tests/angular-test-app/src/index.html +13 -0
- package/tests/angular-test-app/src/main.ts +6 -0
- package/tests/angular-test-app/src/styles.css +8 -0
- package/tests/angular-test-app/tsconfig.app.json +15 -0
- package/tests/angular-test-app/tsconfig.json +27 -0
- package/tests/crm-viewer-app/API_INTEGRATION_SUMMARY.md +295 -0
- package/tests/crm-viewer-app/CURRENT_ASSETS_FIELDS.md +148 -0
- package/tests/crm-viewer-app/FIELD_ID_MAPPING.md +206 -0
- package/tests/crm-viewer-app/INTEGRATION_GUIDE.md +309 -0
- package/tests/crm-viewer-app/README.md +174 -0
- package/tests/crm-viewer-app/REAL_API_INTEGRATION.md +240 -0
- package/tests/crm-viewer-app/UPDATED_IMPLEMENTATION.md +279 -0
- package/tests/crm-viewer-app/angular.json +114 -0
- package/tests/crm-viewer-app/package.json +35 -0
- package/tests/crm-viewer-app/src/app/app.component.ts +534 -0
- package/tests/crm-viewer-app/src/app/citation.service.ts +316 -0
- package/tests/crm-viewer-app/src/env.d.ts +16 -0
- package/tests/crm-viewer-app/src/index.html +19 -0
- package/tests/crm-viewer-app/src/main.ts +7 -0
- package/tests/crm-viewer-app/src/styles.css +409 -0
- package/tests/crm-viewer-app/src/template.html +2678 -0
- package/tests/crm-viewer-app/tsconfig.app.json +15 -0
- package/tests/crm-viewer-app/tsconfig.json +27 -0
- package/tests/e2e/package.json +17 -0
- package/tests/e2e/playwright.config.ts +75 -0
- package/tests/e2e/tests/api/health.spec.ts +10 -0
- package/tests/e2e/tests/app/example.spec.ts +10 -0
- package/tests/widget-test-app/.prettierignore +6 -0
- package/tests/widget-test-app/README.md +48 -0
- package/tests/widget-test-app/index.html +12 -0
- package/tests/widget-test-app/package.json +24 -0
- package/tests/widget-test-app/src/App.css +192 -0
- package/tests/widget-test-app/src/App.tsx +80 -0
- package/tests/widget-test-app/src/main.tsx +9 -0
- package/tests/widget-test-app/src/vite-env.d.ts +4 -0
- package/tests/widget-test-app/tsconfig.json +25 -0
- package/tests/widget-test-app/tsconfig.node.json +11 -0
- package/tests/widget-test-app/vite.config.ts +14 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Claude Code Active Tasks
|
|
2
|
+
|
|
3
|
+
This directory tracks tasks being worked on by Claude Code sessions.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
- **Persistent progress tracking** across Claude sessions
|
|
8
|
+
- **Avoid conflicts** between concurrent sessions working on different tasks
|
|
9
|
+
- **Team visibility** into active AI-assisted work
|
|
10
|
+
- **Continuity** when switching sessions or machines
|
|
11
|
+
|
|
12
|
+
## In Progress
|
|
13
|
+
|
|
14
|
+
- [pipeline-ui-completeness.md](pipeline-ui-completeness.md) - Complete pipeline UI functionality
|
|
15
|
+
- **Started**: 2026-04-01
|
|
16
|
+
- **Priority**: High - Blocking core user functionality
|
|
17
|
+
- **Phases**:
|
|
18
|
+
1. Submission data loading (show actual input/output data)
|
|
19
|
+
2. Blocker resolution UI (upload docs, select submissions)
|
|
20
|
+
3. Document extraction implementation (discussion needed)
|
|
21
|
+
|
|
22
|
+
## Queued
|
|
23
|
+
|
|
24
|
+
_(No queued tasks)_
|
|
25
|
+
|
|
26
|
+
## Recently Completed
|
|
27
|
+
|
|
28
|
+
- [pipeline-data-model-fixes.md](../tasks-archive/pipeline-data-model-fixes.md) - Pipeline data model refactor
|
|
29
|
+
- **Completed**: 2026-04-01
|
|
30
|
+
- **Summary**: Fixed all deprecated field references, implemented formIdMapping filtering, added status constants, removed type casts
|
|
31
|
+
- **Result**: All type checks passing (db, dal, core, workers)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Guidelines for Claude Code Sessions
|
|
36
|
+
|
|
37
|
+
### Starting a New Task
|
|
38
|
+
|
|
39
|
+
1. **Create a task file**: `.claude/tasks/{feature-area}-{brief-description}.md`
|
|
40
|
+
- Examples: `auth-sso-integration.md`, `ui-mobile-responsive.md`
|
|
41
|
+
2. **Add to this README** under "In Progress"
|
|
42
|
+
3. **Use the template** from `dag-pipeline-implementation.md` as reference
|
|
43
|
+
4. **Update regularly** as you make progress
|
|
44
|
+
|
|
45
|
+
### Continuing an Existing Task
|
|
46
|
+
|
|
47
|
+
1. **Read the task file first** to understand what's been done
|
|
48
|
+
2. **Check the todo list** for next steps
|
|
49
|
+
3. **Update progress** as you complete items
|
|
50
|
+
4. **Document decisions** and architectural choices
|
|
51
|
+
|
|
52
|
+
### Completing a Task
|
|
53
|
+
|
|
54
|
+
1. **Mark all todos complete** in the task file
|
|
55
|
+
2. **Move file** to `../tasks-archive/`
|
|
56
|
+
3. **Update this README** to move task from "In Progress" to "Recently Completed"
|
|
57
|
+
4. **Create a summary** of what was accomplished
|
|
58
|
+
|
|
59
|
+
### Naming Convention
|
|
60
|
+
|
|
61
|
+
`{feature-area}-{brief-description}.md`
|
|
62
|
+
|
|
63
|
+
- `feature-area`: dal, core, ui, api, db, worker, etc.
|
|
64
|
+
- `brief-description`: 2-4 words describing the task
|
|
65
|
+
- Use kebab-case (lowercase with hyphens)
|
|
66
|
+
|
|
67
|
+
**Examples**:
|
|
68
|
+
- `dag-pipeline-implementation.md`
|
|
69
|
+
- `auth-sso-integration.md`
|
|
70
|
+
- `ui-table-virtualization.md`
|
|
71
|
+
- `api-rate-limiting.md`
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Tips for Success
|
|
76
|
+
|
|
77
|
+
- **Link to files and line numbers**: Use relative paths like `[file.ts:123](../../libs/dal/src/file.ts#L123)` for easy navigation
|
|
78
|
+
- **Track decisions**: Document why you made architectural choices
|
|
79
|
+
- **List completed work**: With file references so others can verify
|
|
80
|
+
- **Keep todos granular**: Break large tasks into smaller checkboxes
|
|
81
|
+
- **Update frequently**: After completing each subtask, not just at the end
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Related
|
|
86
|
+
|
|
87
|
+
- Project docs: [`../../docs/`](../../docs/)
|
|
88
|
+
- Database migrations: [`../../apps/main/drizzle/`](../../apps/main/drizzle/)
|
|
89
|
+
- Claude Code settings: [`../settings.local.json`](../settings.local.json)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Make sure to do this before committing
|
|
3
|
+
globs: ["**/*"]
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
<!-- The remainder of the file is unchanged -->
|
|
7
|
+
|
|
8
|
+
## Testing
|
|
9
|
+
|
|
10
|
+
Always run these commands to verify code quality:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm run lint # Run ESLint
|
|
14
|
+
npm run check # TypeScript type checking
|
|
15
|
+
npm run test # Run tests
|
|
16
|
+
npm run fmt # Format code with Prettier
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Code Review Checklist
|
|
21
|
+
|
|
22
|
+
Before requesting review or committing:
|
|
23
|
+
1. ✓ Searched for existing patterns
|
|
24
|
+
2. ✓ Removed all unused code
|
|
25
|
+
3. ✓ Ran `npm run fmt`
|
|
26
|
+
4. ✓ Ran `npm run lint`
|
|
27
|
+
5. ✓ Ran `npm run check`
|
|
28
|
+
5. ✓ Ran `npm run test`
|
|
29
|
+
6. ✓ Verified DB access controls
|
|
30
|
+
7. ✓ Used existing components where possible
|
|
31
|
+
8. ✓ Minimized client state
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: General development patterns and best practices
|
|
3
|
+
globs: ["**/*"]
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
<!-- The remainder of the file is unchanged -->
|
|
7
|
+
|
|
8
|
+
## Important Notes
|
|
9
|
+
|
|
10
|
+
- This is a private repository
|
|
11
|
+
- Uses ES modules (`"type": "module"` in package.json)
|
|
12
|
+
- Strict TypeScript configuration
|
|
13
|
+
- Production deployments use `dotenvx run` for secure env vars
|
|
14
|
+
|
|
15
|
+
## Developer Guidelines
|
|
16
|
+
|
|
17
|
+
### General Principles
|
|
18
|
+
|
|
19
|
+
- **Always find existing patterns**: Use extra time to search for relevant code patterns before implementing something new
|
|
20
|
+
- **Clean code**: Don't leave unused code or files in the project
|
|
21
|
+
- **Research first**: Look extensively for existing implementations before creating new ones
|
|
22
|
+
|
|
23
|
+
### Development Workflow
|
|
24
|
+
|
|
25
|
+
- **Pre-commit checks**: Always run `npm run fmt`, `npm run lint`, and `npm run check` before committing
|
|
26
|
+
- **Commit frequently**: Make small, focused commits with descriptive messages
|
|
27
|
+
- **Branch management**: Consider working on a separate branch if scope creeps significantly
|
|
28
|
+
|
|
29
|
+
### UI Development
|
|
30
|
+
|
|
31
|
+
- **Component reuse**: Always check for existing components before creating new ones
|
|
32
|
+
- **Prefer components over custom Tailwind**: Use existing UI components rather than creating custom Tailwind implementations
|
|
33
|
+
- **Use defined colors**: Use colors from `app.css` instead of creating custom color values
|
|
34
|
+
- **Minimize client state**:
|
|
35
|
+
- Prefer cache invalidation over client-side state management
|
|
36
|
+
- Store state in URL search params when appropriate
|
|
37
|
+
- Keep client-side state to an absolute minimum
|
|
38
|
+
|
|
39
|
+
### Database Best Practices
|
|
40
|
+
|
|
41
|
+
- **Access control**: Always ensure proper access to DB resources before any read/write operations
|
|
42
|
+
- Usually done via `organizationId` field on objects or their parents
|
|
43
|
+
- **Use DAL pattern**:
|
|
44
|
+
- Use existing data access code from `dal/*.ts` files
|
|
45
|
+
- Move reusable database code into DAL files when appropriate
|
|
46
|
+
- Don't write direct database queries outside of DAL layer
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
## Code Style Guidelines
|
|
50
|
+
|
|
51
|
+
1. **Components**: Use functional components with TypeScript
|
|
52
|
+
2. **State Management**: Prefer React hooks and context
|
|
53
|
+
3. **Styling**: Use Tailwind CSS utility classes
|
|
54
|
+
4. **File Naming**: Use kebab-case for files, PascalCase for components
|
|
55
|
+
5. **Imports**: Let Prettier organize imports automatically
|
|
56
|
+
|
|
57
|
+
## Testing Guidelines
|
|
58
|
+
|
|
59
|
+
- Tests use Vitest
|
|
60
|
+
- Test files should be colocated with source files as `*.test.ts` or `*.test.tsx`
|
|
61
|
+
- Run tests with `npm test` or `npm run ci:test` for CI
|
|
62
|
+
|
|
63
|
+
## Common Patterns
|
|
64
|
+
|
|
65
|
+
### API Routes
|
|
66
|
+
Located in `src/server/` using TanStack Start server functions.
|
|
67
|
+
|
|
68
|
+
### Database Queries
|
|
69
|
+
Use Drizzle ORM with typed schemas from `drizzle/schema.ts`.
|
|
70
|
+
|
|
71
|
+
### Authentication
|
|
72
|
+
Using Better Auth library configured in the project.
|
|
73
|
+
|
|
74
|
+
## Troubleshooting
|
|
75
|
+
|
|
76
|
+
1. **TypeScript errors**: Run `npm run check` to see all type errors
|
|
77
|
+
2. **Lint errors**: Run `npm run lint` to identify and fix linting issues
|
|
78
|
+
3. **Database issues**: Ensure Docker is running and use `npm run db:dev`
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## Linear Integration
|
|
83
|
+
|
|
84
|
+
The project includes Linear SDK integration for issue tracking and project management.
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
name: CI/CD
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
types: [opened, reopened, synchronize]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
build:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
- uses: pnpm/action-setup@v4
|
|
19
|
+
- uses: actions/setup-node@v4
|
|
20
|
+
with:
|
|
21
|
+
node-version: 22
|
|
22
|
+
cache: "pnpm"
|
|
23
|
+
|
|
24
|
+
- run: pnpm install --frozen-lockfile
|
|
25
|
+
- run: pnpm run --filter "{apps/**}^..." build
|
|
26
|
+
|
|
27
|
+
- name: Cache build outputs
|
|
28
|
+
uses: actions/cache/save@v4
|
|
29
|
+
with:
|
|
30
|
+
path: |
|
|
31
|
+
apps/*/dist
|
|
32
|
+
libs/*/dist
|
|
33
|
+
packages/*/dist
|
|
34
|
+
key: build-${{ github.sha }}
|
|
35
|
+
|
|
36
|
+
migrations:
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
needs: build
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v4
|
|
41
|
+
- uses: pnpm/action-setup@v4
|
|
42
|
+
- uses: actions/setup-node@v4
|
|
43
|
+
with:
|
|
44
|
+
node-version: 22
|
|
45
|
+
cache: "pnpm"
|
|
46
|
+
|
|
47
|
+
- run: pnpm install --frozen-lockfile
|
|
48
|
+
|
|
49
|
+
- name: Restore build cache
|
|
50
|
+
uses: actions/cache/restore@v4
|
|
51
|
+
with:
|
|
52
|
+
path: |
|
|
53
|
+
apps/*/dist
|
|
54
|
+
libs/*/dist
|
|
55
|
+
packages/*/dist
|
|
56
|
+
key: build-${{ github.sha }}
|
|
57
|
+
|
|
58
|
+
- name: Check migrations
|
|
59
|
+
run: |
|
|
60
|
+
cd apps/main
|
|
61
|
+
pnpm run db:generate
|
|
62
|
+
if git diff --exit-code drizzle/; then
|
|
63
|
+
echo "✅ Migrations are up to date"
|
|
64
|
+
else
|
|
65
|
+
echo "❌ Schema changes detected but migrations not generated"
|
|
66
|
+
echo "Run: cd apps/main && pnpm run db:generate"
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
lint:
|
|
71
|
+
runs-on: ubuntu-latest
|
|
72
|
+
needs: build
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@v4
|
|
75
|
+
- uses: pnpm/action-setup@v4
|
|
76
|
+
- uses: actions/setup-node@v4
|
|
77
|
+
with:
|
|
78
|
+
node-version: 22
|
|
79
|
+
cache: "pnpm"
|
|
80
|
+
|
|
81
|
+
- run: pnpm install --frozen-lockfile
|
|
82
|
+
|
|
83
|
+
- name: Restore build cache
|
|
84
|
+
uses: actions/cache/restore@v4
|
|
85
|
+
with:
|
|
86
|
+
path: |
|
|
87
|
+
apps/*/dist
|
|
88
|
+
libs/*/dist
|
|
89
|
+
packages/*/dist
|
|
90
|
+
key: build-${{ github.sha }}
|
|
91
|
+
|
|
92
|
+
- run: pnpm run -r ci:fmt
|
|
93
|
+
- run: pnpm run -r ci:lint
|
|
94
|
+
|
|
95
|
+
typecheck:
|
|
96
|
+
runs-on: ubuntu-latest
|
|
97
|
+
needs: build
|
|
98
|
+
steps:
|
|
99
|
+
- uses: actions/checkout@v4
|
|
100
|
+
- uses: pnpm/action-setup@v4
|
|
101
|
+
- uses: actions/setup-node@v4
|
|
102
|
+
with:
|
|
103
|
+
node-version: 22
|
|
104
|
+
cache: "pnpm"
|
|
105
|
+
|
|
106
|
+
- run: pnpm install --frozen-lockfile
|
|
107
|
+
|
|
108
|
+
- name: Restore build cache
|
|
109
|
+
uses: actions/cache/restore@v4
|
|
110
|
+
with:
|
|
111
|
+
path: |
|
|
112
|
+
apps/*/dist
|
|
113
|
+
libs/*/dist
|
|
114
|
+
packages/*/dist
|
|
115
|
+
key: build-${{ github.sha }}
|
|
116
|
+
|
|
117
|
+
- run: pnpm run -r ci:check
|
|
118
|
+
|
|
119
|
+
test:
|
|
120
|
+
runs-on: ubuntu-latest
|
|
121
|
+
needs: build
|
|
122
|
+
steps:
|
|
123
|
+
- uses: actions/checkout@v4
|
|
124
|
+
- uses: pnpm/action-setup@v4
|
|
125
|
+
- uses: actions/setup-node@v4
|
|
126
|
+
with:
|
|
127
|
+
node-version: 22
|
|
128
|
+
cache: "pnpm"
|
|
129
|
+
|
|
130
|
+
- run: pnpm install --frozen-lockfile
|
|
131
|
+
|
|
132
|
+
- name: Restore build cache
|
|
133
|
+
uses: actions/cache/restore@v4
|
|
134
|
+
with:
|
|
135
|
+
path: |
|
|
136
|
+
apps/*/dist
|
|
137
|
+
libs/*/dist
|
|
138
|
+
packages/*/dist
|
|
139
|
+
key: build-${{ github.sha }}
|
|
140
|
+
|
|
141
|
+
- run: pnpm run -r ci:test
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
# Claude Development Guidelines
|
|
2
|
+
|
|
3
|
+
This document contains critical guidelines for AI assistants (Claude) working on this codebase.
|
|
4
|
+
|
|
5
|
+
## Core Principles
|
|
6
|
+
|
|
7
|
+
### 1. Understand the Monorepo Structure First
|
|
8
|
+
|
|
9
|
+
**Before planning any task, check the monorepo structure to understand which package is responsible for what.**
|
|
10
|
+
|
|
11
|
+
This is a pnpm workspace monorepo with the following structure:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
sea/
|
|
15
|
+
├── apps/ # Application packages
|
|
16
|
+
│ ├── api/ # REST API service (Fastify)
|
|
17
|
+
│ ├── conversion-worker/ # Document conversion worker
|
|
18
|
+
│ ├── main/ # Main React web application (TanStack Start)
|
|
19
|
+
│ ├── posthog-proxy/ # PostHog analytics proxy
|
|
20
|
+
│ └── workers/ # Hatchet async workers
|
|
21
|
+
│
|
|
22
|
+
├── libs/ # Shared library packages
|
|
23
|
+
│ ├── ai/ # AI/LLM integration (agents, tools, prompts)
|
|
24
|
+
│ ├── cache/ # Caching utilities (Upstash Redis)
|
|
25
|
+
│ ├── clients/ # External service clients (Azure, GCP, Hatchet)
|
|
26
|
+
│ ├── config/ # Shared configuration
|
|
27
|
+
│ ├── core/ # Core business logic (data extraction, chat)
|
|
28
|
+
│ ├── dal/ # Data Access Layer (database queries)
|
|
29
|
+
│ ├── db/ # Database schema & migrations (Drizzle ORM)
|
|
30
|
+
│ ├── lint/ # Shared ESLint/Prettier config
|
|
31
|
+
│ ├── schemas/ # Zod schemas & TypeScript types
|
|
32
|
+
│ │ ├── core/ # Core API schemas (agent-runtime, submission, etc.)
|
|
33
|
+
│ │ └── db/ # Database schema validators
|
|
34
|
+
│ ├── ui/ # React UI components (shadcn/ui)
|
|
35
|
+
│ ├── util/ # Utility functions
|
|
36
|
+
│ ├── validators/ # Validation logic (chart configs, etc.)
|
|
37
|
+
│ ├── widget/ # Embeddable widget (React)
|
|
38
|
+
│ └── widget-ng/ # Angular widget (separate codebase)
|
|
39
|
+
│
|
|
40
|
+
├── scripts/ # Deployment & maintenance scripts
|
|
41
|
+
└── tests/ # Test applications
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2. Never Duplicate - Always Reuse
|
|
45
|
+
|
|
46
|
+
**Never create a function, type, or component for something that already exists.**
|
|
47
|
+
|
|
48
|
+
Before implementing anything:
|
|
49
|
+
1. Search for existing implementations using Grep/Glob
|
|
50
|
+
2. Check the appropriate package (see package responsibilities below)
|
|
51
|
+
3. Reuse and extend rather than duplicate
|
|
52
|
+
|
|
53
|
+
### 3. Package Placement - Put Things in the Right Place
|
|
54
|
+
|
|
55
|
+
**Always put things in the right package to enable sharing across the monorepo.**
|
|
56
|
+
|
|
57
|
+
#### Package Responsibilities
|
|
58
|
+
|
|
59
|
+
| Package | Purpose | What Goes Here |
|
|
60
|
+
|---------|---------|----------------|
|
|
61
|
+
| `@sea/schemas` | Type definitions & validation | - Zod schemas<br>- TypeScript types exported from schemas<br>- API request/response types<br>- Database schema validators |
|
|
62
|
+
| `@sea/db` | Database layer | - Drizzle table definitions<br>- Database relations<br>- Schema types (`$inferSelect`)<br>- Migrations |
|
|
63
|
+
| `@sea/dal` | Data access | - Database query functions<br>- CRUD operations<br>- Business logic queries<br>- Result types (`DalResult`) |
|
|
64
|
+
| `@sea/core` | Business logic | - Data extraction logic<br>- Chat/conversation logic<br>- Agent execution<br>- Core workflows |
|
|
65
|
+
| `@sea/ai` | AI/LLM features | - Agent definitions<br>- Tool definitions<br>- Prompts<br>- LLM integrations |
|
|
66
|
+
| `@sea/ui` | UI components | - Reusable React components<br>- shadcn/ui wrappers<br>- Design system tokens |
|
|
67
|
+
| `@sea/util` | Utilities | - Pure utility functions<br>- Helpers<br>- Common algorithms |
|
|
68
|
+
| `@sea/clients` | External services | - API clients (Azure, GCP)<br>- Service integrations<br>- Client configurations |
|
|
69
|
+
| `@sea/config` | Configuration | - Environment config<br>- Shared constants<br>- Feature flags |
|
|
70
|
+
| `@sea/validators` | Validation logic | - Complex validators<br>- Business rule validators<br>- Format validators |
|
|
71
|
+
|
|
72
|
+
#### Type & Schema Flow
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
1. Define schema in @sea/schemas
|
|
76
|
+
├── Create Zod schema
|
|
77
|
+
└── Export inferred TypeScript type
|
|
78
|
+
|
|
79
|
+
2. Use schema in @sea/dal
|
|
80
|
+
├── Import schema for validation
|
|
81
|
+
└── Use DB types from @sea/db
|
|
82
|
+
|
|
83
|
+
3. Use in business logic
|
|
84
|
+
├── Import types from @sea/schemas
|
|
85
|
+
└── Import functions from @sea/dal
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**If unclear about placement, always verify first before making assumptions.**
|
|
89
|
+
|
|
90
|
+
### 4. Strict Typing - Never Use `any`
|
|
91
|
+
|
|
92
|
+
**There is literally never a good reason to use the `any` type.**
|
|
93
|
+
|
|
94
|
+
#### Rules
|
|
95
|
+
- ✅ Use `unknown` for truly unknown data that will be validated
|
|
96
|
+
- ✅ Use proper type inference from Zod schemas
|
|
97
|
+
- ✅ Use generic types with constraints
|
|
98
|
+
- ✅ Use database types from `@sea/db/types` - NEVER use `$inferSelect` outside of `@sea/db`
|
|
99
|
+
- ❌ NEVER use `any` - this rule has no exceptions
|
|
100
|
+
|
|
101
|
+
#### Examples
|
|
102
|
+
|
|
103
|
+
**Bad:**
|
|
104
|
+
```typescript
|
|
105
|
+
// ❌ Don't use any
|
|
106
|
+
function process(data: any) {
|
|
107
|
+
return data.foo;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// ❌ Don't use $inferSelect outside @sea/db
|
|
111
|
+
import { schema } from '@sea/db';
|
|
112
|
+
type User = typeof schema.user.$inferSelect;
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Good:**
|
|
116
|
+
```typescript
|
|
117
|
+
// ✅ For unknown data that will be validated
|
|
118
|
+
function process(data: unknown) {
|
|
119
|
+
const validated = mySchema.parse(data);
|
|
120
|
+
return validated.foo;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// ✅ For generic types
|
|
124
|
+
function process<T extends { foo: string }>(data: T) {
|
|
125
|
+
return data.foo;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// ✅ For database types - import from @sea/db/types
|
|
129
|
+
import type { User } from '@sea/db/types';
|
|
130
|
+
function process(user: User) {
|
|
131
|
+
return user.email;
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
#### Database Types Rule
|
|
136
|
+
|
|
137
|
+
**CRITICAL:** `$inferSelect` and `$inferInsert` should ONLY be used in `@sea/db` package to define types.
|
|
138
|
+
|
|
139
|
+
All database types must be:
|
|
140
|
+
1. Inferred in `@sea/db/src/types.ts` using `$inferSelect`
|
|
141
|
+
2. Exported from `@sea/db/types`
|
|
142
|
+
3. Imported and used everywhere else
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
// ❌ WRONG - Don't do this outside @sea/db
|
|
146
|
+
import { schema } from '@sea/db';
|
|
147
|
+
type Submission = typeof schema.submission.$inferSelect;
|
|
148
|
+
|
|
149
|
+
// ✅ CORRECT - Import the type from @sea/db/types
|
|
150
|
+
import type { Submission } from '@sea/db/types';
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Development Workflow
|
|
154
|
+
|
|
155
|
+
### ⚠️ CRITICAL: Always Run Type Check
|
|
156
|
+
|
|
157
|
+
**BEFORE marking any phase or task as complete, ALWAYS run type checking:**
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Check the packages you modified
|
|
161
|
+
pnpm --filter @sea/main exec tsc --noEmit
|
|
162
|
+
pnpm --filter @sea/workers exec tsc --noEmit
|
|
163
|
+
pnpm --filter @sea/core exec tsc --noEmit
|
|
164
|
+
pnpm --filter @sea/dal exec tsc --noEmit
|
|
165
|
+
pnpm --filter @sea/db build # db needs build, not just typecheck
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Fix ALL TypeScript errors before proceeding.** No exceptions.
|
|
169
|
+
|
|
170
|
+
### Progress Tracking for Multi-Session Work
|
|
171
|
+
|
|
172
|
+
**IMPORTANT:** For tasks that span multiple Claude Code sessions, use the progress tracking system in `.claude/tasks/`.
|
|
173
|
+
|
|
174
|
+
#### Continuing an Existing Task
|
|
175
|
+
|
|
176
|
+
**Before starting work**, check if there's already a task in progress:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
# List active tasks
|
|
180
|
+
ls .claude/tasks/
|
|
181
|
+
|
|
182
|
+
# Read the task file
|
|
183
|
+
cat .claude/tasks/dag-pipeline-implementation.md
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Key steps:**
|
|
187
|
+
1. **Read the task file completely** - Understand what's been completed
|
|
188
|
+
2. **Check the todo list** - Find the next item to work on
|
|
189
|
+
3. **Update as you go** - Check off completed items, add notes
|
|
190
|
+
4. **⚠️ Run type check** after making changes (see commands above)
|
|
191
|
+
5. **Commit progress** - Update the task file regularly
|
|
192
|
+
|
|
193
|
+
#### Starting a New Task
|
|
194
|
+
|
|
195
|
+
If starting a new multi-session task:
|
|
196
|
+
|
|
197
|
+
1. **Create a task file**: `.claude/tasks/{feature-area}-{brief-description}.md`
|
|
198
|
+
- Use the template from existing tasks
|
|
199
|
+
- Include: overview, progress tracker, todos, decisions, next session instructions
|
|
200
|
+
|
|
201
|
+
2. **Update the index**: Add your task to `.claude/tasks/README.md`
|
|
202
|
+
|
|
203
|
+
3. **Update regularly** as you complete work
|
|
204
|
+
|
|
205
|
+
See [.claude/tasks/README.md](.claude/tasks/README.md) for detailed guidelines.
|
|
206
|
+
|
|
207
|
+
### Before Starting Any Task
|
|
208
|
+
|
|
209
|
+
1. **Check for existing progress tracking**
|
|
210
|
+
- Look in `.claude/tasks/` for related work
|
|
211
|
+
- Read any existing task files to avoid duplication
|
|
212
|
+
|
|
213
|
+
2. **Understand the scope**
|
|
214
|
+
- What packages are involved?
|
|
215
|
+
- Does similar functionality exist?
|
|
216
|
+
- Which package should own the new code?
|
|
217
|
+
|
|
218
|
+
3. **Search for existing code**
|
|
219
|
+
```bash
|
|
220
|
+
# Search for similar functions
|
|
221
|
+
grep -r "functionName" libs/
|
|
222
|
+
|
|
223
|
+
# Find type definitions
|
|
224
|
+
grep -r "type TypeName" libs/schemas/
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
4. **Check package dependencies**
|
|
228
|
+
- Ensure you're not creating circular dependencies
|
|
229
|
+
- Verify the package has access to dependencies it needs
|
|
230
|
+
|
|
231
|
+
### When Adding New Functionality
|
|
232
|
+
|
|
233
|
+
1. **Types/Schemas** → Start in `@sea/schemas`
|
|
234
|
+
2. **Database Tables** → Define in `@sea/db`
|
|
235
|
+
3. **Database Queries** → Implement in `@sea/dal`
|
|
236
|
+
4. **Business Logic** → Implement in `@sea/core` or `@sea/ai`
|
|
237
|
+
5. **UI Components** → Add to `@sea/ui` (if reusable) or app (if specific)
|
|
238
|
+
6. **⚠️ RUN TYPE CHECK** → Verify no errors (see type check section above)
|
|
239
|
+
|
|
240
|
+
### Common Patterns
|
|
241
|
+
|
|
242
|
+
#### Database Query Pattern
|
|
243
|
+
```typescript
|
|
244
|
+
// 1. Define schema in @sea/schemas/core/
|
|
245
|
+
export const myDataSchema = z.object({
|
|
246
|
+
id: z.string(),
|
|
247
|
+
name: z.string(),
|
|
248
|
+
});
|
|
249
|
+
export type MyData = z.infer<typeof myDataSchema>;
|
|
250
|
+
|
|
251
|
+
// 2. Define table in @sea/db
|
|
252
|
+
export const myTable = pgTable('my_table', {
|
|
253
|
+
id: text('id').primaryKey(),
|
|
254
|
+
name: text('name').notNull(),
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
// 3. Create DAL function in @sea/dal
|
|
258
|
+
export async function getMyData(id: string): Promise<DalResult<MyData>> {
|
|
259
|
+
const result = await db.query.myTable.findFirst({
|
|
260
|
+
where: eq(schema.myTable.id, id),
|
|
261
|
+
});
|
|
262
|
+
if (!result) return { ok: false, error: 'not-found' };
|
|
263
|
+
return { ok: true, data: result };
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
#### Type Import Pattern
|
|
268
|
+
```typescript
|
|
269
|
+
// Always import types from their source package
|
|
270
|
+
import type { MyData } from '@sea/schemas/core/my-data';
|
|
271
|
+
import type { Member } from '@sea/db/types';
|
|
272
|
+
import { getMyData } from '@sea/dal/my-data';
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## Anti-Patterns to Avoid
|
|
276
|
+
|
|
277
|
+
❌ Defining types inline in DAL/Core when they should be in schemas
|
|
278
|
+
❌ Using dynamic inline imports with const x = await import("y") - all imports should be at the top of file and static
|
|
279
|
+
❌ Duplicating database queries across files
|
|
280
|
+
❌ Using `any` type anywhere
|
|
281
|
+
❌ Using `$inferSelect` or `$inferInsert` outside of `@sea/db`
|
|
282
|
+
❌ Creating new packages without discussion
|
|
283
|
+
❌ Putting business logic in UI components
|
|
284
|
+
❌ Hardcoding values that should be in config
|
|
285
|
+
❌ Bypassing the DAL to query the database directly
|
|
286
|
+
|
|
287
|
+
## Quick Reference
|
|
288
|
+
|
|
289
|
+
### Finding Things
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# Find type definitions
|
|
293
|
+
grep -r "export type TypeName" libs/schemas/
|
|
294
|
+
|
|
295
|
+
# Find database queries
|
|
296
|
+
grep -r "export async function" libs/dal/
|
|
297
|
+
|
|
298
|
+
# Find React components
|
|
299
|
+
find libs/ui -name "*.tsx"
|
|
300
|
+
|
|
301
|
+
# Find agent/tool definitions
|
|
302
|
+
find libs/ai -name "*.ts"
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### Adding Dependencies
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
# Add to a specific package
|
|
309
|
+
pnpm --filter @sea/package-name add dependency-name
|
|
310
|
+
|
|
311
|
+
# Add workspace dependency
|
|
312
|
+
# Edit package.json and add:
|
|
313
|
+
# "@sea/other-package": "workspace:*"
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### Building & Testing
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
# Build a package and its dependencies
|
|
320
|
+
pnpm --filter @sea/package-name build
|
|
321
|
+
|
|
322
|
+
# Run type checking
|
|
323
|
+
pnpm --filter @sea/package-name exec tsc --noEmit
|
|
324
|
+
|
|
325
|
+
# Format and lint
|
|
326
|
+
pnpm --filter @sea/package-name fmt
|
|
327
|
+
pnpm --filter @sea/package-name lint
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## Summary
|
|
331
|
+
|
|
332
|
+
1. ✅ **Understand the monorepo structure** before starting
|
|
333
|
+
2. ✅ **Reuse existing code** - search before creating
|
|
334
|
+
3. ✅ **Put code in the right package** - schemas, db, dal, core, ai, ui
|
|
335
|
+
4. ✅ **Never use `any`** - use proper TypeScript types
|
|
336
|
+
|
|
337
|
+
When in doubt, ask or verify rather than assume!
|