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,1527 @@
1
+ import type { DenormWorkflow } from "./defaults-types";
2
+
3
+ /**
4
+ * Express SME Lending Configuration for UK - Optimized for £10k-£100k loans
5
+ *
6
+ * This configuration is streamlined for fast decision-making on smaller SME loans.
7
+ * Key differences from standard SME lending:
8
+ * - Simplified origination (10-12 fields vs 40+)
9
+ * - Practical underwriting using management accounts
10
+ * - Enhanced monitoring with payment tracking and early warnings
11
+ * - UK-specific risk flags (HMRC arrears, COVID debt, filing status)
12
+ */
13
+
14
+ export const defaultWorkflows: DenormWorkflow[] = [
15
+ // **************************
16
+ // EXPRESS ORIGINATION
17
+ // **************************
18
+ {
19
+ name: "Express Origination",
20
+ slug: "express-origination",
21
+ hint: "Fast-track loan application for £10k-£100k SME loans - essential information only",
22
+ forms: [
23
+ // **************************
24
+ // Express Origination - Loan Application
25
+ // **************************
26
+ {
27
+ name: "Loan Application",
28
+ hint: "Quick capture of loan request and business essentials",
29
+ groups: [
30
+ {
31
+ name: "Loan Request",
32
+ order: 0,
33
+ fields: [
34
+ {
35
+ name: "LoanAmountRequested",
36
+ type: "money",
37
+ hint: "Amount of funding requested (£10,000 - £100,000)",
38
+ order: 0,
39
+ },
40
+ {
41
+ name: "LoanPurpose",
42
+ type: "string",
43
+ hint: "Primary purpose (e.g., Working Capital, Equipment Purchase, Stock Purchase, Business Expansion, Cash Flow)",
44
+ order: 1,
45
+ },
46
+ {
47
+ name: "LoanTerm",
48
+ type: "string",
49
+ hint: "Requested loan term (e.g., 12 months, 24 months, 36 months)",
50
+ order: 2,
51
+ },
52
+ {
53
+ name: "UseOfFunds",
54
+ type: "string-long",
55
+ hint: "Detailed breakdown of how funds will be used",
56
+ order: 3,
57
+ },
58
+ ],
59
+ },
60
+ {
61
+ name: "Business Information",
62
+ order: 1,
63
+ fields: [
64
+ {
65
+ name: "CompanyName",
66
+ type: "string",
67
+ hint: "Legal company name as registered with Companies House",
68
+ order: 0,
69
+ },
70
+ {
71
+ name: "CompaniesHouseNumber",
72
+ type: "string",
73
+ hint: "UK Companies House registration number (e.g., 12345678)",
74
+ order: 1,
75
+ },
76
+ {
77
+ name: "TradingHistory",
78
+ type: "string",
79
+ hint: "How long has the business been trading (e.g., 2 years 3 months, 5 years)",
80
+ order: 2,
81
+ },
82
+ {
83
+ name: "AnnualTurnover",
84
+ type: "money",
85
+ hint: "Most recent annual turnover/revenue",
86
+ order: 3,
87
+ },
88
+ {
89
+ name: "NumberOfEmployees",
90
+ type: "number",
91
+ hint: "Current number of employees",
92
+ order: 4,
93
+ },
94
+ {
95
+ name: "BusinessDescription",
96
+ type: "string-long",
97
+ hint: "Brief description of what the business does",
98
+ order: 5,
99
+ },
100
+ {
101
+ name: "TradingAddress",
102
+ type: "string",
103
+ hint: "Primary trading address",
104
+ order: 6,
105
+ },
106
+ ],
107
+ },
108
+ {
109
+ name: "Contact Details",
110
+ order: 2,
111
+ fields: [
112
+ {
113
+ name: "PrimaryContactName",
114
+ type: "string",
115
+ hint: "Name of primary contact for this application",
116
+ order: 0,
117
+ },
118
+ {
119
+ name: "PrimaryContactEmail",
120
+ type: "string",
121
+ hint: "Email address for application communications",
122
+ order: 1,
123
+ },
124
+ {
125
+ name: "PrimaryContactPhone",
126
+ type: "string",
127
+ hint: "Contact phone number",
128
+ order: 2,
129
+ },
130
+ ],
131
+ },
132
+ ],
133
+ },
134
+
135
+ // **************************
136
+ // Express Origination - Directors (Simplified)
137
+ // **************************
138
+ {
139
+ name: "Directors & Key Persons",
140
+ hint: "Essential KYC information for company directors and shareholders",
141
+ groups: [
142
+ {
143
+ name: "Company Details",
144
+ order: 0,
145
+ fields: [
146
+ {
147
+ name: "CompaniesHouseNumber",
148
+ type: "string",
149
+ hint: "UK Companies House registration number",
150
+ order: 0,
151
+ },
152
+ {
153
+ name: "DateOfIncorporation",
154
+ type: "date",
155
+ hint: "Date the company was incorporated",
156
+ order: 1,
157
+ },
158
+ {
159
+ name: "RegisteredOfficeAddress",
160
+ type: "string-long",
161
+ hint: "Official registered office address",
162
+ order: 2,
163
+ },
164
+ ],
165
+ },
166
+ {
167
+ name: "Directors",
168
+ order: 1,
169
+ multi: true,
170
+ fields: [
171
+ {
172
+ name: "DirectorName",
173
+ type: "string",
174
+ hint: "Full legal name of director",
175
+ order: 0,
176
+ },
177
+ {
178
+ name: "DateOfBirth",
179
+ type: "date",
180
+ hint: "Date of birth for credit checks",
181
+ order: 1,
182
+ },
183
+ {
184
+ name: "ResidentialAddress",
185
+ type: "string-long",
186
+ hint: "Current residential address",
187
+ order: 2,
188
+ },
189
+ {
190
+ name: "ShareholdingPercentage",
191
+ type: "number",
192
+ hint: "Percentage of company shares held",
193
+ order: 3,
194
+ },
195
+ {
196
+ name: "WillingToProvidePersonalGuarantee",
197
+ type: "string",
198
+ hint: "Is this director willing to provide a personal guarantee? (Yes/No)",
199
+ order: 4,
200
+ },
201
+ ],
202
+ },
203
+ ],
204
+ },
205
+
206
+ // **************************
207
+ // Express Origination - Bank Statement (reuse from main)
208
+ // **************************
209
+ {
210
+ name: "Bank Statement",
211
+ hint: "Extract account balances, transactions, deposits, withdrawals - provide last 3 months as separate statement periods",
212
+ groups: [
213
+ {
214
+ name: "Account Information",
215
+ order: 0,
216
+ fields: [
217
+ {
218
+ name: "BankName",
219
+ type: "string",
220
+ hint: "Name of the bank (e.g., Barclays, HSBC, NatWest)",
221
+ order: 0,
222
+ },
223
+ {
224
+ name: "AccountNumber",
225
+ type: "string",
226
+ hint: "Bank account number",
227
+ order: 1,
228
+ },
229
+ {
230
+ name: "AccountType",
231
+ type: "string",
232
+ hint: "Type of account (e.g., Business Current Account, Business Savings)",
233
+ order: 2,
234
+ },
235
+ {
236
+ name: "AccountHolderName",
237
+ type: "string",
238
+ hint: "Legal name on the account",
239
+ order: 3,
240
+ },
241
+ {
242
+ name: "IBAN",
243
+ type: "string",
244
+ hint: "International Bank Account Number if available",
245
+ order: 4,
246
+ },
247
+ {
248
+ name: "SortCode",
249
+ type: "string",
250
+ hint: "UK bank sort code (e.g., 12-34-56)",
251
+ order: 5,
252
+ },
253
+ {
254
+ name: "Currency",
255
+ type: "string",
256
+ hint: "Account currency (typically GBP)",
257
+ order: 6,
258
+ },
259
+ ],
260
+ },
261
+ {
262
+ name: "Statement Periods",
263
+ multi: true,
264
+ order: 1,
265
+ fields: [
266
+ {
267
+ name: "StatementPeriodStart",
268
+ type: "date",
269
+ hint: "Start date of this statement period",
270
+ order: 0,
271
+ },
272
+ {
273
+ name: "StatementPeriodEnd",
274
+ type: "date",
275
+ hint: "End date of this statement period",
276
+ order: 1,
277
+ },
278
+ {
279
+ name: "OpeningBalance",
280
+ type: "money",
281
+ hint: "Account balance at start of period",
282
+ order: 2,
283
+ },
284
+ {
285
+ name: "ClosingBalance",
286
+ type: "money",
287
+ hint: "Account balance at end of period",
288
+ order: 3,
289
+ },
290
+ ],
291
+ },
292
+ {
293
+ name: "Transactions",
294
+ multi: true,
295
+ order: 2,
296
+ fields: [
297
+ {
298
+ name: "Date",
299
+ type: "date",
300
+ hint: "Transaction date",
301
+ order: 0,
302
+ },
303
+ {
304
+ name: "Description",
305
+ type: "string",
306
+ hint: "Transaction description/narrative",
307
+ order: 1,
308
+ },
309
+ {
310
+ name: "DepositAmount",
311
+ type: "money",
312
+ hint: "Amount deposited (leave blank if withdrawal)",
313
+ order: 2,
314
+ },
315
+ {
316
+ name: "WithdrawalAmount",
317
+ type: "money",
318
+ hint: "Amount withdrawn (leave blank if deposit)",
319
+ order: 3,
320
+ },
321
+ {
322
+ name: "Balance",
323
+ type: "money",
324
+ hint: "Account balance after this transaction",
325
+ order: 4,
326
+ },
327
+ ],
328
+ },
329
+ ],
330
+ },
331
+ ],
332
+ },
333
+
334
+ // **************************
335
+ // EXPRESS UNDERWRITING
336
+ // **************************
337
+ {
338
+ name: "Express Underwriting",
339
+ slug: "express-underwriting",
340
+ hint: "Streamlined underwriting for £10k-£100k SME loans using practical financial data",
341
+ forms: [
342
+ // **************************
343
+ // Express Underwriting - Management Accounts
344
+ // **************************
345
+ {
346
+ name: "Management Accounts",
347
+ hint: "Recent management accounts - capture multiple periods (monthly or quarterly) for trend analysis",
348
+ groups: [
349
+ {
350
+ name: "Company Information",
351
+ order: 0,
352
+ fields: [
353
+ {
354
+ name: "CompanyName",
355
+ type: "string",
356
+ hint: "Name of the company",
357
+ order: 0,
358
+ },
359
+ ],
360
+ },
361
+ {
362
+ name: "Accounting Periods",
363
+ order: 1,
364
+ multi: true,
365
+ fields: [
366
+ {
367
+ name: "AccountsPeriod",
368
+ type: "string",
369
+ hint: "Period covered (e.g., January 2024, Q1 2024, YTD 2024)",
370
+ order: 0,
371
+ },
372
+ {
373
+ name: "PreparedDate",
374
+ type: "date",
375
+ hint: "Date these accounts were prepared",
376
+ order: 1,
377
+ },
378
+ {
379
+ name: "Turnover",
380
+ type: "money",
381
+ hint: "Total sales/revenue for the period",
382
+ order: 2,
383
+ },
384
+ {
385
+ name: "CostOfSales",
386
+ type: "money",
387
+ hint: "Direct costs of goods/services sold",
388
+ order: 3,
389
+ },
390
+ {
391
+ name: "GrossProfit",
392
+ type: "money",
393
+ hint: "Turnover minus cost of sales",
394
+ order: 4,
395
+ },
396
+ {
397
+ name: "OperatingExpenses",
398
+ type: "money",
399
+ hint: "Total operating expenses (salaries, rent, utilities, etc.)",
400
+ order: 5,
401
+ },
402
+ {
403
+ name: "NetProfit",
404
+ type: "money",
405
+ hint: "Profit after all expenses but before tax",
406
+ order: 6,
407
+ },
408
+ {
409
+ name: "TotalAssets",
410
+ type: "money",
411
+ hint: "Total assets as at period end",
412
+ order: 7,
413
+ },
414
+ {
415
+ name: "TotalLiabilities",
416
+ type: "money",
417
+ hint: "Total liabilities as at period end",
418
+ order: 8,
419
+ },
420
+ {
421
+ name: "NetAssets",
422
+ type: "money",
423
+ hint: "Total assets minus total liabilities",
424
+ order: 9,
425
+ },
426
+ {
427
+ name: "CashAtBank",
428
+ type: "money",
429
+ hint: "Cash and cash equivalents at period end",
430
+ order: 10,
431
+ },
432
+ {
433
+ name: "Debtors",
434
+ type: "money",
435
+ hint: "Trade debtors/accounts receivable at period end",
436
+ order: 11,
437
+ },
438
+ {
439
+ name: "Creditors",
440
+ type: "money",
441
+ hint: "Trade creditors/accounts payable at period end",
442
+ order: 12,
443
+ },
444
+ ],
445
+ },
446
+ ],
447
+ },
448
+
449
+ // **************************
450
+ // Express Underwriting - UK Credit & Risk Check
451
+ // **************************
452
+ {
453
+ name: "Credit & Risk Assessment",
454
+ hint: "UK-specific credit checks and risk indicators for business and directors",
455
+ groups: [
456
+ {
457
+ name: "Business Credit",
458
+ order: 0,
459
+ fields: [
460
+ {
461
+ name: "ExperianScore",
462
+ type: "number",
463
+ hint: "Experian business credit score (0-100)",
464
+ order: 0,
465
+ },
466
+ {
467
+ name: "CreditRating",
468
+ type: "string",
469
+ hint: "Credit rating description (e.g., Very Low Risk, Low Risk, Medium Risk, High Risk)",
470
+ order: 1,
471
+ },
472
+ {
473
+ name: "CompaniesHouseFilingStatus",
474
+ type: "string",
475
+ hint: "Filing status: Up to Date, Overdue, or months overdue",
476
+ order: 2,
477
+ },
478
+ {
479
+ name: "LastAccountsFiledDate",
480
+ type: "date",
481
+ hint: "Date last accounts were filed with Companies House",
482
+ order: 3,
483
+ },
484
+ ],
485
+ },
486
+ {
487
+ name: "UK Tax & Compliance",
488
+ order: 1,
489
+ fields: [
490
+ {
491
+ name: "HMRCTaxArrears",
492
+ type: "string",
493
+ hint: "Does the company have HMRC tax arrears? (Yes/No/Unknown)",
494
+ order: 0,
495
+ },
496
+ {
497
+ name: "HMRCArrearsAmount",
498
+ type: "money",
499
+ hint: "If yes, estimated amount of tax arrears",
500
+ order: 1,
501
+ },
502
+ {
503
+ name: "VATRegistered",
504
+ type: "string",
505
+ hint: "Is the company VAT registered? (Yes/No)",
506
+ order: 2,
507
+ },
508
+ {
509
+ name: "VATNumber",
510
+ type: "string",
511
+ hint: "UK VAT registration number if applicable",
512
+ order: 3,
513
+ },
514
+ ],
515
+ },
516
+ {
517
+ name: "COVID-Era Government Support",
518
+ order: 2,
519
+ fields: [
520
+ {
521
+ name: "BounceBankLoan",
522
+ type: "string",
523
+ hint: "Did the company receive a Bounce Back Loan (BBL)? (Yes/No)",
524
+ order: 0,
525
+ },
526
+ {
527
+ name: "BBLOutstandingAmount",
528
+ type: "money",
529
+ hint: "Outstanding BBL balance if applicable",
530
+ order: 1,
531
+ },
532
+ {
533
+ name: "CBILSLoan",
534
+ type: "string",
535
+ hint: "Did the company receive CBILS/CLBILS/RLS? (Yes/No)",
536
+ order: 2,
537
+ },
538
+ {
539
+ name: "CBILSOutstandingAmount",
540
+ type: "money",
541
+ hint: "Outstanding CBILS balance if applicable",
542
+ order: 3,
543
+ },
544
+ {
545
+ name: "OtherGovernmentSupport",
546
+ type: "string-long",
547
+ hint: "Any other government support received (furlough, grants, etc.)",
548
+ order: 4,
549
+ },
550
+ ],
551
+ },
552
+ {
553
+ name: "County Court Judgements",
554
+ order: 3,
555
+ multi: true,
556
+ fields: [
557
+ {
558
+ name: "CCJDate",
559
+ type: "date",
560
+ hint: "Date the CCJ was registered",
561
+ order: 0,
562
+ },
563
+ {
564
+ name: "Amount",
565
+ type: "money",
566
+ hint: "CCJ amount",
567
+ order: 1,
568
+ },
569
+ {
570
+ name: "Status",
571
+ type: "string",
572
+ hint: "Satisfied, Unsatisfied, or Partially Satisfied",
573
+ order: 2,
574
+ },
575
+ ],
576
+ },
577
+ {
578
+ name: "Existing Debt",
579
+ order: 4,
580
+ fields: [
581
+ {
582
+ name: "TotalExistingDebt",
583
+ type: "money",
584
+ hint: "Total of all existing business debt (loans, overdrafts, finance leases)",
585
+ order: 0,
586
+ },
587
+ {
588
+ name: "MonthlyDebtRepayments",
589
+ type: "money",
590
+ hint: "Total monthly debt service payments",
591
+ order: 1,
592
+ },
593
+ ],
594
+ },
595
+ ],
596
+ },
597
+
598
+ // **************************
599
+ // Express Underwriting - Affordability Assessment
600
+ // **************************
601
+ {
602
+ name: "Affordability Assessment",
603
+ hint: "Calculate debt service capacity and affordability for the requested loan",
604
+ groups: [
605
+ {
606
+ name: "Income Assessment",
607
+ order: 0,
608
+ fields: [
609
+ {
610
+ name: "AverageMonthlyTurnover",
611
+ type: "money",
612
+ hint: "Average monthly turnover over last 3-6 months",
613
+ order: 0,
614
+ },
615
+ {
616
+ name: "AverageMonthlyGrossProfit",
617
+ type: "money",
618
+ hint: "Average monthly gross profit",
619
+ order: 1,
620
+ },
621
+ {
622
+ name: "AverageMonthlyNetProfit",
623
+ type: "money",
624
+ hint: "Average monthly net profit before tax",
625
+ order: 2,
626
+ },
627
+ ],
628
+ },
629
+ {
630
+ name: "Debt Service Calculation",
631
+ order: 1,
632
+ fields: [
633
+ {
634
+ name: "ProposedLoanAmount",
635
+ type: "money",
636
+ hint: "Loan amount being assessed",
637
+ order: 0,
638
+ },
639
+ {
640
+ name: "ProposedInterestRate",
641
+ type: "number",
642
+ hint: "Proposed annual interest rate (%)",
643
+ order: 1,
644
+ },
645
+ {
646
+ name: "ProposedTermMonths",
647
+ type: "number",
648
+ hint: "Proposed loan term in months",
649
+ order: 2,
650
+ },
651
+ {
652
+ name: "EstimatedMonthlyRepayment",
653
+ type: "money",
654
+ hint: "Calculated monthly repayment amount",
655
+ order: 3,
656
+ },
657
+ {
658
+ name: "ExistingMonthlyDebtPayments",
659
+ type: "money",
660
+ hint: "Current monthly debt obligations",
661
+ order: 4,
662
+ },
663
+ {
664
+ name: "TotalMonthlyDebtService",
665
+ type: "money",
666
+ hint: "Total monthly debt service (existing + proposed)",
667
+ order: 5,
668
+ },
669
+ {
670
+ name: "DebtServiceCoverageRatio",
671
+ type: "number",
672
+ hint: "Net profit / Total debt service (should be >1.25 ideally)",
673
+ order: 6,
674
+ },
675
+ {
676
+ name: "AffordabilityAssessment",
677
+ type: "string",
678
+ hint: "Overall assessment: Affordable, Marginal, or Unaffordable",
679
+ order: 7,
680
+ },
681
+ ],
682
+ },
683
+ ],
684
+ },
685
+
686
+ // **************************
687
+ // Express Underwriting - Personal Guarantee
688
+ // **************************
689
+ {
690
+ name: "Personal Guarantee",
691
+ hint: "Personal guarantee details from directors - common for £50k loans",
692
+ groups: [
693
+ {
694
+ name: "Guarantee Overview",
695
+ order: 0,
696
+ fields: [
697
+ {
698
+ name: "GuaranteeType",
699
+ type: "string",
700
+ hint: "Type of guarantee: Joint & Several, Limited, Unlimited",
701
+ order: 0,
702
+ },
703
+ {
704
+ name: "GuaranteeAmount",
705
+ type: "money",
706
+ hint: "Maximum amount guaranteed",
707
+ order: 1,
708
+ },
709
+ ],
710
+ },
711
+ {
712
+ name: "Guarantors",
713
+ order: 1,
714
+ multi: true,
715
+ fields: [
716
+ {
717
+ name: "GuarantorName",
718
+ type: "string",
719
+ hint: "Full name of guarantor",
720
+ order: 0,
721
+ },
722
+ {
723
+ name: "RelationshipToCompany",
724
+ type: "string",
725
+ hint: "Relationship (e.g., Director, Shareholder, Both)",
726
+ order: 1,
727
+ },
728
+ {
729
+ name: "ShareholdingPercentage",
730
+ type: "number",
731
+ hint: "Percentage ownership in the company",
732
+ order: 2,
733
+ },
734
+ {
735
+ name: "HomeOwnership",
736
+ type: "string",
737
+ hint: "Homeowner, Tenant, or Living with family",
738
+ order: 3,
739
+ },
740
+ {
741
+ name: "PropertyValue",
742
+ type: "money",
743
+ hint: "Estimated property value if homeowner",
744
+ order: 4,
745
+ },
746
+ {
747
+ name: "OutstandingMortgage",
748
+ type: "money",
749
+ hint: "Outstanding mortgage balance if applicable",
750
+ order: 5,
751
+ },
752
+ {
753
+ name: "PersonalCreditScore",
754
+ type: "number",
755
+ hint: "Personal credit score if available",
756
+ order: 6,
757
+ },
758
+ ],
759
+ },
760
+ ],
761
+ },
762
+
763
+ // **************************
764
+ // Express Underwriting - Full Financials (OPTIONAL)
765
+ // **************************
766
+ {
767
+ name: "Statutory Accounts (Optional)",
768
+ hint: "Full statutory accounts if available - capture multiple years for trend analysis. Use for borderline cases or larger amounts",
769
+ groups: [
770
+ {
771
+ name: "Company Information",
772
+ order: 0,
773
+ fields: [
774
+ {
775
+ name: "CompanyName",
776
+ type: "string",
777
+ hint: "Legal company name",
778
+ order: 0,
779
+ },
780
+ {
781
+ name: "CompaniesHouseNumber",
782
+ type: "string",
783
+ hint: "UK Companies House registration number",
784
+ order: 1,
785
+ },
786
+ ],
787
+ },
788
+ {
789
+ name: "Financial Years",
790
+ order: 1,
791
+ multi: true,
792
+ fields: [
793
+ {
794
+ name: "FinancialYearEnd",
795
+ type: "date",
796
+ hint: "Financial year end date (e.g., 31/12/2023, 31/03/2024)",
797
+ order: 0,
798
+ },
799
+ {
800
+ name: "Turnover",
801
+ type: "money",
802
+ hint: "Total sales/revenue for the financial year",
803
+ order: 1,
804
+ },
805
+ {
806
+ name: "CostOfSales",
807
+ type: "money",
808
+ hint: "Direct costs attributable to sales",
809
+ order: 2,
810
+ },
811
+ {
812
+ name: "GrossProfit",
813
+ type: "money",
814
+ hint: "Turnover minus cost of sales",
815
+ order: 3,
816
+ },
817
+ {
818
+ name: "OperatingExpenses",
819
+ type: "money",
820
+ hint: "Administrative and distribution expenses",
821
+ order: 4,
822
+ },
823
+ {
824
+ name: "OperatingProfit",
825
+ type: "money",
826
+ hint: "Profit from operations before interest and tax",
827
+ order: 5,
828
+ },
829
+ {
830
+ name: "ProfitBeforeTax",
831
+ type: "money",
832
+ hint: "Profit before taxation",
833
+ order: 6,
834
+ },
835
+ {
836
+ name: "TaxCharge",
837
+ type: "money",
838
+ hint: "Corporation tax charge for the year",
839
+ order: 7,
840
+ },
841
+ {
842
+ name: "ProfitAfterTax",
843
+ type: "money",
844
+ hint: "Net profit after all deductions",
845
+ order: 8,
846
+ },
847
+ {
848
+ name: "FixedAssetsTangible",
849
+ type: "money",
850
+ hint: "Tangible fixed assets (property, plant, equipment)",
851
+ order: 9,
852
+ },
853
+ {
854
+ name: "FixedAssetsIntangible",
855
+ type: "money",
856
+ hint: "Intangible assets (goodwill, intellectual property)",
857
+ order: 10,
858
+ },
859
+ {
860
+ name: "Stock",
861
+ type: "money",
862
+ hint: "Inventory/stock held",
863
+ order: 11,
864
+ },
865
+ {
866
+ name: "Debtors",
867
+ type: "money",
868
+ hint: "Trade and other debtors",
869
+ order: 12,
870
+ },
871
+ {
872
+ name: "CashAtBank",
873
+ type: "money",
874
+ hint: "Cash at bank and in hand",
875
+ order: 13,
876
+ },
877
+ {
878
+ name: "CreditorsWithinOneYear",
879
+ type: "money",
880
+ hint: "Creditors due within one year",
881
+ order: 14,
882
+ },
883
+ {
884
+ name: "NetCurrentAssets",
885
+ type: "money",
886
+ hint: "Current assets minus current liabilities",
887
+ order: 15,
888
+ },
889
+ {
890
+ name: "CreditorsAfterOneYear",
891
+ type: "money",
892
+ hint: "Long-term creditors due after more than one year",
893
+ order: 16,
894
+ },
895
+ {
896
+ name: "NetAssets",
897
+ type: "money",
898
+ hint: "Total net assets (total assets minus total liabilities)",
899
+ order: 17,
900
+ },
901
+ ],
902
+ },
903
+ ],
904
+ },
905
+ ],
906
+ },
907
+
908
+ // **************************
909
+ // ENHANCED MONITORING
910
+ // **************************
911
+ {
912
+ name: "Enhanced Monitoring",
913
+ slug: "enhanced-monitoring",
914
+ hint: "Active portfolio monitoring with payment tracking, early warnings, and material events",
915
+ forms: [
916
+ // **************************
917
+ // Enhanced Monitoring - Loan Payment History
918
+ // **************************
919
+ {
920
+ name: "Loan Payment History",
921
+ hint: "Track monthly loan repayments and arrears",
922
+ groups: [
923
+ {
924
+ name: "Loan Details",
925
+ order: 0,
926
+ fields: [
927
+ {
928
+ name: "LoanAccountNumber",
929
+ type: "string",
930
+ hint: "Internal loan reference number",
931
+ order: 0,
932
+ },
933
+ {
934
+ name: "BorrowerName",
935
+ type: "string",
936
+ hint: "Company name",
937
+ order: 1,
938
+ },
939
+ {
940
+ name: "LoanAmount",
941
+ type: "money",
942
+ hint: "Original loan amount",
943
+ order: 2,
944
+ },
945
+ {
946
+ name: "MonthlyRepaymentDue",
947
+ type: "money",
948
+ hint: "Scheduled monthly repayment",
949
+ order: 3,
950
+ },
951
+ ],
952
+ },
953
+ {
954
+ name: "Payment History",
955
+ order: 1,
956
+ multi: true,
957
+ fields: [
958
+ {
959
+ name: "PaymentDueDate",
960
+ type: "date",
961
+ hint: "Date payment was due",
962
+ order: 0,
963
+ },
964
+ {
965
+ name: "PaymentReceivedDate",
966
+ type: "date",
967
+ hint: "Date payment was actually received",
968
+ order: 1,
969
+ },
970
+ {
971
+ name: "AmountDue",
972
+ type: "money",
973
+ hint: "Amount that was due",
974
+ order: 2,
975
+ },
976
+ {
977
+ name: "AmountReceived",
978
+ type: "money",
979
+ hint: "Amount actually received",
980
+ order: 3,
981
+ },
982
+ {
983
+ name: "PaymentStatus",
984
+ type: "string",
985
+ hint: "Paid On Time, Paid Late, Partial Payment, Missed",
986
+ order: 4,
987
+ },
988
+ {
989
+ name: "DaysLate",
990
+ type: "number",
991
+ hint: "Number of days late (if applicable)",
992
+ order: 5,
993
+ },
994
+ {
995
+ name: "OutstandingBalance",
996
+ type: "money",
997
+ hint: "Outstanding loan balance after this payment",
998
+ order: 6,
999
+ },
1000
+ ],
1001
+ },
1002
+ {
1003
+ name: "Arrears Summary",
1004
+ order: 2,
1005
+ fields: [
1006
+ {
1007
+ name: "CurrentArrearsAmount",
1008
+ type: "money",
1009
+ hint: "Total current arrears",
1010
+ order: 0,
1011
+ },
1012
+ {
1013
+ name: "DaysInArrears",
1014
+ type: "number",
1015
+ hint: "Number of days in arrears",
1016
+ order: 1,
1017
+ },
1018
+ {
1019
+ name: "NumberOfMissedPayments",
1020
+ type: "number",
1021
+ hint: "Count of missed payments",
1022
+ order: 2,
1023
+ },
1024
+ {
1025
+ name: "ArrearsStatus",
1026
+ type: "string",
1027
+ hint: "Performing, Watch List, Default, Legal Action",
1028
+ order: 3,
1029
+ },
1030
+ ],
1031
+ },
1032
+ ],
1033
+ },
1034
+
1035
+ // **************************
1036
+ // Enhanced Monitoring - Quarterly Management Accounts
1037
+ // **************************
1038
+ {
1039
+ name: "Quarterly Review",
1040
+ hint: "Quarterly management accounts and performance review",
1041
+ groups: [
1042
+ {
1043
+ name: "Review Period",
1044
+ order: 0,
1045
+ fields: [
1046
+ {
1047
+ name: "ReviewQuarter",
1048
+ type: "string",
1049
+ hint: "Quarter being reviewed (e.g., Q1 2024, Q2 2024)",
1050
+ order: 0,
1051
+ },
1052
+ {
1053
+ name: "ReviewDate",
1054
+ type: "date",
1055
+ hint: "Date of this review",
1056
+ order: 1,
1057
+ },
1058
+ ],
1059
+ },
1060
+ {
1061
+ name: "Financial Performance",
1062
+ order: 1,
1063
+ fields: [
1064
+ {
1065
+ name: "QuarterlyTurnover",
1066
+ type: "money",
1067
+ hint: "Turnover for the quarter",
1068
+ order: 0,
1069
+ },
1070
+ {
1071
+ name: "QuarterlyGrossProfit",
1072
+ type: "money",
1073
+ hint: "Gross profit for the quarter",
1074
+ order: 1,
1075
+ },
1076
+ {
1077
+ name: "QuarterlyNetProfit",
1078
+ type: "money",
1079
+ hint: "Net profit for the quarter",
1080
+ order: 2,
1081
+ },
1082
+ {
1083
+ name: "CashPosition",
1084
+ type: "money",
1085
+ hint: "Cash at bank as at quarter end",
1086
+ order: 3,
1087
+ },
1088
+ {
1089
+ name: "PerformanceVsBudget",
1090
+ type: "string",
1091
+ hint: "Ahead of Budget, On Track, Below Budget",
1092
+ order: 4,
1093
+ },
1094
+ ],
1095
+ },
1096
+ {
1097
+ name: "Key Metrics Trends",
1098
+ order: 2,
1099
+ fields: [
1100
+ {
1101
+ name: "TurnoverTrend",
1102
+ type: "string",
1103
+ hint: "Increasing, Stable, Decreasing",
1104
+ order: 0,
1105
+ },
1106
+ {
1107
+ name: "ProfitabilityTrend",
1108
+ type: "string",
1109
+ hint: "Improving, Stable, Declining",
1110
+ order: 1,
1111
+ },
1112
+ {
1113
+ name: "CashFlowTrend",
1114
+ type: "string",
1115
+ hint: "Improving, Stable, Deteriorating",
1116
+ order: 2,
1117
+ },
1118
+ {
1119
+ name: "OverallAssessment",
1120
+ type: "string",
1121
+ hint: "Strong, Satisfactory, Concerns, Significant Issues",
1122
+ order: 3,
1123
+ },
1124
+ ],
1125
+ },
1126
+ ],
1127
+ },
1128
+
1129
+ // **************************
1130
+ // Enhanced Monitoring - Material Events
1131
+ // **************************
1132
+ {
1133
+ name: "Material Events",
1134
+ hint: "Record significant events that may impact loan risk",
1135
+ groups: [
1136
+ {
1137
+ name: "Event Details",
1138
+ order: 0,
1139
+ multi: true,
1140
+ fields: [
1141
+ {
1142
+ name: "EventDate",
1143
+ type: "date",
1144
+ hint: "Date the event occurred or was discovered",
1145
+ order: 0,
1146
+ },
1147
+ {
1148
+ name: "EventType",
1149
+ type: "string",
1150
+ hint: "CCJ Filed, Director Change, HMRC Arrears, Filing Default, Business Restructure, Other",
1151
+ order: 1,
1152
+ },
1153
+ {
1154
+ name: "EventDescription",
1155
+ type: "string-long",
1156
+ hint: "Detailed description of the event",
1157
+ order: 2,
1158
+ },
1159
+ {
1160
+ name: "FinancialImpact",
1161
+ type: "money",
1162
+ hint: "Estimated financial impact if applicable",
1163
+ order: 3,
1164
+ },
1165
+ {
1166
+ name: "RiskImpact",
1167
+ type: "string",
1168
+ hint: "Impact on loan risk: None, Low, Medium, High, Critical",
1169
+ order: 4,
1170
+ },
1171
+ {
1172
+ name: "ActionRequired",
1173
+ type: "string-long",
1174
+ hint: "What action is needed in response to this event",
1175
+ order: 5,
1176
+ },
1177
+ {
1178
+ name: "ActionTaken",
1179
+ type: "string-long",
1180
+ hint: "Action taken by lender",
1181
+ order: 6,
1182
+ },
1183
+ ],
1184
+ },
1185
+ ],
1186
+ },
1187
+
1188
+ // **************************
1189
+ // Enhanced Monitoring - Covenant Compliance
1190
+ // **************************
1191
+ {
1192
+ name: "Covenant Compliance",
1193
+ hint: "Track financial covenant compliance (if covenants are in place)",
1194
+ groups: [
1195
+ {
1196
+ name: "Reporting Period",
1197
+ order: 0,
1198
+ fields: [
1199
+ {
1200
+ name: "ReportingPeriod",
1201
+ type: "string",
1202
+ hint: "Period being reported (e.g., Q1 2024, FY 2024)",
1203
+ order: 0,
1204
+ },
1205
+ {
1206
+ name: "ReportingDate",
1207
+ type: "date",
1208
+ hint: "Date of covenant compliance check",
1209
+ order: 1,
1210
+ },
1211
+ {
1212
+ name: "OverallComplianceStatus",
1213
+ type: "string",
1214
+ hint: "Compliant, Minor Breach, Material Breach, Waiver Granted",
1215
+ order: 2,
1216
+ },
1217
+ ],
1218
+ },
1219
+ {
1220
+ name: "Financial Covenants",
1221
+ order: 1,
1222
+ multi: true,
1223
+ fields: [
1224
+ {
1225
+ name: "CovenantType",
1226
+ type: "string",
1227
+ hint: "E.g., Minimum EBITDA, Max Debt/EBITDA, Minimum Cash, Debt Service Coverage",
1228
+ order: 0,
1229
+ },
1230
+ {
1231
+ name: "RequiredLevel",
1232
+ type: "string",
1233
+ hint: "Required threshold (e.g., >£50,000, <3.0x, >1.25x)",
1234
+ order: 1,
1235
+ },
1236
+ {
1237
+ name: "ActualLevel",
1238
+ type: "string",
1239
+ hint: "Actual performance",
1240
+ order: 2,
1241
+ },
1242
+ {
1243
+ name: "ComplianceStatus",
1244
+ type: "string",
1245
+ hint: "Compliant, Breach, Waived",
1246
+ order: 3,
1247
+ },
1248
+ {
1249
+ name: "Notes",
1250
+ type: "string-long",
1251
+ hint: "Additional comments or explanation",
1252
+ order: 4,
1253
+ },
1254
+ ],
1255
+ },
1256
+ ],
1257
+ },
1258
+
1259
+ // **************************
1260
+ // Enhanced Monitoring - Bank Statement Review
1261
+ // **************************
1262
+ {
1263
+ name: "Bank Statement Review",
1264
+ hint: "Ongoing bank statement monitoring - capture multiple statement periods to track cash flow trends over time",
1265
+ groups: [
1266
+ {
1267
+ name: "Account Information",
1268
+ order: 0,
1269
+ fields: [
1270
+ {
1271
+ name: "BankName",
1272
+ type: "string",
1273
+ hint: "Name of the bank",
1274
+ order: 0,
1275
+ },
1276
+ {
1277
+ name: "AccountNumber",
1278
+ type: "string",
1279
+ hint: "Bank account number being monitored",
1280
+ order: 1,
1281
+ },
1282
+ ],
1283
+ },
1284
+ {
1285
+ name: "Statement Periods",
1286
+ order: 1,
1287
+ multi: true,
1288
+ fields: [
1289
+ {
1290
+ name: "StatementPeriodStart",
1291
+ type: "date",
1292
+ hint: "Start date of this statement period",
1293
+ order: 0,
1294
+ },
1295
+ {
1296
+ name: "StatementPeriodEnd",
1297
+ type: "date",
1298
+ hint: "End date of this statement period",
1299
+ order: 1,
1300
+ },
1301
+ {
1302
+ name: "OpeningBalance",
1303
+ type: "money",
1304
+ hint: "Account balance at start of period",
1305
+ order: 2,
1306
+ },
1307
+ {
1308
+ name: "ClosingBalance",
1309
+ type: "money",
1310
+ hint: "Account balance at end of period",
1311
+ order: 3,
1312
+ },
1313
+ {
1314
+ name: "AverageBalance",
1315
+ type: "money",
1316
+ hint: "Average daily balance for the period",
1317
+ order: 4,
1318
+ },
1319
+ {
1320
+ name: "LowestBalance",
1321
+ type: "money",
1322
+ hint: "Lowest balance during the period (identifies liquidity stress)",
1323
+ order: 5,
1324
+ },
1325
+ {
1326
+ name: "NumberOfDaysOverdrawn",
1327
+ type: "number",
1328
+ hint: "Number of days the account was overdrawn",
1329
+ order: 6,
1330
+ },
1331
+ {
1332
+ name: "ReturnedPayments",
1333
+ type: "number",
1334
+ hint: "Number of returned/bounced payments (red flag indicator)",
1335
+ order: 7,
1336
+ },
1337
+ {
1338
+ name: "TotalDeposits",
1339
+ type: "money",
1340
+ hint: "Total credits/deposits for the period",
1341
+ order: 8,
1342
+ },
1343
+ {
1344
+ name: "TotalWithdrawals",
1345
+ type: "money",
1346
+ hint: "Total debits/withdrawals for the period",
1347
+ order: 9,
1348
+ },
1349
+ {
1350
+ name: "NetCashFlow",
1351
+ type: "money",
1352
+ hint: "Net cash movement (deposits minus withdrawals)",
1353
+ order: 10,
1354
+ },
1355
+ {
1356
+ name: "CashFlowAssessment",
1357
+ type: "string",
1358
+ hint: "Overall assessment: Strong, Adequate, Weak, Deteriorating",
1359
+ order: 11,
1360
+ },
1361
+ ],
1362
+ },
1363
+ ],
1364
+ },
1365
+
1366
+ // **************************
1367
+ // Enhanced Monitoring - Annual Review
1368
+ // **************************
1369
+ {
1370
+ name: "Annual Review",
1371
+ hint: "Comprehensive annual loan review and renewal decision",
1372
+ groups: [
1373
+ {
1374
+ name: "Review Summary",
1375
+ order: 0,
1376
+ fields: [
1377
+ {
1378
+ name: "ReviewDate",
1379
+ type: "date",
1380
+ hint: "Date of annual review",
1381
+ order: 0,
1382
+ },
1383
+ {
1384
+ name: "ReviewYear",
1385
+ type: "string",
1386
+ hint: "Year under review (e.g., FY 2024)",
1387
+ order: 1,
1388
+ },
1389
+ {
1390
+ name: "AccountOfficer",
1391
+ type: "string",
1392
+ hint: "Name of officer conducting review",
1393
+ order: 2,
1394
+ },
1395
+ ],
1396
+ },
1397
+ {
1398
+ name: "Payment Performance",
1399
+ order: 1,
1400
+ fields: [
1401
+ {
1402
+ name: "TotalPaymentsDue",
1403
+ type: "number",
1404
+ hint: "Number of payments due during the year",
1405
+ order: 0,
1406
+ },
1407
+ {
1408
+ name: "PaymentsOnTime",
1409
+ type: "number",
1410
+ hint: "Number of payments made on time",
1411
+ order: 1,
1412
+ },
1413
+ {
1414
+ name: "PaymentsLate",
1415
+ type: "number",
1416
+ hint: "Number of late payments",
1417
+ order: 2,
1418
+ },
1419
+ {
1420
+ name: "MissedPayments",
1421
+ type: "number",
1422
+ hint: "Number of missed payments",
1423
+ order: 3,
1424
+ },
1425
+ {
1426
+ name: "PaymentPerformanceRating",
1427
+ type: "string",
1428
+ hint: "Excellent, Good, Satisfactory, Poor",
1429
+ order: 4,
1430
+ },
1431
+ ],
1432
+ },
1433
+ {
1434
+ name: "Financial Performance",
1435
+ order: 2,
1436
+ fields: [
1437
+ {
1438
+ name: "AnnualTurnover",
1439
+ type: "money",
1440
+ hint: "Total turnover for the year",
1441
+ order: 0,
1442
+ },
1443
+ {
1444
+ name: "AnnualNetProfit",
1445
+ type: "money",
1446
+ hint: "Net profit for the year",
1447
+ order: 1,
1448
+ },
1449
+ {
1450
+ name: "YearEndCashPosition",
1451
+ type: "money",
1452
+ hint: "Cash at bank at year end",
1453
+ order: 2,
1454
+ },
1455
+ {
1456
+ name: "FinancialPerformanceRating",
1457
+ type: "string",
1458
+ hint: "Strong Growth, Stable, Declining, Significant Issues",
1459
+ order: 3,
1460
+ },
1461
+ ],
1462
+ },
1463
+ {
1464
+ name: "Risk Assessment",
1465
+ order: 3,
1466
+ fields: [
1467
+ {
1468
+ name: "CurrentRiskRating",
1469
+ type: "string",
1470
+ hint: "Low Risk, Medium Risk, High Risk, Very High Risk",
1471
+ order: 0,
1472
+ },
1473
+ {
1474
+ name: "RiskTrend",
1475
+ type: "string",
1476
+ hint: "Improving, Stable, Deteriorating",
1477
+ order: 1,
1478
+ },
1479
+ {
1480
+ name: "KeyRiskFactors",
1481
+ type: "string-long",
1482
+ hint: "Main risk concerns identified",
1483
+ order: 2,
1484
+ },
1485
+ {
1486
+ name: "MitigatingFactors",
1487
+ type: "string-long",
1488
+ hint: "Factors that reduce risk",
1489
+ order: 3,
1490
+ },
1491
+ ],
1492
+ },
1493
+ {
1494
+ name: "Renewal Decision",
1495
+ order: 4,
1496
+ fields: [
1497
+ {
1498
+ name: "RenewalRecommendation",
1499
+ type: "string",
1500
+ hint: "Renew as is, Renew with modified terms, Do not renew, Increase facility, Decrease facility",
1501
+ order: 0,
1502
+ },
1503
+ {
1504
+ name: "ProposedChanges",
1505
+ type: "string-long",
1506
+ hint: "Any proposed changes to loan terms",
1507
+ order: 1,
1508
+ },
1509
+ {
1510
+ name: "ReviewerNotes",
1511
+ type: "string-long",
1512
+ hint: "Overall assessment and recommendation rationale",
1513
+ order: 2,
1514
+ },
1515
+ {
1516
+ name: "ApprovalRequired",
1517
+ type: "string",
1518
+ hint: "Does this require credit committee approval? (Yes/No)",
1519
+ order: 3,
1520
+ },
1521
+ ],
1522
+ },
1523
+ ],
1524
+ },
1525
+ ],
1526
+ },
1527
+ ];