spine-framework 0.1.61 → 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 (425) hide show
  1. package/LICENSE.md +223 -0
  2. package/README.md +327 -0
  3. package/package.json +107 -216
  4. package/src/cli/commands/init.ts +192 -0
  5. package/src/cli/commands/install.ts +25 -0
  6. package/src/cli/commands/list.ts +33 -0
  7. package/src/cli/commands/migrate.ts +24 -0
  8. package/src/cli/index.ts +46 -0
  9. package/src/components/AppLayout.tsx +21 -0
  10. package/src/components/AuthGuard.tsx +21 -0
  11. package/src/components/RoleGuard.tsx +23 -0
  12. package/src/components/index.ts +3 -0
  13. package/src/contexts/AppContext.tsx +122 -0
  14. package/src/contexts/AuthContext.tsx +87 -0
  15. package/src/contexts/SpineContext.tsx +46 -0
  16. package/src/contexts/index.ts +3 -0
  17. package/src/hooks/index.ts +4 -0
  18. package/src/hooks/useItems.ts +78 -0
  19. package/src/hooks/useThreads.ts +73 -0
  20. package/src/hooks/useWebSocket.ts +97 -0
  21. package/src/index.ts +22 -0
  22. package/src/types/index.ts +163 -0
  23. package/src/utils/api.ts +88 -0
  24. package/src/utils/client.ts +146 -0
  25. package/src/utils/config.ts +20 -0
  26. package/src/utils/index.ts +3 -0
  27. package/.framework/README.md +0 -129
  28. package/.framework/cli/bin.cjs +0 -14
  29. package/.framework/cli/commands/agents.ts +0 -153
  30. package/.framework/cli/commands/auth.ts +0 -94
  31. package/.framework/cli/commands/create-app.ts +0 -185
  32. package/.framework/cli/commands/dev.ts +0 -113
  33. package/.framework/cli/commands/doctor.ts +0 -442
  34. package/.framework/cli/commands/generate.ts +0 -332
  35. package/.framework/cli/commands/init.ts +0 -186
  36. package/.framework/cli/commands/install-app.ts +0 -565
  37. package/.framework/cli/commands/items.ts +0 -253
  38. package/.framework/cli/commands/migrate.ts +0 -139
  39. package/.framework/cli/commands/migrations.ts +0 -141
  40. package/.framework/cli/commands/pipelines.ts +0 -166
  41. package/.framework/cli/commands/status.ts +0 -197
  42. package/.framework/cli/commands/system.ts +0 -184
  43. package/.framework/cli/commands/test.ts +0 -227
  44. package/.framework/cli/commands/uninstall-app.ts +0 -166
  45. package/.framework/cli/context.ts +0 -268
  46. package/.framework/cli/env-loader.ts +0 -36
  47. package/.framework/cli/index.ts +0 -116
  48. package/.framework/cli/welcome.cjs +0 -45
  49. package/.framework/docs/API.md +0 -384
  50. package/.framework/docs/STABILITY.md +0 -52
  51. package/.framework/docs/admin-routes.md +0 -76
  52. package/.framework/docs/api-docs-progress.md +0 -38
  53. package/.framework/docs/api-governance.md +0 -146
  54. package/.framework/docs/api-testing-results.md +0 -212
  55. package/.framework/docs/apis/admin-configs.md +0 -567
  56. package/.framework/docs/apis/admin-data.md +0 -272
  57. package/.framework/docs/apis/index.md +0 -231
  58. package/.framework/docs/apis/internal.md +0 -295
  59. package/.framework/docs/apis/runtime.md +0 -537
  60. package/.framework/docs/assembly-launch-guide.md +0 -138
  61. package/.framework/docs/audit-results.md +0 -590
  62. package/.framework/docs/authorization-model.md +0 -170
  63. package/.framework/docs/db-api-inventory.md +0 -95
  64. package/.framework/docs/examples/custom-app/README.md +0 -77
  65. package/.framework/docs/examples/custom-function/README.md +0 -27
  66. package/.framework/docs/examples/custom-function/handler.ts +0 -48
  67. package/.framework/docs/examples/custom-webhook/README.md +0 -68
  68. package/.framework/docs/gap-remediation-backlog.md +0 -103
  69. package/.framework/docs/guides/cli-guide.md +0 -224
  70. package/.framework/docs/guides/getting-started.md +0 -103
  71. package/.framework/docs/guides/import-guide.md +0 -193
  72. package/.framework/docs/guides/testing-guide.md +0 -229
  73. package/.framework/docs/permission-examples.md +0 -326
  74. package/.framework/docs/ui-adoption-verification.md +0 -111
  75. package/.framework/docs/ui-api-coverage.md +0 -84
  76. package/.framework/docs/v2-compatibility-audit.md +0 -228
  77. package/.framework/functions/.gitkeep +0 -1
  78. package/.framework/functions/_shared/agent-runner.ts +0 -1097
  79. package/.framework/functions/_shared/app-manifest.ts +0 -184
  80. package/.framework/functions/_shared/audit.ts +0 -150
  81. package/.framework/functions/_shared/db.ts +0 -178
  82. package/.framework/functions/_shared/index.ts +0 -391
  83. package/.framework/functions/_shared/middleware.ts +0 -490
  84. package/.framework/functions/_shared/permissions.ts +0 -1325
  85. package/.framework/functions/_shared/pipeline-runner.ts +0 -731
  86. package/.framework/functions/_shared/principal.ts +0 -818
  87. package/.framework/functions/_shared/resolve-ids.ts +0 -106
  88. package/.framework/functions/_shared/schema-utils.ts +0 -967
  89. package/.framework/functions/_shared/testing.ts +0 -258
  90. package/.framework/functions/_shared/trigger-engine.ts +0 -425
  91. package/.framework/functions/_shared/webhook-registration.ts +0 -168
  92. package/.framework/functions/_shared/webhook-registry.ts +0 -129
  93. package/.framework/functions/account-nodes.ts +0 -111
  94. package/.framework/functions/admin-data.ts +0 -606
  95. package/.framework/functions/ai-agents.ts +0 -323
  96. package/.framework/functions/api-keys.ts +0 -376
  97. package/.framework/functions/apps.ts +0 -483
  98. package/.framework/functions/auth.ts +0 -196
  99. package/.framework/functions/debug-auth.ts +0 -107
  100. package/.framework/functions/embeddings.ts +0 -556
  101. package/.framework/functions/integration-routes.ts +0 -523
  102. package/.framework/functions/integrations.ts +0 -319
  103. package/.framework/functions/item-progress.ts +0 -272
  104. package/.framework/functions/logs.ts +0 -438
  105. package/.framework/functions/observability.ts +0 -275
  106. package/.framework/functions/pipeline-executions.ts +0 -494
  107. package/.framework/functions/pipelines.ts +0 -485
  108. package/.framework/functions/prompt-configs.ts +0 -339
  109. package/.framework/functions/roles.ts +0 -387
  110. package/.framework/functions/system-cron.ts +0 -742
  111. package/.framework/functions/system.ts +0 -323
  112. package/.framework/functions/tests.ts +0 -119
  113. package/.framework/functions/timers.ts +0 -357
  114. package/.framework/functions/triggers.ts +0 -563
  115. package/.framework/functions/types.ts +0 -604
  116. package/.framework/index.html +0 -16
  117. package/.framework/migrations/000_foundation.sql +0 -1266
  118. package/.framework/migrations/001_seed.sql +0 -163
  119. package/.framework/migrations/002_seed_constraints.sql +0 -19
  120. package/.framework/migrations/003_auth_user_trigger.sql +0 -67
  121. package/.framework/src/App.tsx +0 -126
  122. package/.framework/src/apps/admin/index.tsx +0 -173
  123. package/.framework/src/components/AppWrapper.tsx +0 -56
  124. package/.framework/src/components/CustomAppLoader.tsx +0 -116
  125. package/.framework/src/components/admin/AdminListPage.tsx +0 -151
  126. package/.framework/src/components/admin/AdminSidebar.tsx +0 -166
  127. package/.framework/src/components/admin/AdminStatsCard.tsx +0 -62
  128. package/.framework/src/components/admin/SortableTableHeader.tsx +0 -42
  129. package/.framework/src/components/app-shell/GenericAppShell.tsx +0 -181
  130. package/.framework/src/components/app-shell/GenericDetailPage.tsx +0 -200
  131. package/.framework/src/components/app-shell/GenericListPage.tsx +0 -116
  132. package/.framework/src/components/app-sidebar.tsx +0 -228
  133. package/.framework/src/components/auth/ProtectedRoute.tsx +0 -88
  134. package/.framework/src/components/layout/AppShell.tsx +0 -91
  135. package/.framework/src/components/layout/Header.tsx +0 -88
  136. package/.framework/src/components/layout/Layout.tsx +0 -95
  137. package/.framework/src/components/layout/Sidebar.tsx +0 -329
  138. package/.framework/src/components/runtime/DataDetailHeader.tsx +0 -77
  139. package/.framework/src/components/runtime/DataDetailPage.tsx +0 -171
  140. package/.framework/src/components/runtime/DataFilters.tsx +0 -91
  141. package/.framework/src/components/runtime/DataHeader.tsx +0 -68
  142. package/.framework/src/components/runtime/DataListPage.tsx +0 -124
  143. package/.framework/src/components/runtime/DataStats.tsx +0 -70
  144. package/.framework/src/components/runtime/DataTable.tsx +0 -174
  145. package/.framework/src/components/runtime/SchemaDetailForm.tsx +0 -134
  146. package/.framework/src/components/runtime/index.ts +0 -18
  147. package/.framework/src/components/search-form.tsx +0 -29
  148. package/.framework/src/components/shared/AgentView.tsx +0 -213
  149. package/.framework/src/components/shared/FieldRenderer.tsx +0 -478
  150. package/.framework/src/components/shared/SchemaFields.tsx +0 -226
  151. package/.framework/src/components/ui/DataTable.tsx +0 -343
  152. package/.framework/src/components/ui/Form.tsx +0 -281
  153. package/.framework/src/components/ui/ItemCard.tsx +0 -296
  154. package/.framework/src/components/ui/ItemListView.tsx +0 -308
  155. package/.framework/src/components/ui/LoadingSpinner.tsx +0 -52
  156. package/.framework/src/components/ui/Modal.tsx +0 -61
  157. package/.framework/src/components/ui/RichTextEditor.tsx +0 -210
  158. package/.framework/src/components/ui/accordion.tsx +0 -82
  159. package/.framework/src/components/ui/alert-dialog.tsx +0 -197
  160. package/.framework/src/components/ui/alert.tsx +0 -76
  161. package/.framework/src/components/ui/aspect-ratio.tsx +0 -11
  162. package/.framework/src/components/ui/avatar.tsx +0 -110
  163. package/.framework/src/components/ui/badge.tsx +0 -49
  164. package/.framework/src/components/ui/breadcrumb.tsx +0 -122
  165. package/.framework/src/components/ui/button-group.tsx +0 -83
  166. package/.framework/src/components/ui/button.tsx +0 -65
  167. package/.framework/src/components/ui/calendar.tsx +0 -222
  168. package/.framework/src/components/ui/card.tsx +0 -100
  169. package/.framework/src/components/ui/carousel.tsx +0 -240
  170. package/.framework/src/components/ui/chart.tsx +0 -368
  171. package/.framework/src/components/ui/checkbox.tsx +0 -31
  172. package/.framework/src/components/ui/collapsible.tsx +0 -33
  173. package/.framework/src/components/ui/combobox.tsx +0 -299
  174. package/.framework/src/components/ui/command.tsx +0 -193
  175. package/.framework/src/components/ui/context-menu.tsx +0 -261
  176. package/.framework/src/components/ui/dialog.tsx +0 -165
  177. package/.framework/src/components/ui/direction.tsx +0 -6
  178. package/.framework/src/components/ui/drawer.tsx +0 -132
  179. package/.framework/src/components/ui/dropdown-menu.tsx +0 -269
  180. package/.framework/src/components/ui/empty.tsx +0 -104
  181. package/.framework/src/components/ui/field.tsx +0 -238
  182. package/.framework/src/components/ui/hover-card.tsx +0 -42
  183. package/.framework/src/components/ui/input-group.tsx +0 -153
  184. package/.framework/src/components/ui/input-otp.tsx +0 -87
  185. package/.framework/src/components/ui/input.tsx +0 -19
  186. package/.framework/src/components/ui/item.tsx +0 -196
  187. package/.framework/src/components/ui/kbd.tsx +0 -26
  188. package/.framework/src/components/ui/label.tsx +0 -22
  189. package/.framework/src/components/ui/menubar.tsx +0 -277
  190. package/.framework/src/components/ui/native-select.tsx +0 -61
  191. package/.framework/src/components/ui/navigation-menu.tsx +0 -164
  192. package/.framework/src/components/ui/pagination.tsx +0 -129
  193. package/.framework/src/components/ui/popover.tsx +0 -87
  194. package/.framework/src/components/ui/progress.tsx +0 -31
  195. package/.framework/src/components/ui/radio-group.tsx +0 -42
  196. package/.framework/src/components/ui/resizable.tsx +0 -50
  197. package/.framework/src/components/ui/scroll-area.tsx +0 -53
  198. package/.framework/src/components/ui/select.tsx +0 -195
  199. package/.framework/src/components/ui/separator.tsx +0 -26
  200. package/.framework/src/components/ui/sheet.tsx +0 -145
  201. package/.framework/src/components/ui/sidebar.tsx +0 -706
  202. package/.framework/src/components/ui/skeleton.tsx +0 -13
  203. package/.framework/src/components/ui/slider.tsx +0 -59
  204. package/.framework/src/components/ui/sonner.tsx +0 -47
  205. package/.framework/src/components/ui/spinner.tsx +0 -10
  206. package/.framework/src/components/ui/switch.tsx +0 -33
  207. package/.framework/src/components/ui/table-primitives.tsx +0 -141
  208. package/.framework/src/components/ui/table.tsx +0 -114
  209. package/.framework/src/components/ui/tabs.tsx +0 -90
  210. package/.framework/src/components/ui/textarea.tsx +0 -18
  211. package/.framework/src/components/ui/toggle-group.tsx +0 -89
  212. package/.framework/src/components/ui/toggle.tsx +0 -45
  213. package/.framework/src/components/ui/tooltip.tsx +0 -57
  214. package/.framework/src/contexts/AppContext.tsx +0 -133
  215. package/.framework/src/contexts/AuthContext.tsx +0 -371
  216. package/.framework/src/hooks/use-mobile.ts +0 -19
  217. package/.framework/src/hooks/useApi.ts +0 -526
  218. package/.framework/src/hooks/useApps.ts +0 -114
  219. package/.framework/src/hooks/useEntityList.ts +0 -190
  220. package/.framework/src/hooks/useEntityRecord.ts +0 -308
  221. package/.framework/src/hooks/useForm.ts +0 -307
  222. package/.framework/src/hooks/useListSchema.ts +0 -264
  223. package/.framework/src/hooks/useSchemaRecord.ts +0 -223
  224. package/.framework/src/index.css +0 -128
  225. package/.framework/src/lib/api.ts +0 -156
  226. package/.framework/src/lib/supabase.ts +0 -94
  227. package/.framework/src/lib/utils.ts +0 -317
  228. package/.framework/src/main.tsx +0 -27
  229. package/.framework/src/pages/DashboardPage.tsx +0 -181
  230. package/.framework/src/pages/NotFoundPage.tsx +0 -39
  231. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +0 -161
  232. package/.framework/src/pages/admin/AIAgentsPage.tsx +0 -318
  233. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +0 -199
  234. package/.framework/src/pages/admin/APIKeysPage.tsx +0 -303
  235. package/.framework/src/pages/admin/AlertsConfigPage.tsx +0 -523
  236. package/.framework/src/pages/admin/AppDetailPage.tsx +0 -493
  237. package/.framework/src/pages/admin/AppsPage.tsx +0 -355
  238. package/.framework/src/pages/admin/DesignedPage.tsx +0 -491
  239. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +0 -534
  240. package/.framework/src/pages/admin/EmbeddingsPage.tsx +0 -424
  241. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +0 -176
  242. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +0 -109
  243. package/.framework/src/pages/admin/IntegratedDashboard.tsx +0 -402
  244. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +0 -187
  245. package/.framework/src/pages/admin/IntegrationsPage.tsx +0 -301
  246. package/.framework/src/pages/admin/LogsPage.tsx +0 -283
  247. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +0 -85
  248. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +0 -470
  249. package/.framework/src/pages/admin/PipelineDetailPage.tsx +0 -183
  250. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +0 -279
  251. package/.framework/src/pages/admin/PipelinesPage.tsx +0 -390
  252. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +0 -299
  253. package/.framework/src/pages/admin/PromptConfigsPage.tsx +0 -292
  254. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +0 -434
  255. package/.framework/src/pages/admin/RoleDetailPage.tsx +0 -273
  256. package/.framework/src/pages/admin/RolesPage.tsx +0 -292
  257. package/.framework/src/pages/admin/SelectTestPage.tsx +0 -61
  258. package/.framework/src/pages/admin/ShadcnTestPage.tsx +0 -588
  259. package/.framework/src/pages/admin/SimpleDashboard.tsx +0 -387
  260. package/.framework/src/pages/admin/TestRunDetailPage.tsx +0 -172
  261. package/.framework/src/pages/admin/TestingDashboard.tsx +0 -257
  262. package/.framework/src/pages/admin/TimerDetailPage.tsx +0 -151
  263. package/.framework/src/pages/admin/TimersPage.tsx +0 -376
  264. package/.framework/src/pages/admin/TriggerDetailPage.tsx +0 -149
  265. package/.framework/src/pages/admin/TriggersPage.tsx +0 -381
  266. package/.framework/src/pages/admin/TypeDetailPage.tsx +0 -694
  267. package/.framework/src/pages/admin/TypesPage.tsx +0 -295
  268. package/.framework/src/pages/auth/LoginPage.tsx +0 -187
  269. package/.framework/src/pages/auth/RegisterPage.tsx +0 -163
  270. package/.framework/src/pages/spine-framework/APIPage.tsx +0 -17
  271. package/.framework/src/pages/spine-framework/CLIPage.tsx +0 -25
  272. package/.framework/src/types/auth.ts +0 -125
  273. package/.framework/src/types/types.ts +0 -407
  274. package/STRUCTURE.md +0 -150
  275. package/bin/spine-framework.cjs +0 -62
  276. package/bin/welcome.cjs +0 -45
  277. package/bin/ws-shim.cjs +0 -8
  278. package/bin/ws-shim.ts +0 -10
  279. package/config/components.json +0 -25
  280. package/config/deno.lock +0 -108
  281. package/config/package-lock.json +0 -17183
  282. package/config/postcss.config.cjs +0 -10
  283. package/config/tailwind.config.cjs +0 -78
  284. package/config/tsconfig.build.json +0 -32
  285. package/config/tsconfig.cli.json +0 -18
  286. package/config/tsconfig.json +0 -41
  287. package/config/tsconfig.node.json +0 -17
  288. package/config/tsconfig.node.tsbuildinfo +0 -1
  289. package/config/tsconfig.tsbuildinfo +0 -1
  290. package/config/typedoc.json +0 -16
  291. package/config/vite.config.d.ts +0 -2
  292. package/config/vite.config.ts +0 -72
  293. package/dist/cli/commands/agents.d.ts +0 -39
  294. package/dist/cli/commands/agents.d.ts.map +0 -1
  295. package/dist/cli/commands/auth.d.ts +0 -36
  296. package/dist/cli/commands/auth.d.ts.map +0 -1
  297. package/dist/cli/commands/create-app.d.ts +0 -23
  298. package/dist/cli/commands/create-app.d.ts.map +0 -1
  299. package/dist/cli/commands/dev.d.ts +0 -24
  300. package/dist/cli/commands/dev.d.ts.map +0 -1
  301. package/dist/cli/commands/doctor.d.ts +0 -42
  302. package/dist/cli/commands/doctor.d.ts.map +0 -1
  303. package/dist/cli/commands/generate.d.ts +0 -36
  304. package/dist/cli/commands/generate.d.ts.map +0 -1
  305. package/dist/cli/commands/init.d.ts +0 -20
  306. package/dist/cli/commands/init.d.ts.map +0 -1
  307. package/dist/cli/commands/install-app.d.ts +0 -30
  308. package/dist/cli/commands/install-app.d.ts.map +0 -1
  309. package/dist/cli/commands/items.d.ts +0 -45
  310. package/dist/cli/commands/items.d.ts.map +0 -1
  311. package/dist/cli/commands/migrate.d.ts +0 -21
  312. package/dist/cli/commands/migrate.d.ts.map +0 -1
  313. package/dist/cli/commands/migrations.d.ts +0 -41
  314. package/dist/cli/commands/migrations.d.ts.map +0 -1
  315. package/dist/cli/commands/pipelines.d.ts +0 -40
  316. package/dist/cli/commands/pipelines.d.ts.map +0 -1
  317. package/dist/cli/commands/status.d.ts +0 -23
  318. package/dist/cli/commands/status.d.ts.map +0 -1
  319. package/dist/cli/commands/system.d.ts +0 -29
  320. package/dist/cli/commands/system.d.ts.map +0 -1
  321. package/dist/cli/commands/test.d.ts +0 -46
  322. package/dist/cli/commands/test.d.ts.map +0 -1
  323. package/dist/cli/commands/uninstall-app.d.ts +0 -23
  324. package/dist/cli/commands/uninstall-app.d.ts.map +0 -1
  325. package/dist/cli/context.d.ts +0 -88
  326. package/dist/cli/context.d.ts.map +0 -1
  327. package/dist/cli/env-loader.d.ts +0 -14
  328. package/dist/cli/env-loader.d.ts.map +0 -1
  329. package/dist/cli/index.d.ts +0 -41
  330. package/dist/cli/index.d.ts.map +0 -1
  331. package/dist/functions/_shared/agent-runner.d.ts +0 -156
  332. package/dist/functions/_shared/agent-runner.d.ts.map +0 -1
  333. package/dist/functions/_shared/app-manifest.d.ts +0 -68
  334. package/dist/functions/_shared/app-manifest.d.ts.map +0 -1
  335. package/dist/functions/_shared/audit.d.ts +0 -91
  336. package/dist/functions/_shared/audit.d.ts.map +0 -1
  337. package/dist/functions/_shared/db.d.ts +0 -125
  338. package/dist/functions/_shared/db.d.ts.map +0 -1
  339. package/dist/functions/_shared/index.d.ts +0 -299
  340. package/dist/functions/_shared/index.d.ts.map +0 -1
  341. package/dist/functions/_shared/middleware.d.ts +0 -315
  342. package/dist/functions/_shared/middleware.d.ts.map +0 -1
  343. package/dist/functions/_shared/permissions.d.ts +0 -626
  344. package/dist/functions/_shared/permissions.d.ts.map +0 -1
  345. package/dist/functions/_shared/pipeline-runner.d.ts +0 -124
  346. package/dist/functions/_shared/pipeline-runner.d.ts.map +0 -1
  347. package/dist/functions/_shared/principal.d.ts +0 -284
  348. package/dist/functions/_shared/principal.d.ts.map +0 -1
  349. package/dist/functions/_shared/resolve-ids.d.ts +0 -10
  350. package/dist/functions/_shared/resolve-ids.d.ts.map +0 -1
  351. package/dist/functions/_shared/schema-utils.d.ts +0 -181
  352. package/dist/functions/_shared/schema-utils.d.ts.map +0 -1
  353. package/dist/functions/_shared/testing.d.ts +0 -172
  354. package/dist/functions/_shared/testing.d.ts.map +0 -1
  355. package/dist/functions/_shared/trigger-engine.d.ts +0 -140
  356. package/dist/functions/_shared/trigger-engine.d.ts.map +0 -1
  357. package/dist/functions/_shared/webhook-registration.d.ts +0 -81
  358. package/dist/functions/_shared/webhook-registration.d.ts.map +0 -1
  359. package/dist/functions/_shared/webhook-registry.d.ts +0 -57
  360. package/dist/functions/_shared/webhook-registry.d.ts.map +0 -1
  361. package/dist/functions/account-nodes.d.ts +0 -48
  362. package/dist/functions/account-nodes.d.ts.map +0 -1
  363. package/dist/functions/admin-data.d.ts +0 -178
  364. package/dist/functions/admin-data.d.ts.map +0 -1
  365. package/dist/functions/ai-agents.d.ts +0 -125
  366. package/dist/functions/ai-agents.d.ts.map +0 -1
  367. package/dist/functions/api-keys.d.ts +0 -140
  368. package/dist/functions/api-keys.d.ts.map +0 -1
  369. package/dist/functions/apps.d.ts +0 -163
  370. package/dist/functions/apps.d.ts.map +0 -1
  371. package/dist/functions/auth.d.ts +0 -74
  372. package/dist/functions/auth.d.ts.map +0 -1
  373. package/dist/functions/debug-auth.d.ts +0 -33
  374. package/dist/functions/debug-auth.d.ts.map +0 -1
  375. package/dist/functions/embeddings.d.ts +0 -205
  376. package/dist/functions/embeddings.d.ts.map +0 -1
  377. package/dist/functions/integration-routes.d.ts +0 -45
  378. package/dist/functions/integration-routes.d.ts.map +0 -1
  379. package/dist/functions/integrations.d.ts +0 -124
  380. package/dist/functions/integrations.d.ts.map +0 -1
  381. package/dist/functions/item-progress.d.ts +0 -41
  382. package/dist/functions/item-progress.d.ts.map +0 -1
  383. package/dist/functions/logs.d.ts +0 -162
  384. package/dist/functions/logs.d.ts.map +0 -1
  385. package/dist/functions/observability.d.ts +0 -123
  386. package/dist/functions/observability.d.ts.map +0 -1
  387. package/dist/functions/pipeline-executions.d.ts +0 -190
  388. package/dist/functions/pipeline-executions.d.ts.map +0 -1
  389. package/dist/functions/pipelines.d.ts +0 -171
  390. package/dist/functions/pipelines.d.ts.map +0 -1
  391. package/dist/functions/prompt-configs.d.ts +0 -125
  392. package/dist/functions/prompt-configs.d.ts.map +0 -1
  393. package/dist/functions/roles.d.ts +0 -118
  394. package/dist/functions/roles.d.ts.map +0 -1
  395. package/dist/functions/system-cron.d.ts +0 -65
  396. package/dist/functions/system-cron.d.ts.map +0 -1
  397. package/dist/functions/system.d.ts +0 -29
  398. package/dist/functions/system.d.ts.map +0 -1
  399. package/dist/functions/tests.d.ts +0 -28
  400. package/dist/functions/tests.d.ts.map +0 -1
  401. package/dist/functions/timers.d.ts +0 -139
  402. package/dist/functions/timers.d.ts.map +0 -1
  403. package/dist/functions/triggers.d.ts +0 -203
  404. package/dist/functions/triggers.d.ts.map +0 -1
  405. package/dist/functions/types.d.ts +0 -151
  406. package/dist/functions/types.d.ts.map +0 -1
  407. package/dist/src/types/types.d.ts +0 -364
  408. package/dist/src/types/types.d.ts.map +0 -1
  409. package/index.html +0 -13
  410. package/netlify.toml +0 -36
  411. package/package-project.json +0 -64
  412. package/scripts/app-install-cli.ts +0 -286
  413. package/scripts/assemble-frontend.sh +0 -79
  414. package/scripts/assemble-functions.sh +0 -62
  415. package/scripts/assemble.sh +0 -41
  416. package/scripts/boundary-check.sh +0 -106
  417. package/scripts/build-manifest.sh +0 -80
  418. package/scripts/check-core-integrity.sh +0 -82
  419. package/scripts/ingest-chunks.cjs +0 -202
  420. package/scripts/kb-chunk-parser.cjs +0 -312
  421. package/scripts/kb-chunk-parser.ts +0 -330
  422. package/scripts/load-test-app-install.ts +0 -484
  423. package/scripts/netlify-dev-wrapper.sh +0 -22
  424. package/scripts/verify-integrity.sh +0 -69
  425. package/vitest.config.ts +0 -45
@@ -1,170 +0,0 @@
1
- # Authorization Model Overview
2
-
3
- ## First Surface vs Second Surface
4
-
5
- ### First Surface (User Interactions)
6
- - User is the actor
7
- - Permissions come from type.schema + DB role assignments
8
- - System admin bypasses all checks
9
- - Examples: User creates account, user creates ticket, user sends message
10
-
11
- ### Second Surface (System Interactions)
12
- - System is the actor
13
- - Runs with system role
14
- - Captures triggering user/system UUID for audit
15
- - Examples: AI agent processes ticket, timer fires, integration syncs data
16
-
17
- ### System Admin
18
- - Complete bypass of all restrictions
19
- - Can read/write/lock/unlock any surface
20
- - Audit logs still record actions
21
-
22
- ## Permission Resolution
23
-
24
- 1. **Authentication** - Validate JWT, resolve personId
25
- 2. **Account Context** - Determine acting account from headers/membership
26
- 3. **Role Resolution** - Get active roles from v2.people_accounts + v2.people_roles
27
- 4. **Schema Loading** - Load type.schema for target record type
28
- 5. **Permission Evaluation** - Apply record_permissions + field overrides
29
- 6. **Multi-role Merge** - Use highest effective permission per action
30
- 7. **System Admin Bypass** - Skip all checks if system_admin
31
-
32
- ## Master/Client Access
33
-
34
- Master account users access client records by:
35
- 1. Being assigned roles in client accounts via v2.people_roles
36
- 2. Having those roles recognized in client record's type.schema
37
- 3. No special-case permission logic required
38
-
39
- ## Type Schema Structure
40
-
41
- ```json
42
- {
43
- "record_permissions": {
44
- "role_slug": {
45
- "create": boolean,
46
- "read": "all" | "account" | "own" | "none",
47
- "update": "all" | "account" | "own" | "none",
48
- "delete": boolean
49
- }
50
- },
51
- "fields": {
52
- "field_name": {
53
- "type": "field_type",
54
- "permissions": {
55
- "role_slug": {
56
- "read": boolean,
57
- "write": boolean
58
- }
59
- }
60
- }
61
- }
62
- }
63
- ```
64
-
65
- ## Access Levels
66
-
67
- ### Record Access Levels
68
- - **all** - Can access all records regardless of ownership
69
- - **account** - Can access records within the same account
70
- - **own** - Can only access records they created
71
- - **none** - No access
72
-
73
- ### Field Access Levels
74
- - **true** - Can access the field
75
- - **false** - Cannot access the field
76
-
77
- ## Multi-Role Permission Merging
78
-
79
- When a user has multiple roles, permissions are merged using the "highest effective permission wins" rule:
80
-
81
- - For CRUD operations: if any role allows the action, the action is allowed
82
- - For field access: if any role allows field access, field access is allowed
83
- - System admin bypasses all permission checks
84
-
85
- ## Implementation Details
86
-
87
- ### Shared Permission Resolver
88
-
89
- The `resolveFirstSurfacePermissions()` function in `v2-core/functions/_shared/permissions.ts` handles:
90
-
91
- 1. Loading type schema from database
92
- 2. Resolving user roles for the account context
93
- 3. Evaluating record permissions for each role
94
- 4. Merging permissions across multiple roles
95
- 5. Applying field-level overrides
96
-
97
- ### API Integration
98
-
99
- APIs use the permission resolver through these helper functions:
100
-
101
- - `canAccessRecord()` - Check if user can perform action on a record
102
- - `sanitizeRecordData()` - Filter record data based on read permissions
103
- - `validateUpdatePermissions()` - Validate field-level write permissions
104
-
105
- ### System Admin Override
106
-
107
- System admin users (`systemRole === 'system_admin'`) bypass all permission checks while maintaining audit trails.
108
-
109
- ## Examples
110
-
111
- ### Support Ticket Type Schema
112
-
113
- ```json
114
- {
115
- "record_permissions": {
116
- "user": {
117
- "create": true,
118
- "read": "own",
119
- "update": "own",
120
- "delete": false
121
- },
122
- "master-support": {
123
- "create": false,
124
- "read": "all",
125
- "update": "all",
126
- "delete": false
127
- },
128
- "master-csm": {
129
- "create": false,
130
- "read": "all",
131
- "update": false,
132
- "delete": false
133
- }
134
- },
135
- "fields": {
136
- "arr": {
137
- "type": "number",
138
- "permissions": {
139
- "master-support": {
140
- "read": false,
141
- "write": false
142
- },
143
- "master-csm": {
144
- "read": true,
145
- "write": true
146
- }
147
- }
148
- }
149
- }
150
- }
151
- ```
152
-
153
- ### Permission Evaluation
154
-
155
- **Customer (user role):**
156
- - Can create tickets
157
- - Can only read/update their own tickets
158
- - Cannot see ARR field
159
-
160
- **Master Support (master-support role):**
161
- - Cannot create tickets
162
- - Can read all client tickets
163
- - Can update most ticket fields
164
- - Cannot see ARR field (field override)
165
-
166
- **Master CSM (master-csm role):**
167
- - Cannot create tickets
168
- - Can read all client tickets
169
- - Can only update ARR field (field override)
170
- - Cannot delete tickets
@@ -1,95 +0,0 @@
1
- # DB-First API Inventory (v2 Schema)
2
-
3
- ## Core Entity Tables
4
-
5
- | Table | Endpoint | Domain | Status | Notes |
6
- |-------|----------|--------|--------|-------|
7
- | `accounts` | accounts.ts | admin-data | complete | Full CRUD with account scoping |
8
- | `people` | people.ts | admin-data | complete | Full CRUD with account scoping |
9
- | `items` | items.ts | admin-data | complete | Full CRUD with type validation |
10
- | `types` | types.ts | admin-configs | complete | Unified for item/account/person types |
11
- | `apps` | apps.ts | admin-configs | complete | App definitions with nav items |
12
- | `roles` | roles.ts | admin-configs | complete | Role definitions and permissions |
13
- | `links` | links.ts | runtime | complete | Polymorphic entity relationships |
14
- | `link_types` | link_types.ts | admin-configs | complete | Link type definitions |
15
-
16
- ## Workflow & Automation Tables
17
-
18
- | Table | Endpoint | Domain | Status | Notes |
19
- |-------|----------|--------|--------|-------|
20
- | `pipelines` | pipelines.ts | admin-configs | complete | Workflow automation pipelines |
21
- | `pipeline_executions` | pipeline-executions.ts | runtime | complete | Pipeline execution history |
22
- | `triggers` | triggers.ts | admin-configs | complete | Trigger definitions |
23
- | `trigger_executions` | trigger_executions | runtime | RPC-only | Accessed via triggers.ts |
24
- | `timers` | timers.ts | admin-configs | complete | Scheduled/delayed timers |
25
-
26
- ## Collaboration & Communication Tables
27
-
28
- | Table | Endpoint | Domain | Status | Notes |
29
- |-------|----------|--------|--------|-------|
30
- | `threads` | threads.ts | runtime | complete | Conversation threads |
31
- | `messages` | messages.ts | runtime | complete | Thread messages |
32
- | `attachments` | attachments.ts | runtime | complete | File attachments |
33
- | `watchers` | watchers.ts | runtime | complete | Entity watching/subscriptions |
34
-
35
- ## Integration & AI Tables
36
-
37
- | Table | Endpoint | Domain | Status | Notes |
38
- |-------|----------|--------|--------|-------|
39
- | `integrations` | integrations.ts | admin-configs | complete | Integration instances |
40
- | `embeddings` | embeddings.ts | admin-configs | complete | Embedding vectors |
41
- | `ai_agents` | ai-agents.ts | admin-configs | complete | AI agent definitions |
42
- | `prompt_configs` | prompt-configs.ts | admin-configs | complete | AI prompt configurations |
43
-
44
- ## Access Control Tables
45
-
46
- | Table | Endpoint | Domain | Status | Notes |
47
- |-------|----------|--------|--------|-------|
48
- | `people_accounts` | people-accounts.ts | runtime | complete | People-Accounts junction |
49
- | `people_roles` | people-roles.ts | runtime | complete | People-Roles junction |
50
- | `account_paths` | account-nodes.ts | internal | RPC-only | Account hierarchy traversal |
51
-
52
- ## System & Logging Tables
53
-
54
- | Table | Endpoint | Domain | Status | Notes |
55
- |-------|----------|--------|--------|-------|
56
- | `logs` | logs.ts | internal | complete | System and application logs |
57
-
58
- ## v2-Incompatible Endpoints (Require Remediation)
59
-
60
- | Endpoint | Referenced Tables | Domain | Status | Action Required |
61
- |----------|------------------|--------|--------|-----------------|
62
- | ai-orchestrator.ts | `ai_orchestrator` | internal | v2-incompatible | Table does not exist in v2 schema |
63
- | pending-actions.ts | `pending_actions` | internal | v2-incompatible | Table does not exist in v2 schema |
64
- | apps-accounts.ts | `apps_accounts` | internal | v2-incompatible | Table does not exist in v2 schema |
65
- | apps-integrations.ts | `apps_integrations` | internal | v2-incompatible | Table does not exist in v2 schema |
66
- | impersonation.ts | `impersonation_sessions`, `impersonation_policies`, `impersonation_logs` | internal | v2-incompatible | Tables do not exist in v2 schema |
67
- | integration-health.ts | `integration_sync_logs`, `oauth_connections`, `api_keys`, `api_key_usage_logs` | internal | v2-incompatible | Tables do not exist in v2 schema |
68
- | thread-participants.ts | `thread_participants` | runtime | v2-incompatible | Table does not exist in v2 schema |
69
- | outbox.ts | `outbox` | internal | v2-incompatible | Table does not exist in v2 schema |
70
- | webhooks.ts | `webhooks` | internal | v2-incompatible | Table does not exist in v2 schema |
71
-
72
- ## Summary
73
-
74
- ### Complete Coverage: 18 tables
75
- - All core entity tables have proper endpoints
76
- - All workflow/automation tables are covered
77
- - All collaboration tables are covered
78
- - All integration/AI tables are covered
79
- - Access control tables are covered
80
- - System logging is covered
81
-
82
- ### v2-Incompatible: 9 endpoints
83
- - These endpoints reference tables that don't exist in v2 schema
84
- - Must be either rewritten to use existing v2 tables or quarantined
85
- - Priority: High - these will cause runtime errors if called
86
-
87
- ### Missing Endpoints: 0 tables
88
- - All v2 schema tables have corresponding endpoints
89
- - Some tables are accessed via RPC rather than direct queries (trigger_executions, account_paths)
90
-
91
- ### Recommendations
92
- 1. Quarantine v2-incompatible endpoints immediately
93
- 2. Rewrite or remove incompatible endpoints
94
- 3. Consider if missing functionality should be implemented with existing v2 tables
95
- 4. Update any UI that might be calling incompatible endpoints
@@ -1,77 +0,0 @@
1
- # Example: Custom App
2
-
3
- A minimal React app with manifest and routing, installable via `spine-framework install-app`.
4
-
5
- ## Directory Structure
6
-
7
- ```
8
- custom/apps/my-app/
9
- ├── manifest.json # App metadata, routes, nav items
10
- ├── index.tsx # React entry point (default export)
11
- ├── seed/
12
- │ ├── types.json # Item types this app provides
13
- │ └── triggers.json # Automation triggers
14
- ├── components/
15
- │ └── Dashboard.tsx # App-specific components
16
- └── package.json # npm package metadata (optional)
17
- ```
18
-
19
- ## manifest.json
20
-
21
- ```json
22
- {
23
- "name": "My App",
24
- "slug": "my-app",
25
- "version": "0.1.0",
26
- "description": "A custom app for demonstration",
27
- "routes": [
28
- { "path": "/", "redirect": "/dashboard" },
29
- { "path": "/dashboard", "component": "Dashboard" }
30
- ],
31
- "nav_items": [
32
- { "label": "Dashboard", "path": "/dashboard", "icon": "LayoutDashboard" }
33
- ],
34
- "required_roles": ["member"]
35
- }
36
- ```
37
-
38
- ## index.tsx
39
-
40
- ```tsx
41
- import * as React from 'react'
42
- import { Routes, Route, Navigate } from 'react-router-dom'
43
-
44
- function Dashboard() {
45
- return (
46
- <div className="p-6">
47
- <h1 className="text-2xl font-bold">My App</h1>
48
- </div>
49
- )
50
- }
51
-
52
- export default function MyApp() {
53
- return (
54
- <Routes>
55
- <Route path="/" element={<Navigate to="dashboard" replace />} />
56
- <Route path="dashboard" element={<Dashboard />} />
57
- </Routes>
58
- )
59
- }
60
- ```
61
-
62
- ## Installation
63
-
64
- ```bash
65
- # Create the app scaffold
66
- spine-framework create-app my-app
67
-
68
- # Or install an existing app package
69
- spine-framework install-app my-app
70
- ```
71
-
72
- ## How It Works
73
-
74
- 1. `CustomAppLoader` discovers apps via `import.meta.glob('custom/apps/*/index.tsx')`
75
- 2. The app's `manifest.json` provides routing and navigation metadata
76
- 3. Seed data is applied via `spine-framework install-app` (idempotent upserts)
77
- 4. The app is isolated — it cannot import from other apps or core internals
@@ -1,27 +0,0 @@
1
- # Example: Custom Function
2
-
3
- A minimal Netlify Function using Spine's core context system.
4
-
5
- ## Setup
6
-
7
- 1. Create `custom/functions/custom_my-handler.ts`
8
- 2. Import `createHandler` and `CoreContext` from `spine-framework/_shared`
9
- 3. Your handler receives a fully-resolved `CoreContext` with:
10
- - `ctx.principal` — authenticated user/machine identity
11
- - `ctx.db` — Supabase client (scoped to principal's permissions)
12
- - `ctx.accountId` — resolved account UUID
13
- - `ctx.requestId` — unique request trace ID
14
-
15
- ## Key Points
16
-
17
- - **Naming convention:** Custom functions MUST be prefixed with `custom_`
18
- - **No static imports from core:** Use the `spine-framework` package exports
19
- - **Authentication is automatic:** `createHandler` validates the JWT/API key before your code runs
20
- - **Database access:** Use `ctx.db` for RLS-scoped queries, or import `adminDb` for service-role operations
21
-
22
- ## API
23
-
24
- ```
25
- GET/POST /.netlify/functions/custom_my-handler?action=list
26
- Authorization: Bearer <jwt>
27
- ```
@@ -1,48 +0,0 @@
1
- /**
2
- * Example: Custom Netlify Function using Spine core context
3
- *
4
- * This demonstrates the minimal pattern for creating a custom function
5
- * that leverages Spine's authentication, database, and principal system.
6
- *
7
- * File: custom/functions/custom_my-handler.ts
8
- */
9
-
10
- import { createHandler, adminDb } from 'spine-framework/_shared'
11
- import type { CoreContext } from 'spine-framework/_shared'
12
-
13
- /**
14
- * A simple handler that lists items for the current account.
15
- */
16
- async function listAccountItems(ctx: CoreContext) {
17
- const { data, error } = await ctx.db
18
- .from('items')
19
- .select('id, title, type_id, created_at')
20
- .eq('account_id', ctx.accountId)
21
- .eq('is_active', true)
22
- .order('created_at', { ascending: false })
23
- .limit(50)
24
-
25
- if (error) {
26
- return { statusCode: 500, body: JSON.stringify({ error: error.message }) }
27
- }
28
-
29
- return {
30
- statusCode: 200,
31
- body: JSON.stringify({ items: data }),
32
- }
33
- }
34
-
35
- /**
36
- * Netlify Function entry point.
37
- * `createHandler` resolves the principal, validates auth, and provides CoreContext.
38
- */
39
- export const handler = createHandler(async (ctx) => {
40
- const { action } = ctx.params
41
-
42
- switch (action) {
43
- case 'list':
44
- return listAccountItems(ctx)
45
- default:
46
- return { statusCode: 400, body: JSON.stringify({ error: 'Unknown action' }) }
47
- }
48
- })
@@ -1,68 +0,0 @@
1
- # Example: Custom Webhook Handler
2
-
3
- Demonstrates the self-registration pattern for webhook handlers.
4
-
5
- ## How It Works
6
-
7
- 1. Create a handler function in `custom/functions/custom_my-webhook.ts`
8
- 2. Register it by calling `registerWebhookHandler()` in `custom/functions/custom_webhook-handlers.ts`
9
- 3. Core resolves handlers at runtime via the `webhook_handlers` DB table — no static imports needed
10
-
11
- ## Handler Function
12
-
13
- ```ts
14
- // custom/functions/custom_my-webhook.ts
15
-
16
- import { createHandler } from 'spine-framework/_shared'
17
- import type { CoreContext } from 'spine-framework/_shared'
18
-
19
- export const handler = createHandler(async (ctx: CoreContext) => {
20
- const payload = ctx.body
21
-
22
- // Process the webhook payload
23
- console.log('Received webhook:', payload.event_type)
24
-
25
- // Do something with the data
26
- const { error } = await ctx.db
27
- .from('items')
28
- .insert({
29
- title: `Webhook: ${payload.event_type}`,
30
- type_id: await resolveTypeId('webhook_event'),
31
- account_id: ctx.accountId,
32
- data: payload,
33
- })
34
-
35
- if (error) {
36
- return { statusCode: 500, body: JSON.stringify({ error: error.message }) }
37
- }
38
-
39
- return { statusCode: 200, body: JSON.stringify({ ok: true }) }
40
- })
41
- ```
42
-
43
- ## Registration
44
-
45
- ```ts
46
- // In custom/functions/custom_webhook-handlers.ts
47
-
48
- import { registerWebhookHandler } from 'spine-framework/_shared/webhook-registration'
49
-
50
- registerWebhookHandler({
51
- name: 'my-webhook',
52
- functionName: 'custom_my-webhook',
53
- description: 'Handles incoming webhooks from MyService',
54
- events: ['integration.webhook'],
55
- }).catch(console.error)
56
- ```
57
-
58
- ## Integration Config
59
-
60
- When configuring an integration in the admin panel, set:
61
- - `handler.path` = `my-webhook` (matches the `name` in registration)
62
-
63
- ## Key Points
64
-
65
- - **Self-registration is idempotent** — safe to call on every module load
66
- - **No core changes needed** — just add your handler and register it
67
- - **Runtime resolution** — core looks up handlers from `webhook_handlers` table via `resolveHandler()`
68
- - **Events array** — currently `['integration.webhook']` is the standard event type
@@ -1,103 +0,0 @@
1
- # Gap Remediation Backlog
2
-
3
- ## Priority 1: Critical v2-Incompatible Endpoints
4
-
5
- ### 1. Quarantine v2-Incompatible Endpoints
6
- **Files to quarantine:**
7
- - `ai-orchestrator.ts` - References non-existent `ai_orchestrator` table
8
- - `pending-actions.ts` - References non-existent `pending_actions` table
9
- - `apps-accounts.ts` - References non-existent `apps_accounts` table
10
- - `apps-integrations.ts` - References non-existent `apps_integrations` table
11
- - `impersonation.ts` - References non-existent impersonation tables
12
- - `integration-health.ts` - References non-existent integration log tables
13
- - `thread-participants.ts` - References non-existent `thread_participants` table
14
- - `outbox.ts` - References non-existent `outbox` table
15
- - `webhooks.ts` - References non-existent `webhooks` table
16
-
17
- **Action:**
18
- 1. Move these files to `v2-core/functions/_quarantine/` directory
19
- 2. Update any routing that might call these endpoints
20
- 3. Document what functionality needs replacement
21
-
22
- ## Priority 2: UI Adoption Issues
23
-
24
- ### 2. Fix TimersPage Mock Data
25
- **Issue:** TimersPage uses mock data instead of calling timers.ts API
26
- **File:** `v2-core/src/pages/admin/TimersPage.tsx`
27
- **Action:** Replace mock data with `apiFetch('/.netlify/functions/timers')`
28
-
29
- ## Priority 3: API Standardization
30
-
31
- ### 3. Add Role Guards to Config Endpoints
32
- **Files to update:**
33
- - `types.ts` - Admin-only for create/update/delete
34
- - `apps.ts` - Admin-only for create/update/delete
35
- - `pipelines.ts` - Admin-only for create/update/delete
36
- - `triggers.ts` - Admin-only for create/update/delete
37
- - `ai-agents.ts` - Admin-only for create/update/delete
38
- - `embeddings.ts` - Admin-only for create/update/delete
39
- - `timers.ts` - Admin-only for create/update/delete
40
- - `integrations.ts` - Admin-only for create/update/delete
41
- - `prompt-configs.ts` - Admin-only for create/update/delete
42
- - `roles.ts` - Admin-only for create/update/delete
43
-
44
- **Action:** Add `requireAuth` middleware to all config mutation endpoints
45
-
46
- ### 4. Verify Soft Delete Implementation
47
- **Files to check:**
48
- - All endpoints should use `is_active=false` for delete
49
- - Ensure `updated_at` is set on soft delete
50
- - Verify audit logging before soft delete
51
-
52
- ## Priority 4: Documentation
53
-
54
- ### 5. Add Inline API Documentation
55
- **All endpoint files need:**
56
- - Purpose and domain documentation
57
- - Auth requirements
58
- - Account scoping rules
59
- - Request/response contracts
60
- - Soft delete behavior
61
- - v2 table dependencies
62
-
63
- ### 6. Generate API Reference Docs
64
- **Create files in `v2-core/docs/apis/`:**
65
- - `admin-data.md`
66
- - `admin-configs.md`
67
- - `runtime.md`
68
- - `internal.md`
69
- - `index.md` (top-level)
70
-
71
- ## Implementation Order
72
-
73
- ### Phase 1: Critical Fixes (Immediate)
74
- 1. Quarantine v2-incompatible endpoints
75
- 2. Fix TimersPage mock data issue
76
-
77
- ### Phase 2: Security & Standards (High)
78
- 1. Add role guards to config endpoints
79
- 2. Verify soft delete implementation
80
- 3. Add basic inline documentation
81
-
82
- ### Phase 3: Documentation (Medium)
83
- 1. Complete inline documentation for all endpoints
84
- 2. Generate split API reference docs
85
- 3. Create top-level index
86
-
87
- ### Phase 4: Verification (Low)
88
- 1. Verify UI adoption for all completed APIs
89
- 2. Final compliance check against API rulebook
90
-
91
- ## Success Criteria
92
-
93
- - [ ] No v2-incompatible endpoints in active routing
94
- - [ ] All admin UIs use proper APIs (no mock data)
95
- - [ ] All config endpoints have admin-only role guards
96
- - [ ] All endpoints use soft delete correctly
97
- - [ ] All endpoints have inline documentation
98
- - [ ] API reference docs generated and indexed
99
- - [ ] UI adoption verified for all APIs
100
-
101
- ## Blocked Items
102
-
103
- None currently identified.