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.
Files changed (784) hide show
  1. package/.claude/tasks/README.md +89 -0
  2. package/.cursor/rules/commits.mdc +31 -0
  3. package/.cursor/rules/general.mdc +84 -0
  4. package/.github/workflows/ci-cd.yml +141 -0
  5. package/CLAUDE.md +337 -0
  6. package/README.md +129 -0
  7. package/apps/api/.prettierignore +6 -0
  8. package/apps/api/.prettierrc.js +3 -0
  9. package/apps/api/dotenvx-safe.sh +11 -0
  10. package/apps/api/eslint.config.mjs +3 -0
  11. package/apps/api/package.json +58 -0
  12. package/apps/api/src/clients/posthog.ts +25 -0
  13. package/apps/api/src/dal/submission.ts +59 -0
  14. package/apps/api/src/errors.ts +55 -0
  15. package/apps/api/src/index.ts +21 -0
  16. package/apps/api/src/lib/channel.ts +28 -0
  17. package/apps/api/src/lib/config.ts +9 -0
  18. package/apps/api/src/lib/fmt.test.ts +9 -0
  19. package/apps/api/src/lib/fmt.ts +62 -0
  20. package/apps/api/src/lib/invariant.ts +23 -0
  21. package/apps/api/src/middleware/auth.ts +66 -0
  22. package/apps/api/src/routes/index.ts +20 -0
  23. package/apps/api/src/routes/v2/chat/handlers.ts +693 -0
  24. package/apps/api/src/routes/v2/chat/index.ts +257 -0
  25. package/apps/api/src/routes/v2/chat/schemas.ts +43 -0
  26. package/apps/api/src/routes/v2/deals/handlers.ts +64 -0
  27. package/apps/api/src/routes/v2/deals/index.ts +88 -0
  28. package/apps/api/src/routes/v2/deals/schemas.ts +38 -0
  29. package/apps/api/src/routes/v2/forms/handlers.ts +415 -0
  30. package/apps/api/src/routes/v2/forms/index.ts +382 -0
  31. package/apps/api/src/routes/v2/forms/schemas.ts +243 -0
  32. package/apps/api/src/routes/v2/index.ts +19 -0
  33. package/apps/api/src/routes/v2/pipelines/handlers.ts +261 -0
  34. package/apps/api/src/routes/v2/pipelines/index.ts +224 -0
  35. package/apps/api/src/routes/v2/pipelines/schemas.ts +173 -0
  36. package/apps/api/src/routes/v2/submissions/handlers.ts +555 -0
  37. package/apps/api/src/routes/v2/submissions/index.ts +366 -0
  38. package/apps/api/src/routes/v2/submissions/schemas.ts +233 -0
  39. package/apps/api/src/routes/v2/workflows/handlers.ts +81 -0
  40. package/apps/api/src/routes/v2/workflows/index.ts +88 -0
  41. package/apps/api/src/routes/v2/workflows/schemas.ts +40 -0
  42. package/apps/api/src/server.ts +146 -0
  43. package/apps/api/src/static/favicon.ico +0 -0
  44. package/apps/api/src/types/api.ts +14 -0
  45. package/apps/api/src/types/result.ts +3 -0
  46. package/apps/api/tsconfig.json +22 -0
  47. package/apps/api/vite.config.ts +28 -0
  48. package/apps/api/vitest.config.ts +14 -0
  49. package/apps/conversion-worker/Dockerfile +59 -0
  50. package/apps/conversion-worker/package.json +31 -0
  51. package/apps/conversion-worker/src/lib/config.ts +7 -0
  52. package/apps/conversion-worker/src/main.ts +22 -0
  53. package/apps/conversion-worker/src/workflows/convert-pptx.ts +116 -0
  54. package/apps/conversion-worker/tsconfig.json +27 -0
  55. package/apps/conversion-worker/vite.config.ts +33 -0
  56. package/apps/main/.prettierignore +6 -0
  57. package/apps/main/.prettierrc.js +3 -0
  58. package/apps/main/CLAUDE.md +245 -0
  59. package/apps/main/Procfile +1 -0
  60. package/apps/main/README.md +193 -0
  61. package/apps/main/db-tests.jsonl +116 -0
  62. package/apps/main/dotenvx-safe.sh +11 -0
  63. package/apps/main/drizzle/meta/_journal.json +1 -0
  64. package/apps/main/drizzle.config.ts +25 -0
  65. package/apps/main/eslint.config.mjs +3 -0
  66. package/apps/main/generate-routes.mjs +5 -0
  67. package/apps/main/package.json +131 -0
  68. package/apps/main/playwright.config.ts +23 -0
  69. package/apps/main/postcss.config.ts +5 -0
  70. package/apps/main/public/bg-dark.svg +10 -0
  71. package/apps/main/public/bg.svg +10 -0
  72. package/apps/main/public/favicon.ico +0 -0
  73. package/apps/main/run.sh +146 -0
  74. package/apps/main/scripts/browser.ts +14 -0
  75. package/apps/main/scripts/db-test-cov.ts +277 -0
  76. package/apps/main/scripts/login.ts +78 -0
  77. package/apps/main/scripts/repl.ts +61 -0
  78. package/apps/main/src/_foo.ts +31 -0
  79. package/apps/main/src/_tests/db.test.ts +19 -0
  80. package/apps/main/src/_tests/mock-db.ts +60 -0
  81. package/apps/main/src/client.tsx +13 -0
  82. package/apps/main/src/clients/loops.ts +13 -0
  83. package/apps/main/src/clients/polar.ts +12 -0
  84. package/apps/main/src/clients/posthog.ts +12 -0
  85. package/apps/main/src/components/chat/chat-context.tsx +99 -0
  86. package/apps/main/src/components/chat/chat-messages.tsx +184 -0
  87. package/apps/main/src/components/chat/chat-status.tsx +140 -0
  88. package/apps/main/src/components/chat/chat.tsx +458 -0
  89. package/apps/main/src/components/chat/citation-modal.tsx +54 -0
  90. package/apps/main/src/components/cta.tsx +21 -0
  91. package/apps/main/src/components/data-display/derived.tsx +40 -0
  92. package/apps/main/src/components/data-display/group-single.tsx +57 -0
  93. package/apps/main/src/components/data-display/group-table.tsx +165 -0
  94. package/apps/main/src/components/data-display/group-wrapper.tsx +54 -0
  95. package/apps/main/src/components/data-display/item.tsx +678 -0
  96. package/apps/main/src/components/error.tsx +45 -0
  97. package/apps/main/src/components/forms/error.tsx +22 -0
  98. package/apps/main/src/components/grid.tsx +7 -0
  99. package/apps/main/src/components/header/container.tsx +73 -0
  100. package/apps/main/src/components/header/header-bar.tsx +102 -0
  101. package/apps/main/src/components/modals/copy-display.tsx +37 -0
  102. package/apps/main/src/components/modals/copy-form.tsx +152 -0
  103. package/apps/main/src/components/modals/duplicate-workflow.tsx +89 -0
  104. package/apps/main/src/components/modals/field-correction.tsx +323 -0
  105. package/apps/main/src/components/modals/form-viewer.tsx +126 -0
  106. package/apps/main/src/components/modals/modals.tsx +44 -0
  107. package/apps/main/src/components/modals/new-deal.tsx +78 -0
  108. package/apps/main/src/components/modals/new-form.tsx +133 -0
  109. package/apps/main/src/components/modals/new-pipeline.tsx +70 -0
  110. package/apps/main/src/components/modals/new-submission.tsx +321 -0
  111. package/apps/main/src/components/modals/new-workflow.tsx +342 -0
  112. package/apps/main/src/components/modals/transformation-sources-modal.tsx +157 -0
  113. package/apps/main/src/components/modals/view-report.tsx +193 -0
  114. package/apps/main/src/components/not-found.tsx +14 -0
  115. package/apps/main/src/components/search/search-bar.tsx +178 -0
  116. package/apps/main/src/components/sheet-selector.tsx +135 -0
  117. package/apps/main/src/components/side-panel/doc-list.tsx +480 -0
  118. package/apps/main/src/components/sidebar/admin-sidebar.tsx +75 -0
  119. package/apps/main/src/components/sidebar/app-sidebar.tsx +417 -0
  120. package/apps/main/src/components/sidebar/model-select.tsx +134 -0
  121. package/apps/main/src/components/sidebar/settings-sidebar.tsx +132 -0
  122. package/apps/main/src/components/sidebar/sidebar-right.tsx +22 -0
  123. package/apps/main/src/components/sidebar/stop-impersonate.tsx +21 -0
  124. package/apps/main/src/components/svg/loading.tsx +33 -0
  125. package/apps/main/src/components/theme-selector.tsx +43 -0
  126. package/apps/main/src/components/unsaved-badge.tsx +19 -0
  127. package/apps/main/src/components/upload/file-upload.tsx +354 -0
  128. package/apps/main/src/fns/submission-groups.ts +28 -0
  129. package/apps/main/src/fns/submission-items.ts +11 -0
  130. package/apps/main/src/global-middleware.ts +16 -0
  131. package/apps/main/src/hooks/use-update-state.ts +18 -0
  132. package/apps/main/src/lib/auth-client.ts +16 -0
  133. package/apps/main/src/lib/auth.test.ts +359 -0
  134. package/apps/main/src/lib/auth.ts +144 -0
  135. package/apps/main/src/lib/billing.ts +23 -0
  136. package/apps/main/src/lib/config-iso.ts +76 -0
  137. package/apps/main/src/lib/config.ts +61 -0
  138. package/apps/main/src/lib/excel.ts +16 -0
  139. package/apps/main/src/lib/feedback-cache.ts +70 -0
  140. package/apps/main/src/lib/logger.ts +44 -0
  141. package/apps/main/src/lib/models.ts +22 -0
  142. package/apps/main/src/lib/not-found.ts +17 -0
  143. package/apps/main/src/lib/pdf.ts +16 -0
  144. package/apps/main/src/lib/tabularize.ts +54 -0
  145. package/apps/main/src/lib/utils.ts +10 -0
  146. package/apps/main/src/lib/zfd.ts +217 -0
  147. package/apps/main/src/middleware.ts +55 -0
  148. package/apps/main/src/routeTree.gen.ts +1255 -0
  149. package/apps/main/src/router.tsx +24 -0
  150. package/apps/main/src/routes/__root.tsx +92 -0
  151. package/apps/main/src/routes/_authed/_app/(dashboard)/index.tsx +227 -0
  152. package/apps/main/src/routes/_authed/_app/agents/$agentId/config.tsx +224 -0
  153. package/apps/main/src/routes/_authed/_app/agents/$agentId/index.tsx +206 -0
  154. package/apps/main/src/routes/_authed/_app/agents/-components/agent-actions-menu.tsx +94 -0
  155. package/apps/main/src/routes/_authed/_app/agents/-components/agent-artifacts.tsx +153 -0
  156. package/apps/main/src/routes/_authed/_app/agents/-components/agent-chat.tsx +220 -0
  157. package/apps/main/src/routes/_authed/_app/agents/-components/agent-history-menu.tsx +81 -0
  158. package/apps/main/src/routes/_authed/_app/agents/-components/agent-model-select.tsx +84 -0
  159. package/apps/main/src/routes/_authed/_app/agents/-components/agent-relevant-items.tsx +226 -0
  160. package/apps/main/src/routes/_authed/_app/agents/-components/agent-upload-button.tsx +298 -0
  161. package/apps/main/src/routes/_authed/_app/agents/-components/context-modal.tsx +187 -0
  162. package/apps/main/src/routes/_authed/_app/agents/-fns.ts +560 -0
  163. package/apps/main/src/routes/_authed/_app/agents/index.tsx +65 -0
  164. package/apps/main/src/routes/_authed/_app/deals/$dealId/$subId/-components/citation-tree.tsx +268 -0
  165. package/apps/main/src/routes/_authed/_app/deals/$dealId/$subId.tsx +655 -0
  166. package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/doc-loading.tsx +37 -0
  167. package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/share-link.tsx +42 -0
  168. package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/submission-card.tsx +89 -0
  169. package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/submission-filter.tsx +193 -0
  170. package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/submissions.tsx +36 -0
  171. package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/summary.tsx +82 -0
  172. package/apps/main/src/routes/_authed/_app/deals/$dealId/-components/upload-doc.tsx +120 -0
  173. package/apps/main/src/routes/_authed/_app/deals/$dealId/-fns.ts +653 -0
  174. package/apps/main/src/routes/_authed/_app/deals/$dealId/index.tsx +259 -0
  175. package/apps/main/src/routes/_authed/_app/deals/$dealId/route.tsx +29 -0
  176. package/apps/main/src/routes/_authed/_app/deals/index.tsx +104 -0
  177. package/apps/main/src/routes/_authed/_app/feedback/index.tsx +639 -0
  178. package/apps/main/src/routes/_authed/_app/feedback/insights.tsx +250 -0
  179. package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/$runId/-components/blockers-panel.tsx +260 -0
  180. package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/$runId/-components/manual-input-panel.tsx +301 -0
  181. package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/$runId/-components/submission-selector-modal.tsx +143 -0
  182. package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/$runId/-components/upload-doc.tsx +120 -0
  183. package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/$runId/index.tsx +1485 -0
  184. package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/-components/dag-view.tsx +296 -0
  185. package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/-components/step-config-modal.tsx +634 -0
  186. package/apps/main/src/routes/_authed/_app/pipelines/$pipelineId/index.tsx +911 -0
  187. package/apps/main/src/routes/_authed/_app/pipelines/-fns.ts +510 -0
  188. package/apps/main/src/routes/_authed/_app/pipelines/index.tsx +103 -0
  189. package/apps/main/src/routes/_authed/_app/reports/$reportId.tsx +397 -0
  190. package/apps/main/src/routes/_authed/_app/reports/-fns.ts +11 -0
  191. package/apps/main/src/routes/_authed/_app/reports/index.tsx +22 -0
  192. package/apps/main/src/routes/_authed/_app/route.tsx +48 -0
  193. package/apps/main/src/routes/_authed/_app/submissions/-columns.tsx +161 -0
  194. package/apps/main/src/routes/_authed/_app/submissions/-fns.ts +128 -0
  195. package/apps/main/src/routes/_authed/_app/submissions/index.tsx +190 -0
  196. package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/$formId.tsx +542 -0
  197. package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/-components/derived.tsx +154 -0
  198. package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/-components/field.tsx +369 -0
  199. package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/-components/group.tsx +475 -0
  200. package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/index.tsx +263 -0
  201. package/apps/main/src/routes/_authed/_app/workflows/$wfSlug/route.tsx +33 -0
  202. package/apps/main/src/routes/_authed/_app/workflows/-components/form-card.tsx +315 -0
  203. package/apps/main/src/routes/_authed/_app/workflows/index.tsx +86 -0
  204. package/apps/main/src/routes/_authed/admin/index.tsx +12 -0
  205. package/apps/main/src/routes/_authed/admin/route.tsx +42 -0
  206. package/apps/main/src/routes/_authed/admin/users/-columns.tsx +124 -0
  207. package/apps/main/src/routes/_authed/admin/users/-fns.ts +30 -0
  208. package/apps/main/src/routes/_authed/admin/users/index.tsx +29 -0
  209. package/apps/main/src/routes/_authed/catchNotFound.tsx +114 -0
  210. package/apps/main/src/routes/_authed/redirects/forms.$id.tsx +29 -0
  211. package/apps/main/src/routes/_authed/redirects/submissions.$id.tsx +27 -0
  212. package/apps/main/src/routes/_authed/redirects/workflows.$id.tsx +27 -0
  213. package/apps/main/src/routes/_authed/route.tsx +51 -0
  214. package/apps/main/src/routes/_authed/settings/-components/new-api-key.tsx +85 -0
  215. package/apps/main/src/routes/_authed/settings/-components/new-invite.tsx +100 -0
  216. package/apps/main/src/routes/_authed/settings/analytics.tsx +1710 -0
  217. package/apps/main/src/routes/_authed/settings/billing/-components/price-table.tsx +129 -0
  218. package/apps/main/src/routes/_authed/settings/billing/-fns.ts +76 -0
  219. package/apps/main/src/routes/_authed/settings/billing/index.tsx +119 -0
  220. package/apps/main/src/routes/_authed/settings/embed.tsx +337 -0
  221. package/apps/main/src/routes/_authed/settings/index.tsx +12 -0
  222. package/apps/main/src/routes/_authed/settings/keys.tsx +157 -0
  223. package/apps/main/src/routes/_authed/settings/members.tsx +276 -0
  224. package/apps/main/src/routes/_authed/settings/route.tsx +22 -0
  225. package/apps/main/src/routes/_authed/settings/user.tsx +87 -0
  226. package/apps/main/src/routes/_authed/settings/workspace.tsx +206 -0
  227. package/apps/main/src/routes/_public/-components/sign-in-up.tsx +96 -0
  228. package/apps/main/src/routes/_public/embedded.tsx +57 -0
  229. package/apps/main/src/routes/_public/invite.$inviteId.tsx +143 -0
  230. package/apps/main/src/routes/_public/no-access.tsx +38 -0
  231. package/apps/main/src/routes/_public/no-invite.tsx +39 -0
  232. package/apps/main/src/routes/_public/otp.tsx +103 -0
  233. package/apps/main/src/routes/_public/route.tsx +15 -0
  234. package/apps/main/src/routes/_public/sign-in.tsx +111 -0
  235. package/apps/main/src/routes/_public/sign-up.tsx +114 -0
  236. package/apps/main/src/routes/api/auth/$.ts +11 -0
  237. package/apps/main/src/routes/api/billing/paid.ts +42 -0
  238. package/apps/main/src/routes/api/billing/webhooks.ts +70 -0
  239. package/apps/main/src/routes/api/chat/agent.ts +40 -0
  240. package/apps/main/src/routes/api/chat/key.ts +42 -0
  241. package/apps/main/src/routes/api/chat/member.ts +35 -0
  242. package/apps/main/src/routes/api/test/index.ts +19 -0
  243. package/apps/main/src/server.tsx +6 -0
  244. package/apps/main/src/styles/app.css +23 -0
  245. package/apps/main/src/vite-env.d.ts +7 -0
  246. package/apps/main/test.http +6 -0
  247. package/apps/main/tsconfig.json +17 -0
  248. package/apps/main/vite.config.ts +24 -0
  249. package/apps/main/vitest.config.js +17 -0
  250. package/apps/mcp/README.md +171 -0
  251. package/apps/mcp/eslint.config.mjs +3 -0
  252. package/apps/mcp/package.json +37 -0
  253. package/apps/mcp/src/index.ts +414 -0
  254. package/apps/mcp/tsconfig.json +19 -0
  255. package/apps/mcp/vite.config.ts +22 -0
  256. package/apps/posthog-proxy/index.html +9 -0
  257. package/apps/workers/.prettierignore +7 -0
  258. package/apps/workers/.prettierrc.js +3 -0
  259. package/apps/workers/dotenvx-safe.sh +11 -0
  260. package/apps/workers/eslint.config.mjs +3 -0
  261. package/apps/workers/package.json +65 -0
  262. package/apps/workers/src/lib/config.ts +7 -0
  263. package/apps/workers/src/lib/messages.ts +0 -0
  264. package/apps/workers/src/lib/posthog.ts +25 -0
  265. package/apps/workers/src/main.ts +58 -0
  266. package/apps/workers/src/workflows/extraction.ts +866 -0
  267. package/apps/workers/src/workflows/index.ts +3 -0
  268. package/apps/workers/src/workflows/pipeline-dag.ts +210 -0
  269. package/apps/workers/src/workflows/pipeline-steps.ts +1393 -0
  270. package/apps/workers/tsconfig.json +16 -0
  271. package/apps/workers/vite.config.ts +35 -0
  272. package/docs/CHANGELOG.md +84 -0
  273. package/docs/agent-templates-and-runs.md +859 -0
  274. package/docs/aws-migration-plan.md +267 -0
  275. package/docs/impl-p0-form-builder-improvements.md +683 -0
  276. package/docs/on-prem-deployment-spec.docx +0 -0
  277. package/docs/on-prem-deployment-spec.md +378 -0
  278. package/docs/prd-form-builder-strategy.md +1120 -0
  279. package/docs/widget-ng-apf-packaging-spec.md +43 -0
  280. package/infra/k8s/charts/seadotdev/Chart.yaml +6 -0
  281. package/infra/k8s/charts/seadotdev/templates/_helpers.tpl +27 -0
  282. package/infra/k8s/charts/seadotdev/templates/api-v2.yaml +105 -0
  283. package/infra/k8s/charts/seadotdev/templates/external-secrets.yaml +83 -0
  284. package/infra/k8s/charts/seadotdev/templates/ingress.yaml +54 -0
  285. package/infra/k8s/charts/seadotdev/templates/main-app.yaml +104 -0
  286. package/infra/k8s/charts/seadotdev/templates/workers.yaml +182 -0
  287. package/infra/k8s/charts/seadotdev/values.yaml +143 -0
  288. package/infra/terraform/main.tf +399 -0
  289. package/libs/ai/.prettierignore +2 -0
  290. package/libs/ai/.prettierrc.js +5 -0
  291. package/libs/ai/README.md +139 -0
  292. package/libs/ai/eslint.config.mjs +3 -0
  293. package/libs/ai/package.json +42 -0
  294. package/libs/ai/src/index.ts +5 -0
  295. package/libs/ai/src/models.ts +19 -0
  296. package/libs/ai/src/rag/index.ts +1 -0
  297. package/libs/ai/src/rag/rag.test.ts +99 -0
  298. package/libs/ai/src/rag/rag.ts +510 -0
  299. package/libs/ai/tsconfig.json +21 -0
  300. package/libs/ai/vite.config.ts +38 -0
  301. package/libs/cache/.prettierignore +2 -0
  302. package/libs/cache/eslint.config.mjs +3 -0
  303. package/libs/cache/package.json +35 -0
  304. package/libs/cache/src/feedback.ts +77 -0
  305. package/libs/cache/src/index.ts +2 -0
  306. package/libs/cache/tsconfig.json +19 -0
  307. package/libs/cache/vite.config.ts +36 -0
  308. package/libs/clients/.prettierignore +6 -0
  309. package/libs/clients/eslint.config.mjs +3 -0
  310. package/libs/clients/package.json +59 -0
  311. package/libs/clients/src/azure.ts +249 -0
  312. package/libs/clients/src/gcp.ts +220 -0
  313. package/libs/clients/src/hatchet.ts +86 -0
  314. package/libs/clients/src/index.ts +8 -0
  315. package/libs/clients/src/loops.ts +86 -0
  316. package/libs/clients/src/polar.ts +77 -0
  317. package/libs/clients/src/posthog.ts +55 -0
  318. package/libs/clients/tsconfig.json +19 -0
  319. package/libs/clients/vite.config.ts +35 -0
  320. package/libs/config/.prettierignore +6 -0
  321. package/libs/config/.prettierrc.js +12 -0
  322. package/libs/config/eslint.config.mjs +3 -0
  323. package/libs/config/package.json +50 -0
  324. package/libs/config/src/azure.ts +54 -0
  325. package/libs/config/src/db.ts +18 -0
  326. package/libs/config/src/gcp.ts +53 -0
  327. package/libs/config/src/google.ts +17 -0
  328. package/libs/config/src/hatchet.ts +20 -0
  329. package/libs/config/src/index.ts +108 -0
  330. package/libs/config/src/llm.ts +17 -0
  331. package/libs/config/src/polar.ts +24 -0
  332. package/libs/config/src/util.ts +8 -0
  333. package/libs/config/src/vercel.ts +26 -0
  334. package/libs/config/tsconfig.json +19 -0
  335. package/libs/config/vite.config.ts +34 -0
  336. package/libs/core/.prettierignore +2 -0
  337. package/libs/core/eslint.config.mjs +3 -0
  338. package/libs/core/package.json +59 -0
  339. package/libs/core/src/chat/derived.ts +97 -0
  340. package/libs/core/src/chat/feedback.ts +293 -0
  341. package/libs/core/src/chat/index.ts +6 -0
  342. package/libs/core/src/chat/model.ts +92 -0
  343. package/libs/core/src/chat/prepare-tools.ts +286 -0
  344. package/libs/core/src/chat/prompts.ts +623 -0
  345. package/libs/core/src/chat/stream.ts +311 -0
  346. package/libs/core/src/chat/summarize.ts +168 -0
  347. package/libs/core/src/chat/tools/agent.ts +403 -0
  348. package/libs/core/src/chat/tools/chart-agent.ts +526 -0
  349. package/libs/core/src/chat/tools/chart-helpers/sandbox.ts +47 -0
  350. package/libs/core/src/chat/tools/chart.ts +86 -0
  351. package/libs/core/src/chat/tools/credit-agent.ts +1383 -0
  352. package/libs/core/src/chat/tools/credit.ts +1435 -0
  353. package/libs/core/src/chat/tools/deep-dive-agent.ts +100 -0
  354. package/libs/core/src/chat/tools/deep-dive.ts +141 -0
  355. package/libs/core/src/chat/tools/form.ts +449 -0
  356. package/libs/core/src/chat/tools/helpers.ts +91 -0
  357. package/libs/core/src/chat/tools/index.ts +42 -0
  358. package/libs/core/src/chat/tools/pipeline-artifact.ts +76 -0
  359. package/libs/core/src/chat/tools/report.ts +40 -0
  360. package/libs/core/src/chat/tools/search.ts +390 -0
  361. package/libs/core/src/chat/tools/submission.ts +227 -0
  362. package/libs/core/src/chat/tools/workflow.ts +684 -0
  363. package/libs/core/src/chat/types.ts +3 -0
  364. package/libs/core/src/data-extraction/classification/azure.ts +168 -0
  365. package/libs/core/src/data-extraction/classification/index.ts +1 -0
  366. package/libs/core/src/data-extraction/dal.ts +246 -0
  367. package/libs/core/src/data-extraction/form-structure-extractor.ts +294 -0
  368. package/libs/core/src/data-extraction/index.ts +4 -0
  369. package/libs/core/src/data-extraction/layout/azure.ts +730 -0
  370. package/libs/core/src/data-extraction/layout/excel.ts +180 -0
  371. package/libs/core/src/data-extraction/layout/gcp.ts +1071 -0
  372. package/libs/core/src/data-extraction/layout/index.ts +266 -0
  373. package/libs/core/src/data-extraction/layout/plaintext.ts +45 -0
  374. package/libs/core/src/data-extraction/models.ts +38 -0
  375. package/libs/core/src/data-extraction/pdf-utils.ts +96 -0
  376. package/libs/core/src/data-extraction/structuring/bank-statement.ts +1182 -0
  377. package/libs/core/src/data-extraction/structuring/custom.ts +495 -0
  378. package/libs/core/src/data-extraction/structuring/index.ts +290 -0
  379. package/libs/core/src/data-extraction/structuring/prompts.ts +69 -0
  380. package/libs/core/src/data-extraction/type-guards.ts +110 -0
  381. package/libs/core/src/data-extraction/types.ts +84 -0
  382. package/libs/core/src/data-extraction/utils.ts +31 -0
  383. package/libs/core/src/data-extraction/validation/bank-statement.ts +127 -0
  384. package/libs/core/src/deals.ts +17 -0
  385. package/libs/core/src/documents.ts +152 -0
  386. package/libs/core/src/index.ts +5 -0
  387. package/libs/core/src/pipelines/display.ts +678 -0
  388. package/libs/core/src/pipelines/execute.ts +2342 -0
  389. package/libs/core/src/pipelines/index.ts +4 -0
  390. package/libs/core/src/pipelines/list.ts +12 -0
  391. package/libs/core/src/pipelines/runs.ts +53 -0
  392. package/libs/core/tsconfig.json +20 -0
  393. package/libs/core/vite.config.ts +56 -0
  394. package/libs/dal/.prettierignore +6 -0
  395. package/libs/dal/.prettierrc.js +12 -0
  396. package/libs/dal/eslint.config.mjs +3 -0
  397. package/libs/dal/package.json +57 -0
  398. package/libs/dal/src/_tests/db.test.ts +19 -0
  399. package/libs/dal/src/_tests/mock-db.ts +60 -0
  400. package/libs/dal/src/api-key.test.ts +397 -0
  401. package/libs/dal/src/api-key.ts +110 -0
  402. package/libs/dal/src/billing.ts +23 -0
  403. package/libs/dal/src/conversation.test.ts +655 -0
  404. package/libs/dal/src/conversation.ts +532 -0
  405. package/libs/dal/src/deal.test.ts +45 -0
  406. package/libs/dal/src/deal.ts +87 -0
  407. package/libs/dal/src/defaults-consumer-lending-uk.ts +33 -0
  408. package/libs/dal/src/defaults-consumer-lending-us.ts +33 -0
  409. package/libs/dal/src/defaults-private-credit.ts +57 -0
  410. package/libs/dal/src/defaults-private-equity.ts +51 -0
  411. package/libs/dal/src/defaults-smb-lending-us.ts +1569 -0
  412. package/libs/dal/src/defaults-sme-lending-uk-express.ts +1527 -0
  413. package/libs/dal/src/defaults-sme-lending-uk.ts +1669 -0
  414. package/libs/dal/src/defaults-types.ts +23 -0
  415. package/libs/dal/src/defaults.ts +550 -0
  416. package/libs/dal/src/document.test.ts +70 -0
  417. package/libs/dal/src/document.ts +192 -0
  418. package/libs/dal/src/feedback.ts +255 -0
  419. package/libs/dal/src/form.test.ts +637 -0
  420. package/libs/dal/src/form.ts +1165 -0
  421. package/libs/dal/src/index.ts +20 -0
  422. package/libs/dal/src/invitation.test.ts +746 -0
  423. package/libs/dal/src/invitation.ts +207 -0
  424. package/libs/dal/src/member.test.ts +185 -0
  425. package/libs/dal/src/member.ts +80 -0
  426. package/libs/dal/src/organization.ts +116 -0
  427. package/libs/dal/src/permission.ts +25 -0
  428. package/libs/dal/src/pipeline.test.ts +388 -0
  429. package/libs/dal/src/pipeline.ts +4222 -0
  430. package/libs/dal/src/report.ts +199 -0
  431. package/libs/dal/src/result.ts +16 -0
  432. package/libs/dal/src/search.ts +172 -0
  433. package/libs/dal/src/session.test.ts +110 -0
  434. package/libs/dal/src/session.ts +31 -0
  435. package/libs/dal/src/submission.test.ts +1304 -0
  436. package/libs/dal/src/submission.ts +1396 -0
  437. package/libs/dal/src/tool.ts +159 -0
  438. package/libs/dal/src/user.ts +16 -0
  439. package/libs/dal/src/workflow.test.ts +89 -0
  440. package/libs/dal/src/workflow.ts +262 -0
  441. package/libs/dal/tsconfig.build.json +4 -0
  442. package/libs/dal/tsconfig.json +22 -0
  443. package/libs/dal/vite.config.ts +34 -0
  444. package/libs/db/.prettierignore +6 -0
  445. package/libs/db/.prettierrc.js +12 -0
  446. package/libs/db/eslint.config.mjs +3 -0
  447. package/libs/db/package.json +52 -0
  448. package/libs/db/src/index.ts +24 -0
  449. package/libs/db/src/relations.ts +549 -0
  450. package/libs/db/src/schema.ts +2 -0
  451. package/libs/db/src/schemas/api.ts +35 -0
  452. package/libs/db/src/schemas/conversations.ts +175 -0
  453. package/libs/db/src/schemas/core.ts +359 -0
  454. package/libs/db/src/schemas/documents.ts +181 -0
  455. package/libs/db/src/schemas/feedback.ts +40 -0
  456. package/libs/db/src/schemas/index.ts +26 -0
  457. package/libs/db/src/schemas/organisations.ts +97 -0
  458. package/libs/db/src/schemas/pipelines.ts +440 -0
  459. package/libs/db/src/schemas/users.ts +95 -0
  460. package/libs/db/src/types.ts +190 -0
  461. package/libs/db/src/utils.ts +14 -0
  462. package/libs/db/tsconfig.json +19 -0
  463. package/libs/db/vite.config.ts +31 -0
  464. package/libs/lint/.prettierignore +6 -0
  465. package/libs/lint/eslint.config.mjs +61 -0
  466. package/libs/lint/package.json +29 -0
  467. package/libs/lint/prettier.config.js +12 -0
  468. package/libs/schemas/.prettierignore +6 -0
  469. package/libs/schemas/.prettierrc.js +12 -0
  470. package/libs/schemas/README.md +15 -0
  471. package/libs/schemas/eslint.config.mjs +3 -0
  472. package/libs/schemas/package.json +67 -0
  473. package/libs/schemas/src/core/chat.ts +67 -0
  474. package/libs/schemas/src/core/core-result.ts +15 -0
  475. package/libs/schemas/src/core/data-extraction.ts +184 -0
  476. package/libs/schemas/src/core/layout.ts +478 -0
  477. package/libs/schemas/src/core/pipeline.ts +128 -0
  478. package/libs/schemas/src/core/submission.ts +97 -0
  479. package/libs/schemas/src/db/account.ts +57 -0
  480. package/libs/schemas/src/db/apiKey.ts +57 -0
  481. package/libs/schemas/src/db/context.ts +33 -0
  482. package/libs/schemas/src/db/conversation.ts +65 -0
  483. package/libs/schemas/src/db/deal.ts +42 -0
  484. package/libs/schemas/src/db/document.ts +103 -0
  485. package/libs/schemas/src/db/documentCitation.ts +58 -0
  486. package/libs/schemas/src/db/documentExtraction.ts +69 -0
  487. package/libs/schemas/src/db/fieldCorrection.ts +85 -0
  488. package/libs/schemas/src/db/form.ts +45 -0
  489. package/libs/schemas/src/db/formField.ts +59 -0
  490. package/libs/schemas/src/db/formGroup.ts +42 -0
  491. package/libs/schemas/src/db/impersonation.ts +39 -0
  492. package/libs/schemas/src/db/index.ts +25 -0
  493. package/libs/schemas/src/db/invitation.ts +42 -0
  494. package/libs/schemas/src/db/member.ts +36 -0
  495. package/libs/schemas/src/db/message.ts +58 -0
  496. package/libs/schemas/src/db/organization.ts +62 -0
  497. package/libs/schemas/src/db/session.ts +48 -0
  498. package/libs/schemas/src/db/submission.ts +54 -0
  499. package/libs/schemas/src/db/submissionGroup.ts +36 -0
  500. package/libs/schemas/src/db/submissionItem.ts +33 -0
  501. package/libs/schemas/src/db/submissionItemVersion.ts +70 -0
  502. package/libs/schemas/src/db/user.ts +51 -0
  503. package/libs/schemas/src/db/utils.ts +3 -0
  504. package/libs/schemas/src/db/verification.ts +36 -0
  505. package/libs/schemas/src/db/workflow.ts +42 -0
  506. package/libs/schemas/src/index.ts +10 -0
  507. package/libs/schemas/tsconfig.json +21 -0
  508. package/libs/schemas/vite.config.ts +38 -0
  509. package/libs/ui/.prettierignore +6 -0
  510. package/libs/ui/.prettierrc.js +12 -0
  511. package/libs/ui/components.json +24 -0
  512. package/libs/ui/eslint.config.mjs +3 -0
  513. package/libs/ui/package.json +142 -0
  514. package/libs/ui/src/components/chart-viz/chart.tsx +255 -0
  515. package/libs/ui/src/components/chart-viz/converters.ts +474 -0
  516. package/libs/ui/src/components/chart-viz/dashboard.tsx +146 -0
  517. package/libs/ui/src/components/chart-viz/index.ts +37 -0
  518. package/libs/ui/src/components/chart-viz/markdown.tsx +344 -0
  519. package/libs/ui/src/components/chart-viz/table.tsx +446 -0
  520. package/libs/ui/src/components/chart-viz/theme-context.tsx +70 -0
  521. package/libs/ui/src/components/chart-viz/themes/dark.ts +98 -0
  522. package/libs/ui/src/components/chart-viz/themes/index.ts +69 -0
  523. package/libs/ui/src/components/chart-viz/themes/light.ts +98 -0
  524. package/libs/ui/src/components/chart-viz/themes/tailwind.ts +326 -0
  525. package/libs/ui/src/components/chart-viz/themes/types.ts +99 -0
  526. package/libs/ui/src/components/chart-viz/tool-display.tsx +150 -0
  527. package/libs/ui/src/components/chart-viz/types.ts +95 -0
  528. package/libs/ui/src/components/doc-viewers/excel/index.tsx +431 -0
  529. package/libs/ui/src/components/doc-viewers/excel/themes.ts +160 -0
  530. package/libs/ui/src/components/doc-viewers/image/index.tsx +410 -0
  531. package/libs/ui/src/components/doc-viewers/pdf/index.tsx +258 -0
  532. package/libs/ui/src/components/doc-viewers/pdf/virtualized-pdf.tsx +556 -0
  533. package/libs/ui/src/components/misc/rel-date.tsx +52 -0
  534. package/libs/ui/src/components/misc/styled-link.tsx +2 -0
  535. package/libs/ui/src/components/table/data-table.tsx +546 -0
  536. package/libs/ui/src/components/table/report-table.tsx +305 -0
  537. package/libs/ui/src/components/table/sortable-column.tsx +34 -0
  538. package/libs/ui/src/components/ui/accordion.tsx +62 -0
  539. package/libs/ui/src/components/ui/alert-dialog.tsx +142 -0
  540. package/libs/ui/src/components/ui/alert.tsx +62 -0
  541. package/libs/ui/src/components/ui/artifact.tsx +118 -0
  542. package/libs/ui/src/components/ui/attachments.tsx +388 -0
  543. package/libs/ui/src/components/ui/avatar.tsx +39 -0
  544. package/libs/ui/src/components/ui/badge.tsx +43 -0
  545. package/libs/ui/src/components/ui/breadcrumb.tsx +102 -0
  546. package/libs/ui/src/components/ui/button-group.tsx +78 -0
  547. package/libs/ui/src/components/ui/button.tsx +79 -0
  548. package/libs/ui/src/components/ui/card.tsx +32 -0
  549. package/libs/ui/src/components/ui/carousel.tsx +228 -0
  550. package/libs/ui/src/components/ui/chain-of-thought.tsx +198 -0
  551. package/libs/ui/src/components/ui/checkbox.tsx +27 -0
  552. package/libs/ui/src/components/ui/citation.tsx +34 -0
  553. package/libs/ui/src/components/ui/code-block.tsx +500 -0
  554. package/libs/ui/src/components/ui/collapsible.tsx +19 -0
  555. package/libs/ui/src/components/ui/command.tsx +161 -0
  556. package/libs/ui/src/components/ui/conversation.tsx +90 -0
  557. package/libs/ui/src/components/ui/dialog.tsx +142 -0
  558. package/libs/ui/src/components/ui/dropdown-menu.tsx +246 -0
  559. package/libs/ui/src/components/ui/highlight.tsx +3 -0
  560. package/libs/ui/src/components/ui/hover-card.tsx +36 -0
  561. package/libs/ui/src/components/ui/inline-citation.tsx +251 -0
  562. package/libs/ui/src/components/ui/input-group.tsx +156 -0
  563. package/libs/ui/src/components/ui/input-otp.tsx +78 -0
  564. package/libs/ui/src/components/ui/input.tsx +21 -0
  565. package/libs/ui/src/components/ui/label.tsx +19 -0
  566. package/libs/ui/src/components/ui/model-selector.tsx +174 -0
  567. package/libs/ui/src/components/ui/multisidebar.tsx +750 -0
  568. package/libs/ui/src/components/ui/popover.tsx +43 -0
  569. package/libs/ui/src/components/ui/progress.tsx +28 -0
  570. package/libs/ui/src/components/ui/reasoning.tsx +178 -0
  571. package/libs/ui/src/components/ui/resizable.tsx +49 -0
  572. package/libs/ui/src/components/ui/scroll-area.tsx +54 -0
  573. package/libs/ui/src/components/ui/select.tsx +171 -0
  574. package/libs/ui/src/components/ui/separator.tsx +26 -0
  575. package/libs/ui/src/components/ui/sheet.tsx +128 -0
  576. package/libs/ui/src/components/ui/shimmer.tsx +53 -0
  577. package/libs/ui/src/components/ui/skeleton.tsx +13 -0
  578. package/libs/ui/src/components/ui/sonner.tsx +23 -0
  579. package/libs/ui/src/components/ui/switch.tsx +26 -0
  580. package/libs/ui/src/components/ui/table.tsx +96 -0
  581. package/libs/ui/src/components/ui/tabs.tsx +52 -0
  582. package/libs/ui/src/components/ui/textarea.tsx +41 -0
  583. package/libs/ui/src/components/ui/tool.tsx +209 -0
  584. package/libs/ui/src/components/ui/tooltip.tsx +58 -0
  585. package/libs/ui/src/components/ui/typography.tsx +113 -0
  586. package/libs/ui/src/fonts/manrope-v15-latin-300.woff2 +0 -0
  587. package/libs/ui/src/fonts/manrope-v15-latin-400.woff2 +0 -0
  588. package/libs/ui/src/fonts/manrope-v15-latin-500.woff2 +0 -0
  589. package/libs/ui/src/fonts/manrope-v15-latin-600.woff2 +0 -0
  590. package/libs/ui/src/hooks/use-mobile.ts +19 -0
  591. package/libs/ui/src/lib/utils.ts +6 -0
  592. package/libs/ui/src/styles/fonts.css +35 -0
  593. package/libs/ui/src/styles/style.css +218 -0
  594. package/libs/ui/tsconfig.json +21 -0
  595. package/libs/ui/vite.config.ts +80 -0
  596. package/libs/ui-lit/README.md +245 -0
  597. package/libs/ui-lit/TESTING_GUIDE.md +296 -0
  598. package/libs/ui-lit/eslint.config.mjs +3 -0
  599. package/libs/ui-lit/package.json +41 -0
  600. package/libs/ui-lit/scripts/build-css.js +43 -0
  601. package/libs/ui-lit/src/components/sea-alert.ts +132 -0
  602. package/libs/ui-lit/src/components/sea-button.ts +95 -0
  603. package/libs/ui-lit/src/components/sea-card.ts +113 -0
  604. package/libs/ui-lit/src/components/sea-input.ts +184 -0
  605. package/libs/ui-lit/src/components/sea-spinner.ts +65 -0
  606. package/libs/ui-lit/src/index.ts +15 -0
  607. package/libs/ui-lit/src/lib/utils.ts +6 -0
  608. package/libs/ui-lit/src/styles/tailwind.css +76 -0
  609. package/libs/ui-lit/src/theme.css +66 -0
  610. package/libs/ui-lit/src/theme.ts +79 -0
  611. package/libs/ui-lit/src/vite-env.d.ts +6 -0
  612. package/libs/ui-lit/tailwind.config.ts +50 -0
  613. package/libs/ui-lit/test.html +289 -0
  614. package/libs/ui-lit/tsconfig.json +23 -0
  615. package/libs/ui-lit/vite.config.ts +31 -0
  616. package/libs/ui-lit/vite.css.config.ts +20 -0
  617. package/libs/util/.prettierignore +6 -0
  618. package/libs/util/.prettierrc.js +12 -0
  619. package/libs/util/eslint.config.mjs +3 -0
  620. package/libs/util/package.json +45 -0
  621. package/libs/util/src/billing.ts +10 -0
  622. package/libs/util/src/data-transform.ts +19 -0
  623. package/libs/util/src/encryption.ts +45 -0
  624. package/libs/util/src/fmt.test.ts +9 -0
  625. package/libs/util/src/fmt.ts +71 -0
  626. package/libs/util/src/fuzzy.ts +47 -0
  627. package/libs/util/src/id.ts +24 -0
  628. package/libs/util/src/invariant.ts +31 -0
  629. package/libs/util/src/sub-name.ts +7 -0
  630. package/libs/util/tsconfig.json +19 -0
  631. package/libs/util/vite.config.ts +34 -0
  632. package/package.json +28 -0
  633. package/packages/widget/.prettierignore +6 -0
  634. package/packages/widget/.prettierrc.js +12 -0
  635. package/packages/widget/README.md +95 -0
  636. package/packages/widget/eslint.config.mjs +11 -0
  637. package/packages/widget/openapi-ts.config.ts +8 -0
  638. package/packages/widget/package.json +89 -0
  639. package/packages/widget/postcss.config.mjs +10 -0
  640. package/packages/widget/src/clients/api/client/client.ts +187 -0
  641. package/packages/widget/src/clients/api/client/index.ts +22 -0
  642. package/packages/widget/src/clients/api/client/types.ts +192 -0
  643. package/packages/widget/src/clients/api/client/utils.ts +394 -0
  644. package/packages/widget/src/clients/api/client.gen.ts +18 -0
  645. package/packages/widget/src/clients/api/core/auth.ts +39 -0
  646. package/packages/widget/src/clients/api/core/bodySerializer.ts +74 -0
  647. package/packages/widget/src/clients/api/core/params.ts +132 -0
  648. package/packages/widget/src/clients/api/core/pathSerializer.ts +169 -0
  649. package/packages/widget/src/clients/api/core/types.ts +80 -0
  650. package/packages/widget/src/clients/api/index.ts +3 -0
  651. package/packages/widget/src/clients/api/sdk.gen.ts +805 -0
  652. package/packages/widget/src/clients/api/types.gen.ts +2085 -0
  653. package/packages/widget/src/components/container.tsx +42 -0
  654. package/packages/widget/src/components/data-display.tsx +384 -0
  655. package/packages/widget/src/components/data-viewer.tsx +311 -0
  656. package/packages/widget/src/components/doc-list.tsx +102 -0
  657. package/packages/widget/src/components/field-correction-modal.tsx +265 -0
  658. package/packages/widget/src/components/header.tsx +71 -0
  659. package/packages/widget/src/components/new-submission.tsx +290 -0
  660. package/packages/widget/src/components/sidebar-right.tsx +19 -0
  661. package/packages/widget/src/components/submission-card.tsx +66 -0
  662. package/packages/widget/src/components/submission-page.tsx +75 -0
  663. package/packages/widget/src/components/upload-doc.tsx +241 -0
  664. package/packages/widget/src/components/widget.tsx +101 -0
  665. package/packages/widget/src/index.tsx +167 -0
  666. package/packages/widget/src/lib/config.ts +2 -0
  667. package/packages/widget/src/lib/util.ts +40 -0
  668. package/packages/widget/src/styles/index.css +5 -0
  669. package/packages/widget/src/styles/tw-properties.css +337 -0
  670. package/packages/widget/src/vite-env.d.ts +3 -0
  671. package/packages/widget/tsconfig.app.json +35 -0
  672. package/packages/widget/tsconfig.json +4 -0
  673. package/packages/widget/tsconfig.node.json +24 -0
  674. package/packages/widget/vite.config.ts +116 -0
  675. package/packages/widget-lit/BOTTLENECKS.md +250 -0
  676. package/packages/widget-lit/IMPLEMENTATION_SUMMARY.md +295 -0
  677. package/packages/widget-lit/README.md +232 -0
  678. package/packages/widget-lit/eslint.config.mjs +3 -0
  679. package/packages/widget-lit/package.json +52 -0
  680. package/packages/widget-lit/src/api-client.ts +230 -0
  681. package/packages/widget-lit/src/api-client.ts.backup +218 -0
  682. package/packages/widget-lit/src/components/sea-chat.ts +382 -0
  683. package/packages/widget-lit/src/components/sea-submission-viewer.ts +267 -0
  684. package/packages/widget-lit/src/components/sea-widget.ts +317 -0
  685. package/packages/widget-lit/src/index.ts +48 -0
  686. package/packages/widget-lit/src/react.ts +58 -0
  687. package/packages/widget-lit/src/style.css +47 -0
  688. package/packages/widget-lit/tsconfig.json +24 -0
  689. package/packages/widget-lit/vite.config.ts +29 -0
  690. package/packages/widget-ng/DEVELOPMENT.md +74 -0
  691. package/packages/widget-ng/README.md +657 -0
  692. package/packages/widget-ng/dev.sh +14 -0
  693. package/packages/widget-ng/eslint.config.mjs +24 -0
  694. package/packages/widget-ng/ng-package.json +9 -0
  695. package/packages/widget-ng/package.json +85 -0
  696. package/packages/widget-ng/src/index.ts +45 -0
  697. package/packages/widget-ng/src/lib/components/sea-chat.component.ts +737 -0
  698. package/packages/widget-ng/src/lib/components/sea-data-viewer.component.ts +2240 -0
  699. package/packages/widget-ng/src/lib/components/sea-deal-form-modal.component.ts +702 -0
  700. package/packages/widget-ng/src/lib/components/sea-document-list.component.ts +350 -0
  701. package/packages/widget-ng/src/lib/components/sea-feedback-modal.component.ts +461 -0
  702. package/packages/widget-ng/src/lib/components/sea-file-upload.component.ts +655 -0
  703. package/packages/widget-ng/src/lib/components/sea-model-selection-modal.component.ts +367 -0
  704. package/packages/widget-ng/src/lib/components/sea-new-submission-modal.component.ts +414 -0
  705. package/packages/widget-ng/src/lib/components/sea-pdf-viewer.component.ts +869 -0
  706. package/packages/widget-ng/src/lib/components/sea-submission-card.component.ts +251 -0
  707. package/packages/widget-ng/src/lib/components/sea-widget.component.ts +684 -0
  708. package/packages/widget-ng/src/lib/models/submission.model.ts +170 -0
  709. package/packages/widget-ng/src/lib/pipes/markdown.pipe.ts +57 -0
  710. package/packages/widget-ng/src/lib/services/api-client.service.ts +715 -0
  711. package/packages/widget-ng/src/lib/services/chat.service.ts +330 -0
  712. package/packages/widget-ng/src/lib/services/config.service.ts +107 -0
  713. package/packages/widget-ng/src/web-component.ts +56 -0
  714. package/packages/widget-ng/tsconfig.json +25 -0
  715. package/packages/widget-ng/tsconfig.lib.json +9 -0
  716. package/packages/widget-ng/vite.config.elements.ts +26 -0
  717. package/packages/widget-ng/vitest.config.ts +19 -0
  718. package/packages/widget-ng/vitest.setup.ts +13 -0
  719. package/pnpm-workspace.yaml +18 -0
  720. package/render.yaml +136 -0
  721. package/scripts/README.md +57 -0
  722. package/scripts/package.json +22 -0
  723. package/scripts/python/.python-version +1 -0
  724. package/scripts/python/README.md +3 -0
  725. package/scripts/python/export-org-data.py +693 -0
  726. package/scripts/python/pyproject.toml +29 -0
  727. package/scripts/python/requirements-dev.lock +36 -0
  728. package/scripts/python/requirements.lock +36 -0
  729. package/scripts/python/src/gen.py +297 -0
  730. package/scripts/python/test.py +34 -0
  731. package/scripts/src/fix-storage-provider-mismatch.ts +239 -0
  732. package/scripts/src/sync-render-yaml.ts +290 -0
  733. package/scripts/src/test-chat-stream.ts +300 -0
  734. package/scripts/src/test-reconciliation.ts +230 -0
  735. package/scripts/tsconfig.json +15 -0
  736. package/tests/angular-test-app/.vscode/extensions.json +4 -0
  737. package/tests/angular-test-app/.vscode/launch.json +13 -0
  738. package/tests/angular-test-app/.vscode/tasks.json +24 -0
  739. package/tests/angular-test-app/README.md +59 -0
  740. package/tests/angular-test-app/angular.json +111 -0
  741. package/tests/angular-test-app/clean-start.sh +14 -0
  742. package/tests/angular-test-app/package.json +36 -0
  743. package/tests/angular-test-app/public/favicon.ico +0 -0
  744. package/tests/angular-test-app/src/app/app.component.ts +220 -0
  745. package/tests/angular-test-app/src/app/app.config.ts +5 -0
  746. package/tests/angular-test-app/src/env.d.ts +13 -0
  747. package/tests/angular-test-app/src/index.html +13 -0
  748. package/tests/angular-test-app/src/main.ts +6 -0
  749. package/tests/angular-test-app/src/styles.css +8 -0
  750. package/tests/angular-test-app/tsconfig.app.json +15 -0
  751. package/tests/angular-test-app/tsconfig.json +27 -0
  752. package/tests/crm-viewer-app/API_INTEGRATION_SUMMARY.md +295 -0
  753. package/tests/crm-viewer-app/CURRENT_ASSETS_FIELDS.md +148 -0
  754. package/tests/crm-viewer-app/FIELD_ID_MAPPING.md +206 -0
  755. package/tests/crm-viewer-app/INTEGRATION_GUIDE.md +309 -0
  756. package/tests/crm-viewer-app/README.md +174 -0
  757. package/tests/crm-viewer-app/REAL_API_INTEGRATION.md +240 -0
  758. package/tests/crm-viewer-app/UPDATED_IMPLEMENTATION.md +279 -0
  759. package/tests/crm-viewer-app/angular.json +114 -0
  760. package/tests/crm-viewer-app/package.json +35 -0
  761. package/tests/crm-viewer-app/src/app/app.component.ts +534 -0
  762. package/tests/crm-viewer-app/src/app/citation.service.ts +316 -0
  763. package/tests/crm-viewer-app/src/env.d.ts +16 -0
  764. package/tests/crm-viewer-app/src/index.html +19 -0
  765. package/tests/crm-viewer-app/src/main.ts +7 -0
  766. package/tests/crm-viewer-app/src/styles.css +409 -0
  767. package/tests/crm-viewer-app/src/template.html +2678 -0
  768. package/tests/crm-viewer-app/tsconfig.app.json +15 -0
  769. package/tests/crm-viewer-app/tsconfig.json +27 -0
  770. package/tests/e2e/package.json +17 -0
  771. package/tests/e2e/playwright.config.ts +75 -0
  772. package/tests/e2e/tests/api/health.spec.ts +10 -0
  773. package/tests/e2e/tests/app/example.spec.ts +10 -0
  774. package/tests/widget-test-app/.prettierignore +6 -0
  775. package/tests/widget-test-app/README.md +48 -0
  776. package/tests/widget-test-app/index.html +12 -0
  777. package/tests/widget-test-app/package.json +24 -0
  778. package/tests/widget-test-app/src/App.css +192 -0
  779. package/tests/widget-test-app/src/App.tsx +80 -0
  780. package/tests/widget-test-app/src/main.tsx +9 -0
  781. package/tests/widget-test-app/src/vite-env.d.ts +4 -0
  782. package/tests/widget-test-app/tsconfig.json +25 -0
  783. package/tests/widget-test-app/tsconfig.node.json +11 -0
  784. 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)