spine-framework 0.2.1 → 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 +213 -8
  2. package/README.md +327 -0
  3. package/package.json +107 -217
  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 -133
  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 -71
  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 -71
  412. package/scripts/app-install-cli.ts +0 -286
  413. package/scripts/assemble-frontend.sh +0 -76
  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,384 +0,0 @@
1
- # Spine Core Public API
2
-
3
- **Stability:** Evolving (pre-1.0)
4
- **Version:** 0.1.0
5
-
6
- This document describes the stable API surface for building on Spine Core. These exports from `@core/_shared` are intended for use by custom code.
7
-
8
- ---
9
-
10
- ## Stability Levels
11
-
12
- - **Stable** — Safe to use, won't change in minor versions
13
- - **Evolving** — May change, backward compatibility maintained when possible
14
- - **Internal** — Not for external use, subject to breaking changes
15
-
16
- ---
17
-
18
- ## Core Context & Authentication
19
-
20
- ### `createHandler`
21
- **Stability:** Stable
22
-
23
- Creates a type-safe API handler with built-in authentication, authorization, and logging.
24
-
25
- ```typescript
26
- import { createHandler } from '@core/_shared'
27
-
28
- export const handler = createHandler(async (event, ctx) => {
29
- // ctx.db is RLS-scoped to the authenticated user
30
- // ctx.principal contains user identity, roles, permissions
31
- return { data: await ctx.db.from('items').select('*') }
32
- })
33
- ```
34
-
35
- **Context Object:**
36
- ```typescript
37
- interface CoreContext {
38
- db: SupabaseClient // RLS-scoped database client
39
- principal: Principal // Authenticated user info
40
- logger: Logger // Structured logging
41
- }
42
- ```
43
-
44
- ---
45
-
46
- ### `resolvePrincipal`
47
- **Stability:** Stable
48
-
49
- Resolves an API key or JWT to a principal with permissions.
50
-
51
- ```typescript
52
- import { resolvePrincipal } from '@core/_shared'
53
-
54
- const principal = await resolvePrincipal(apiKey, adminDb)
55
- // Returns: { id, account_id, roles, permissions, ... }
56
- ```
57
-
58
- ---
59
-
60
- ## Webhook Registry
61
-
62
- ### `resolveHandler`
63
- **Stability:** Evolving
64
-
65
- Dynamically loads a webhook handler by name from the registry.
66
-
67
- ```typescript
68
- import { resolveHandler } from '@core/_shared'
69
-
70
- const handler = await resolveHandler('cortex-webhook')
71
- if (handler) {
72
- await handler(event, context)
73
- }
74
- ```
75
-
76
- **Usage in custom code:** See `registerWebhookHandler` below.
77
-
78
- ---
79
-
80
- ### `registerWebhookHandler`
81
- **Stability:** Evolving
82
-
83
- Self-register a custom webhook handler at runtime.
84
-
85
- ```typescript
86
- import { registerWebhookHandler } from '@core/_shared'
87
-
88
- await registerWebhookHandler({
89
- name: 'my-handler', // Unique identifier
90
- functionName: 'custom_my-handler', // Netlify function name
91
- description: 'Handles X events',
92
- events: ['item.created', 'user.updated']
93
- })
94
- ```
95
-
96
- **Benefits:**
97
- - No core code changes to add handlers
98
- - Self-contained registration
99
- - Runtime discovery
100
-
101
- ---
102
-
103
- ## Pipeline Engine
104
-
105
- ### `runPipeline`
106
- **Stability:** Evolving
107
-
108
- Execute a pipeline with the given input and context.
109
-
110
- ```typescript
111
- import { runPipeline } from '@core/_shared'
112
-
113
- const result = await runPipeline(pipelineId, {
114
- item_id: itemId,
115
- account_id: accountId,
116
- user_id: userId
117
- }, context)
118
- ```
119
-
120
- ---
121
-
122
- ## Database
123
-
124
- ### `adminDb`
125
- **Stability:** Stable
126
-
127
- Service-role database client (bypasses RLS). Use with caution.
128
-
129
- ```typescript
130
- import { adminDb } from '@core/_shared'
131
-
132
- // For operations requiring elevated privileges
133
- const { data } = await adminDb.from('system_config').select('*')
134
- ```
135
-
136
- **⚠️ Warning:** Only use for cross-tenant operations or when RLS would block legitimate system actions.
137
-
138
- ---
139
-
140
- ### `joins`
141
- **Stability:** Stable
142
-
143
- Database query builders for common patterns.
144
-
145
- ```typescript
146
- import { joins } from '@core/_shared'
147
-
148
- // Joins with common filters applied
149
- const query = joins.itemsWithAccounts(ctx.db)
150
- ```
151
-
152
- ---
153
-
154
- ## Permissions
155
-
156
- ### `checkPermission`
157
- **Stability:** Evolving
158
-
159
- Check if principal has permission for an action.
160
-
161
- ```typescript
162
- import { checkPermission } from '@core/_shared'
163
-
164
- const allowed = await checkPermission(ctx.principal, 'item', 'update', itemId)
165
- ```
166
-
167
- ---
168
-
169
- ### `sanitizeRecordData`
170
- **Stability:** Evolving
171
-
172
- Removes fields user cannot see based on permissions.
173
-
174
- ```typescript
175
- import { sanitizeRecordData } from '@core/_shared'
176
-
177
- const safeData = sanitizeRecordData(record, ctx.principal, 'read')
178
- ```
179
-
180
- ---
181
-
182
- ## App Manifest Utilities
183
-
184
- ### `loadManifest`
185
- **Stability:** Evolving
186
-
187
- Load and parse an app manifest.json file.
188
-
189
- ```typescript
190
- import { loadManifest } from '@core/_shared'
191
-
192
- const manifest = loadManifest('custom/apps/my-app/manifest.json')
193
- // Returns: { name, slug, required_roles, routes, nav_items, ... }
194
- ```
195
-
196
- ---
197
-
198
- ### `mergeWithManifest`
199
- **Stability:** Evolving
200
-
201
- Merge database app record with manifest data.
202
-
203
- ```typescript
204
- import { mergeWithManifest } from '@core/_shared'
205
-
206
- const app = mergeWithManifest(dbRecord)
207
- // Returns merged data with manifest taking precedence for metadata
208
- ```
209
-
210
- ---
211
-
212
- ## Audit & Logging
213
-
214
- ### `emitAudit`
215
- **Stability:** Stable
216
-
217
- Emit structured audit log entry.
218
-
219
- ```typescript
220
- import { emitAudit } from '@core/_shared'
221
-
222
- emitAudit({
223
- action: 'item.updated',
224
- target: { type: 'item', id: itemId },
225
- actor: ctx.principal.id,
226
- metadata: { fields_changed: ['status', 'assignee'] }
227
- })
228
- ```
229
-
230
- ---
231
-
232
- ## Schema Utilities
233
-
234
- ### `validateSchema`
235
- **Stability:** Evolving
236
-
237
- Validate data against JSON schema.
238
-
239
- ```typescript
240
- import { validateSchema } from '@core/_shared'
241
-
242
- const { valid, errors } = validateSchema(data, schema)
243
- ```
244
-
245
- ---
246
-
247
- ## Agent Runner
248
-
249
- ### `runAgent`
250
- **Stability:** Evolving
251
-
252
- Execute an AI agent with context.
253
-
254
- ```typescript
255
- import { runAgent } from '@core/_shared'
256
-
257
- const result = await runAgent(agentId, {
258
- input: userMessage,
259
- context: { account_id, user_id }
260
- })
261
- ```
262
-
263
- ---
264
-
265
- ## Trigger Engine
266
-
267
- ### `registerTrigger`
268
- **Stability:** Evolving
269
-
270
- Register a trigger handler.
271
-
272
- ```typescript
273
- import { registerTrigger } from '@core/_shared'
274
-
275
- registerTrigger({
276
- event: 'item.created',
277
- condition: { item_type: 'ticket' },
278
- action: { pipeline_id: 'notify-slack' }
279
- })
280
- ```
281
-
282
- ---
283
-
284
- ## Type Exports
285
-
286
- ### `CoreContext`
287
- **Stability:** Stable
288
-
289
- ```typescript
290
- import type { CoreContext } from '@core/_shared'
291
- ```
292
-
293
- ### `Principal`
294
- **Stability:** Stable
295
-
296
- ```typescript
297
- import type { Principal } from '@core/_shared'
298
- ```
299
-
300
- ### `AppManifest`
301
- **Stability:** Evolving
302
-
303
- ```typescript
304
- import type { AppManifest, NavItem } from '@core/_shared'
305
- ```
306
-
307
- ### `WebhookHandlerRegistration`
308
- **Stability:** Evolving
309
-
310
- ```typescript
311
- import type { WebhookHandlerRegistration } from '@core/_shared'
312
- ```
313
-
314
- ---
315
-
316
- ## Usage Examples
317
-
318
- ### Custom API Endpoint
319
-
320
- ```typescript
321
- // custom/functions/custom_my-endpoint.ts
322
- import { createHandler, adminDb } from '@core/_shared'
323
-
324
- export const handler = createHandler(async (event, ctx) => {
325
- const { data } = await ctx.db.from('my_items').select('*')
326
- return { data }
327
- })
328
- ```
329
-
330
- ### Custom Webhook Handler
331
-
332
- ```typescript
333
- // custom/functions/custom_slack-webhook.ts
334
- import { createHandler, registerWebhookHandler, adminDb } from '@core/_shared'
335
-
336
- export const handler = createHandler(async (event, ctx) => {
337
- // Handle webhook
338
- return { status: 'processed' }
339
- })
340
-
341
- // Self-register
342
- registerWebhookHandler({
343
- name: 'slack-webhook',
344
- functionName: 'custom_slack-webhook',
345
- description: 'Posts to Slack',
346
- events: ['item.created']
347
- }, adminDb)
348
- ```
349
-
350
- ### Using Manifest
351
-
352
- ```typescript
353
- // In a custom app component
354
- import { loadManifest } from '@core/_shared'
355
-
356
- const manifest = loadManifest('custom/apps/my-app/manifest.json')
357
- console.log(manifest.required_roles) // ['member', 'operator']
358
- ```
359
-
360
- ---
361
-
362
- ## Breaking Changes Policy
363
-
364
- - **Stable APIs:** No breaking changes within major version
365
- - **Evolving APIs:** Breaking changes announced in release notes, 1 version deprecation
366
- - **Internal APIs:** No guarantees, may break anytime
367
-
368
- ---
369
-
370
- ## Version History
371
-
372
- ### 0.1.0 (Current)
373
- - Initial public API surface
374
- - Webhook registry pattern (evolving)
375
- - App manifest utilities (evolving)
376
- - Pipeline engine access (evolving)
377
-
378
- ---
379
-
380
- ## See Also
381
-
382
- - `docs/enterprise-framework-implementation-summary.md` — Architecture overview
383
- - `.framework/functions/_shared/index.ts` — Source of truth for exports
384
- - `docs/framework-developer-guide.md` — Developer guide (coming soon)
@@ -1,52 +0,0 @@
1
- # Stability Policy
2
-
3
- > Version target: **0.x** — breaking changes are allowed until 1.0.
4
-
5
- ## Stability Levels
6
-
7
- Every exported symbol in `_shared/index.ts` is annotated with one of these levels:
8
-
9
- | Level | Meaning | Breaking change policy |
10
- |-------|---------|----------------------|
11
- | **stable** | Safe for custom code to depend on | Minimum 1 minor version deprecation notice before removal |
12
- | **evolving** | API may change between minor versions | No deprecation period required, but changelog entry mandatory |
13
- | **internal** | Not exported; core-contributor only | May change without notice |
14
-
15
- ## Versioning
16
-
17
- Spine follows [semver](https://semver.org/) with these conventions:
18
-
19
- - **0.x.y** — Pre-stable. Breaking changes increment the minor version.
20
- - **1.0.0+** — Stable. Breaking changes increment the major version.
21
-
22
- ## Deprecation Process
23
-
24
- 1. Mark the symbol with `@deprecated` JSDoc tag and a migration hint
25
- 2. Add a console warning on first use (once per process)
26
- 3. Remove after the next minor version bump
27
-
28
- ## What Counts as Breaking
29
-
30
- - Removing or renaming an exported function/type from `_shared/index.ts`
31
- - Changing function signatures (required params added, return type changed)
32
- - Removing a CLI command or changing its required arguments
33
- - Changing database table/column names in migration files
34
- - Removing seed data keys from `seed/*.json` schemas
35
-
36
- ## What Does NOT Count as Breaking
37
-
38
- - Adding new optional parameters to existing functions
39
- - Adding new exports to `_shared/index.ts`
40
- - Adding new CLI commands
41
- - Adding new database tables or columns
42
- - Performance improvements to existing functions
43
- - Bug fixes (even if they change observable behavior that was clearly wrong)
44
-
45
- ## Release Checklist
46
-
47
- 1. `npm run test:boundary` — architectural boundaries intact
48
- 2. `npm run test:unit` — unit tests pass
49
- 3. Update `CHANGELOG.md` with breaking changes highlighted
50
- 4. Bump version in `package.json`
51
- 5. `npm run prepublishOnly` — build + test gate
52
- 6. `npm publish`
@@ -1,76 +0,0 @@
1
- # Admin Route Inventory (v2-core)
2
-
3
- ## Data Management Routes (admin/data/*)
4
-
5
- | Route | Purpose | Page Component | Entity | Notes |
6
- |-------|---------|----------------|--------|-------|
7
- | `/admin/data/accounts` | List accounts | AccountsPage | Account records | Runtime account management |
8
- | `/admin/data/accounts/new` | Create account | AccountCreatePage | Account records | |
9
- | `/admin/data/accounts/:id` | Account detail/edit | AccountDetailPage | Account records | |
10
- | `/admin/data/people` | List people | PeoplePage | Person records | |
11
- | `/admin/data/people/new` | Create person | PersonCreatePage | Person records | |
12
- | `/admin/data/people/:id` | Person detail/edit | PersonDetailPage | Person records | |
13
- | `/admin/data/items` | List items | ItemsPage | Item records | |
14
- | `/admin/data/items/new` | Create item | ItemCreatePage | Item records | |
15
- | `/admin/data/items/:id` | Item detail/edit | ItemDetailPage | Item records | |
16
-
17
- ## Configuration Management Routes (admin/configs/*)
18
-
19
- | Route | Purpose | Page Component | Entity | Notes |
20
- |-------|---------|----------------|--------|-------|
21
- | `/admin/configs/types` | List item types | TypesPage | Type definitions | kind='item' |
22
- | `/admin/configs/types/new` | Create item type | TypeDetailPage | Type definitions | |
23
- | `/admin/configs/types/:id` | Item type detail/edit | TypeDetailPage | Type definitions | |
24
- | `/admin/configs/accounts` | List account types | AccountTypesPage | Type definitions | kind='account' |
25
- | `/admin/configs/accounts/new` | Create account type | AccountTypeDetailPage | Type definitions | |
26
- | `/admin/configs/accounts/:id` | Account type detail/edit | AccountTypeDetailPage | Type definitions | |
27
- | `/admin/configs/people` | List person types | PersonTypesPage | Type definitions | kind='person' |
28
- | `/admin/configs/people/new` | Create person type | PersonTypeDetailPage | Type definitions | |
29
- | `/admin/configs/people/:id` | Person type detail/edit | PersonTypeDetailPage | Type definitions | |
30
- | `/admin/configs/apps` | List apps | AppsPage | App definitions | |
31
- | `/admin/configs/apps/new` | Create app | AppDetailPage | App definitions | |
32
- | `/admin/configs/apps/:id` | App detail/edit | AppDetailPage | App definitions | |
33
- | `/admin/configs/pipelines` | List pipelines | PipelinesPage | Pipeline definitions | |
34
- | `/admin/configs/pipelines/new` | Create pipeline | PipelineDetailPage | Pipeline definitions | |
35
- | `/admin/configs/pipelines/:id` | Pipeline detail/edit | PipelineDetailPage | Pipeline definitions | |
36
- | `/admin/configs/triggers` | List triggers | TriggersPage | Trigger definitions | |
37
- | `/admin/configs/triggers/new` | Create trigger | TriggerDetailPage | Trigger definitions | |
38
- | `/admin/configs/triggers/:id` | Trigger detail/edit | TriggerDetailPage | Trigger definitions | |
39
- | `/admin/configs/ai-agents` | List AI agents | AIAgentsPage | AI agent definitions | |
40
- | `/admin/configs/ai-agents/new` | Create AI agent | AIAgentDetailPage | AI agent definitions | |
41
- | `/admin/configs/ai-agents/:id` | AI agent detail/edit | AIAgentDetailPage | AI agent definitions | |
42
- | `/admin/configs/embeddings` | List embeddings | EmbeddingsPage | Embedding definitions | |
43
- | `/admin/configs/embeddings/new` | Create embedding | EmbeddingDetailPage | Embedding definitions | |
44
- | `/admin/configs/embeddings/:id` | Embedding detail/edit | EmbeddingDetailPage | Embedding definitions | |
45
- | `/admin/configs/timers` | List timers | TimersPage | Timer definitions | |
46
- | `/admin/configs/timers/new` | Create timer | TimerDetailPage | Timer definitions | |
47
- | `/admin/configs/timers/:id` | Timer detail/edit | TimerDetailPage | Timer definitions | |
48
- | `/admin/configs/integrations` | List integrations | IntegrationsPage | Integration definitions | |
49
- | `/admin/configs/integrations/new` | Create integration | IntegrationDetailPage | Integration definitions | |
50
- | `/admin/configs/integrations/:id` | Integration detail/edit | IntegrationDetailPage | Integration definitions | |
51
-
52
- ## Legacy Routes (Deprecated)
53
-
54
- | Route | Purpose | Page Component | Entity | Notes |
55
- |-------|---------|----------------|--------|-------|
56
- | `/admin/accounts` | Accounts (legacy) | AccountsPage | Account records | Use /admin/data/accounts |
57
- | `/admin/accounts/:id` | Account detail (legacy) | AccountDetailPage | Account records | Use /admin/data/accounts/:id |
58
- | `/admin/people` | People (legacy) | PeoplePage | Person records | Use /admin/data/people |
59
- | `/admin/people/:id` | Person detail (legacy) | PersonDetailPage | Person records | Use /admin/data/people/:id |
60
- | `/admin/types` | Types (legacy) | TypesPage | Type definitions | Use /admin/configs/types |
61
- | `/admin/types/:id` | Type detail (legacy) | TypeDetailPage | Type definitions | Use /admin/configs/types/:id |
62
- | `/admin/apps` | Apps (legacy) | AppsPage | App definitions | Use /admin/configs/apps |
63
- | `/admin/pipelines` | Pipelines (legacy) | PipelinesPage | Pipeline definitions | Use /admin/configs/pipelines |
64
- | `/admin/triggers` | Triggers (legacy) | TriggersPage | Trigger definitions | Use /admin/configs/triggers |
65
- | `/admin/ai-agents` | AI agents (legacy) | AIAgentsPage | AI agent definitions | Use /admin/configs/ai-agents |
66
- | `/admin/embeddings` | Embeddings (legacy) | EmbeddingsPage | Embedding definitions | Use /admin/configs/embeddings |
67
- | `/admin/timers` | Timers (legacy) | TimersPage | Timer definitions | Use /admin/configs/timers |
68
-
69
- ## Summary
70
-
71
- - **Total routes**: 43 active routes (25 data/config + 10 legacy)
72
- - **Data routes**: 9 (accounts, people, items)
73
- - **Config routes**: 34 (types, apps, pipelines, triggers, ai-agents, embeddings, timers, integrations)
74
- - **Legacy routes**: 10 (deprecated but still active)
75
-
76
- All routes are defined in `v2-core/src/App.tsx` and use lazy-loaded components from `v2-core/src/pages/`.
@@ -1,38 +0,0 @@
1
- # API Documentation Progress
2
-
3
- ## Completed Inline Documentation
4
-
5
- ### accounts.ts
6
- - Added comprehensive header documentation
7
- - Documented all CRUD operations
8
- - Fixed lint warnings (unused imports/parameters)
9
- - Status: COMPLETE
10
-
11
- ### Next Files to Document
12
- 1. people.ts
13
- 2. items.ts
14
- 3. types.ts
15
- 4. apps.ts
16
- 5. pipelines.ts
17
- 6. triggers.ts
18
- 7. ai-agents.ts
19
- 8. embeddings.ts
20
- 9. timers.ts
21
- 10. integrations.ts
22
- 11. All remaining runtime endpoints
23
-
24
- ## Documentation Template Applied
25
-
26
- Each endpoint file now includes:
27
- - Domain classification (admin-data/admin-configs/runtime/internal)
28
- - Auth requirements
29
- - Account scoping rules
30
- - v2 schema dependencies
31
- - Soft delete behavior
32
- - Audit logging requirements
33
- - Request/response contracts
34
- - Error handling
35
-
36
- ## Progress: 1/18 endpoints documented
37
-
38
- Continuing with remaining endpoints...
@@ -1,146 +0,0 @@
1
- # Spine v2 API Governance Checklist
2
-
3
- ## Universal API Ground Rules
4
-
5
- ### Response Format Standards
6
- - **Success - List**: `{ data: [...], pagination?: { page, totalPages, totalItems, itemsPerPage } }`
7
- - **Success - Single/Create/Update**: `{ data: {...} }`
8
- - **Error**: `{ error: "Human readable message", code?: "ERROR_CODE" }`
9
- - **Validation Error**: `{ errors: { field: "field-specific error" } }`
10
-
11
- ### Authentication & Context
12
- - All APIs require valid session token (`Authorization: Bearer`)
13
- - Account context via `X-Account-Id` header
14
- - System admin can bypass account scoping
15
- - Use `requireAuth` middleware for mutations
16
- - Use `requireTenant` for account-scoped reads
17
-
18
- ### HTTP Patterns
19
- - **GET /resource** - List (with query parameters)
20
- - **GET /resource?id=uuid** - Single
21
- - **POST /resource** - Create
22
- - **PATCH /resource?id=uuid** - Update
23
- - **DELETE /resource?id=uuid** - Soft delete
24
-
25
- ### Query Parameter Standards
26
- - `page`, `itemsPerPage` - Pagination
27
- - `search` - Text search
28
- - `sort`, `direction` - Sorting
29
- - `field=value` - Filtering
30
- - `include=relation1,relation2` - Related data
31
-
32
- ### Data Constraints
33
- - APIs return data only, never styling/UI components
34
- - All endpoints enforce role-based permissions
35
- - DELETE = soft delete (`is_active=false`), never hard deletes
36
- - All mutations must emit audit logs via `emitLog`
37
-
38
- ## Permission Model
39
-
40
- ### Single Source of Truth
41
- - type.schema defines what roles can do
42
- - v2.people_accounts + v2.people_roles define who has roles
43
- - No parallel permission systems
44
-
45
- ### Enforcement Points
46
- - All first-surface APIs use shared permission resolver
47
- - Field filtering on reads
48
- - Field validation on writes
49
- - Multi-role merge: highest effective permission wins
50
-
51
- ### System Admin Override
52
- - Complete bypass of runtime restrictions
53
- - Audit logs preserved
54
- - Intended for admin operations only
55
-
56
- ### Error Handling
57
- - Use consistent error format with descriptive messages
58
- - Include error codes for programmatic handling
59
- - Log errors appropriately with context
60
- - Return 4xx for client errors, 5xx for server errors
61
-
62
- ### Pagination
63
- - Default `page=1`, `itemsPerPage=20`
64
- - Return total count for client-side calculations
65
- - Support `search` and filtering in pagination queries
66
- - Use `range()` for efficient DB queries
67
-
68
- ### Soft Delete Semantics
69
- - Never use `DELETE FROM` statements
70
- - Always set `is_active=false` with `updated_at`
71
- - Filter active records with `is_active=true` by default
72
- - Preserve audit trail before soft delete
73
-
74
- ### Database Constraints
75
- - Use `public` schema only
76
- - All queries must use `db.from('public.table')`
77
- - Validate field names against actual schema
78
- - Use parameterized queries to prevent injection
79
-
80
- ### Role Boundaries
81
- - **Config endpoints** (`admin/configs/*`): admin-only mutations
82
- - **Data endpoints** (`admin/data/*`): permissions by role/type schema
83
- - **Runtime endpoints**: account-scoped with appropriate role checks
84
- - **Internal endpoints**: system-only or service-to-service
85
-
86
- ## Code Patterns
87
-
88
- ### Handler Structure
89
- ```typescript
90
- export const handler = createHandler(async (ctx, body) => {
91
- const method = ctx.query?.method || 'GET'
92
- switch (method) {
93
- case 'GET': return await list(ctx, body)
94
- case 'POST': return await create(ctx, body)
95
- case 'PATCH': return await update(ctx, body)
96
- case 'DELETE': return await remove(ctx, body)
97
- default: throw new Error(`Unsupported method: ${method}`)
98
- }
99
- })
100
- ```
101
-
102
- ### Auth Patterns
103
- ```typescript
104
- // Public reads
105
- export const list = createHandler(async (ctx, body) => {
106
- // Account-scoped by default
107
- })
108
-
109
- // Authenticated mutations
110
- export const create = requireAuth(createHandler(async (ctx, body) => {
111
- // Requires valid session
112
- }))
113
- ```
114
-
115
- ### Audit Logging
116
- ```typescript
117
- await emitLog(ctx, 'entity.created',
118
- { type: 'entity', id: data.id },
119
- { after: data }
120
- )
121
- ```
122
-
123
- ## Documentation Requirements
124
-
125
- Each endpoint must include JSDoc comments with:
126
- - Purpose and domain (data/config/runtime/internal)
127
- - Auth requirements
128
- - Account scoping rules
129
- - Request parameters/body contract
130
- - Response shape
131
- - Soft delete behavior
132
- - v2 table/RPC dependencies
133
-
134
- ## Review Checklist
135
-
136
- - [ ] Response format matches standard
137
- - [ ] Auth middleware applied appropriately
138
- - [ ] Account context handled correctly
139
- - [ ] Soft delete implemented (no hard deletes)
140
- - [ ] Audit logs emitted for mutations
141
- - [ ] Error handling consistent
142
- - [ ] Pagination implemented for lists
143
- - [ ] Query parameters validated
144
- - [ ] v2 schema only (no public references)
145
- - [ ] Role boundaries enforced
146
- - [ ] Inline documentation complete