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,125 +0,0 @@
1
- /**
2
- * @module src/types/auth
3
- * @audience installer
4
- * @layer frontend-hook
5
- * @stability stable
6
- *
7
- * Authentication and principal type definitions for the Spine frontend.
8
- * These shapes mirror the response from `GET /api/auth?action=context` and
9
- * are used throughout `AuthContext`, hooks, and any component that needs
10
- * to reason about the current user's identity, account, or permissions.
11
- *
12
- * **Server source:** `functions/auth.ts` → `get_account_hierarchy` RPC resolves
13
- * `User.account`, `User.roles`, `User.permissions`, and `User.accessible_accounts`.
14
- *
15
- * @seeAlso src/contexts/AuthContext.tsx (stores and exposes User)
16
- * @seeAlso src/types/types.ts (design-schema types; separate concern)
17
- * @seeAlso functions/auth.ts (API endpoint that returns User shape)
18
- */
19
-
20
- // ─── PRINCIPAL ─────────────────────────────────────────────────────────────────
21
-
22
- /**
23
- * The resolved user/principal context returned by the auth API and stored
24
- * in `AuthContext`. Populated from the `people`, `accounts`, and `roles`
25
- * tables via the `get_account_hierarchy` RPC.
26
- *
27
- * @prop id - UUID of the `people` row (matches `auth.users.id`)
28
- * @prop email - Primary email address
29
- * @prop full_name - Display name
30
- * @prop account_id - UUID of the user's primary account
31
- * @prop account - Hydrated primary `Account` object (optional join)
32
- * @prop roles - Flat list of role slugs (e.g. `['admin', 'member']`)
33
- * @prop permissions - Flat list of permission slugs
34
- * @prop is_system_admin - Convenience flag set when `system_admin` is in roles
35
- * @prop accessible_accounts - All accounts the user can act on (multi-tenancy)
36
- */
37
- export interface User {
38
- id: string
39
- email: string
40
- full_name: string
41
- account_id: string
42
- account?: Account
43
- roles: string[] // Simplified for now
44
- permissions: string[] // Simplified for now
45
- is_system_admin?: boolean
46
- accessible_accounts?: Account[]
47
- }
48
-
49
- /**
50
- * A Spine account record. Used as the primary organisational scope for all
51
- * data access.
52
- *
53
- * @prop slug - URL-safe unique identifier
54
- * @prop display_name - Human-readable name shown in UI
55
- * @prop account_type - `'tenant'` | `'organization'` | `'individual'`
56
- * @prop owner_account_id - Parent account UUID for tenant hierarchy
57
- * @prop metadata - Arbitrary extra fields set by the application layer
58
- */
59
- export interface Account {
60
- id: string
61
- slug: string
62
- display_name: string
63
- name?: string
64
- account_type?: string
65
- owner_account_id?: string
66
- metadata?: Record<string, any>
67
- }
68
-
69
- // ─── ROLES & PERMISSIONS ──────────────────────────────────────────────────────────
70
-
71
- /**
72
- * A role record from the `v2.roles` table.
73
- *
74
- * @prop slug - Unique role identifier used in permission checks
75
- * @prop permissions - Granular permission list attached to this role
76
- */
77
- export interface Role {
78
- id: string
79
- slug: string
80
- name: string
81
- description?: string
82
- permissions: Permission[]
83
- }
84
-
85
- /**
86
- * A single permission grant.
87
- *
88
- * @prop resource - The entity or system resource being guarded
89
- * @prop action - The allowed action (`'read'`, `'write'`, `'delete'`, etc.)
90
- * @prop scope - Optional scope qualifier (e.g. `'own'` vs `'any'`)
91
- */
92
- export interface Permission {
93
- id: string
94
- resource: string
95
- action: string
96
- scope?: string
97
- }
98
-
99
- // ─── AUTH FLOW ─────────────────────────────────────────────────────────────────
100
-
101
- /**
102
- * Shape of a successful auth response (Supabase sign-in).
103
- * Not used directly by Spine — the frontend uses `supabase.auth.signInWithPassword`
104
- * and then calls `fetchUserContext`; this type documents the underlying contract.
105
- */
106
- export interface AuthResponse {
107
- user: User
108
- access_token: string
109
- refresh_token: string
110
- expires_in: number
111
- }
112
-
113
- /** Credentials for `supabase.auth.signInWithPassword` via `AuthContext.login`. */
114
- export interface LoginCredentials {
115
- email: string
116
- password: string
117
- }
118
-
119
- /** Registration data for new user sign-up flows. */
120
- export interface RegisterData {
121
- email: string
122
- password: string
123
- full_name: string
124
- account_name?: string
125
- }
@@ -1,407 +0,0 @@
1
- /**
2
- * @module src/types/types
3
- * @audience installer
4
- * @layer frontend-hook
5
- * @stability stable
6
- *
7
- * Core TypeScript type definitions for the Spine frontend. These types
8
- * mirror the `design_schema` and API response shapes used across hooks,
9
- * components, and pages.
10
- *
11
- * **Type hierarchy:**
12
- * ```
13
- * DesignSchema
14
- * ├── fields: Record<string, FieldDefinition>
15
- * ├── views: Record<string, View> ← ListView | DetailView
16
- * ├── record_permissions
17
- * └── functionality?: FunctionalityBindings
18
- * ItemType ← row in v2.types table
19
- * Item ← row in v2.items table
20
- * ```
21
- *
22
- * **`system` flag on `FieldDefinition`:** When `system: true`, the field
23
- * maps to a real DB column (e.g. `title`, `status`). When absent or false,
24
- * the field value lives in the `data` JSONB column.
25
- *
26
- * @seeAlso src/hooks/useSchemaRecord.ts (consumes FieldDefinition[])
27
- * @seeAlso src/hooks/useForm.ts (consumes FieldDefinition[] for validation)
28
- * @seeAlso src/hooks/useListSchema.ts (consumes DesignSchema + View)
29
- * @seeAlso functions/_shared/schema-utils.ts (server-side schema generation)
30
- */
31
-
32
- // ─── FIELD DEFINITIONS ───────────────────────────────────────────────────────────
33
-
34
- /**
35
- * Definition of a single field in a `design_schema`. Drives both UI rendering
36
- * and client-side validation in `useForm`.
37
- *
38
- * @prop data_type - Controls rendering widget and validation rules
39
- * @prop label - Human-readable display label
40
- * @prop required - Whether the field must be non-empty on save
41
- * @prop system - If true, maps to a top-level DB column; false/absent → `data` JSONB
42
- * @prop name - Injected at runtime by hooks; not stored in the schema itself
43
- * @prop validation - Type-specific constraint overrides
44
- * @prop options - Choice list for select/multiselect/radio fields
45
- * @prop permissions - Role-based read/write access map; absent = all roles allowed
46
- */
47
- export interface FieldDefinition {
48
- data_type: 'text' | 'textarea' | 'rich_text' | 'email' | 'phone' | 'url' |
49
- 'number' | 'currency' | 'range' | 'date' | 'datetime' | 'boolean' |
50
- 'checkbox' | 'select' | 'multiselect' | 'radio' | 'color' |
51
- 'file' | 'image' | 'json' | 'reference' | 'address'
52
- label: string
53
- required: boolean
54
- system?: boolean // true = DB column, false/absent = custom field in .data
55
- // Runtime identity — populated by SchemaFields when building field arrays from schema
56
- name?: string
57
- // UI hints — informational only, do not affect data contract or permissions
58
- placeholder?: string
59
- description?: string
60
- rows?: number
61
- min?: number
62
- max?: number
63
- step?: number
64
- readonly?: boolean
65
- disabled?: boolean
66
- validation?: {
67
- pattern?: string
68
- minLength?: number
69
- maxLength?: number
70
- min?: number
71
- max?: number
72
- step?: number
73
- integer?: boolean
74
- precision?: number
75
- maxSize?: number
76
- allowedTypes?: string[]
77
- maxWidth?: number
78
- maxHeight?: number
79
- currency_code?: string
80
- reference_kind?: string
81
- reference_type?: string
82
- }
83
- // Type-specific constraint properties (move out of validation for clarity)
84
- options?: (string | { value: string; label: string })[] // For select/multiselect/radio
85
- permissions?: {
86
- [role: string]: string[] // Array of actions: ["read", "write"]
87
- }
88
- }
89
-
90
- // ─── VIEW TYPES ─────────────────────────────────────────────────────────────────
91
-
92
- /**
93
- * Per-field display/behaviour config within a view. Stored as
94
- * `design_schema.views[viewSlug].fields[fieldName]`.
95
- *
96
- * @prop display_type - Override the default widget for this field in this view
97
- * @prop sortable - Whether the column header shows a sort toggle in list views
98
- * @prop searchable - Whether the field is included in free-text search
99
- */
100
- export interface ViewFieldConfig {
101
- display_type: 'input' | 'textarea' | 'rich_text' | 'select' | 'multiselect' |
102
- 'radio' | 'checkbox' | 'switch' | 'date_picker' | 'datetime_picker' |
103
- 'color_picker' | 'file_upload' | 'image_upload' | 'range_slider' |
104
- 'rating' | 'autocomplete' | 'address_form' | 'reference_picker' |
105
- 'text' | 'badge' | 'timestamp' | 'currency' | 'number'
106
- sortable?: boolean
107
- searchable?: boolean
108
- }
109
-
110
- /**
111
- * A list view definition. Rendered by `DataListPage` as a table, card grid,
112
- * or Kanban board depending on `display`.
113
- *
114
- * @prop fields - Ordered map of field name → `ViewFieldConfig`
115
- * @prop default_sort - Initial sort applied before user interaction
116
- * @prop filters - Field names to expose as filter controls
117
- * @prop stats - Summary stat cards shown above the list
118
- * @prop group_by - Field to use as board column grouping (`display: 'board'` only)
119
- */
120
- export interface ListView {
121
- type: 'list'
122
- display: 'table' | 'card' | 'board'
123
- label: string
124
- fields: Record<string, ViewFieldConfig>
125
- default_sort?: {
126
- field: string
127
- direction: 'asc' | 'desc'
128
- }
129
- filters?: string[]
130
- stats?: Array<{
131
- title: string
132
- type: 'count' | 'filter_count'
133
- icon?: string
134
- color?: string
135
- filter?: Record<string, any>
136
- }>
137
- group_by?: string // For board display
138
- }
139
-
140
- /**
141
- * A single section within a `DetailView`. Groups related fields under
142
- * an optional title. Field permissions from the schema still apply —
143
- * there are no section-level permission overrides.
144
- */
145
- export interface DetailViewSection {
146
- title: string
147
- fields: Record<string, ViewFieldConfig>
148
- // Note: No view-level permissions - field permissions from schema apply
149
- }
150
-
151
- /**
152
- * A detail view definition. Rendered by `DataDetailPage` as a sectioned
153
- * record form.
154
- */
155
- export interface DetailView {
156
- type: 'detail'
157
- label: string
158
- sections: DetailViewSection[]
159
- }
160
-
161
- /** Discriminated union of all supported view types. */
162
- export type View = ListView | DetailView
163
-
164
- // ─── FUNCTIONALITY BINDINGS ──────────────────────────────────────────────────────────
165
-
166
- /**
167
- * Optional automation and integration bindings attached to a `DesignSchema`.
168
- * Each array entry describes a trigger condition and the target pipeline,
169
- * agent, embedding, integration, or constraint.
170
- *
171
- * These bindings are evaluated by API handlers and the system cron — not
172
- * by the frontend. They are included here as a type contract so the frontend
173
- * can read and display binding metadata without making blind `any` casts.
174
- */
175
- export interface FunctionalityBindings {
176
- pipelines?: Array<{
177
- pipeline_id: string
178
- trigger: 'manual' | 'on_create' | 'on_update' | 'on_field_change' | 'on_delete' | 'scheduled'
179
- field?: string // For on_field_change
180
- condition?: string // Expression string
181
- roles: string[]
182
- }>
183
- ai_agents?: Array<{
184
- agent_id: string
185
- capabilities: ('read' | 'summarize' | 'suggest' | 'update')[]
186
- trigger: 'manual' | 'on_create' | 'on_update' | 'on_field_change'
187
- roles: string[]
188
- }>
189
- embeddings?: Array<{
190
- slug: string
191
- fields: string[]
192
- model: string
193
- vector_column: string
194
- trigger: 'on_create' | 'on_update' | 'on_create_or_update'
195
- }>
196
- integrations?: Array<{
197
- integration_id: string
198
- sync: 'bidirectional' | 'inbound' | 'outbound'
199
- field_map: Record<string, {
200
- external_field: string
201
- direction: 'both' | 'inbound' | 'outbound' | 'none'
202
- transform?: string
203
- }>
204
- trigger: 'on_create' | 'on_update' | 'on_create_or_update'
205
- }>
206
- constraints?: Array<{
207
- type: 'unique' | 'conditional_required' | 'immutable'
208
- fields?: string[] // For unique
209
- field?: string // For conditional_required and immutable
210
- condition?: string // For conditional_required
211
- message: string
212
- after?: 'create' | 'update' // For immutable
213
- }>
214
- }
215
-
216
- // ─── DESIGN SCHEMA ────────────────────────────────────────────────────────────────
217
-
218
- /**
219
- * The complete design schema for a `types` record. Stored as a JSONB column
220
- * (`design_schema`) and stamp-copied onto records at create time.
221
- *
222
- * @prop record_permissions - Role → allowed CRUD actions map for the entire record
223
- * @prop fields - All field definitions keyed by field name
224
- * @prop views - Named view definitions (`list`, `detail`, etc.)
225
- * @prop functionality - Optional automation bindings (pipelines, agents, etc.)
226
- */
227
- export interface DesignSchema {
228
- record_permissions: {
229
- [role: string]: string[] // Array of actions: ["create", "read", "update", "delete"]
230
- }
231
- fields: Record<string, FieldDefinition>
232
- views: Record<string, View>
233
- functionality?: FunctionalityBindings
234
- }
235
-
236
- // ─── RECORD SHAPES ─────────────────────────────────────────────────────────────────
237
-
238
- /**
239
- * A row from the `v2.types` table. Represents a type definition (item type,
240
- * account type, person type, etc.) including its full `design_schema`.
241
- *
242
- * @prop kind - Discriminator: `'item'` | `'account'` | `'person'` | etc.
243
- * @prop design_schema - Full schema defining fields, views, and functionality
244
- * @prop validation_schema - Auto-generated JSON Schema used for server-side validation
245
- * @prop ownership - `'pack'` | `'tenant'` (pack-ownership tracking)
246
- */
247
- export interface ItemType {
248
- id: string
249
- name: string
250
- slug: string
251
- kind: string
252
- description?: string
253
- icon?: string
254
- color?: string
255
- design_schema: DesignSchema
256
- validation_schema: {
257
- fields: Record<string, {
258
- data_type: string
259
- required?: boolean
260
- [key: string]: any // Type-specific validation properties
261
- }>
262
- }
263
- ownership: string
264
- is_active: boolean
265
- app_id?: string
266
- app?: any
267
- created_at: string
268
- updated_at: string
269
- }
270
-
271
- /**
272
- * A row from the `v2.items` table. The `data` JSONB column holds all
273
- * custom field values; system fields (`title`, `status`, etc.) are top-level.
274
- *
275
- * @prop design_schema - Stamp of the type's schema at create time (for resilience
276
- * to schema changes; may be stale relative to `types` table)
277
- * @prop validation_schema - Stamp of the validation schema at create time
278
- */
279
- export interface Item {
280
- id: string
281
- item_type_id: string
282
- item_type_slug?: string
283
- title: string
284
- description?: string
285
- status: string
286
- is_active: boolean
287
- data: Record<string, any>
288
- created_at: string
289
- updated_at: string
290
- created_by?: string
291
- account_id: string
292
- app_id?: string
293
- design_schema?: Record<string, any> // Schema snapshot at creation time
294
- validation_schema?: Record<string, any> // Validation schema snapshot at creation time
295
- }
296
-
297
- // ─── FORM & QUERY TYPES ───────────────────────────────────────────────────────────
298
-
299
- /** A field-level validation failure from `useForm` or server-side validation. */
300
- export interface ValidationError {
301
- field: string
302
- message: string
303
- }
304
-
305
- /** Snapshot of form state — used as a shared type between `useForm` and form components. */
306
- export interface FormState {
307
- data: Record<string, any>
308
- errors: Record<string, string>
309
- touched: Record<string, boolean>
310
- isSubmitting: boolean
311
- isValid: boolean
312
- }
313
-
314
- /** Pagination query parameters for list endpoints. */
315
- export interface PaginationParams {
316
- limit?: number
317
- offset?: number
318
- page?: number
319
- }
320
-
321
- /** Sort order specification for list endpoints. */
322
- export interface SortParams {
323
- field: string
324
- direction: 'asc' | 'desc'
325
- }
326
-
327
- /** Arbitrary key→value filter map for list endpoints. */
328
- export interface FilterParams {
329
- [key: string]: any
330
- }
331
-
332
- /** Combined search, sort, filter, and pagination params for list queries. */
333
- export interface SearchParams extends PaginationParams {
334
- search?: string
335
- sort?: SortParams
336
- filters?: FilterParams
337
- }
338
-
339
- // ─── UI DISPLAY TYPES ────────────────────────────────────────────────────────────────
340
-
341
- /** A rendered column descriptor for list/table UI components. */
342
- export interface EntityColumn {
343
- key: string
344
- label: string
345
- sortable?: boolean
346
- type?: string
347
- display_type?: string
348
- badgeColors?: Record<string, string>
349
- maxLength?: number
350
- }
351
-
352
- /** A stat card shown above entity list pages (count or filtered count). */
353
- export interface EntityStat {
354
- title: string
355
- type: 'count' | 'filter_count'
356
- icon: string
357
- color: string
358
- filter?: Record<string, any>
359
- }
360
-
361
- /** A filter control definition for entity list pages. */
362
- export interface EntityFilter {
363
- key: string
364
- label: string
365
- type: 'search' | 'enum' | 'boolean'
366
- options?: string[]
367
- }
368
-
369
- // ─── ITEM PROGRESS ───────────────────────────────────────────────────────────
370
-
371
- /**
372
- * A per-person, per-item progress record. Tracks pipeline status, score, and
373
- * arbitrary interaction data for courses, onboarding, tasks, and quizzes.
374
- *
375
- * `title` is auto-composed as "<item title> — <person name>".
376
- * `description` is auto-composed as "Completed · score 85 · 2 attempts".
377
- * `data` holds extensible fields: attempts, time_spent, last_position, etc.
378
- *
379
- * INVARIANT: (person_id, item_id) is unique — state, not a log.
380
- */
381
- export interface ItemProgress {
382
- id: string
383
- type_id: string
384
- account_id: string
385
- app_id: string | null
386
- person_id: string
387
- item_id: string
388
- title: string | null
389
- description: string | null
390
- status: 'not_started' | 'in_progress' | 'completed' | string
391
- score: number | null
392
- data: {
393
- attempts?: number
394
- time_spent?: number
395
- last_position?: number
396
- started_at?: string
397
- completed_at?: string
398
- [key: string]: any
399
- }
400
- is_active: boolean
401
- design_schema: Record<string, any>
402
- validation_schema: Record<string, any>
403
- created_by: string | null
404
- updated_by: string | null
405
- created_at: string
406
- updated_at: string
407
- }
package/STRUCTURE.md DELETED
@@ -1,150 +0,0 @@
1
- # Spine Enterprise Directory Structure
2
-
3
- This document explains the directory layout for the Spine framework.
4
-
5
- ## Overview
6
-
7
- ```
8
- my-app/
9
- ├── .framework/ # 🔒 CLI-managed framework code (read-only)
10
- ├── custom/ # ✏️ Developer workspace (your code)
11
- ├── .assembled/ # 🏗️ Build output (gitignored)
12
- ├── config/ # ⚙️ Build tool configuration
13
- ├── scripts/ # 🔧 Build automation
14
- ├── archive/ # 📦 Historical artifacts
15
- ├── docs/ # 📚 Documentation
16
- ├── netlify.toml # 🌐 Netlify configuration (must be at root)
17
- ├── package.json # Root package manifest
18
- └── STRUCTURE.md # This file
19
- ```
20
-
21
- ## Directory Details
22
-
23
- ### `.framework/` — Framework Core (Hidden)
24
- **Managed by:** Spine CLI (read-only)
25
- **Contains:**
26
- - `functions/` — Core Netlify function handlers
27
- - `src/` — Core React components (Admin shell, app router)
28
- - `migrations/` — Base database schema
29
- - `cli/` — Framework CLI tools
30
- - `tests/` — Core test suites
31
-
32
- **You should not edit files here.** The CLI manages updates to this directory.
33
-
34
- ### `custom/` — Developer Workspace
35
- **Managed by:** You
36
- **Contains:**
37
- - `functions/` — Your custom Netlify function handlers
38
- - `apps/` — Your applications (one folder per app)
39
- - `components/` — Shared UI components across your apps
40
- - `migrations/` — Your database schema changes
41
- - `tests/` — Your test suites
42
-
43
- **This is where you build your product.** Everything here is yours.
44
-
45
- ### `.assembled/` — Build Output (Hidden, Gitignored)
46
- **Generated by:** Assembly scripts
47
- **Contains:**
48
- - `netlify/functions/` — Merged: `.framework/functions` + `custom/functions`
49
- - `src/` — Merged: `.framework/src` + `custom/apps/*`
50
-
51
- **Never edit files here.** This is rebuilt on every `netlify dev` or deployment.
52
-
53
- ### `config/` — Build Tool Configuration
54
- **Contains:**
55
- - `vite.config.ts` — Vite build configuration
56
- - `tsconfig.json` — TypeScript configuration
57
- - `tailwind.config.ts` — Styling configuration
58
- - `postcss.config.js` — CSS processing
59
-
60
- ### `netlify.toml` — Netlify Configuration (Root)
61
- **Must be at project root** (Netlify CLI requirement)
62
- - Functions path: `.assembled/netlify/functions/`
63
- - Dev server settings: port 3001 (Vite) → 8888 (Netlify proxy)
64
-
65
- ### `scripts/` — Build Automation
66
- **Contains:**
67
- - Assembly scripts that merge `.framework/` + `custom/` → `.assembled/`
68
- - Verification scripts for integrity checking
69
-
70
- ### `archive/` — Historical Artifacts
71
- **Contains:**
72
- - Old audit documents
73
- - Completed project reports
74
- - Test artifacts
75
-
76
- ## Assembly Flow
77
-
78
- ```bash
79
- Development:
80
- .framework/ + custom/ ──► scripts/assemble.sh ──► .assembled/
81
- ──► netlify dev
82
-
83
- Production:
84
- .framework/ + custom/ ──► scripts/assemble.sh ──► .assembled/
85
- ──► Netlify deploy
86
- ```
87
-
88
- ## Path Aliases
89
-
90
- After assembly, code uses these aliases:
91
- - `@core` → `.framework/src/`
92
- - `@custom` → `custom/apps/`
93
-
94
- ## Adding New Code
95
-
96
- ### New App
97
- ```bash
98
- mkdir custom/apps/my-app
99
- cd custom/apps/my-app
100
- # Create src/, components/, pages/
101
- ```
102
-
103
- ### New Function
104
- ```bash
105
- touch custom/functions/my-handler.ts
106
- # Edit with your logic
107
- ```
108
-
109
- ### New Migration
110
- ```bash
111
- touch custom/migrations/101_my_change.sql
112
- # Write ALTER TABLE statements
113
- ```
114
-
115
- ## Updating Framework
116
-
117
- ```bash
118
- spine-framework update
119
- # CLI updates .framework/ to latest version
120
- # Your custom/ code is untouched
121
- ```
122
-
123
- ## Important Rules
124
-
125
- 1. **Never edit `.framework/`** — use `custom/` instead
126
- 2. **Never commit `.assembled/`** — it's in `.gitignore`
127
- 3. **Always use assembly** — don't manually copy to `.assembled/`
128
- 4. **Test after update** — run `netlify dev` after `spine-framework update`
129
-
130
- ## Troubleshooting
131
-
132
- ### "Where do I put X?"
133
- - Framework extension → `.framework/` (via CLI or PR)
134
- - Custom business logic → `custom/`
135
- - App-specific code → `custom/apps/{app-name}/`
136
-
137
- ### "Assembly failed"
138
- 1. Check both `.framework/` and `custom/` exist
139
- 2. Verify no duplicate function names
140
- 3. Run `scripts/assemble.sh` manually for error details
141
-
142
- ### "Functions not found"
143
- 1. Check `.assembled/netlify/functions/` exists
144
- 2. Verify `netlify.toml` (in project root) points to correct path
145
- 3. Ensure assembly ran without errors
146
-
147
- ### "Netlify dev can't connect"
148
- 1. Check Vite is running on port 3001
149
- 2. Verify `netlify.toml` is in project root (not config/)
150
- 3. Check `targetPort = 3001` in netlify.toml [dev] section