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,859 @@
|
|
|
1
|
+
# Agent Templates and Runs System
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The Agent Templates and Runs system provides a way to create reusable, multi-step AI workflows that transform data from one form structure to another. Templates define a sequence of execution steps, and runs represent individual executions of those templates against specific input submissions.
|
|
6
|
+
|
|
7
|
+
## Database Schema
|
|
8
|
+
|
|
9
|
+
### Core Tables
|
|
10
|
+
|
|
11
|
+
#### `agent_template`
|
|
12
|
+
Defines a reusable template for agent workflows.
|
|
13
|
+
|
|
14
|
+
- `id`: Unique identifier
|
|
15
|
+
- `organization_id`: Organization owner
|
|
16
|
+
- `name`: Template name
|
|
17
|
+
- `description`: Template description
|
|
18
|
+
- `input_type`: Type of input (default: "manual", options: "submission", "deal", "form", "manual")
|
|
19
|
+
- `input_form_id`: Form schema for template input data (required) - defines expected input structure for all runs
|
|
20
|
+
- `output_type`: Type of output (default: "artifact", options: "artifact", "submission_update", "report")
|
|
21
|
+
- `is_system`: Whether this is a system template (default: false)
|
|
22
|
+
- `is_active`: Whether this template is active (default: true)
|
|
23
|
+
- `version`: Current version string (default: "1")
|
|
24
|
+
- `metadata`: Additional metadata (JSONB)
|
|
25
|
+
- `deleted_at`, `created_at`, `updated_at`: Standard timestamps
|
|
26
|
+
|
|
27
|
+
**Indexes:**
|
|
28
|
+
- `organization_id`
|
|
29
|
+
- `is_active`
|
|
30
|
+
- `input_form_id`
|
|
31
|
+
|
|
32
|
+
#### `agent_template_step`
|
|
33
|
+
Defines individual steps within a template.
|
|
34
|
+
|
|
35
|
+
- `id`: Unique identifier
|
|
36
|
+
- `template_id`: Foreign key to `agent_template`
|
|
37
|
+
- `parent_step_id`: Foreign key to parent step (nullable) - creates step dependency chain
|
|
38
|
+
- `step_key`: Unique key for this step within the template
|
|
39
|
+
- `step_order`: Execution order (integer)
|
|
40
|
+
- `name`: Step name
|
|
41
|
+
- `description`: Step description
|
|
42
|
+
- `prompt`: LLM prompt for this step
|
|
43
|
+
- `output_key`: Key for the output data
|
|
44
|
+
- `output_form_id`: Form schema for output data - defines what this step produces
|
|
45
|
+
- `tools_allowed`: Array of tool names allowed for this step (empty = all tools allowed)
|
|
46
|
+
- `retry_policy`: Retry configuration (JSONB) - not yet implemented
|
|
47
|
+
- `created_at`, `updated_at`: Standard timestamps
|
|
48
|
+
|
|
49
|
+
**Indexes:**
|
|
50
|
+
- `template_id`
|
|
51
|
+
- `parent_step_id`
|
|
52
|
+
- `output_form_id`
|
|
53
|
+
- `(template_id, step_order)` - for ordered retrieval
|
|
54
|
+
- Unique: `(template_id, step_key)`
|
|
55
|
+
|
|
56
|
+
**Note on Input Handling:**
|
|
57
|
+
- Steps do not define their own input forms
|
|
58
|
+
- First step uses template's `input_form_id`
|
|
59
|
+
- Subsequent steps use parent step's `output_form_id` as input
|
|
60
|
+
- This creates a natural data flow: template input → step 1 output → step 2 output → ...
|
|
61
|
+
|
|
62
|
+
#### `agent_template_version`
|
|
63
|
+
Stores template definitions for versioning (planned, not fully implemented).
|
|
64
|
+
|
|
65
|
+
- `id`: Unique identifier
|
|
66
|
+
- `template_id`: Foreign key to `agent_template`
|
|
67
|
+
- `version`: Version string
|
|
68
|
+
- `definition`: Full template definition snapshot (JSONB)
|
|
69
|
+
- `created_at`, `updated_at`: Standard timestamps
|
|
70
|
+
|
|
71
|
+
**Indexes:**
|
|
72
|
+
- `template_id`
|
|
73
|
+
- Unique: `(template_id, version)`
|
|
74
|
+
|
|
75
|
+
**Note:** Template versioning is planned but not yet implemented in the UI. The intended design is:
|
|
76
|
+
- Runs would link to a specific template version
|
|
77
|
+
- Each template would have an "active version" pointer
|
|
78
|
+
- This allows templates to evolve without breaking historical runs
|
|
79
|
+
|
|
80
|
+
#### `agent_run`
|
|
81
|
+
Represents a single execution of a template.
|
|
82
|
+
|
|
83
|
+
- `id`: Unique identifier
|
|
84
|
+
- `organization_id`: Organization owner
|
|
85
|
+
- `conversation_id`: Associated conversation
|
|
86
|
+
- `template_id`: Foreign key to `agent_template` (nullable if template deleted)
|
|
87
|
+
- `template_version_id`: Foreign key to `agent_template_version` (nullable)
|
|
88
|
+
- `status`: Run status (default: "pending", options: "pending", "running", "completed", "failed", "cancelled")
|
|
89
|
+
- `input_ref_type`: Type of input reference (default: "manual", options: "submission", "deal", "form", "manual")
|
|
90
|
+
- `input_ref_id`: ID of the input reference (nullable)
|
|
91
|
+
- `trigger_type`: How the run was triggered (default: "manual")
|
|
92
|
+
- `error_summary`: Error message if failed (nullable)
|
|
93
|
+
- `started_at`: When execution started
|
|
94
|
+
- `completed_at`: When execution completed (nullable)
|
|
95
|
+
- `created_at`, `updated_at`: Standard timestamps
|
|
96
|
+
|
|
97
|
+
**Indexes:**
|
|
98
|
+
- `organization_id`
|
|
99
|
+
- `conversation_id`
|
|
100
|
+
- `status`
|
|
101
|
+
- `(input_ref_type, input_ref_id)`
|
|
102
|
+
|
|
103
|
+
#### `agent_run_step`
|
|
104
|
+
Represents the execution of a single step within a run.
|
|
105
|
+
|
|
106
|
+
- `id`: Unique identifier
|
|
107
|
+
- `run_id`: Foreign key to `agent_run`
|
|
108
|
+
- `parent_step_id`: Foreign key to parent step in this run (nullable) - tracks step execution chain
|
|
109
|
+
- `step_key`: Step identifier
|
|
110
|
+
- `step_order`: Execution order
|
|
111
|
+
- `name`: Step name
|
|
112
|
+
- `status`: Step status (default: "pending", options: "pending", "running", "completed", "failed", "skipped")
|
|
113
|
+
- `attempt`: Retry attempt number (default: 1)
|
|
114
|
+
- `output_submission_id`: Output submission created by this step (nullable)
|
|
115
|
+
- `reasoning`: LLM reasoning output (nullable)
|
|
116
|
+
- `input`: Input data/config for this step (JSONB) - stores step configuration, not actual input data
|
|
117
|
+
- `output`: Output data from this step (JSONB) - stores structured output result
|
|
118
|
+
- `error`: Error message if failed (nullable)
|
|
119
|
+
- `started_at`: When step started
|
|
120
|
+
- `completed_at`: When step completed (nullable)
|
|
121
|
+
- `duration_ms`: Execution duration in milliseconds (nullable)
|
|
122
|
+
- `created_at`, `updated_at`: Standard timestamps
|
|
123
|
+
|
|
124
|
+
**Indexes:**
|
|
125
|
+
- `run_id`
|
|
126
|
+
- `parent_step_id`
|
|
127
|
+
- `output_submission_id`
|
|
128
|
+
- `(run_id, status)`
|
|
129
|
+
- Unique: `(run_id, step_key)`
|
|
130
|
+
|
|
131
|
+
**Note on Input Submissions:**
|
|
132
|
+
- Input submissions are not stored directly on run steps
|
|
133
|
+
- Instead, derived from parent step's `output_submission_id`
|
|
134
|
+
- For first step, input submission comes from `agent_run.input_ref_id`
|
|
135
|
+
- This maintains referential integrity through the parent-child chain
|
|
136
|
+
|
|
137
|
+
#### `agent_tool_call`
|
|
138
|
+
Logs individual tool calls made during step execution.
|
|
139
|
+
|
|
140
|
+
- `id`: Unique identifier
|
|
141
|
+
- `run_step_id`: Foreign key to `agent_run_step`
|
|
142
|
+
- `tool_name`: Name of the tool called
|
|
143
|
+
- `args`: Tool arguments (JSONB)
|
|
144
|
+
- `result`: Tool result (JSONB)
|
|
145
|
+
- `status`: Call status (default: "completed")
|
|
146
|
+
- `latency_ms`: Tool call latency in milliseconds (nullable)
|
|
147
|
+
- `called_at`: When the tool was called
|
|
148
|
+
- `created_at`, `updated_at`: Standard timestamps
|
|
149
|
+
|
|
150
|
+
**Indexes:**
|
|
151
|
+
- `run_step_id`
|
|
152
|
+
- `tool_name`
|
|
153
|
+
|
|
154
|
+
#### `agent_transformation`
|
|
155
|
+
Records data transformations applied during step execution.
|
|
156
|
+
|
|
157
|
+
- `id`: Unique identifier
|
|
158
|
+
- `run_step_id`: Foreign key to `agent_run_step`
|
|
159
|
+
- `kind`: Type of transformation (default: "map", options: "copy", "map", "formula", "aggregate", "classify", "normalize", "llm_extract")
|
|
160
|
+
- `expression`: Transformation expression (nullable)
|
|
161
|
+
- `metadata`: Additional metadata (JSONB)
|
|
162
|
+
- `created_at`, `updated_at`: Standard timestamps
|
|
163
|
+
|
|
164
|
+
**Indexes:**
|
|
165
|
+
- `run_step_id`
|
|
166
|
+
|
|
167
|
+
#### `agent_artifact`
|
|
168
|
+
Stores artifacts (charts, tables, dashboards, markdown) produced by runs.
|
|
169
|
+
|
|
170
|
+
- `id`: Unique identifier
|
|
171
|
+
- `run_id`: Foreign key to `agent_run` (nullable)
|
|
172
|
+
- `run_step_id`: Foreign key to `agent_run_step` (nullable)
|
|
173
|
+
- `conversation_id`: Associated conversation
|
|
174
|
+
- `type`: Artifact type (default: "markdown", options: "markdown", "chart", "table", "dashboard")
|
|
175
|
+
- `title`: Artifact title
|
|
176
|
+
- `content`: Artifact content (JSONB)
|
|
177
|
+
- `metadata`: Additional metadata (JSONB)
|
|
178
|
+
- `created_at`, `updated_at`: Standard timestamps
|
|
179
|
+
|
|
180
|
+
**Indexes:**
|
|
181
|
+
- `conversation_id`
|
|
182
|
+
- `run_id`
|
|
183
|
+
- `run_step_id`
|
|
184
|
+
|
|
185
|
+
## User Interface
|
|
186
|
+
|
|
187
|
+
### Main Agent Page (`/agents`)
|
|
188
|
+
|
|
189
|
+
**Location:** [apps/main/src/routes/_authed/_app/agents/index.tsx](../apps/main/src/routes/_authed/_app/agents/index.tsx)
|
|
190
|
+
|
|
191
|
+
Lists all agent conversations for the organization. Shows:
|
|
192
|
+
- Conversation name (or "New Agent" if unnamed)
|
|
193
|
+
- Last updated time
|
|
194
|
+
- Delete button (appears on hover)
|
|
195
|
+
|
|
196
|
+
**Features:**
|
|
197
|
+
- "New Agent" button to create a new agent conversation
|
|
198
|
+
- Links to individual agent pages
|
|
199
|
+
|
|
200
|
+
### Agent Detail Page (`/agents/$agentId`)
|
|
201
|
+
|
|
202
|
+
**Location:** [apps/main/src/routes/_authed/_app/agents/$agentId/index.tsx](../apps/main/src/routes/_authed/_app/agents/$agentId/index.tsx)
|
|
203
|
+
|
|
204
|
+
Main chat interface for interacting with the agent.
|
|
205
|
+
|
|
206
|
+
**Layout:**
|
|
207
|
+
- **Left side:** Chat messages with document upload capability
|
|
208
|
+
- **Right sidebar:** Two collapsible sections:
|
|
209
|
+
- **Context:** Shows relevant items (deals, forms, submissions, workflows, documents) with ability to add/remove
|
|
210
|
+
- **Artifacts:** Displays generated artifacts (charts, tables, markdown) with delete functionality
|
|
211
|
+
|
|
212
|
+
**Features:**
|
|
213
|
+
- Rename conversation (click on title)
|
|
214
|
+
- Agent history menu (switch between agent conversations)
|
|
215
|
+
- Agent actions menu (model selection, etc.)
|
|
216
|
+
- Create new agent
|
|
217
|
+
- Auto-expand context/artifacts panels when items are added
|
|
218
|
+
|
|
219
|
+
### Agent Configuration Page (`/agents/$agentId/config`)
|
|
220
|
+
|
|
221
|
+
**Location:** [apps/main/src/routes/_authed/_app/agents/$agentId/config.tsx](../apps/main/src/routes/_authed/_app/agents/$agentId/config.tsx)
|
|
222
|
+
|
|
223
|
+
Three-tab interface for managing templates and testing runs.
|
|
224
|
+
|
|
225
|
+
#### Tab 1: Create Template
|
|
226
|
+
|
|
227
|
+
**Purpose:** Conversational interface for creating new agent templates
|
|
228
|
+
|
|
229
|
+
**Features:**
|
|
230
|
+
- Chat-based template creation
|
|
231
|
+
- User describes the template (e.g., "Create a template that takes financial data and produces a risk assessment")
|
|
232
|
+
- LLM assists in generating the template structure
|
|
233
|
+
- Creates templates via `createAgentTemplateFn`
|
|
234
|
+
|
|
235
|
+
**Current Implementation:**
|
|
236
|
+
- Uses `ChatProvider` with `chatType="template"`
|
|
237
|
+
- Connected to conversation messages
|
|
238
|
+
- Invalidates router on input blur to refresh data
|
|
239
|
+
|
|
240
|
+
#### Tab 2: Edit Templates & Tools
|
|
241
|
+
|
|
242
|
+
**Purpose:** Edit existing templates, steps, and tool configurations
|
|
243
|
+
|
|
244
|
+
**Features:**
|
|
245
|
+
|
|
246
|
+
**Templates Section:**
|
|
247
|
+
- Accordion view of all templates
|
|
248
|
+
- Per-template editing:
|
|
249
|
+
- Template name and description
|
|
250
|
+
- Save button (appears only when changes detected)
|
|
251
|
+
- Per-step editing:
|
|
252
|
+
- Step name, description, and prompt
|
|
253
|
+
- Input form selection (dropdown)
|
|
254
|
+
- Output form selection (dropdown)
|
|
255
|
+
- Tools allowed (currently read-only - **TODO**)
|
|
256
|
+
- Save button (appears only when changes detected)
|
|
257
|
+
|
|
258
|
+
**Tools Section:**
|
|
259
|
+
- Accordion view of all available tools
|
|
260
|
+
- Per-tool editing:
|
|
261
|
+
- Shows default description
|
|
262
|
+
- Custom description textarea
|
|
263
|
+
- "Save" button to update
|
|
264
|
+
- "Clear" button to revert to default (only shown if custom description exists)
|
|
265
|
+
- Collapsible input schema viewer (JSON)
|
|
266
|
+
- Badge indicator for tools with custom descriptions
|
|
267
|
+
|
|
268
|
+
**Implementation Details:**
|
|
269
|
+
- Local state management for edits (`templateEdits`, `stepEdits`, `descriptions`)
|
|
270
|
+
- Optimistic UI updates
|
|
271
|
+
- Router invalidation after saves
|
|
272
|
+
- Tracks saving state per item to prevent double-saves
|
|
273
|
+
|
|
274
|
+
#### Tab 3: Playground
|
|
275
|
+
|
|
276
|
+
**Location:** [apps/main/src/routes/_authed/_app/agents/-components/agent-runtime-playground.tsx](../apps/main/src/routes/_authed/_app/agents/-components/agent-runtime-playground.tsx)
|
|
277
|
+
|
|
278
|
+
**Purpose:** Test template execution against submissions and inspect results
|
|
279
|
+
|
|
280
|
+
**Features:**
|
|
281
|
+
|
|
282
|
+
**Execution Panel (Top):**
|
|
283
|
+
- Template selection dropdown
|
|
284
|
+
- Input submissions selector:
|
|
285
|
+
- Grouped by form (when template requires multiple input forms)
|
|
286
|
+
- Checkbox selection (supports multiple submissions)
|
|
287
|
+
- Shows submission name or truncated ID
|
|
288
|
+
- Badge display of selected submissions with remove buttons
|
|
289
|
+
- "Run" button (executes template)
|
|
290
|
+
- "Refresh" button (reloads run list)
|
|
291
|
+
- Error display alert
|
|
292
|
+
|
|
293
|
+
**Final Output Display:**
|
|
294
|
+
- Shows when a run completes successfully
|
|
295
|
+
- Displays final step output submission link
|
|
296
|
+
- Shows output data preview (expandable JSON)
|
|
297
|
+
- "View Final Submission" link
|
|
298
|
+
|
|
299
|
+
**Recent Runs Panel (Bottom Left):**
|
|
300
|
+
- List of recent runs (up to 50, configurable)
|
|
301
|
+
- Status filter dropdown (All, Completed, Failed, Running, Pending)
|
|
302
|
+
- Per-run display:
|
|
303
|
+
- Truncated run ID (first 8 chars)
|
|
304
|
+
- Status badge (color-coded)
|
|
305
|
+
- Relative timestamp
|
|
306
|
+
- Click to load timeline details
|
|
307
|
+
- Selected run highlighted
|
|
308
|
+
|
|
309
|
+
**Run Timeline Panel (Bottom Right):**
|
|
310
|
+
- Displays detailed step-by-step execution view
|
|
311
|
+
- Per-step display:
|
|
312
|
+
- Status badge
|
|
313
|
+
- Step name
|
|
314
|
+
- Input submission link(s) - supports multiple
|
|
315
|
+
- Output submission link
|
|
316
|
+
- Output data preview (collapsible JSON)
|
|
317
|
+
- Reasoning text
|
|
318
|
+
- Tool calls (collapsible list with latency)
|
|
319
|
+
- Error messages (if failed)
|
|
320
|
+
- Artifacts section (if any produced):
|
|
321
|
+
- Artifact title, type badge
|
|
322
|
+
- Content viewer (collapsible JSON)
|
|
323
|
+
- Empty state when no run selected
|
|
324
|
+
|
|
325
|
+
**Flow:**
|
|
326
|
+
1. User selects template
|
|
327
|
+
2. UI shows eligible submissions grouped by required form(s)
|
|
328
|
+
3. User selects one or more submissions via checkboxes
|
|
329
|
+
4. User clicks "Run"
|
|
330
|
+
5. System executes template via `executeAgentTemplateFn`
|
|
331
|
+
6. Run appears in "Recent Runs" list
|
|
332
|
+
7. Timeline auto-loads for the new run
|
|
333
|
+
8. User can click any run to inspect its timeline
|
|
334
|
+
|
|
335
|
+
### Template Creator Component
|
|
336
|
+
|
|
337
|
+
**Location:** [apps/main/src/routes/_authed/_app/agents/-components/agent-template-creator.tsx](../apps/main/src/routes/_authed/_app/agents/-components/agent-template-creator.tsx)
|
|
338
|
+
|
|
339
|
+
**Purpose:** Form-based template creation (alternative to chat interface - not currently used in main UI)
|
|
340
|
+
|
|
341
|
+
**Features:**
|
|
342
|
+
- Template name input
|
|
343
|
+
- Template description textarea
|
|
344
|
+
- Step 1 prompt textarea
|
|
345
|
+
- Input form dropdown
|
|
346
|
+
- Output form dropdown
|
|
347
|
+
- "Create Template" button
|
|
348
|
+
- Error display
|
|
349
|
+
|
|
350
|
+
**Note:** This component exists but is not currently integrated into the main config page. The chat-based creation (Tab 1) is the primary interface.
|
|
351
|
+
|
|
352
|
+
## Data Flow
|
|
353
|
+
|
|
354
|
+
### Template Creation Flow
|
|
355
|
+
|
|
356
|
+
**Via Chat Interface (Tab 1):**
|
|
357
|
+
1. User sends message describing desired template
|
|
358
|
+
2. System processes via chat endpoint
|
|
359
|
+
3. LLM generates template structure
|
|
360
|
+
4. `createAgentTemplateFn` creates:
|
|
361
|
+
- `agent_template` record
|
|
362
|
+
- `agent_template_step` record(s)
|
|
363
|
+
- `agent_template_version` record (with full definition)
|
|
364
|
+
5. Conversation's `activeTemplateId` and `executionMode` updated to "task"
|
|
365
|
+
6. Router invalidates, UI refreshes
|
|
366
|
+
|
|
367
|
+
**Via Direct Form (AgentTemplateCreator component):**
|
|
368
|
+
1. User fills form fields
|
|
369
|
+
2. `createAgentTemplateFn` called with:
|
|
370
|
+
- `conversationId`
|
|
371
|
+
- `name`, `description`
|
|
372
|
+
- `inputFormId`, `outputFormId`
|
|
373
|
+
- `stepPrompt`
|
|
374
|
+
3. Creates single-step template in transaction:
|
|
375
|
+
- `agent_template` with metadata `{ createdBy: "config_ui" }`
|
|
376
|
+
- `agent_template_step` with default values
|
|
377
|
+
- `agent_template_version` with definition snapshot
|
|
378
|
+
4. Updates conversation to link template
|
|
379
|
+
5. Returns template info
|
|
380
|
+
|
|
381
|
+
### Template Execution Flow
|
|
382
|
+
|
|
383
|
+
**Trigger:** User clicks "Run" in Playground
|
|
384
|
+
|
|
385
|
+
**Process:**
|
|
386
|
+
1. **Validation**
|
|
387
|
+
- Validate template exists and is active
|
|
388
|
+
- Validate all input submissions exist and belong to organization
|
|
389
|
+
|
|
390
|
+
2. **Run Initialization** (`createAgentRun`)
|
|
391
|
+
- Create `agent_run` record with status "pending"
|
|
392
|
+
- Update status to "running"
|
|
393
|
+
|
|
394
|
+
3. **Input Merging** (if multiple submissions)
|
|
395
|
+
- If template has multiple input submissions for first step
|
|
396
|
+
- Create merged submission combining all inputs via `createMergedSubmission`
|
|
397
|
+
- Copies all groups and items from source submissions
|
|
398
|
+
- Uses "merged" as `source_type` for item versions
|
|
399
|
+
|
|
400
|
+
4. **Step Iteration** (for each step in order)
|
|
401
|
+
|
|
402
|
+
a. **Output Submission Creation**
|
|
403
|
+
- Create output submission with type "transformation"
|
|
404
|
+
- Name format: `{template.name} • {step.name}`
|
|
405
|
+
|
|
406
|
+
b. **Run Step Creation** (`createAgentRunStep`)
|
|
407
|
+
- Create `agent_run_step` record
|
|
408
|
+
- Link input submission (from previous step if `dependsOn` set, else original)
|
|
409
|
+
- Link output submission
|
|
410
|
+
- Store step config in `input` JSONB
|
|
411
|
+
- Status starts as "pending"
|
|
412
|
+
|
|
413
|
+
c. **Step Execution** (via configurable `runStepExecutor`)
|
|
414
|
+
- Update step status to "running"
|
|
415
|
+
- Execute step logic (LLM call, transformations, etc.)
|
|
416
|
+
- Returns `StepExecutionResult` containing:
|
|
417
|
+
- `status`: "completed", "failed", or "skipped"
|
|
418
|
+
- `reasoning`: Optional LLM reasoning
|
|
419
|
+
- `error`: Optional error message
|
|
420
|
+
- `output.data`: Structured output data
|
|
421
|
+
- `toolCalls[]`: List of tool invocations
|
|
422
|
+
- `transformations[]`: List of data transformations
|
|
423
|
+
- `artifacts[]`: Generated artifacts (charts, tables, etc.)
|
|
424
|
+
|
|
425
|
+
d. **Tool Call Logging**
|
|
426
|
+
- For each tool call in result
|
|
427
|
+
- Create `agent_tool_call` record with args, result, latency
|
|
428
|
+
|
|
429
|
+
e. **Transformation Processing**
|
|
430
|
+
- Get selected input versions from input submission
|
|
431
|
+
- For each transformation:
|
|
432
|
+
- Create `agent_transformation` record
|
|
433
|
+
- Persist output data via `upsertTransformationOutputVersions`:
|
|
434
|
+
- Maps output data to form fields
|
|
435
|
+
- Creates submission groups if needed
|
|
436
|
+
- Creates submission items if needed
|
|
437
|
+
- Creates `submission_item_version` records with:
|
|
438
|
+
- `source_type`: "transformation"
|
|
439
|
+
- `source_id`: transformation ID
|
|
440
|
+
- `selected`: true
|
|
441
|
+
- Deselects previous versions for same items
|
|
442
|
+
|
|
443
|
+
f. **Artifact Creation**
|
|
444
|
+
- For each artifact in result
|
|
445
|
+
- Create `agent_artifact` record
|
|
446
|
+
- Optionally mirror to conversation memory (legacy format)
|
|
447
|
+
|
|
448
|
+
g. **Step Finalization**
|
|
449
|
+
- Update step status to final state (completed/failed/skipped)
|
|
450
|
+
- Store reasoning, error, output
|
|
451
|
+
- Record output submission ID for next step
|
|
452
|
+
- If failed, mark entire run as failed and stop
|
|
453
|
+
|
|
454
|
+
h. **Error Handling**
|
|
455
|
+
- Catch any exceptions during step execution
|
|
456
|
+
- Update step and run status to "failed"
|
|
457
|
+
- Store detailed error messages
|
|
458
|
+
- Stop execution (no subsequent steps run)
|
|
459
|
+
|
|
460
|
+
5. **Run Completion**
|
|
461
|
+
- If all steps succeed, mark run as "completed"
|
|
462
|
+
- Otherwise, run remains in "failed" state
|
|
463
|
+
- Return run ID and final status
|
|
464
|
+
|
|
465
|
+
### Data Transformation Flow
|
|
466
|
+
|
|
467
|
+
**Purpose:** Map data from input submission to output submission structure
|
|
468
|
+
|
|
469
|
+
**Process:**
|
|
470
|
+
1. **Parse Output Data**
|
|
471
|
+
- Output data is a nested object: `{ [groupName]: groupData }`
|
|
472
|
+
- `groupData` can be:
|
|
473
|
+
- Single group: `{ [fieldName]: { value, refId? } }`
|
|
474
|
+
- Multi group: `[{ [fieldName]: { value, refId? } }, ...]`
|
|
475
|
+
|
|
476
|
+
2. **Map to Form Structure**
|
|
477
|
+
- Load output form's groups and fields
|
|
478
|
+
- Match output data by `groupName:fieldName`
|
|
479
|
+
- Build map of required submission items:
|
|
480
|
+
- `(formGroupId, groupOrder, formFieldId)` → `{ value, refId? }`
|
|
481
|
+
|
|
482
|
+
3. **Create/Update Submission Groups**
|
|
483
|
+
- For each unique `(formGroupId, groupOrder)`:
|
|
484
|
+
- Check if `submission_group` exists
|
|
485
|
+
- Create if missing
|
|
486
|
+
|
|
487
|
+
4. **Create/Update Submission Items**
|
|
488
|
+
- For each unique `(submissionGroupId, formFieldId)`:
|
|
489
|
+
- Check if `submission_item` exists
|
|
490
|
+
- Create if missing
|
|
491
|
+
|
|
492
|
+
5. **Create Item Versions**
|
|
493
|
+
- For each item value:
|
|
494
|
+
- Deselect previous versions for this item
|
|
495
|
+
- Create new `submission_item_version`:
|
|
496
|
+
- `source_type`: "transformation"
|
|
497
|
+
- `source_id`: transformation ID
|
|
498
|
+
- `value`: normalized value (string or number)
|
|
499
|
+
- `selected`: true
|
|
500
|
+
- Track `refId` if provided (links back to input data)
|
|
501
|
+
|
|
502
|
+
6. **Return Results**
|
|
503
|
+
- List of created output version IDs
|
|
504
|
+
- List of referenced input version IDs
|
|
505
|
+
|
|
506
|
+
## API Functions
|
|
507
|
+
|
|
508
|
+
### Server Functions (apps/main/src/routes/_authed/_app/agents/-fns.ts)
|
|
509
|
+
|
|
510
|
+
#### Template Management
|
|
511
|
+
- `createAgentTemplateFn`: Create new template (single step)
|
|
512
|
+
- `updateAgentTemplateFn`: Update template name/description
|
|
513
|
+
- `updateAgentTemplateStepFn`: Update step configuration
|
|
514
|
+
- `executeAgentTemplateFn`: Execute template against submissions
|
|
515
|
+
|
|
516
|
+
#### Run Management
|
|
517
|
+
- `getAgentConversationRunsFn`: Get runs for conversation
|
|
518
|
+
- `getAgentRunTimelineFn`: Get detailed run timeline with steps, tools, transformations
|
|
519
|
+
|
|
520
|
+
#### Configuration
|
|
521
|
+
- `getAgentConfigDataFn`: Load config page data (tools, templates, forms, submissions)
|
|
522
|
+
- `getAgentToolsFn`: Get tool configurations
|
|
523
|
+
- `updateToolDescriptionFn`: Update custom tool description
|
|
524
|
+
|
|
525
|
+
#### Conversation Management
|
|
526
|
+
- `createAgentFn`: Create new agent conversation
|
|
527
|
+
- `getAgentConversationsFn`: Get all agent conversations
|
|
528
|
+
- `getAgentDataFn`: Get agent conversation with messages and context
|
|
529
|
+
- `renameAgentFn`: Rename conversation
|
|
530
|
+
- `deleteAgentFn`: Soft delete conversation
|
|
531
|
+
|
|
532
|
+
#### Context Management
|
|
533
|
+
- `getRelevantSubmissionsFn`: Get relevant submissions for context
|
|
534
|
+
- `getRecentItemsFn`: Get recent deals/submissions/forms (for "Add to Context")
|
|
535
|
+
- `addToContextFn`: Add item to conversation memory
|
|
536
|
+
- `deleteContextFn`: Remove item from conversation memory
|
|
537
|
+
- `deleteArtifactFn`: Remove artifact from conversation memory
|
|
538
|
+
|
|
539
|
+
#### Document Management
|
|
540
|
+
- `insertDocumentAgentFn`: Create document and extraction records
|
|
541
|
+
- `uploadDocumentAgentFn`: Upload document and trigger extraction workflow
|
|
542
|
+
|
|
543
|
+
#### Citations
|
|
544
|
+
- `getCitations`: Get citations by IDs with extraction info
|
|
545
|
+
- `extractCitationIds`: Extract citation IDs from messages (supports old `[citation:ID]` and new `<cite data-id="ID">` formats)
|
|
546
|
+
|
|
547
|
+
### DAL Functions (libs/dal/src/agent-runtime.ts)
|
|
548
|
+
|
|
549
|
+
#### Runtime Queries
|
|
550
|
+
- `getRuntimeSubmission`: Get submission for runtime (with org validation)
|
|
551
|
+
- `getConversationRuns`: Get runs for conversation (paginated)
|
|
552
|
+
- `getRunTimeline`: Get full run with steps, tool calls, transformations, artifacts
|
|
553
|
+
|
|
554
|
+
#### Run Management
|
|
555
|
+
- `createAgentRun`: Create new run record
|
|
556
|
+
- `updateAgentRunStatus`: Update run status (pending → running → completed/failed/cancelled)
|
|
557
|
+
- `createAgentRunStep`: Create step record
|
|
558
|
+
- `updateAgentRunStepStatus`: Update step status
|
|
559
|
+
|
|
560
|
+
#### Template Queries
|
|
561
|
+
- `getAgentTemplateWithSteps`: Get template with ordered steps
|
|
562
|
+
|
|
563
|
+
#### Data Operations
|
|
564
|
+
- `createTypedSubmission`: Create submission with specific type
|
|
565
|
+
- `createMergedSubmission`: Create submission by merging multiple sources
|
|
566
|
+
- `getOutputFieldTargets`: Get form field targets for output mapping
|
|
567
|
+
- `getOutputFormGroups`: Get form groups with fields for output
|
|
568
|
+
- `getSelectedSubmissionItemVersionIds`: Get currently selected version IDs
|
|
569
|
+
|
|
570
|
+
#### Transformation & Logging
|
|
571
|
+
- `createTransformation`: Create transformation record
|
|
572
|
+
- `upsertTransformationOutputVersions`: Persist transformation outputs to submission
|
|
573
|
+
- `logAgentToolCall`: Log tool call with args, result, latency
|
|
574
|
+
- `createAgentArtifact`: Create artifact and optionally mirror to conversation memory
|
|
575
|
+
|
|
576
|
+
### Core Execution (libs/core/src/agents/execute-template.ts)
|
|
577
|
+
|
|
578
|
+
#### `createExecuteTemplate({ runStepExecutor? })`
|
|
579
|
+
|
|
580
|
+
Factory function that creates a template executor with customizable step execution logic.
|
|
581
|
+
|
|
582
|
+
**Parameters:**
|
|
583
|
+
- `runStepExecutor`: Optional function to execute individual steps (defaults to skip-all executor)
|
|
584
|
+
|
|
585
|
+
**Returns:** `executeTemplate` function
|
|
586
|
+
|
|
587
|
+
#### `executeTemplate({ member, input })`
|
|
588
|
+
|
|
589
|
+
Main orchestration function that coordinates the full template execution flow.
|
|
590
|
+
|
|
591
|
+
**Parameters:**
|
|
592
|
+
- `member`: Member performing the execution
|
|
593
|
+
- `input`: `ExecuteTemplateInput` with:
|
|
594
|
+
- `conversationId`
|
|
595
|
+
- `templateId`
|
|
596
|
+
- `inputSubmissionId` (or `inputSubmissionIds` for multiple)
|
|
597
|
+
- `triggerType` (default: "manual")
|
|
598
|
+
|
|
599
|
+
**Returns:** `ExecuteTemplateResult`
|
|
600
|
+
- On success: `{ ok: true, code: 200, data: { runId, status } }`
|
|
601
|
+
- On error: `{ ok: false, code: 404|500, error: "message" }`
|
|
602
|
+
|
|
603
|
+
**Process:** (See "Template Execution Flow" above for details)
|
|
604
|
+
|
|
605
|
+
#### `RunStepExecutor` Interface
|
|
606
|
+
|
|
607
|
+
Custom step executors must implement this interface:
|
|
608
|
+
|
|
609
|
+
```typescript
|
|
610
|
+
type RunStepExecutor = (input: RunStepExecutorInput) => Promise<StepExecutionResult>;
|
|
611
|
+
|
|
612
|
+
type RunStepExecutorInput = {
|
|
613
|
+
member: Member;
|
|
614
|
+
runId: string;
|
|
615
|
+
runStepId: string;
|
|
616
|
+
step: {
|
|
617
|
+
id: string;
|
|
618
|
+
stepKey: string;
|
|
619
|
+
stepOrder: number;
|
|
620
|
+
name: string;
|
|
621
|
+
description: string;
|
|
622
|
+
prompt: string;
|
|
623
|
+
outputKey: string;
|
|
624
|
+
toolsAllowed: string[];
|
|
625
|
+
parentStepId: string | null; // Updated: parent step reference
|
|
626
|
+
outputFormId: string;
|
|
627
|
+
};
|
|
628
|
+
inputSubmissionId: string; // NOTE: Derived from parent step or run input
|
|
629
|
+
outputSubmissionId: string;
|
|
630
|
+
outputFormGroups: FormGroupHydrated[];
|
|
631
|
+
tools?: Record<string, unknown>; // Filtered tools if toolsAllowed specified
|
|
632
|
+
};
|
|
633
|
+
|
|
634
|
+
type StepExecutionResult = {
|
|
635
|
+
status: "completed" | "failed" | "skipped";
|
|
636
|
+
reasoning?: string;
|
|
637
|
+
error?: string;
|
|
638
|
+
output?: { data: OutputData };
|
|
639
|
+
toolCalls?: ToolCallLog[];
|
|
640
|
+
transformations?: TransformationLog[];
|
|
641
|
+
artifacts?: ArtifactOutput[];
|
|
642
|
+
};
|
|
643
|
+
|
|
644
|
+
// NOTE: This interface shows the intended design but code needs updating to match new schema
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
## Incomplete Features & TODOs
|
|
648
|
+
|
|
649
|
+
### High Priority
|
|
650
|
+
|
|
651
|
+
1. **Multi-Step Template Creation**
|
|
652
|
+
- Current: Chat interface and form only create single-step templates
|
|
653
|
+
- Schema supports: Multiple steps with parent-child relationships via `parent_step_id`
|
|
654
|
+
- **TODO:** Build UI for creating templates with multiple steps
|
|
655
|
+
- Requires:
|
|
656
|
+
- Step sequence builder
|
|
657
|
+
- Parent step selection for dependencies
|
|
658
|
+
- Output → Input form compatibility validation
|
|
659
|
+
- Locations:
|
|
660
|
+
- Form creator: [apps/main/src/routes/_authed/_app/agents/-components/agent-template-creator.tsx](../apps/main/src/routes/_authed/_app/agents/-components/agent-template-creator.tsx)
|
|
661
|
+
- Server function: [apps/main/src/routes/_authed/_app/agents/-fns.ts:613-722](../apps/main/src/routes/_authed/_app/agents/-fns.ts#L613-722)
|
|
662
|
+
|
|
663
|
+
2. **Tool Selection per Step**
|
|
664
|
+
- Schema supports: `tools_allowed` array to restrict tools per step (empty = all allowed)
|
|
665
|
+
- UI limitation: Only shows current tools in read-only mode
|
|
666
|
+
- **TODO:** Implement UI for selecting/deselecting allowed tools per step
|
|
667
|
+
- Locations:
|
|
668
|
+
- Schema: [libs/db/src/schemas/conversations.ts:130](../libs/db/src/schemas/conversations.ts#L130)
|
|
669
|
+
- UI: [apps/main/src/routes/_authed/_app/agents/$agentId/config.tsx:482-490](../apps/main/src/routes/_authed/_app/agents/$agentId/config.tsx#L482-490)
|
|
670
|
+
|
|
671
|
+
3. **Template Versioning UI**
|
|
672
|
+
- Schema exists: `agent_template_version` table with `definition` snapshots
|
|
673
|
+
- Runtime support: Runs link to `template_version_id`
|
|
674
|
+
- UI missing: No version history, no version selection, no diff viewer
|
|
675
|
+
- **TODO:** Implement version management UI (lower priority)
|
|
676
|
+
- Intended behavior:
|
|
677
|
+
- Each template has an "active version" pointer
|
|
678
|
+
- Runs link to specific template version
|
|
679
|
+
- Allows template evolution without breaking historical runs
|
|
680
|
+
- Location: [libs/db/src/schemas/conversations.ts:147-165](../libs/db/src/schemas/conversations.ts#L147-165)
|
|
681
|
+
|
|
682
|
+
### Medium Priority
|
|
683
|
+
|
|
684
|
+
4. **Execution Layer Updates for New Schema**
|
|
685
|
+
- **Current:** Code still references old schema fields (`inputSubmissionId`, `inputSubmissionIds`, `dependsOn` array)
|
|
686
|
+
- **TODO:** Update execution layer to use new parent-child model
|
|
687
|
+
- Changes needed:
|
|
688
|
+
- Remove `inputSubmissionId`/`inputSubmissionIds` parameters
|
|
689
|
+
- Derive input from parent step's output submission
|
|
690
|
+
- Update step dependency resolution to use `parent_step_id`
|
|
691
|
+
- Fix `pickStepInputSubmissionId` logic
|
|
692
|
+
- Locations:
|
|
693
|
+
- Core execution: [libs/core/src/agents/execute-template.ts](../libs/core/src/agents/execute-template.ts)
|
|
694
|
+
- DAL functions: [libs/dal/src/agent-runtime.ts](../libs/dal/src/agent-runtime.ts)
|
|
695
|
+
- Type definitions: [libs/schemas/src/core/agent-runtime.ts](../libs/schemas/src/core/agent-runtime.ts)
|
|
696
|
+
|
|
697
|
+
5. **Automated Template Triggers**
|
|
698
|
+
- Schema supports: `trigger_type` field on runs
|
|
699
|
+
- Currently only: "manual" triggers via playground
|
|
700
|
+
- **TODO:** Implement automated triggers (e.g., on submission creation, on deal update)
|
|
701
|
+
- Potential trigger types: "on_submission_created", "on_submission_updated", "scheduled"
|
|
702
|
+
- Location: [libs/db/src/schemas/conversations.ts:295](../libs/db/src/schemas/conversations.ts#L295)
|
|
703
|
+
|
|
704
|
+
6. **Retry Policies**
|
|
705
|
+
- Schema exists: `retry_policy` JSONB on template steps
|
|
706
|
+
- Not implemented: No retry logic in execution layer
|
|
707
|
+
- **TODO:** Implement step retry on failure with configurable policies
|
|
708
|
+
- Would use `agent_run_step.attempt` field to track retry attempts
|
|
709
|
+
- Location: [libs/db/src/schemas/conversations.ts:131](../libs/db/src/schemas/conversations.ts#L131)
|
|
710
|
+
|
|
711
|
+
### Low Priority / Nice-to-Have
|
|
712
|
+
|
|
713
|
+
7. **Template Execution Metrics**
|
|
714
|
+
- Partial: Step `duration_ms` and tool `latency_ms` tracked
|
|
715
|
+
- **TODO:** Aggregate metrics, percentiles, success rates, cost tracking
|
|
716
|
+
- Potential: Dashboard view of template performance over time
|
|
717
|
+
|
|
718
|
+
8. **Template Marketplace / Sharing**
|
|
719
|
+
- Schema supports: `is_system` flag for system-provided templates
|
|
720
|
+
- **TODO:** System templates library, import/export, template sharing
|
|
721
|
+
|
|
722
|
+
9. **Visual Step Builder**
|
|
723
|
+
- Current: Text-based step configuration
|
|
724
|
+
- **TODO:** Drag-and-drop step builder with visual dependency graph
|
|
725
|
+
- Would visualize `parent_step_id` relationships as a flowchart
|
|
726
|
+
|
|
727
|
+
### Known Issues
|
|
728
|
+
|
|
729
|
+
10. **Model Configuration Cleanup**
|
|
730
|
+
- Location: [apps/main/src/routes/_authed/_app/agents/-fns.ts:239](../apps/main/src/routes/_authed/_app/agents/-fns.ts#L239)
|
|
731
|
+
- Comment: `// TODO: remove this nonsense once we merge all the models we use`
|
|
732
|
+
- Issue: Model configuration handling needs cleanup/consolidation
|
|
733
|
+
|
|
734
|
+
11. **Schema-Code Mismatch**
|
|
735
|
+
- **Critical:** Execution code not yet updated for new schema
|
|
736
|
+
- Old code references removed fields: `inputFormId`, `inputFormIds`, `dependsOn`, `inputSubmissionId`, `inputSubmissionIds`
|
|
737
|
+
- New schema uses: template-level `input_form_id`, step `parent_step_id`, parent's output as input
|
|
738
|
+
- **Impact:** Template execution will fail until code is updated
|
|
739
|
+
- **Action Required:** Update all execution layer code to match new schema
|
|
740
|
+
|
|
741
|
+
## Key Design Patterns
|
|
742
|
+
|
|
743
|
+
### 1. DalResult Pattern
|
|
744
|
+
All DAL functions return `DalResult<T>`:
|
|
745
|
+
```typescript
|
|
746
|
+
type DalResult<T> =
|
|
747
|
+
| { ok: true; data: T }
|
|
748
|
+
| { ok: false; error: string }
|
|
749
|
+
```
|
|
750
|
+
Enables consistent error handling and type-safe unwrapping.
|
|
751
|
+
|
|
752
|
+
### 2. Separation of Concerns
|
|
753
|
+
- **UI Layer** (apps/main): React components, routing, user interaction
|
|
754
|
+
- **API Layer** (apps/main/-fns.ts): Server functions with auth middleware
|
|
755
|
+
- **DAL Layer** (libs/dal): Database queries with organization-scoped access
|
|
756
|
+
- **Core Layer** (libs/core): Business logic, template execution orchestration
|
|
757
|
+
- **Schema Layer** (libs/schemas): Type definitions and validation
|
|
758
|
+
|
|
759
|
+
### 3. Template Execution Flexibility
|
|
760
|
+
The `createExecuteTemplate` factory allows customizing step execution logic while reusing orchestration:
|
|
761
|
+
- Core handles: run creation, step iteration, error handling, status updates
|
|
762
|
+
- Custom executor handles: actual AI/LLM logic, tool calling, data transformation
|
|
763
|
+
|
|
764
|
+
### 4. Optimistic UI Updates
|
|
765
|
+
Config page uses local state for edits, only persisting on explicit save:
|
|
766
|
+
- Reduces API calls
|
|
767
|
+
- Provides instant feedback
|
|
768
|
+
- Shows "modified" state clearly
|
|
769
|
+
- Prevents accidental changes
|
|
770
|
+
|
|
771
|
+
### 5. Multi-Input Support
|
|
772
|
+
System supports multiple input submissions:
|
|
773
|
+
- First step merges inputs if multiple provided
|
|
774
|
+
- Subsequent steps use previous step's output (via `dependsOn`)
|
|
775
|
+
- Maintains provenance via `refId` in output values
|
|
776
|
+
|
|
777
|
+
## Testing & Debugging
|
|
778
|
+
|
|
779
|
+
### Playground Testing Flow
|
|
780
|
+
1. Navigate to `/agents/{id}/config` → Playground tab
|
|
781
|
+
2. Select template from dropdown
|
|
782
|
+
3. Select input submissions (grouped by required forms)
|
|
783
|
+
4. Click "Run" → observe run creation
|
|
784
|
+
5. Check "Recent Runs" panel for new run
|
|
785
|
+
6. Click run → observe timeline with steps
|
|
786
|
+
7. Inspect step details: inputs, outputs, tool calls, errors
|
|
787
|
+
8. Click submission links to verify data transformations
|
|
788
|
+
|
|
789
|
+
### Debugging Failed Runs
|
|
790
|
+
1. Check run status in "Recent Runs" (red badge for failed)
|
|
791
|
+
2. Load timeline to see which step failed
|
|
792
|
+
3. Review step's `error` field for details
|
|
793
|
+
4. Check `reasoning` for LLM's explanation
|
|
794
|
+
5. Inspect tool calls for failed tool invocations
|
|
795
|
+
6. Verify input submission data structure matches expected form
|
|
796
|
+
7. Check output form field mappings in `upsertTransformationOutputVersions`
|
|
797
|
+
|
|
798
|
+
### Database Inspection
|
|
799
|
+
```sql
|
|
800
|
+
-- Get run with all steps
|
|
801
|
+
SELECT r.id, r.status, r.created_at,
|
|
802
|
+
s.step_order, s.name, s.status, s.error
|
|
803
|
+
FROM agent_run r
|
|
804
|
+
LEFT JOIN agent_run_step s ON s.run_id = r.id
|
|
805
|
+
WHERE r.id = 'run-id'
|
|
806
|
+
ORDER BY s.step_order;
|
|
807
|
+
|
|
808
|
+
-- Get tool calls for a step
|
|
809
|
+
SELECT tool_name, status, latency_ms, called_at
|
|
810
|
+
FROM agent_tool_call
|
|
811
|
+
WHERE run_step_id = 'step-id'
|
|
812
|
+
ORDER BY called_at;
|
|
813
|
+
|
|
814
|
+
-- Get transformations for a step
|
|
815
|
+
SELECT kind, expression, metadata
|
|
816
|
+
FROM agent_transformation
|
|
817
|
+
WHERE run_step_id = 'step-id';
|
|
818
|
+
|
|
819
|
+
-- Get output versions created by transformation
|
|
820
|
+
SELECT siv.id, siv.value, siv.selected,
|
|
821
|
+
ff.name as field_name
|
|
822
|
+
FROM submission_item_version siv
|
|
823
|
+
JOIN submission_item si ON si.id = siv.submission_item_id
|
|
824
|
+
JOIN form_field ff ON ff.id = si.form_field_id
|
|
825
|
+
WHERE siv.source_type = 'transformation'
|
|
826
|
+
AND siv.source_id = 'transformation-id';
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
## Future Enhancements
|
|
830
|
+
|
|
831
|
+
### Short-term
|
|
832
|
+
- ✅ **DONE:** Fix `depends_on` schema (array → single `parent_step_id` FK)
|
|
833
|
+
- ✅ **DONE:** Move `input_form_id` from step to template level
|
|
834
|
+
- Update execution layer code to match new schema
|
|
835
|
+
- Implement tool selection UI
|
|
836
|
+
- Add multi-step template creation UI
|
|
837
|
+
- Improve error messages with suggested fixes
|
|
838
|
+
|
|
839
|
+
### Medium-term
|
|
840
|
+
- Template versioning UI with diff viewer
|
|
841
|
+
- Automated triggers on submission/deal events
|
|
842
|
+
- Retry policies with backoff strategies
|
|
843
|
+
- Multi-step template creation flow
|
|
844
|
+
- Visual step dependency graph
|
|
845
|
+
|
|
846
|
+
### Long-term
|
|
847
|
+
- Template marketplace with system templates
|
|
848
|
+
- Performance analytics dashboard
|
|
849
|
+
- Cost tracking per run/step
|
|
850
|
+
- Template testing framework
|
|
851
|
+
- Visual step builder with drag-and-drop
|
|
852
|
+
- Template composition (templates as steps)
|
|
853
|
+
|
|
854
|
+
## Related Documentation
|
|
855
|
+
- [CLAUDE.md](../CLAUDE.md) - Development guidelines and monorepo structure
|
|
856
|
+
- Database schema definitions: [libs/db/src/schemas/conversations.ts](../libs/db/src/schemas/conversations.ts)
|
|
857
|
+
- DAL implementation: [libs/dal/src/agent-runtime.ts](../libs/dal/src/agent-runtime.ts)
|
|
858
|
+
- Core execution: [libs/core/src/agents/execute-template.ts](../libs/core/src/agents/execute-template.ts)
|
|
859
|
+
- Schema types: [libs/schemas/src/core/agent-runtime.ts](../libs/schemas/src/core/agent-runtime.ts)
|