spine-framework 0.1.61 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/LICENSE.md +223 -0
  2. package/README.md +327 -0
  3. package/package.json +107 -216
  4. package/src/cli/commands/init.ts +192 -0
  5. package/src/cli/commands/install.ts +25 -0
  6. package/src/cli/commands/list.ts +33 -0
  7. package/src/cli/commands/migrate.ts +24 -0
  8. package/src/cli/index.ts +46 -0
  9. package/src/components/AppLayout.tsx +21 -0
  10. package/src/components/AuthGuard.tsx +21 -0
  11. package/src/components/RoleGuard.tsx +23 -0
  12. package/src/components/index.ts +3 -0
  13. package/src/contexts/AppContext.tsx +122 -0
  14. package/src/contexts/AuthContext.tsx +87 -0
  15. package/src/contexts/SpineContext.tsx +46 -0
  16. package/src/contexts/index.ts +3 -0
  17. package/src/hooks/index.ts +4 -0
  18. package/src/hooks/useItems.ts +78 -0
  19. package/src/hooks/useThreads.ts +73 -0
  20. package/src/hooks/useWebSocket.ts +97 -0
  21. package/src/index.ts +22 -0
  22. package/src/types/index.ts +163 -0
  23. package/src/utils/api.ts +88 -0
  24. package/src/utils/client.ts +146 -0
  25. package/src/utils/config.ts +20 -0
  26. package/src/utils/index.ts +3 -0
  27. package/.framework/README.md +0 -129
  28. package/.framework/cli/bin.cjs +0 -14
  29. package/.framework/cli/commands/agents.ts +0 -153
  30. package/.framework/cli/commands/auth.ts +0 -94
  31. package/.framework/cli/commands/create-app.ts +0 -185
  32. package/.framework/cli/commands/dev.ts +0 -113
  33. package/.framework/cli/commands/doctor.ts +0 -442
  34. package/.framework/cli/commands/generate.ts +0 -332
  35. package/.framework/cli/commands/init.ts +0 -186
  36. package/.framework/cli/commands/install-app.ts +0 -565
  37. package/.framework/cli/commands/items.ts +0 -253
  38. package/.framework/cli/commands/migrate.ts +0 -139
  39. package/.framework/cli/commands/migrations.ts +0 -141
  40. package/.framework/cli/commands/pipelines.ts +0 -166
  41. package/.framework/cli/commands/status.ts +0 -197
  42. package/.framework/cli/commands/system.ts +0 -184
  43. package/.framework/cli/commands/test.ts +0 -227
  44. package/.framework/cli/commands/uninstall-app.ts +0 -166
  45. package/.framework/cli/context.ts +0 -268
  46. package/.framework/cli/env-loader.ts +0 -36
  47. package/.framework/cli/index.ts +0 -116
  48. package/.framework/cli/welcome.cjs +0 -45
  49. package/.framework/docs/API.md +0 -384
  50. package/.framework/docs/STABILITY.md +0 -52
  51. package/.framework/docs/admin-routes.md +0 -76
  52. package/.framework/docs/api-docs-progress.md +0 -38
  53. package/.framework/docs/api-governance.md +0 -146
  54. package/.framework/docs/api-testing-results.md +0 -212
  55. package/.framework/docs/apis/admin-configs.md +0 -567
  56. package/.framework/docs/apis/admin-data.md +0 -272
  57. package/.framework/docs/apis/index.md +0 -231
  58. package/.framework/docs/apis/internal.md +0 -295
  59. package/.framework/docs/apis/runtime.md +0 -537
  60. package/.framework/docs/assembly-launch-guide.md +0 -138
  61. package/.framework/docs/audit-results.md +0 -590
  62. package/.framework/docs/authorization-model.md +0 -170
  63. package/.framework/docs/db-api-inventory.md +0 -95
  64. package/.framework/docs/examples/custom-app/README.md +0 -77
  65. package/.framework/docs/examples/custom-function/README.md +0 -27
  66. package/.framework/docs/examples/custom-function/handler.ts +0 -48
  67. package/.framework/docs/examples/custom-webhook/README.md +0 -68
  68. package/.framework/docs/gap-remediation-backlog.md +0 -103
  69. package/.framework/docs/guides/cli-guide.md +0 -224
  70. package/.framework/docs/guides/getting-started.md +0 -103
  71. package/.framework/docs/guides/import-guide.md +0 -193
  72. package/.framework/docs/guides/testing-guide.md +0 -229
  73. package/.framework/docs/permission-examples.md +0 -326
  74. package/.framework/docs/ui-adoption-verification.md +0 -111
  75. package/.framework/docs/ui-api-coverage.md +0 -84
  76. package/.framework/docs/v2-compatibility-audit.md +0 -228
  77. package/.framework/functions/.gitkeep +0 -1
  78. package/.framework/functions/_shared/agent-runner.ts +0 -1097
  79. package/.framework/functions/_shared/app-manifest.ts +0 -184
  80. package/.framework/functions/_shared/audit.ts +0 -150
  81. package/.framework/functions/_shared/db.ts +0 -178
  82. package/.framework/functions/_shared/index.ts +0 -391
  83. package/.framework/functions/_shared/middleware.ts +0 -490
  84. package/.framework/functions/_shared/permissions.ts +0 -1325
  85. package/.framework/functions/_shared/pipeline-runner.ts +0 -731
  86. package/.framework/functions/_shared/principal.ts +0 -818
  87. package/.framework/functions/_shared/resolve-ids.ts +0 -106
  88. package/.framework/functions/_shared/schema-utils.ts +0 -967
  89. package/.framework/functions/_shared/testing.ts +0 -258
  90. package/.framework/functions/_shared/trigger-engine.ts +0 -425
  91. package/.framework/functions/_shared/webhook-registration.ts +0 -168
  92. package/.framework/functions/_shared/webhook-registry.ts +0 -129
  93. package/.framework/functions/account-nodes.ts +0 -111
  94. package/.framework/functions/admin-data.ts +0 -606
  95. package/.framework/functions/ai-agents.ts +0 -323
  96. package/.framework/functions/api-keys.ts +0 -376
  97. package/.framework/functions/apps.ts +0 -483
  98. package/.framework/functions/auth.ts +0 -196
  99. package/.framework/functions/debug-auth.ts +0 -107
  100. package/.framework/functions/embeddings.ts +0 -556
  101. package/.framework/functions/integration-routes.ts +0 -523
  102. package/.framework/functions/integrations.ts +0 -319
  103. package/.framework/functions/item-progress.ts +0 -272
  104. package/.framework/functions/logs.ts +0 -438
  105. package/.framework/functions/observability.ts +0 -275
  106. package/.framework/functions/pipeline-executions.ts +0 -494
  107. package/.framework/functions/pipelines.ts +0 -485
  108. package/.framework/functions/prompt-configs.ts +0 -339
  109. package/.framework/functions/roles.ts +0 -387
  110. package/.framework/functions/system-cron.ts +0 -742
  111. package/.framework/functions/system.ts +0 -323
  112. package/.framework/functions/tests.ts +0 -119
  113. package/.framework/functions/timers.ts +0 -357
  114. package/.framework/functions/triggers.ts +0 -563
  115. package/.framework/functions/types.ts +0 -604
  116. package/.framework/index.html +0 -16
  117. package/.framework/migrations/000_foundation.sql +0 -1266
  118. package/.framework/migrations/001_seed.sql +0 -163
  119. package/.framework/migrations/002_seed_constraints.sql +0 -19
  120. package/.framework/migrations/003_auth_user_trigger.sql +0 -67
  121. package/.framework/src/App.tsx +0 -126
  122. package/.framework/src/apps/admin/index.tsx +0 -173
  123. package/.framework/src/components/AppWrapper.tsx +0 -56
  124. package/.framework/src/components/CustomAppLoader.tsx +0 -116
  125. package/.framework/src/components/admin/AdminListPage.tsx +0 -151
  126. package/.framework/src/components/admin/AdminSidebar.tsx +0 -166
  127. package/.framework/src/components/admin/AdminStatsCard.tsx +0 -62
  128. package/.framework/src/components/admin/SortableTableHeader.tsx +0 -42
  129. package/.framework/src/components/app-shell/GenericAppShell.tsx +0 -181
  130. package/.framework/src/components/app-shell/GenericDetailPage.tsx +0 -200
  131. package/.framework/src/components/app-shell/GenericListPage.tsx +0 -116
  132. package/.framework/src/components/app-sidebar.tsx +0 -228
  133. package/.framework/src/components/auth/ProtectedRoute.tsx +0 -88
  134. package/.framework/src/components/layout/AppShell.tsx +0 -91
  135. package/.framework/src/components/layout/Header.tsx +0 -88
  136. package/.framework/src/components/layout/Layout.tsx +0 -95
  137. package/.framework/src/components/layout/Sidebar.tsx +0 -329
  138. package/.framework/src/components/runtime/DataDetailHeader.tsx +0 -77
  139. package/.framework/src/components/runtime/DataDetailPage.tsx +0 -171
  140. package/.framework/src/components/runtime/DataFilters.tsx +0 -91
  141. package/.framework/src/components/runtime/DataHeader.tsx +0 -68
  142. package/.framework/src/components/runtime/DataListPage.tsx +0 -124
  143. package/.framework/src/components/runtime/DataStats.tsx +0 -70
  144. package/.framework/src/components/runtime/DataTable.tsx +0 -174
  145. package/.framework/src/components/runtime/SchemaDetailForm.tsx +0 -134
  146. package/.framework/src/components/runtime/index.ts +0 -18
  147. package/.framework/src/components/search-form.tsx +0 -29
  148. package/.framework/src/components/shared/AgentView.tsx +0 -213
  149. package/.framework/src/components/shared/FieldRenderer.tsx +0 -478
  150. package/.framework/src/components/shared/SchemaFields.tsx +0 -226
  151. package/.framework/src/components/ui/DataTable.tsx +0 -343
  152. package/.framework/src/components/ui/Form.tsx +0 -281
  153. package/.framework/src/components/ui/ItemCard.tsx +0 -296
  154. package/.framework/src/components/ui/ItemListView.tsx +0 -308
  155. package/.framework/src/components/ui/LoadingSpinner.tsx +0 -52
  156. package/.framework/src/components/ui/Modal.tsx +0 -61
  157. package/.framework/src/components/ui/RichTextEditor.tsx +0 -210
  158. package/.framework/src/components/ui/accordion.tsx +0 -82
  159. package/.framework/src/components/ui/alert-dialog.tsx +0 -197
  160. package/.framework/src/components/ui/alert.tsx +0 -76
  161. package/.framework/src/components/ui/aspect-ratio.tsx +0 -11
  162. package/.framework/src/components/ui/avatar.tsx +0 -110
  163. package/.framework/src/components/ui/badge.tsx +0 -49
  164. package/.framework/src/components/ui/breadcrumb.tsx +0 -122
  165. package/.framework/src/components/ui/button-group.tsx +0 -83
  166. package/.framework/src/components/ui/button.tsx +0 -65
  167. package/.framework/src/components/ui/calendar.tsx +0 -222
  168. package/.framework/src/components/ui/card.tsx +0 -100
  169. package/.framework/src/components/ui/carousel.tsx +0 -240
  170. package/.framework/src/components/ui/chart.tsx +0 -368
  171. package/.framework/src/components/ui/checkbox.tsx +0 -31
  172. package/.framework/src/components/ui/collapsible.tsx +0 -33
  173. package/.framework/src/components/ui/combobox.tsx +0 -299
  174. package/.framework/src/components/ui/command.tsx +0 -193
  175. package/.framework/src/components/ui/context-menu.tsx +0 -261
  176. package/.framework/src/components/ui/dialog.tsx +0 -165
  177. package/.framework/src/components/ui/direction.tsx +0 -6
  178. package/.framework/src/components/ui/drawer.tsx +0 -132
  179. package/.framework/src/components/ui/dropdown-menu.tsx +0 -269
  180. package/.framework/src/components/ui/empty.tsx +0 -104
  181. package/.framework/src/components/ui/field.tsx +0 -238
  182. package/.framework/src/components/ui/hover-card.tsx +0 -42
  183. package/.framework/src/components/ui/input-group.tsx +0 -153
  184. package/.framework/src/components/ui/input-otp.tsx +0 -87
  185. package/.framework/src/components/ui/input.tsx +0 -19
  186. package/.framework/src/components/ui/item.tsx +0 -196
  187. package/.framework/src/components/ui/kbd.tsx +0 -26
  188. package/.framework/src/components/ui/label.tsx +0 -22
  189. package/.framework/src/components/ui/menubar.tsx +0 -277
  190. package/.framework/src/components/ui/native-select.tsx +0 -61
  191. package/.framework/src/components/ui/navigation-menu.tsx +0 -164
  192. package/.framework/src/components/ui/pagination.tsx +0 -129
  193. package/.framework/src/components/ui/popover.tsx +0 -87
  194. package/.framework/src/components/ui/progress.tsx +0 -31
  195. package/.framework/src/components/ui/radio-group.tsx +0 -42
  196. package/.framework/src/components/ui/resizable.tsx +0 -50
  197. package/.framework/src/components/ui/scroll-area.tsx +0 -53
  198. package/.framework/src/components/ui/select.tsx +0 -195
  199. package/.framework/src/components/ui/separator.tsx +0 -26
  200. package/.framework/src/components/ui/sheet.tsx +0 -145
  201. package/.framework/src/components/ui/sidebar.tsx +0 -706
  202. package/.framework/src/components/ui/skeleton.tsx +0 -13
  203. package/.framework/src/components/ui/slider.tsx +0 -59
  204. package/.framework/src/components/ui/sonner.tsx +0 -47
  205. package/.framework/src/components/ui/spinner.tsx +0 -10
  206. package/.framework/src/components/ui/switch.tsx +0 -33
  207. package/.framework/src/components/ui/table-primitives.tsx +0 -141
  208. package/.framework/src/components/ui/table.tsx +0 -114
  209. package/.framework/src/components/ui/tabs.tsx +0 -90
  210. package/.framework/src/components/ui/textarea.tsx +0 -18
  211. package/.framework/src/components/ui/toggle-group.tsx +0 -89
  212. package/.framework/src/components/ui/toggle.tsx +0 -45
  213. package/.framework/src/components/ui/tooltip.tsx +0 -57
  214. package/.framework/src/contexts/AppContext.tsx +0 -133
  215. package/.framework/src/contexts/AuthContext.tsx +0 -371
  216. package/.framework/src/hooks/use-mobile.ts +0 -19
  217. package/.framework/src/hooks/useApi.ts +0 -526
  218. package/.framework/src/hooks/useApps.ts +0 -114
  219. package/.framework/src/hooks/useEntityList.ts +0 -190
  220. package/.framework/src/hooks/useEntityRecord.ts +0 -308
  221. package/.framework/src/hooks/useForm.ts +0 -307
  222. package/.framework/src/hooks/useListSchema.ts +0 -264
  223. package/.framework/src/hooks/useSchemaRecord.ts +0 -223
  224. package/.framework/src/index.css +0 -128
  225. package/.framework/src/lib/api.ts +0 -156
  226. package/.framework/src/lib/supabase.ts +0 -94
  227. package/.framework/src/lib/utils.ts +0 -317
  228. package/.framework/src/main.tsx +0 -27
  229. package/.framework/src/pages/DashboardPage.tsx +0 -181
  230. package/.framework/src/pages/NotFoundPage.tsx +0 -39
  231. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +0 -161
  232. package/.framework/src/pages/admin/AIAgentsPage.tsx +0 -318
  233. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +0 -199
  234. package/.framework/src/pages/admin/APIKeysPage.tsx +0 -303
  235. package/.framework/src/pages/admin/AlertsConfigPage.tsx +0 -523
  236. package/.framework/src/pages/admin/AppDetailPage.tsx +0 -493
  237. package/.framework/src/pages/admin/AppsPage.tsx +0 -355
  238. package/.framework/src/pages/admin/DesignedPage.tsx +0 -491
  239. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +0 -534
  240. package/.framework/src/pages/admin/EmbeddingsPage.tsx +0 -424
  241. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +0 -176
  242. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +0 -109
  243. package/.framework/src/pages/admin/IntegratedDashboard.tsx +0 -402
  244. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +0 -187
  245. package/.framework/src/pages/admin/IntegrationsPage.tsx +0 -301
  246. package/.framework/src/pages/admin/LogsPage.tsx +0 -283
  247. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +0 -85
  248. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +0 -470
  249. package/.framework/src/pages/admin/PipelineDetailPage.tsx +0 -183
  250. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +0 -279
  251. package/.framework/src/pages/admin/PipelinesPage.tsx +0 -390
  252. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +0 -299
  253. package/.framework/src/pages/admin/PromptConfigsPage.tsx +0 -292
  254. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +0 -434
  255. package/.framework/src/pages/admin/RoleDetailPage.tsx +0 -273
  256. package/.framework/src/pages/admin/RolesPage.tsx +0 -292
  257. package/.framework/src/pages/admin/SelectTestPage.tsx +0 -61
  258. package/.framework/src/pages/admin/ShadcnTestPage.tsx +0 -588
  259. package/.framework/src/pages/admin/SimpleDashboard.tsx +0 -387
  260. package/.framework/src/pages/admin/TestRunDetailPage.tsx +0 -172
  261. package/.framework/src/pages/admin/TestingDashboard.tsx +0 -257
  262. package/.framework/src/pages/admin/TimerDetailPage.tsx +0 -151
  263. package/.framework/src/pages/admin/TimersPage.tsx +0 -376
  264. package/.framework/src/pages/admin/TriggerDetailPage.tsx +0 -149
  265. package/.framework/src/pages/admin/TriggersPage.tsx +0 -381
  266. package/.framework/src/pages/admin/TypeDetailPage.tsx +0 -694
  267. package/.framework/src/pages/admin/TypesPage.tsx +0 -295
  268. package/.framework/src/pages/auth/LoginPage.tsx +0 -187
  269. package/.framework/src/pages/auth/RegisterPage.tsx +0 -163
  270. package/.framework/src/pages/spine-framework/APIPage.tsx +0 -17
  271. package/.framework/src/pages/spine-framework/CLIPage.tsx +0 -25
  272. package/.framework/src/types/auth.ts +0 -125
  273. package/.framework/src/types/types.ts +0 -407
  274. package/STRUCTURE.md +0 -150
  275. package/bin/spine-framework.cjs +0 -62
  276. package/bin/welcome.cjs +0 -45
  277. package/bin/ws-shim.cjs +0 -8
  278. package/bin/ws-shim.ts +0 -10
  279. package/config/components.json +0 -25
  280. package/config/deno.lock +0 -108
  281. package/config/package-lock.json +0 -17183
  282. package/config/postcss.config.cjs +0 -10
  283. package/config/tailwind.config.cjs +0 -78
  284. package/config/tsconfig.build.json +0 -32
  285. package/config/tsconfig.cli.json +0 -18
  286. package/config/tsconfig.json +0 -41
  287. package/config/tsconfig.node.json +0 -17
  288. package/config/tsconfig.node.tsbuildinfo +0 -1
  289. package/config/tsconfig.tsbuildinfo +0 -1
  290. package/config/typedoc.json +0 -16
  291. package/config/vite.config.d.ts +0 -2
  292. package/config/vite.config.ts +0 -72
  293. package/dist/cli/commands/agents.d.ts +0 -39
  294. package/dist/cli/commands/agents.d.ts.map +0 -1
  295. package/dist/cli/commands/auth.d.ts +0 -36
  296. package/dist/cli/commands/auth.d.ts.map +0 -1
  297. package/dist/cli/commands/create-app.d.ts +0 -23
  298. package/dist/cli/commands/create-app.d.ts.map +0 -1
  299. package/dist/cli/commands/dev.d.ts +0 -24
  300. package/dist/cli/commands/dev.d.ts.map +0 -1
  301. package/dist/cli/commands/doctor.d.ts +0 -42
  302. package/dist/cli/commands/doctor.d.ts.map +0 -1
  303. package/dist/cli/commands/generate.d.ts +0 -36
  304. package/dist/cli/commands/generate.d.ts.map +0 -1
  305. package/dist/cli/commands/init.d.ts +0 -20
  306. package/dist/cli/commands/init.d.ts.map +0 -1
  307. package/dist/cli/commands/install-app.d.ts +0 -30
  308. package/dist/cli/commands/install-app.d.ts.map +0 -1
  309. package/dist/cli/commands/items.d.ts +0 -45
  310. package/dist/cli/commands/items.d.ts.map +0 -1
  311. package/dist/cli/commands/migrate.d.ts +0 -21
  312. package/dist/cli/commands/migrate.d.ts.map +0 -1
  313. package/dist/cli/commands/migrations.d.ts +0 -41
  314. package/dist/cli/commands/migrations.d.ts.map +0 -1
  315. package/dist/cli/commands/pipelines.d.ts +0 -40
  316. package/dist/cli/commands/pipelines.d.ts.map +0 -1
  317. package/dist/cli/commands/status.d.ts +0 -23
  318. package/dist/cli/commands/status.d.ts.map +0 -1
  319. package/dist/cli/commands/system.d.ts +0 -29
  320. package/dist/cli/commands/system.d.ts.map +0 -1
  321. package/dist/cli/commands/test.d.ts +0 -46
  322. package/dist/cli/commands/test.d.ts.map +0 -1
  323. package/dist/cli/commands/uninstall-app.d.ts +0 -23
  324. package/dist/cli/commands/uninstall-app.d.ts.map +0 -1
  325. package/dist/cli/context.d.ts +0 -88
  326. package/dist/cli/context.d.ts.map +0 -1
  327. package/dist/cli/env-loader.d.ts +0 -14
  328. package/dist/cli/env-loader.d.ts.map +0 -1
  329. package/dist/cli/index.d.ts +0 -41
  330. package/dist/cli/index.d.ts.map +0 -1
  331. package/dist/functions/_shared/agent-runner.d.ts +0 -156
  332. package/dist/functions/_shared/agent-runner.d.ts.map +0 -1
  333. package/dist/functions/_shared/app-manifest.d.ts +0 -68
  334. package/dist/functions/_shared/app-manifest.d.ts.map +0 -1
  335. package/dist/functions/_shared/audit.d.ts +0 -91
  336. package/dist/functions/_shared/audit.d.ts.map +0 -1
  337. package/dist/functions/_shared/db.d.ts +0 -125
  338. package/dist/functions/_shared/db.d.ts.map +0 -1
  339. package/dist/functions/_shared/index.d.ts +0 -299
  340. package/dist/functions/_shared/index.d.ts.map +0 -1
  341. package/dist/functions/_shared/middleware.d.ts +0 -315
  342. package/dist/functions/_shared/middleware.d.ts.map +0 -1
  343. package/dist/functions/_shared/permissions.d.ts +0 -626
  344. package/dist/functions/_shared/permissions.d.ts.map +0 -1
  345. package/dist/functions/_shared/pipeline-runner.d.ts +0 -124
  346. package/dist/functions/_shared/pipeline-runner.d.ts.map +0 -1
  347. package/dist/functions/_shared/principal.d.ts +0 -284
  348. package/dist/functions/_shared/principal.d.ts.map +0 -1
  349. package/dist/functions/_shared/resolve-ids.d.ts +0 -10
  350. package/dist/functions/_shared/resolve-ids.d.ts.map +0 -1
  351. package/dist/functions/_shared/schema-utils.d.ts +0 -181
  352. package/dist/functions/_shared/schema-utils.d.ts.map +0 -1
  353. package/dist/functions/_shared/testing.d.ts +0 -172
  354. package/dist/functions/_shared/testing.d.ts.map +0 -1
  355. package/dist/functions/_shared/trigger-engine.d.ts +0 -140
  356. package/dist/functions/_shared/trigger-engine.d.ts.map +0 -1
  357. package/dist/functions/_shared/webhook-registration.d.ts +0 -81
  358. package/dist/functions/_shared/webhook-registration.d.ts.map +0 -1
  359. package/dist/functions/_shared/webhook-registry.d.ts +0 -57
  360. package/dist/functions/_shared/webhook-registry.d.ts.map +0 -1
  361. package/dist/functions/account-nodes.d.ts +0 -48
  362. package/dist/functions/account-nodes.d.ts.map +0 -1
  363. package/dist/functions/admin-data.d.ts +0 -178
  364. package/dist/functions/admin-data.d.ts.map +0 -1
  365. package/dist/functions/ai-agents.d.ts +0 -125
  366. package/dist/functions/ai-agents.d.ts.map +0 -1
  367. package/dist/functions/api-keys.d.ts +0 -140
  368. package/dist/functions/api-keys.d.ts.map +0 -1
  369. package/dist/functions/apps.d.ts +0 -163
  370. package/dist/functions/apps.d.ts.map +0 -1
  371. package/dist/functions/auth.d.ts +0 -74
  372. package/dist/functions/auth.d.ts.map +0 -1
  373. package/dist/functions/debug-auth.d.ts +0 -33
  374. package/dist/functions/debug-auth.d.ts.map +0 -1
  375. package/dist/functions/embeddings.d.ts +0 -205
  376. package/dist/functions/embeddings.d.ts.map +0 -1
  377. package/dist/functions/integration-routes.d.ts +0 -45
  378. package/dist/functions/integration-routes.d.ts.map +0 -1
  379. package/dist/functions/integrations.d.ts +0 -124
  380. package/dist/functions/integrations.d.ts.map +0 -1
  381. package/dist/functions/item-progress.d.ts +0 -41
  382. package/dist/functions/item-progress.d.ts.map +0 -1
  383. package/dist/functions/logs.d.ts +0 -162
  384. package/dist/functions/logs.d.ts.map +0 -1
  385. package/dist/functions/observability.d.ts +0 -123
  386. package/dist/functions/observability.d.ts.map +0 -1
  387. package/dist/functions/pipeline-executions.d.ts +0 -190
  388. package/dist/functions/pipeline-executions.d.ts.map +0 -1
  389. package/dist/functions/pipelines.d.ts +0 -171
  390. package/dist/functions/pipelines.d.ts.map +0 -1
  391. package/dist/functions/prompt-configs.d.ts +0 -125
  392. package/dist/functions/prompt-configs.d.ts.map +0 -1
  393. package/dist/functions/roles.d.ts +0 -118
  394. package/dist/functions/roles.d.ts.map +0 -1
  395. package/dist/functions/system-cron.d.ts +0 -65
  396. package/dist/functions/system-cron.d.ts.map +0 -1
  397. package/dist/functions/system.d.ts +0 -29
  398. package/dist/functions/system.d.ts.map +0 -1
  399. package/dist/functions/tests.d.ts +0 -28
  400. package/dist/functions/tests.d.ts.map +0 -1
  401. package/dist/functions/timers.d.ts +0 -139
  402. package/dist/functions/timers.d.ts.map +0 -1
  403. package/dist/functions/triggers.d.ts +0 -203
  404. package/dist/functions/triggers.d.ts.map +0 -1
  405. package/dist/functions/types.d.ts +0 -151
  406. package/dist/functions/types.d.ts.map +0 -1
  407. package/dist/src/types/types.d.ts +0 -364
  408. package/dist/src/types/types.d.ts.map +0 -1
  409. package/index.html +0 -13
  410. package/netlify.toml +0 -36
  411. package/package-project.json +0 -64
  412. package/scripts/app-install-cli.ts +0 -286
  413. package/scripts/assemble-frontend.sh +0 -79
  414. package/scripts/assemble-functions.sh +0 -62
  415. package/scripts/assemble.sh +0 -41
  416. package/scripts/boundary-check.sh +0 -106
  417. package/scripts/build-manifest.sh +0 -80
  418. package/scripts/check-core-integrity.sh +0 -82
  419. package/scripts/ingest-chunks.cjs +0 -202
  420. package/scripts/kb-chunk-parser.cjs +0 -312
  421. package/scripts/kb-chunk-parser.ts +0 -330
  422. package/scripts/load-test-app-install.ts +0 -484
  423. package/scripts/netlify-dev-wrapper.sh +0 -22
  424. package/scripts/verify-integrity.sh +0 -69
  425. package/vitest.config.ts +0 -45
@@ -1,124 +0,0 @@
1
- /**
2
- * @module pipeline-runner
3
- * @audience both
4
- * @layer shared-core
5
- * @stability stable
6
- *
7
- * Sequential pipeline execution engine. A pipeline is a named list of stages
8
- * (`PipelineStage[]`) stored in `pipelines.stages`. Each stage references an
9
- * `action` record by `stage_type` slug. Stages run sequentially; a failed stage
10
- * halts execution unless `stage.continue_on_error` is set.
11
- *
12
- * Every execution creates a `pipeline_executions` row (status: running →
13
- * completed | failed) and emits an audit log on completion or failure.
14
- *
15
- * Built-in stage handlers (no external config required):
16
- * - `update_item` — update a record by ID
17
- * - `create_record` — insert a new record
18
- * - `http_request` — fetch any HTTP endpoint
19
- * - `send_notification`— insert watchers notification rows
20
- * - `run_pipeline` — trigger a nested pipeline (self-recursion blocked)
21
- * - `search_knowledge` — full-text + fallback search on embeddings table
22
- * - `query_items` — filtered query on any table
23
- * - `agent_inference` — call an external LLM webhook or return a mock
24
- *
25
- * INVARIANT: `adminDb` (service role) is used for all DB writes — stage
26
- * execution runs as the pipeline's machine principal, not the end user.
27
- * INVARIANT: `run_pipeline` handler blocks self-referential execution
28
- * (`config._pipelineId === pipeline_id`) to prevent infinite loops.
29
- * INVARIANT: `runPipeline` never throws — failures are captured in the
30
- * returned `ExecutionResult` with `status: 'failed'`.
31
- *
32
- * @seeAlso trigger-engine.ts (calls runPipeline when a trigger fires)
33
- * @seeAlso agent-runner.ts (calls runPipeline for agentic tool calls)
34
- * @seeAlso audit.ts (emitAudit called on pipeline.completed / pipeline.failed)
35
- * @seeAlso index.ts (runPipeline re-exported for v2-custom/ and CLI)
36
- */
37
- import { CoreContext } from './middleware';
38
- /**
39
- * Result of a single pipeline stage execution.
40
- *
41
- * @outputSpec stageIndex: number — 0-based position in the pipeline's stages array
42
- * @outputSpec stageType: string — action slug (e.g. 'update_item', 'http_request')
43
- * @outputSpec status: 'success' | 'failed' | 'skipped'
44
- * @outputSpec output: any | undefined — handler return value on success
45
- * @outputSpec error: string | undefined — error message on failure
46
- * @outputSpec durationMs: number — wall-clock time for this stage
47
- */
48
- export interface StageResult {
49
- stageIndex: number;
50
- stageType: string;
51
- status: 'success' | 'failed' | 'skipped';
52
- output?: any;
53
- error?: string;
54
- durationMs: number;
55
- }
56
- /**
57
- * Top-level result of a `runPipeline` call. Stored in `pipeline_executions.result`.
58
- *
59
- * @outputSpec executionId: string — UUID of the pipeline_executions row
60
- * @outputSpec pipelineId: string — UUID of the pipeline that was run
61
- * @outputSpec status: 'completed' | 'failed' | 'cancelled'
62
- * @outputSpec stages: StageResult[] — per-stage results in execution order
63
- * @outputSpec durationMs: number — total wall-clock time
64
- * @outputSpec error: string | undefined — top-level error message on failure
65
- */
66
- export interface ExecutionResult {
67
- executionId: string;
68
- pipelineId: string;
69
- status: 'completed' | 'failed' | 'cancelled';
70
- stages: StageResult[];
71
- durationMs: number;
72
- error?: string;
73
- }
74
- /**
75
- * Executes a pipeline by ID, running its stages sequentially.
76
- *
77
- * Execution lifecycle:
78
- * 1. Load pipeline record (`pipelines` table, `is_active = true`)
79
- * 2. Insert `pipeline_executions` row with `status: 'running'`
80
- * 3. For each stage: load action → merge config → call `executeStage`
81
- * 4. On stage failure: push failed StageResult; stop unless `continue_on_error`
82
- * 5. Update `pipeline_executions` to `completed` or `failed`
83
- * 6. Emit `pipeline.completed` or `pipeline.failed` audit log
84
- * 7. Return `ExecutionResult` (never throws; failures are in result.status)
85
- *
86
- * @param pipelineId - UUID of the pipeline to run (must be active)
87
- * @param triggerData - Arbitrary context passed to each stage as `_triggerData`
88
- * @param ctx - CoreContext with principal and accountId for audit and stage writes
89
- * @returns Promise<ExecutionResult> — always resolves; never throws
90
- * @throws Error('Pipeline not found or inactive') — only if pipeline lookup fails
91
- * before execution begins (throws before creating the execution row)
92
- * @throws Error('Failed to create execution') — if execution row insert fails
93
- * @inputSpec pipelineId: string — valid UUID of a pipeline in pipelines table
94
- * @inputSpec triggerData: any — JSON-serializable; stored in trigger_data column
95
- * @inputSpec ctx.accountId: string | null — stamped on execution row
96
- * @inputSpec ctx.principal.id: string — stamped as created_by on execution row
97
- * @outputSpec ExecutionResult with status, stages, durationMs
98
- * @sideEffects DB write: inserts pipeline_executions row; updates it on completion
99
- * @sideEffects DB write: emitAudit to logs table
100
- * @calledBy trigger-engine.ts (on trigger fire)
101
- * @calledBy agent-runner.ts (tool call dispatch)
102
- * @calledBy stageHandlers.run_pipeline (nested execution)
103
- * @calledBy v2-custom/ import callers and CLI
104
- * @calls executeStage, adminDb, emitAudit
105
- * @testUnit tests/unit/pipeline-runner.test.ts
106
- * @testIntegration tests/integration/pipeline-runner.test.ts
107
- *
108
- * @example API handler trigger
109
- * ```ts
110
- * import { runPipeline } from './_shared/index'
111
- * const result = await runPipeline(body.pipeline_id, body.data, ctx)
112
- * if (result.status === 'failed') return error(result.error!, 500)
113
- * return result
114
- * ```
115
- *
116
- * @example Import usage (v2-custom/)
117
- * ```ts
118
- * import { runPipeline, SYSTEM_PRINCIPAL, adminDb, CoreContext } from '../_shared/index'
119
- * const ctx: CoreContext = { principal: SYSTEM_PRINCIPAL, accountId: MY_ACCOUNT, db: adminDb, requestId: crypto.randomUUID() }
120
- * const result = await runPipeline('pipeline-uuid', { source: 'import' }, ctx)
121
- * ```
122
- */
123
- export declare function runPipeline(pipelineId: string, triggerData: any, ctx: CoreContext): Promise<ExecutionResult>;
124
- //# sourceMappingURL=pipeline-runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline-runner.d.ts","sourceRoot":"","sources":["../../../.framework/functions/_shared/pipeline-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAS1C;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;IACxC,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;IAC5C,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAiBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,GAAG,EAChB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,eAAe,CAAC,CAgK1B"}
@@ -1,284 +0,0 @@
1
- /**
2
- * @module principal
3
- * @audience both
4
- * @layer shared-core
5
- * @stability stable
6
- *
7
- * Unified identity abstraction for all actors in Spine v2. Every request —
8
- * whether from a human via JWT, an integration via API key, a scheduled cron
9
- * job, or an internal trigger — resolves to a single `Principal` object before
10
- * any permission check or DB query occurs.
11
- *
12
- * Resolution order in `resolvePrincipal`:
13
- * 1. `x-api-key` header → machine principal (external integration)
14
- * 2. `x-cron-id` header → machine principal (scheduled job)
15
- * 3. `x-trigger-id` header → machine principal (event trigger)
16
- * 4. `Authorization: Bearer <jwt>` → human principal
17
- * 5. (none) → ANONYMOUS_PRINCIPAL (rejected by createHandler)
18
- *
19
- * INVARIANT: `resolvePrincipal` always returns a Principal, never null.
20
- * ANONYMOUS_PRINCIPAL is the sentinel for unauthenticated requests and is
21
- * rejected by `createHandler` before the handler runs.
22
- * INVARIANT: `adminDb` is used for all principal resolution lookups to avoid
23
- * circular dependencies with RLS (which itself depends on the resolved principal).
24
- * INVARIANT: never store `authContext.jwt` or `authContext.apiKey` in logs.
25
- * Use `formatPrincipalForAudit` which strips these fields.
26
- *
27
- * @seeAlso db.ts (adminDb, getUserDb — used for resolution and client selection)
28
- * @seeAlso middleware.ts (createHandler calls resolvePrincipal, getPrincipalDb)
29
- * @seeAlso permissions.ts (PermissionEngine.isSystemAdmin, canPrincipalAccessRecord)
30
- * @seeAlso audit.ts (formatPrincipalForAudit — safe audit serialization)
31
- */
32
- /**
33
- * Unified identity abstraction for all actors in Spine.
34
- *
35
- * Every request resolves to a `Principal` before any permission or DB access.
36
- * The `type` field gates which optional fields are populated:
37
- * - `'human'` → `roles`, `displayName`, `email`, `authContext.jwt`
38
- * - `'machine'` → `scopes`, `machineType`, `isInternal`, `authContext.apiKey`
39
- *
40
- * The `provenance` object is always populated and is the primary audit trail
41
- * field. It must not be modified after resolution.
42
- *
43
- * @inputSpec none — this is a pure type definition
44
- * @calledBy middleware.ts (RequestContext.principal), permissions.ts (all methods),
45
- * audit.ts (formatPrincipalForAudit), tests/integration/helpers.ts (makeTestCtx)
46
- */
47
- export interface Principal {
48
- /** Unique identifier — person UUID (human) or machine principal UUID (machine) */
49
- id: string;
50
- /** Actor type — gates which optional fields are populated */
51
- type: 'human' | 'machine';
52
- /** Primary account context; null for internal system principals */
53
- accountId: string | null;
54
- /** Role slugs from people.role_id → roles.slug; used by PermissionEngine */
55
- roles?: string[];
56
- /** Display name from people.display_name or people.email */
57
- displayName?: string;
58
- /** Email address from people.email or Supabase auth user */
59
- email?: string;
60
- /** Explicit permission grants (e.g., ['items:read', 'people:write', '*:*']) */
61
- scopes?: string[];
62
- /** Machine classification — determines UI visibility and default scopes */
63
- machineType?: 'integration' | 'service_account' | 'internal' | 'timer';
64
- /** Internal machines (cron, trigger, pipeline) are hidden from the UI */
65
- isInternal?: boolean;
66
- provenance: {
67
- /** How this principal was authenticated */
68
- sourceType: 'jwt' | 'api_key' | 'cron' | 'trigger' | 'manual' | 'webhook' | 'timer';
69
- /** Person who authorized this principal (may be self for humans) */
70
- createdBy: string | null;
71
- /** Chain ID for trigger/pipeline sequences */
72
- parentExecutionId?: string;
73
- /** When this principal context was created */
74
- invokedAt: string;
75
- /** API key ID (for api_key source) */
76
- apiKeyId?: string;
77
- /** Schedule ID (for cron source) */
78
- cronId?: string;
79
- /** Trigger ID (for trigger source) */
80
- triggerId?: string;
81
- /** Timer ID (for timer source) */
82
- timerId?: string;
83
- /** Event ID that triggered this execution */
84
- eventId?: string;
85
- /** IP address of the requester */
86
- ipAddress?: string;
87
- /** User agent string */
88
- userAgent?: string;
89
- };
90
- authContext?: {
91
- /** JWT token for human-scoped DB client */
92
- jwt?: string;
93
- /** API key value for machine verification */
94
- apiKey?: string;
95
- };
96
- }
97
- /**
98
- * Sentinel principal for unauthenticated requests.
99
- *
100
- * Returned by `resolvePrincipal` when no auth header is present. `createHandler`
101
- * checks for `principal.id === 'anonymous'` and rejects the request with 401.
102
- * Never use this principal for any DB access — it has no scopes or accountId.
103
- *
104
- * @stability stable
105
- * @calledBy resolvePrincipal (returned when no auth header is present)
106
- * @calledBy middleware.ts, requireUserContext, requireSystemContextWithAudit (checked against)
107
- * @calledBy permissions.ts (all surface methods check for 'anonymous' and deny)
108
- */
109
- export declare const ANONYMOUS_PRINCIPAL: Principal;
110
- /**
111
- * System principal for internal Spine operations (cron, pipeline runner, trigger engine).
112
- *
113
- * Has `'*:*'` scope (all resources, all actions) and `isInternal: true`. When
114
- * a `CoreContext` is constructed for a system operation (e.g. in v2-custom/ or
115
- * the CLI), use `SYSTEM_PRINCIPAL` as the principal and `adminDb` as the db.
116
- *
117
- * Never expose this principal in an HTTP response or log the `authContext` field.
118
- *
119
- * @stability stable
120
- * @calledBy tests/integration/helpers.ts (makeTestCtx)
121
- * @calledBy CLI context construction
122
- * @calledBy v2-custom/ system-level import callers
123
- *
124
- * @example Import usage (v2-custom/)
125
- * ```ts
126
- * import { CoreContext, SYSTEM_PRINCIPAL, adminDb } from '../_shared/index'
127
- * const ctx: CoreContext = {
128
- * principal: SYSTEM_PRINCIPAL,
129
- * accountId: MY_ACCOUNT_ID,
130
- * db: adminDb,
131
- * requestId: crypto.randomUUID()
132
- * }
133
- * ```
134
- */
135
- export declare const SYSTEM_PRINCIPAL: Principal;
136
- /**
137
- * Main entry point for principal resolution. Called by `createHandler` on every
138
- * HTTP request before the handler runs.
139
- *
140
- * Examines request headers in priority order and delegates to the appropriate
141
- * resolver. Always returns a `Principal` — never throws for missing auth
142
- * (returns `ANONYMOUS_PRINCIPAL` instead). Throws only on invalid/expired
143
- * credentials (invalid API key, expired JWT, etc.).
144
- *
145
- * Resolution order:
146
- * 1. `x-api-key` / `X-Api-Key` header → `resolveMachinePrincipal`
147
- * 2. `x-cron-id` / `X-Cron-Id` header → `resolveCronPrincipal`
148
- * 3. `x-trigger-id` / `X-Trigger-Id` header → `resolveTriggerPrincipal`
149
- * 4. `Authorization: Bearer <jwt>` → `resolveHumanPrincipal`
150
- * 5. (none matched) → `ANONYMOUS_PRINCIPAL`
151
- *
152
- * @param event - Raw Netlify event object with `headers` and optional `body`
153
- * @returns Promise<Principal> — always resolves; throws on invalid credentials
154
- * @throws Error — on invalid API key, invalid JWT, or missing DB records
155
- * @inputSpec event.headers: Record<string, string> — HTTP request headers
156
- * @outputSpec Principal — fully resolved principal with provenance populated
157
- * @sideEffects DB reads: api_keys, schedules, triggers, people tables via sub-resolvers
158
- * @calledBy middleware.ts (createHandler) — once per HTTP request
159
- * @calls resolveMachinePrincipal | resolveCronPrincipal | resolveTriggerPrincipal |
160
- * resolveHumanPrincipal
161
- * @testUnit tests/unit/principal.test.ts — 'resolvePrincipal' describe block
162
- * @testIntegration tests/integration/auth.test.ts
163
- */
164
- export declare function resolvePrincipal(event: any): Promise<Principal>;
165
- /**
166
- * Checks whether a machine principal has been granted a specific scope.
167
- *
168
- * Scope matching supports three patterns:
169
- * 1. Exact: `'items:read'` matches only `'items:read'`
170
- * 2. Wildcard action: `'items:*'` matches `'items:read'`, `'items:write'`, etc.
171
- * 3. Global wildcard: `'*:*'` matches any scope
172
- *
173
- * Returns `false` for non-machine principals — role-based checks use `humanHasRole`.
174
- *
175
- * @param principal - The principal to check
176
- * @param scope - The required scope string in `'resource:action'` format
177
- * @returns boolean — true if any of the principal's scopes grant the required scope
178
- * @throws never
179
- * @inputSpec principal.type: 'machine' — returns false for human principals
180
- * @inputSpec scope: string — must be in 'resource:action' format
181
- * @inputSpec principal.scopes: string[] — list of granted scope strings
182
- * @outputSpec boolean
183
- * @sideEffects none
184
- * @calledBy permissions.ts (checkMachineScope), any custom code doing scope checks
185
- * @testUnit tests/unit/principal.test.ts — 'machineHasScope' describe block
186
- *
187
- * @example
188
- * ```ts
189
- * import { machineHasScope } from '../_shared/index'
190
- * if (!machineHasScope(principal, 'items:write')) {
191
- * return { error: 'Insufficient scope' }
192
- * }
193
- * ```
194
- */
195
- export declare function machineHasScope(principal: Principal, scope: string): boolean;
196
- /**
197
- * Checks whether a human principal has been assigned a specific role.
198
- *
199
- * Returns `false` for non-human (machine) principals — scope checks use
200
- * `machineHasScope`. Role slugs come from `people.role_id → roles.slug`
201
- * and are loaded at resolution time in `resolveHumanPrincipal`.
202
- *
203
- * @param principal - The principal to check
204
- * @param roleSlug - The role slug to look for (e.g. 'system_admin', 'agent')
205
- * @returns boolean — true if principal.roles includes the given slug
206
- * @throws never
207
- * @inputSpec principal.type: 'human' — returns false for machine principals
208
- * @inputSpec roleSlug: string — must match exactly (case-sensitive)
209
- * @inputSpec principal.roles: string[] | undefined
210
- * @outputSpec boolean
211
- * @sideEffects none
212
- * @calledBy isSystemAdmin, permissions.ts (PermissionEngine.isSystemAdmin)
213
- * @testUnit tests/unit/principal.test.ts — 'humanHasRole' describe block
214
- */
215
- export declare function humanHasRole(principal: Principal, roleSlug: string): boolean;
216
- /**
217
- * Returns true if the principal holds the `system_admin` role.
218
- *
219
- * This is the canonical system admin check used by `middleware.ts`
220
- * (`requireSystemContextWithAudit`) and re-exported from `permissions.ts`
221
- * (`PermissionEngine.isSystemAdmin`). system_admin bypasses all three
222
- * permission surfaces.
223
- *
224
- * @param principal - The principal to check
225
- * @returns boolean — true only if type='human' and roles includes 'system_admin'
226
- * @throws never
227
- * @inputSpec principal: Principal — any resolved principal
228
- * @outputSpec boolean — false for machine principals, anonymous, or missing roles
229
- * @sideEffects none
230
- * @calledBy middleware.ts (requireSystemContextWithAudit), permissions.ts (PermissionEngine),
231
- * any handler doing system-admin-only checks
232
- * @calls humanHasRole
233
- * @testUnit tests/unit/principal.test.ts — 'isSystemAdmin' describe block
234
- */
235
- export declare function isSystemAdmin(principal: Principal): boolean;
236
- /**
237
- * Selects the correct Supabase database client for the given principal.
238
- *
239
- * This is the only place in the codebase where the two-client selection
240
- * decision is made. The result is stored in `ctx.db` and used for all
241
- * subsequent DB queries in the request.
242
- *
243
- * Selection logic:
244
- * - Human principal with JWT → `getUserDb(jwt)` — enforces RLS
245
- * - Machine principal → `adminDb` — RLS policies check machine ID in policies
246
- * - Anonymous → `adminDb` (but anonymous requests are rejected before DB access)
247
- *
248
- * @param principal - The resolved principal
249
- * @returns SupabaseClient — RLS-scoped for humans, admin for machines
250
- * @throws never
251
- * @inputSpec principal.type: 'human' | 'machine'
252
- * @inputSpec principal.authContext.jwt: string | undefined — required for human client
253
- * @outputSpec SupabaseClient — getUserDb result (human) or adminDb (machine)
254
- * @sideEffects none (client construction only)
255
- * @calledBy middleware.ts (createHandler — `const ctxDb = getPrincipalDb(principal)`)
256
- * @calls getUserDb (db.ts), adminDb (db.ts)
257
- * @testUnit tests/unit/principal.test.ts — 'getPrincipalDb' describe block
258
- */
259
- export declare function getPrincipalDb(principal: Principal): import("@supabase/supabase-js").SupabaseClient<any, "public", string, any, any>;
260
- /**
261
- * Serializes a principal into a safe, structured object for audit log entries.
262
- *
263
- * Strips `authContext` entirely (never log JWT or API key values). The returned
264
- * object is safe to store in the `metadata` JSONB column of the `logs` table.
265
- *
266
- * @param principal - Any resolved principal including ANONYMOUS_PRINCIPAL
267
- * @returns object — audit-safe principal summary
268
- * @throws never
269
- * @inputSpec principal: Principal — any resolved principal
270
- * @outputSpec { id, type, account_id } + role/scope fields depending on type
271
- * @outputSpec authContext is NEVER included in output
272
- * @sideEffects none
273
- * @calledBy audit.ts (emitAudit — in metadata.principal)
274
- * @testUnit tests/unit/principal.test.ts — 'formatPrincipalForAudit' describe block
275
- *
276
- * @example
277
- * ```ts
278
- * await emitAudit(ctx, 'items.delete', { type: 'item', id }, {
279
- * principal_snapshot: formatPrincipalForAudit(ctx.principal)
280
- * })
281
- * ```
282
- */
283
- export declare function formatPrincipalForAudit(principal: Principal): object;
284
- //# sourceMappingURL=principal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../../.framework/functions/_shared/principal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA8BH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,EAAE,EAAE,MAAM,CAAA;IAEV,6DAA6D;IAC7D,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;IAEzB,mEAAmE;IACnE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAGxB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAEhB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAA;IAGd,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IAEjB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,aAAa,GAAG,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAA;IAEtE,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAA;IAGpB,UAAU,EAAE;QACV,2CAA2C;QAC3C,UAAU,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;QAEnF,oEAAoE;QACpE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;QAExB,8CAA8C;QAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAE1B,8CAA8C;QAC9C,SAAS,EAAE,MAAM,CAAA;QAGjB,sCAAsC;QACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAEjB,oCAAoC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAA;QAEf,sCAAsC;QACtC,SAAS,CAAC,EAAE,MAAM,CAAA;QAElB,kCAAkC;QAClC,OAAO,CAAC,EAAE,MAAM,CAAA;QAEhB,6CAA6C;QAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;QAEhB,kCAAkC;QAClC,SAAS,CAAC,EAAE,MAAM,CAAA;QAElB,wBAAwB;QACxB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IAKD,WAAW,CAAC,EAAE;QACZ,2CAA2C;QAC3C,GAAG,CAAC,EAAE,MAAM,CAAA;QAEZ,6CAA6C;QAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAID;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAUjC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAY9B,CAAA;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CA2BrE;AAuXD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAgB5E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAE3D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,mFAOlD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAgBpE"}
@@ -1,10 +0,0 @@
1
- export declare function resolveTypeIds(pairs: Array<{
2
- kind: string;
3
- slug: string;
4
- }>): Promise<Record<string, string>>;
5
- export declare function resolveTypeId(kind: string, slug: string): Promise<string>;
6
- export declare function resolveLinkTypeIds(slugs: string[]): Promise<Record<string, string>>;
7
- export declare function resolveAccountId(slug: string): Promise<string>;
8
- export declare function resolveAgentId(name: string): Promise<string>;
9
- export declare function resolvePromptConfigId(slug: string): Promise<string>;
10
- //# sourceMappingURL=resolve-ids.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-ids.d.ts","sourceRoot":"","sources":["../../../.framework/functions/_shared/resolve-ids.ts"],"names":[],"mappings":"AAaA,wBAAsB,cAAc,CAClC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAuBjC;AAGD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/E;AAGD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAoBzF;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASpE;AAGD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUlE;AAGD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUzE"}
@@ -1,181 +0,0 @@
1
- /**
2
- * @module schema-utils
3
- * @audience both
4
- * @layer shared-core
5
- * @stability stable
6
- *
7
- * Schema generation and field-level data transformation for all Spine types.
8
- *
9
- * Three public functions form the core contract:
10
- * - `generateValidationSchema` — derives a runtime validation schema from a
11
- * `design_schema`, stripping display/permission info and keeping only
12
- * structural constraints.
13
- * - `sanitizeFieldData` — coerces and validates a single field value for
14
- * write (create/update) operations. Throws on invalid data.
15
- * - `formatFieldData` — converts a stored field value to a human-readable
16
- * display string for read operations. Never throws.
17
- * - `transformRecordData` — applies sanitize or format to all fields in a
18
- * record using a pre-generated ValidationSchema.
19
- *
20
- * These are called by `permissions.ts` (`validateFirstSurfaceUpdatePermissions`
21
- * and `sanitizeFirstSurfaceRecordData`) — do not call them directly from API
22
- * handlers. Use `PermissionEngine.sanitizeRecordData` / `validateUpdatePermissions`.
23
- *
24
- * INVARIANT: all sanitize functions throw on invalid data. Callers must catch
25
- * errors and convert them to field-level validation error messages.
26
- * INVARIANT: all format functions return the raw data unchanged if formatting
27
- * is not applicable (never throw, never return null for non-null input).
28
- *
29
- * @seeAlso permissions.ts (primary caller of sanitizeFieldData, formatFieldData)
30
- * @seeAlso src/types/types.ts (FieldDefinition interface)
31
- * @seeAlso index.ts (not re-exported — internal to core; use PermissionEngine)
32
- */
33
- /**
34
- * Structural-only validation schema derived from a `design_schema`.
35
- *
36
- * Contains one entry per field with the field's `data_type` and any explicit
37
- * `validation` constraints. Display properties (`display_type`, views, sections)
38
- * and permission properties are stripped. Used as input to `sanitizeFieldData`
39
- * and `formatFieldData`.
40
- *
41
- * @inputSpec none — output type of generateValidationSchema
42
- * @outputSpec fields: Record<fieldName, { data_type, required?, ...constraints }>
43
- * @calledBy generateValidationSchema (producer), transformRecordData,
44
- * permissions.ts validateFirstSurfaceUpdatePermissions (consumer)
45
- */
46
- export interface ValidationSchema {
47
- fields: Record<string, {
48
- data_type: string;
49
- required?: boolean;
50
- [key: string]: any;
51
- }>;
52
- }
53
- /**
54
- * Derives a `ValidationSchema` from a `design_schema` by extracting only
55
- * structural constraints (data_type, required, validation.*) and discarding
56
- * display, permission, and view configuration.
57
- *
58
- * The resulting schema is used to drive `sanitizeFieldData` and
59
- * `formatFieldData` for every field in a record. It is generated once per
60
- * type and passed to `transformRecordData` for bulk field processing.
61
- *
62
- * @param designSchema - The full design_schema object from a type record
63
- * @returns ValidationSchema with one entry per field
64
- * @throws never — returns empty schema if designSchema.fields is missing
65
- * @inputSpec designSchema.fields: Record<fieldName, FieldDefinition> — must match
66
- * the FieldDefinition interface from src/types/types.ts
67
- * @inputSpec designSchema.fields[x].data_type: string — required in every field
68
- * @outputSpec ValidationSchema.fields: Record<string, { data_type, required, ...constraints }>
69
- * @sideEffects none
70
- * @calledBy permissions.ts (validateFirstSurfaceUpdatePermissions), any caller
71
- * needing a validation schema without the full design_schema overhead
72
- * @testUnit tests/unit/schema-utils.test.ts — 'generateValidationSchema' describe block
73
- *
74
- * @example
75
- * ```ts
76
- * const schema = generateValidationSchema(record.design_schema)
77
- * const cleaned = transformRecordData(record.data, schema, 'sanitize')
78
- * ```
79
- */
80
- export declare function generateValidationSchema(designSchema: any): ValidationSchema;
81
- /**
82
- * Coerces and validates a single field value for a write (create/update) operation.
83
- *
84
- * Dispatches to a type-specific sanitizer based on `data_type`. Every sanitizer:
85
- * - Coerces the input to the correct type
86
- * - Applies constraint validation (min/max/length/pattern/options)
87
- * - Throws a descriptive `Error` on the first validation failure
88
- * - Returns the cleaned value on success
89
- *
90
- * Unknown `data_type` values pass through unchanged (no throw).
91
- *
92
- * @param data - Raw field value from the request body
93
- * @param data_type - The field's declared data_type from design_schema.fields[x]
94
- * @param validation - Optional validation constraints from the field definition
95
- * @returns Sanitized value in the correct type for storage
96
- * @throws Error — descriptive message naming the field constraint violated
97
- * @inputSpec data: any — null and undefined are returned as-is without sanitization
98
- * @inputSpec data_type: string — one of the 21 supported type keys (see switch below)
99
- * @inputSpec validation: object | undefined — type-specific constraints
100
- * @outputSpec any — coerced value matching the data_type storage format
101
- * @sideEffects none
102
- * @calledBy permissions.ts (validateFirstSurfaceUpdatePermissions, per-field loop)
103
- * @calls sanitizeText | sanitizeTextarea | sanitizeEmail | sanitizeNumber | etc.
104
- * @testUnit tests/unit/schema-utils.test.ts — 'sanitizeFieldData' describe block
105
- *
106
- * @example
107
- * ```ts
108
- * const clean = sanitizeFieldData('hello@EXAMPLE.COM', 'email')
109
- * // → 'hello@example.com'
110
- *
111
- * sanitizeFieldData('not-a-url', 'url')
112
- * // throws Error('Invalid URL format')
113
- * ```
114
- */
115
- export declare function sanitizeFieldData(data: any, data_type: string, validation?: any): any;
116
- /**
117
- * Converts a stored field value to a human-readable display string.
118
- *
119
- * Dispatches to a type-specific formatter based on `data_type`. Formatters
120
- * never throw — if the data cannot be formatted, the raw value is returned.
121
- * Only types with meaningful display transformations have a case; all others
122
- * fall through to the default (return data unchanged).
123
- *
124
- * @param data - Stored field value (from DB, post-sanitization)
125
- * @param data_type - The field's declared data_type
126
- * @param context - Optional context for type-specific formatting (e.g.
127
- * `context.currency_code` for currency fields, `context.field` for boolean
128
- * contextual labels like 'Active'/'Inactive')
129
- * @returns Formatted display value
130
- * @throws never
131
- * @inputSpec data: any — null and undefined are returned as-is
132
- * @inputSpec data_type: string — one of 21 supported keys; unknown → pass-through
133
- * @inputSpec context: object | undefined — type-specific display hints
134
- * @outputSpec any — display-ready value; string for most types, raw data for pass-through
135
- * @sideEffects none
136
- * @calledBy permissions.ts (sanitizeFirstSurfaceRecordData, per-field loop)
137
- * @calls formatJson | formatDate | formatDatetime | formatCurrency | etc.
138
- * @testUnit tests/unit/schema-utils.test.ts — 'formatFieldData' describe block
139
- *
140
- * @example
141
- * ```ts
142
- * formatFieldData('2024-01-15', 'date')
143
- * // → 'January 15, 2024'
144
- *
145
- * formatFieldData(1234.5, 'currency', { currency_code: 'USD' })
146
- * // → '$1,234.50'
147
- * ```
148
- */
149
- export declare function formatFieldData(data: any, data_type: string, context?: any): any;
150
- /**
151
- * Applies `sanitizeFieldData` or `formatFieldData` to all fields in a record,
152
- * using the ValidationSchema for per-field type and constraint information.
153
- *
154
- * Fields not present in the schema are passed through unchanged. This is
155
- * intentional — unknown fields are not rejected here; the PermissionEngine
156
- * handles field-level access control separately.
157
- *
158
- * @param data - Key/value record of field names to raw or stored values
159
- * @param validationSchema - Schema from `generateValidationSchema`
160
- * @param operation - 'sanitize' for write path; 'format' for display path
161
- * @param context - Optional context passed through to formatFieldData
162
- * @returns Transformed record with the same keys
163
- * @throws Error (sanitize mode only) — if any field fails validation
164
- * @inputSpec data: Record<string, any> — flat field map
165
- * @inputSpec validationSchema: ValidationSchema — from generateValidationSchema
166
- * @inputSpec operation: 'sanitize' | 'format'
167
- * @outputSpec Record<string, any> — same keys, transformed values
168
- * @sideEffects none
169
- * @calledBy Custom code in v2-custom/ that needs bulk field transformation
170
- * @calls sanitizeFieldData | formatFieldData (per field)
171
- * @testUnit tests/unit/schema-utils.test.ts — 'transformRecordData' describe block
172
- *
173
- * @example
174
- * ```ts
175
- * const schema = generateValidationSchema(type.design_schema)
176
- * const sanitized = transformRecordData(body.data, schema, 'sanitize')
177
- * const formatted = transformRecordData(record.data, schema, 'format', ctx)
178
- * ```
179
- */
180
- export declare function transformRecordData(data: Record<string, any>, validationSchema: ValidationSchema, operation: 'sanitize' | 'format', context?: any): Record<string, any>;
181
- //# sourceMappingURL=schema-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../../../.framework/functions/_shared/schema-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAMH;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QACrB,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAC,CAAA;CACH;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,GAAG,GAAG,gBAAgB,CAsC5E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,GAAG,GACf,GAAG,CAqDL;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,GAAG,GACZ,GAAG,CA6BL;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,UAAU,GAAG,QAAQ,EAChC,OAAO,CAAC,EAAE,GAAG,GACZ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA4BrB"}