spine-framework 0.1.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 (385) hide show
  1. package/.framework/README.md +129 -0
  2. package/.framework/cli/bin.cjs +14 -0
  3. package/.framework/cli/commands/agents.ts +153 -0
  4. package/.framework/cli/commands/auth.ts +94 -0
  5. package/.framework/cli/commands/create-app.ts +185 -0
  6. package/.framework/cli/commands/dev.ts +295 -0
  7. package/.framework/cli/commands/doctor.ts +442 -0
  8. package/.framework/cli/commands/generate.ts +332 -0
  9. package/.framework/cli/commands/init.ts +272 -0
  10. package/.framework/cli/commands/install-app.ts +391 -0
  11. package/.framework/cli/commands/items.ts +253 -0
  12. package/.framework/cli/commands/migrations.ts +141 -0
  13. package/.framework/cli/commands/pipelines.ts +166 -0
  14. package/.framework/cli/commands/status.ts +197 -0
  15. package/.framework/cli/commands/system.ts +184 -0
  16. package/.framework/cli/commands/test.ts +227 -0
  17. package/.framework/cli/commands/uninstall-app.ts +166 -0
  18. package/.framework/cli/context.ts +268 -0
  19. package/.framework/cli/env-loader.ts +36 -0
  20. package/.framework/cli/index.ts +106 -0
  21. package/.framework/cli/welcome.cjs +45 -0
  22. package/.framework/docs/API.md +384 -0
  23. package/.framework/docs/STABILITY.md +52 -0
  24. package/.framework/docs/admin-routes.md +76 -0
  25. package/.framework/docs/api-docs-progress.md +38 -0
  26. package/.framework/docs/api-governance.md +146 -0
  27. package/.framework/docs/api-testing-results.md +212 -0
  28. package/.framework/docs/apis/admin-configs.md +567 -0
  29. package/.framework/docs/apis/admin-data.md +272 -0
  30. package/.framework/docs/apis/index.md +231 -0
  31. package/.framework/docs/apis/internal.md +295 -0
  32. package/.framework/docs/apis/runtime.md +537 -0
  33. package/.framework/docs/assembly-launch-guide.md +138 -0
  34. package/.framework/docs/audit-results.md +590 -0
  35. package/.framework/docs/authorization-model.md +170 -0
  36. package/.framework/docs/db-api-inventory.md +95 -0
  37. package/.framework/docs/examples/custom-app/README.md +77 -0
  38. package/.framework/docs/examples/custom-function/README.md +27 -0
  39. package/.framework/docs/examples/custom-function/handler.ts +48 -0
  40. package/.framework/docs/examples/custom-webhook/README.md +68 -0
  41. package/.framework/docs/gap-remediation-backlog.md +103 -0
  42. package/.framework/docs/guides/cli-guide.md +224 -0
  43. package/.framework/docs/guides/getting-started.md +103 -0
  44. package/.framework/docs/guides/import-guide.md +193 -0
  45. package/.framework/docs/guides/testing-guide.md +229 -0
  46. package/.framework/docs/permission-examples.md +326 -0
  47. package/.framework/docs/ui-adoption-verification.md +111 -0
  48. package/.framework/docs/ui-api-coverage.md +84 -0
  49. package/.framework/docs/v2-compatibility-audit.md +228 -0
  50. package/.framework/functions/.gitkeep +1 -0
  51. package/.framework/functions/_shared/agent-runner.ts +1097 -0
  52. package/.framework/functions/_shared/app-manifest.ts +184 -0
  53. package/.framework/functions/_shared/audit.ts +150 -0
  54. package/.framework/functions/_shared/db.ts +174 -0
  55. package/.framework/functions/_shared/index.ts +382 -0
  56. package/.framework/functions/_shared/middleware.ts +490 -0
  57. package/.framework/functions/_shared/permissions.ts +1325 -0
  58. package/.framework/functions/_shared/pipeline-runner.ts +731 -0
  59. package/.framework/functions/_shared/principal.ts +760 -0
  60. package/.framework/functions/_shared/schema-utils.ts +967 -0
  61. package/.framework/functions/_shared/testing.ts +258 -0
  62. package/.framework/functions/_shared/trigger-engine.ts +425 -0
  63. package/.framework/functions/_shared/webhook-registration.ts +168 -0
  64. package/.framework/functions/_shared/webhook-registry.ts +129 -0
  65. package/.framework/functions/account-nodes.ts +111 -0
  66. package/.framework/functions/admin-data.ts +606 -0
  67. package/.framework/functions/ai-agents.ts +323 -0
  68. package/.framework/functions/api-keys.ts +376 -0
  69. package/.framework/functions/apps.ts +483 -0
  70. package/.framework/functions/auth.ts +196 -0
  71. package/.framework/functions/debug-auth.ts +107 -0
  72. package/.framework/functions/embeddings.ts +556 -0
  73. package/.framework/functions/integration-routes.ts +523 -0
  74. package/.framework/functions/integrations.ts +319 -0
  75. package/.framework/functions/item-progress.ts +272 -0
  76. package/.framework/functions/logs.ts +438 -0
  77. package/.framework/functions/observability.ts +275 -0
  78. package/.framework/functions/pipeline-executions.ts +494 -0
  79. package/.framework/functions/pipelines.ts +485 -0
  80. package/.framework/functions/prompt-configs.ts +339 -0
  81. package/.framework/functions/roles.ts +387 -0
  82. package/.framework/functions/system-cron.ts +742 -0
  83. package/.framework/functions/system.ts +323 -0
  84. package/.framework/functions/tests.ts +119 -0
  85. package/.framework/functions/timers.ts +357 -0
  86. package/.framework/functions/triggers.ts +563 -0
  87. package/.framework/functions/types.ts +604 -0
  88. package/.framework/migrations/000_foundation.sql +1256 -0
  89. package/.framework/migrations/001_seed.sql +92 -0
  90. package/.framework/migrations/002_seed_constraints.sql +13 -0
  91. package/.framework/migrations/003_auth_user_trigger.sql +59 -0
  92. package/.framework/src/App.tsx +126 -0
  93. package/.framework/src/apps/admin/index.tsx +173 -0
  94. package/.framework/src/components/AppWrapper.tsx +56 -0
  95. package/.framework/src/components/CustomAppLoader.tsx +116 -0
  96. package/.framework/src/components/admin/AdminListPage.tsx +151 -0
  97. package/.framework/src/components/admin/AdminSidebar.tsx +166 -0
  98. package/.framework/src/components/admin/AdminStatsCard.tsx +62 -0
  99. package/.framework/src/components/admin/SortableTableHeader.tsx +42 -0
  100. package/.framework/src/components/app-shell/GenericAppShell.tsx +181 -0
  101. package/.framework/src/components/app-shell/GenericDetailPage.tsx +200 -0
  102. package/.framework/src/components/app-shell/GenericListPage.tsx +116 -0
  103. package/.framework/src/components/app-sidebar.tsx +228 -0
  104. package/.framework/src/components/auth/ProtectedRoute.tsx +88 -0
  105. package/.framework/src/components/layout/AppShell.tsx +91 -0
  106. package/.framework/src/components/layout/Header.tsx +88 -0
  107. package/.framework/src/components/layout/Layout.tsx +95 -0
  108. package/.framework/src/components/layout/Sidebar.tsx +329 -0
  109. package/.framework/src/components/runtime/DataDetailHeader.tsx +77 -0
  110. package/.framework/src/components/runtime/DataDetailPage.tsx +171 -0
  111. package/.framework/src/components/runtime/DataFilters.tsx +91 -0
  112. package/.framework/src/components/runtime/DataHeader.tsx +68 -0
  113. package/.framework/src/components/runtime/DataListPage.tsx +124 -0
  114. package/.framework/src/components/runtime/DataStats.tsx +70 -0
  115. package/.framework/src/components/runtime/DataTable.tsx +174 -0
  116. package/.framework/src/components/runtime/SchemaDetailForm.tsx +134 -0
  117. package/.framework/src/components/runtime/index.ts +18 -0
  118. package/.framework/src/components/search-form.tsx +29 -0
  119. package/.framework/src/components/shared/AgentView.tsx +213 -0
  120. package/.framework/src/components/shared/FieldRenderer.tsx +478 -0
  121. package/.framework/src/components/shared/SchemaFields.tsx +226 -0
  122. package/.framework/src/components/ui/DataTable.tsx +343 -0
  123. package/.framework/src/components/ui/Form.tsx +281 -0
  124. package/.framework/src/components/ui/ItemCard.tsx +296 -0
  125. package/.framework/src/components/ui/ItemListView.tsx +308 -0
  126. package/.framework/src/components/ui/LoadingSpinner.tsx +52 -0
  127. package/.framework/src/components/ui/Modal.tsx +61 -0
  128. package/.framework/src/components/ui/RichTextEditor.tsx +210 -0
  129. package/.framework/src/components/ui/accordion.tsx +82 -0
  130. package/.framework/src/components/ui/alert-dialog.tsx +197 -0
  131. package/.framework/src/components/ui/alert.tsx +76 -0
  132. package/.framework/src/components/ui/aspect-ratio.tsx +11 -0
  133. package/.framework/src/components/ui/avatar.tsx +110 -0
  134. package/.framework/src/components/ui/badge.tsx +49 -0
  135. package/.framework/src/components/ui/breadcrumb.tsx +122 -0
  136. package/.framework/src/components/ui/button-group.tsx +83 -0
  137. package/.framework/src/components/ui/button.tsx +65 -0
  138. package/.framework/src/components/ui/calendar.tsx +222 -0
  139. package/.framework/src/components/ui/card.tsx +100 -0
  140. package/.framework/src/components/ui/carousel.tsx +240 -0
  141. package/.framework/src/components/ui/chart.tsx +373 -0
  142. package/.framework/src/components/ui/checkbox.tsx +31 -0
  143. package/.framework/src/components/ui/collapsible.tsx +33 -0
  144. package/.framework/src/components/ui/combobox.tsx +299 -0
  145. package/.framework/src/components/ui/command.tsx +193 -0
  146. package/.framework/src/components/ui/context-menu.tsx +261 -0
  147. package/.framework/src/components/ui/dialog.tsx +165 -0
  148. package/.framework/src/components/ui/direction.tsx +22 -0
  149. package/.framework/src/components/ui/drawer.tsx +132 -0
  150. package/.framework/src/components/ui/dropdown-menu.tsx +269 -0
  151. package/.framework/src/components/ui/empty.tsx +104 -0
  152. package/.framework/src/components/ui/field.tsx +238 -0
  153. package/.framework/src/components/ui/hover-card.tsx +42 -0
  154. package/.framework/src/components/ui/input-group.tsx +153 -0
  155. package/.framework/src/components/ui/input-otp.tsx +87 -0
  156. package/.framework/src/components/ui/input.tsx +19 -0
  157. package/.framework/src/components/ui/item.tsx +196 -0
  158. package/.framework/src/components/ui/kbd.tsx +26 -0
  159. package/.framework/src/components/ui/label.tsx +22 -0
  160. package/.framework/src/components/ui/menubar.tsx +277 -0
  161. package/.framework/src/components/ui/native-select.tsx +61 -0
  162. package/.framework/src/components/ui/navigation-menu.tsx +164 -0
  163. package/.framework/src/components/ui/pagination.tsx +129 -0
  164. package/.framework/src/components/ui/popover.tsx +87 -0
  165. package/.framework/src/components/ui/progress.tsx +31 -0
  166. package/.framework/src/components/ui/radio-group.tsx +42 -0
  167. package/.framework/src/components/ui/resizable.tsx +50 -0
  168. package/.framework/src/components/ui/scroll-area.tsx +53 -0
  169. package/.framework/src/components/ui/select.tsx +195 -0
  170. package/.framework/src/components/ui/separator.tsx +26 -0
  171. package/.framework/src/components/ui/sheet.tsx +145 -0
  172. package/.framework/src/components/ui/sidebar.tsx +706 -0
  173. package/.framework/src/components/ui/skeleton.tsx +13 -0
  174. package/.framework/src/components/ui/slider.tsx +59 -0
  175. package/.framework/src/components/ui/sonner.tsx +47 -0
  176. package/.framework/src/components/ui/spinner.tsx +10 -0
  177. package/.framework/src/components/ui/switch.tsx +33 -0
  178. package/.framework/src/components/ui/table-primitives.tsx +141 -0
  179. package/.framework/src/components/ui/table.tsx +114 -0
  180. package/.framework/src/components/ui/tabs.tsx +90 -0
  181. package/.framework/src/components/ui/textarea.tsx +18 -0
  182. package/.framework/src/components/ui/toggle-group.tsx +89 -0
  183. package/.framework/src/components/ui/toggle.tsx +45 -0
  184. package/.framework/src/components/ui/tooltip.tsx +57 -0
  185. package/.framework/src/contexts/AppContext.tsx +133 -0
  186. package/.framework/src/contexts/AuthContext.tsx +371 -0
  187. package/.framework/src/hooks/use-mobile.ts +19 -0
  188. package/.framework/src/hooks/useApi.ts +526 -0
  189. package/.framework/src/hooks/useApps.ts +114 -0
  190. package/.framework/src/hooks/useEntityList.ts +190 -0
  191. package/.framework/src/hooks/useEntityRecord.ts +308 -0
  192. package/.framework/src/hooks/useForm.ts +307 -0
  193. package/.framework/src/hooks/useListSchema.ts +264 -0
  194. package/.framework/src/hooks/useSchemaRecord.ts +223 -0
  195. package/.framework/src/index.css +128 -0
  196. package/.framework/src/lib/api.ts +156 -0
  197. package/.framework/src/lib/supabase.ts +94 -0
  198. package/.framework/src/lib/utils.ts +317 -0
  199. package/.framework/src/main.tsx +27 -0
  200. package/.framework/src/pages/DashboardPage.tsx +181 -0
  201. package/.framework/src/pages/NotFoundPage.tsx +39 -0
  202. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +161 -0
  203. package/.framework/src/pages/admin/AIAgentsPage.tsx +318 -0
  204. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +199 -0
  205. package/.framework/src/pages/admin/APIKeysPage.tsx +303 -0
  206. package/.framework/src/pages/admin/AlertsConfigPage.tsx +523 -0
  207. package/.framework/src/pages/admin/AppDetailPage.tsx +493 -0
  208. package/.framework/src/pages/admin/AppsPage.tsx +355 -0
  209. package/.framework/src/pages/admin/DesignedPage.tsx +491 -0
  210. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +534 -0
  211. package/.framework/src/pages/admin/EmbeddingsPage.tsx +424 -0
  212. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +176 -0
  213. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +109 -0
  214. package/.framework/src/pages/admin/IntegratedDashboard.tsx +402 -0
  215. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +187 -0
  216. package/.framework/src/pages/admin/IntegrationsPage.tsx +301 -0
  217. package/.framework/src/pages/admin/LogsPage.tsx +283 -0
  218. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +85 -0
  219. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +470 -0
  220. package/.framework/src/pages/admin/PipelineDetailPage.tsx +183 -0
  221. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +279 -0
  222. package/.framework/src/pages/admin/PipelinesPage.tsx +390 -0
  223. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +299 -0
  224. package/.framework/src/pages/admin/PromptConfigsPage.tsx +292 -0
  225. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +434 -0
  226. package/.framework/src/pages/admin/RoleDetailPage.tsx +273 -0
  227. package/.framework/src/pages/admin/RolesPage.tsx +292 -0
  228. package/.framework/src/pages/admin/SelectTestPage.tsx +61 -0
  229. package/.framework/src/pages/admin/ShadcnTestPage.tsx +588 -0
  230. package/.framework/src/pages/admin/SimpleDashboard.tsx +387 -0
  231. package/.framework/src/pages/admin/TestRunDetailPage.tsx +172 -0
  232. package/.framework/src/pages/admin/TestingDashboard.tsx +257 -0
  233. package/.framework/src/pages/admin/TimerDetailPage.tsx +151 -0
  234. package/.framework/src/pages/admin/TimersPage.tsx +376 -0
  235. package/.framework/src/pages/admin/TriggerDetailPage.tsx +149 -0
  236. package/.framework/src/pages/admin/TriggersPage.tsx +381 -0
  237. package/.framework/src/pages/admin/TypeDetailPage.tsx +694 -0
  238. package/.framework/src/pages/admin/TypesPage.tsx +295 -0
  239. package/.framework/src/pages/auth/LoginPage.tsx +188 -0
  240. package/.framework/src/pages/auth/RegisterPage.tsx +163 -0
  241. package/.framework/src/pages/spine-framework/APIPage.tsx +17 -0
  242. package/.framework/src/pages/spine-framework/CLIPage.tsx +25 -0
  243. package/.framework/src/types/auth.ts +125 -0
  244. package/.framework/src/types/types.ts +407 -0
  245. package/STRUCTURE.md +150 -0
  246. package/config/components.json +25 -0
  247. package/config/deno.lock +108 -0
  248. package/config/package-lock.json +17183 -0
  249. package/config/postcss.config.cjs +10 -0
  250. package/config/tailwind.config.cjs +78 -0
  251. package/config/tsconfig.build.json +32 -0
  252. package/config/tsconfig.cli.json +18 -0
  253. package/config/tsconfig.json +41 -0
  254. package/config/tsconfig.node.json +17 -0
  255. package/config/tsconfig.node.tsbuildinfo +1 -0
  256. package/config/tsconfig.tsbuildinfo +1 -0
  257. package/config/typedoc.json +16 -0
  258. package/config/vite.config.d.ts +2 -0
  259. package/config/vite.config.ts +72 -0
  260. package/dist/cli/commands/agents.d.ts +39 -0
  261. package/dist/cli/commands/agents.d.ts.map +1 -0
  262. package/dist/cli/commands/auth.d.ts +36 -0
  263. package/dist/cli/commands/auth.d.ts.map +1 -0
  264. package/dist/cli/commands/create-app.d.ts +23 -0
  265. package/dist/cli/commands/create-app.d.ts.map +1 -0
  266. package/dist/cli/commands/dev.d.ts +39 -0
  267. package/dist/cli/commands/dev.d.ts.map +1 -0
  268. package/dist/cli/commands/doctor.d.ts +42 -0
  269. package/dist/cli/commands/doctor.d.ts.map +1 -0
  270. package/dist/cli/commands/generate.d.ts +36 -0
  271. package/dist/cli/commands/generate.d.ts.map +1 -0
  272. package/dist/cli/commands/init.d.ts +30 -0
  273. package/dist/cli/commands/init.d.ts.map +1 -0
  274. package/dist/cli/commands/install-app.d.ts +30 -0
  275. package/dist/cli/commands/install-app.d.ts.map +1 -0
  276. package/dist/cli/commands/items.d.ts +45 -0
  277. package/dist/cli/commands/items.d.ts.map +1 -0
  278. package/dist/cli/commands/migrations.d.ts +41 -0
  279. package/dist/cli/commands/migrations.d.ts.map +1 -0
  280. package/dist/cli/commands/pipelines.d.ts +40 -0
  281. package/dist/cli/commands/pipelines.d.ts.map +1 -0
  282. package/dist/cli/commands/status.d.ts +23 -0
  283. package/dist/cli/commands/status.d.ts.map +1 -0
  284. package/dist/cli/commands/system.d.ts +29 -0
  285. package/dist/cli/commands/system.d.ts.map +1 -0
  286. package/dist/cli/commands/test.d.ts +46 -0
  287. package/dist/cli/commands/test.d.ts.map +1 -0
  288. package/dist/cli/commands/uninstall-app.d.ts +23 -0
  289. package/dist/cli/commands/uninstall-app.d.ts.map +1 -0
  290. package/dist/cli/context.d.ts +88 -0
  291. package/dist/cli/context.d.ts.map +1 -0
  292. package/dist/cli/env-loader.d.ts +14 -0
  293. package/dist/cli/env-loader.d.ts.map +1 -0
  294. package/dist/cli/index.d.ts +41 -0
  295. package/dist/cli/index.d.ts.map +1 -0
  296. package/dist/functions/_shared/agent-runner.d.ts +156 -0
  297. package/dist/functions/_shared/agent-runner.d.ts.map +1 -0
  298. package/dist/functions/_shared/app-manifest.d.ts +68 -0
  299. package/dist/functions/_shared/app-manifest.d.ts.map +1 -0
  300. package/dist/functions/_shared/audit.d.ts +91 -0
  301. package/dist/functions/_shared/audit.d.ts.map +1 -0
  302. package/dist/functions/_shared/db.d.ts +125 -0
  303. package/dist/functions/_shared/db.d.ts.map +1 -0
  304. package/dist/functions/_shared/index.d.ts +298 -0
  305. package/dist/functions/_shared/index.d.ts.map +1 -0
  306. package/dist/functions/_shared/middleware.d.ts +315 -0
  307. package/dist/functions/_shared/middleware.d.ts.map +1 -0
  308. package/dist/functions/_shared/permissions.d.ts +626 -0
  309. package/dist/functions/_shared/permissions.d.ts.map +1 -0
  310. package/dist/functions/_shared/pipeline-runner.d.ts +124 -0
  311. package/dist/functions/_shared/pipeline-runner.d.ts.map +1 -0
  312. package/dist/functions/_shared/principal.d.ts +284 -0
  313. package/dist/functions/_shared/principal.d.ts.map +1 -0
  314. package/dist/functions/_shared/schema-utils.d.ts +181 -0
  315. package/dist/functions/_shared/schema-utils.d.ts.map +1 -0
  316. package/dist/functions/_shared/testing.d.ts +172 -0
  317. package/dist/functions/_shared/testing.d.ts.map +1 -0
  318. package/dist/functions/_shared/trigger-engine.d.ts +140 -0
  319. package/dist/functions/_shared/trigger-engine.d.ts.map +1 -0
  320. package/dist/functions/_shared/webhook-registration.d.ts +81 -0
  321. package/dist/functions/_shared/webhook-registration.d.ts.map +1 -0
  322. package/dist/functions/_shared/webhook-registry.d.ts +57 -0
  323. package/dist/functions/_shared/webhook-registry.d.ts.map +1 -0
  324. package/dist/functions/account-nodes.d.ts +48 -0
  325. package/dist/functions/account-nodes.d.ts.map +1 -0
  326. package/dist/functions/admin-data.d.ts +178 -0
  327. package/dist/functions/admin-data.d.ts.map +1 -0
  328. package/dist/functions/ai-agents.d.ts +125 -0
  329. package/dist/functions/ai-agents.d.ts.map +1 -0
  330. package/dist/functions/api-keys.d.ts +140 -0
  331. package/dist/functions/api-keys.d.ts.map +1 -0
  332. package/dist/functions/apps.d.ts +163 -0
  333. package/dist/functions/apps.d.ts.map +1 -0
  334. package/dist/functions/auth.d.ts +74 -0
  335. package/dist/functions/auth.d.ts.map +1 -0
  336. package/dist/functions/debug-auth.d.ts +33 -0
  337. package/dist/functions/debug-auth.d.ts.map +1 -0
  338. package/dist/functions/embeddings.d.ts +205 -0
  339. package/dist/functions/embeddings.d.ts.map +1 -0
  340. package/dist/functions/integration-routes.d.ts +45 -0
  341. package/dist/functions/integration-routes.d.ts.map +1 -0
  342. package/dist/functions/integrations.d.ts +124 -0
  343. package/dist/functions/integrations.d.ts.map +1 -0
  344. package/dist/functions/item-progress.d.ts +41 -0
  345. package/dist/functions/item-progress.d.ts.map +1 -0
  346. package/dist/functions/logs.d.ts +162 -0
  347. package/dist/functions/logs.d.ts.map +1 -0
  348. package/dist/functions/observability.d.ts +123 -0
  349. package/dist/functions/observability.d.ts.map +1 -0
  350. package/dist/functions/pipeline-executions.d.ts +190 -0
  351. package/dist/functions/pipeline-executions.d.ts.map +1 -0
  352. package/dist/functions/pipelines.d.ts +171 -0
  353. package/dist/functions/pipelines.d.ts.map +1 -0
  354. package/dist/functions/prompt-configs.d.ts +125 -0
  355. package/dist/functions/prompt-configs.d.ts.map +1 -0
  356. package/dist/functions/roles.d.ts +118 -0
  357. package/dist/functions/roles.d.ts.map +1 -0
  358. package/dist/functions/system-cron.d.ts +65 -0
  359. package/dist/functions/system-cron.d.ts.map +1 -0
  360. package/dist/functions/system.d.ts +29 -0
  361. package/dist/functions/system.d.ts.map +1 -0
  362. package/dist/functions/tests.d.ts +28 -0
  363. package/dist/functions/tests.d.ts.map +1 -0
  364. package/dist/functions/timers.d.ts +139 -0
  365. package/dist/functions/timers.d.ts.map +1 -0
  366. package/dist/functions/triggers.d.ts +203 -0
  367. package/dist/functions/triggers.d.ts.map +1 -0
  368. package/dist/functions/types.d.ts +151 -0
  369. package/dist/functions/types.d.ts.map +1 -0
  370. package/dist/src/types/types.d.ts +364 -0
  371. package/dist/src/types/types.d.ts.map +1 -0
  372. package/package.json +192 -0
  373. package/scripts/app-install-cli.ts +286 -0
  374. package/scripts/assemble-frontend.sh +79 -0
  375. package/scripts/assemble-functions.sh +62 -0
  376. package/scripts/assemble.sh +35 -0
  377. package/scripts/boundary-check.sh +106 -0
  378. package/scripts/build-manifest.sh +80 -0
  379. package/scripts/check-core-integrity.sh +82 -0
  380. package/scripts/ingest-chunks.cjs +202 -0
  381. package/scripts/kb-chunk-parser.cjs +312 -0
  382. package/scripts/kb-chunk-parser.ts +330 -0
  383. package/scripts/load-test-app-install.ts +484 -0
  384. package/scripts/netlify-dev-wrapper.sh +22 -0
  385. package/scripts/verify-integrity.sh +69 -0
@@ -0,0 +1,494 @@
1
+ /**
2
+ * @module pipeline-executions
3
+ * @audience core-contributor
4
+ * @layer api-handler
5
+ * @stability stable
6
+ *
7
+ * Lifecycle management API for the `pipeline_executions` table. Records
8
+ * track individual pipeline runs: status progression (pending → running →
9
+ * completed/failed/cancelled), timing, trigger data, and result payloads.
10
+ *
11
+ * **Routed by:** `GET/POST/PATCH /.netlify/functions/pipeline-executions`
12
+ *
13
+ * **Actions:**
14
+ * | method | ?action | handler |
15
+ * |--------|----------|------------|
16
+ * | GET | list | list |
17
+ * | GET | running | getRunning |
18
+ * | GET | stats | getStats |
19
+ * | POST | cleanup | cleanup |
20
+ * | GET | ?id | get |
21
+ * | GET | (default)| list |
22
+ * | POST | — | create |
23
+ * | PATCH | start | start |
24
+ * | PATCH | complete | complete |
25
+ * | PATCH | cancel | cancel |
26
+ *
27
+ * **Status FSM:** pending → running → completed | failed | cancelled
28
+ *
29
+ * **Authorization:** All operations use `ctx.db` (RLS-scoped to account).
30
+ * Account context required.
31
+ *
32
+ * **Column reference:**
33
+ * `id`, `pipeline_id`, `status`, `trigger_data`, `result`, `error_message`,
34
+ * `started_at`, `completed_at`, `duration_ms`, `created_by`, `account_id`, `created_at`
35
+ *
36
+ * @seeAlso pipelines.ts (pipeline_id FK source)
37
+ * @seeAlso pipeline-runner.ts (runPipeline — calls create/start/complete)
38
+ * @seeAlso audit.ts (emitLog for pipeline_execution.* events)
39
+ */
40
+
41
+ import { createHandler, json, error, parseBody } from './_shared/middleware'
42
+ import { emitLog } from './_shared/audit'
43
+
44
+ const SELECT_WITH_JOINS = `
45
+ *,
46
+ pipeline:pipelines(id, name, trigger_type),
47
+ triggered_by_person:people!pipeline_executions_created_by_fkey(id, full_name, email)
48
+ `
49
+
50
+ // ─── HANDLERS ─────────────────────────────────────────────────────────────────
51
+
52
+ // ─── CHUNK_START: PIPELINE_EXECUTIONS_LIST ──────────────────────────────────────────────
53
+ /**
54
+ * @chunk-id PIPELINE_EXECUTIONS_LIST_1_0_0
55
+ * @version 1.0.0
56
+ * @hash 499006790777b78f0eb610474f6869e94869b5b244d1ecedbb0e216cf68bae70
57
+ * @macro Pipeline Executions List Handler
58
+ * @micro Lists pipeline executions with filtering and joins
59
+ * @inputs ctx: CoreContext — Request context with principal and database
60
+ * @inputs body: any — Request body (unused for GET)
61
+ * @outputs Array of execution records with pipeline and person joins
62
+ * @depends-on [createHandler, SELECT_WITH_JOINS]
63
+ * @depended-by [Netlify function routing]
64
+ * @side-effects [DB queries with joins]
65
+ * @tags pipeline-executions, list, crud, pagination
66
+ */
67
+ export const list = createHandler(async (ctx, body) => {
68
+ const { pipeline_id, status, limit = 100, offset = 0 } = ctx.query || {}
69
+
70
+ if (!ctx.accountId) {
71
+ throw new Error('Account context required')
72
+ }
73
+
74
+ let query = ctx.db
75
+ .from('pipeline_executions')
76
+ .select(SELECT_WITH_JOINS)
77
+ .eq('account_id', ctx.accountId)
78
+ .order('created_at', { ascending: false })
79
+
80
+ if (pipeline_id) query = query.eq('pipeline_id', pipeline_id)
81
+ if (status) query = query.eq('status', status)
82
+
83
+ const { data, error: err } = await query.range(
84
+ parseInt(offset.toString()),
85
+ parseInt(offset.toString()) + parseInt(limit.toString()) - 1
86
+ )
87
+
88
+ if (err) throw err
89
+
90
+ return data
91
+ })
92
+ // ─── CHUNK_END: PIPELINE_EXECUTIONS_LIST ────────────────────────────────────────────────
93
+
94
+ // ─── CHUNK_START: PIPELINE_EXECUTIONS_GET ──────────────────────────────────────────────
95
+ /**
96
+ * @chunk-id PIPELINE_EXECUTIONS_GET_1_0_0
97
+ * @version 1.0.0
98
+ * @hash b148fbec727984f7623d1fa94ae20dd0550056d5c886b0994651f119dbc68521
99
+ * @macro Pipeline Execution Get Handler
100
+ * @micro Returns single pipeline execution record with joins
101
+ * @inputs ctx: CoreContext — Request context with principal and database
102
+ * @inputs body: any — Request body (unused for GET)
103
+ * @outputs Execution record with pipeline and person joins
104
+ * @depends-on [createHandler, SELECT_WITH_JOINS]
105
+ * @depended-by [Netlify function routing]
106
+ * @side-effects [DB single row query with joins]
107
+ * @tags pipeline-executions, get, crud, single-record
108
+ */
109
+ export const get = createHandler(async (ctx, body) => {
110
+ const { id } = ctx.query || {}
111
+
112
+ if (!id) {
113
+ throw new Error('Execution ID is required')
114
+ }
115
+
116
+ const { data, error: err } = await ctx.db
117
+ .from('pipeline_executions')
118
+ .select(SELECT_WITH_JOINS)
119
+ .eq('id', id)
120
+ .single()
121
+
122
+ if (err) throw err
123
+
124
+ return data
125
+ })
126
+ // ─── CHUNK_END: PIPELINE_EXECUTIONS_GET ────────────────────────────────────────────────
127
+
128
+ // ─── CHUNK_START: PIPELINE_EXECUTIONS_CREATE ──────────────────────────────────────────────
129
+ /**
130
+ * @chunk-id PIPELINE_EXECUTIONS_CREATE_1_0_0
131
+ * @version 1.0.0
132
+ * @hash fb1d51a8ca0e30e0d151147edde5516c01a51f2cfcad64105ff07937aa430924
133
+ * @macro Pipeline Execution Create Handler
134
+ * @micro Creates execution record in pending status with audit logging
135
+ * @inputs ctx: CoreContext — Request context with principal and database
136
+ * @inputs body: object — pipeline_id and optional trigger_data
137
+ * @outputs {execution_id: string} — ID of created execution
138
+ * @depends-on [createHandler, emitLog]
139
+ * @depended-by [Netlify function routing, pipeline-runner.ts]
140
+ * @side-effects [DB insert, audit logging]
141
+ * @tags pipeline-executions, create, crud, audit
142
+ */
143
+ export const create = createHandler(async (ctx, body) => {
144
+ const { pipeline_id, trigger_data } = body
145
+
146
+ if (!pipeline_id) {
147
+ throw new Error('Pipeline ID is required')
148
+ }
149
+
150
+ if (!ctx.accountId) {
151
+ throw new Error('Account context required')
152
+ }
153
+
154
+ const { data, error: err } = await ctx.db
155
+ .from('pipeline_executions')
156
+ .insert({
157
+ pipeline_id,
158
+ status: 'pending',
159
+ trigger_data: trigger_data || {},
160
+ created_by: ctx.principal?.id || null,
161
+ account_id: ctx.accountId,
162
+ })
163
+ .select('id')
164
+ .single()
165
+
166
+ if (err) throw err
167
+
168
+ await emitLog(ctx, 'pipeline_execution.created',
169
+ { type: 'pipeline_execution', id: data?.id },
170
+ { after: { pipeline_id } }
171
+ )
172
+
173
+ return { execution_id: data?.id }
174
+ })
175
+ // ─── CHUNK_END: PIPELINE_EXECUTIONS_CREATE ────────────────────────────────────────────────
176
+
177
+ // ─── CHUNK_START: PIPELINE_EXECUTIONS_START ──────────────────────────────────────────────
178
+ /**
179
+ * @chunk-id PIPELINE_EXECUTIONS_START_1_0_0
180
+ * @version 1.0.0
181
+ * @hash 25eeada82be4fff26606dc6e784b6e0accaaebaee08514577368cdd146f39aaf
182
+ * @macro Pipeline Execution Start Handler
183
+ * @micro Transitions execution from pending to running with timestamp
184
+ * @inputs ctx: CoreContext — Request context with principal and database
185
+ * @inputs body: object — execution id to start
186
+ * @outputs {success: true} — Confirmation of successful start
187
+ * @depends-on [createHandler, emitLog]
188
+ * @depended-by [Netlify function routing, pipeline-runner.ts]
189
+ * @side-effects [DB update, audit logging]
190
+ * @tags pipeline-executions, start, state-transition, audit
191
+ */
192
+ export const start = createHandler(async (ctx, body) => {
193
+ const { id } = body
194
+
195
+ if (!id) {
196
+ throw new Error('Execution ID is required')
197
+ }
198
+
199
+ const { data, error: err } = await ctx.db
200
+ .from('pipeline_executions')
201
+ .update({ status: 'running', started_at: new Date().toISOString() })
202
+ .eq('id', id)
203
+ .select('id')
204
+ .single()
205
+
206
+ if (err) throw err
207
+
208
+ await emitLog(ctx, 'pipeline_execution.started',
209
+ { type: 'pipeline_execution', id },
210
+ { after: { status: 'running' } }
211
+ )
212
+
213
+ return { success: true }
214
+ })
215
+ // ─── CHUNK_END: PIPELINE_EXECUTIONS_START ────────────────────────────────────────────────
216
+
217
+ // ─── CHUNK_START: PIPELINE_EXECUTIONS_COMPLETE ──────────────────────────────────────────────
218
+ /**
219
+ * @chunk-id PIPELINE_EXECUTIONS_COMPLETE_1_0_0
220
+ * @version 1.0.0
221
+ * @hash 088db36524718ec6d8d85e1051aa5d1c4fc31fb796f284bc1526c195d4686dff
222
+ * @macro Pipeline Execution Complete Handler
223
+ * @micro Transitions execution to completed/failed with duration calculation
224
+ * @inputs ctx: CoreContext — Request context with principal and database
225
+ * @inputs body: object — id, output_data, and optional error_message
226
+ * @outputs {success: true} — Confirmation of successful completion
227
+ * @depends-on [createHandler, emitLog]
228
+ * @depended-by [Netlify function routing, pipeline-runner.ts]
229
+ * @side-effects [DB read for started_at, DB update, audit logging]
230
+ * @tags pipeline-executions, complete, state-transition, audit
231
+ */
232
+ export const complete = createHandler(async (ctx, body) => {
233
+ const { id, output_data, error_message } = body
234
+
235
+ if (!id) {
236
+ throw new Error('Execution ID is required')
237
+ }
238
+
239
+ const now = new Date().toISOString()
240
+ const finalStatus = error_message ? 'failed' : 'completed'
241
+
242
+ // Fetch started_at to compute duration
243
+ const { data: existing } = await ctx.db
244
+ .from('pipeline_executions')
245
+ .select('started_at')
246
+ .eq('id', id)
247
+ .single()
248
+
249
+ const duration_ms = existing?.started_at
250
+ ? Math.round(Date.now() - new Date(existing.started_at).getTime())
251
+ : null
252
+
253
+ const { data, error: err } = await ctx.db
254
+ .from('pipeline_executions')
255
+ .update({
256
+ status: finalStatus,
257
+ result: output_data || {},
258
+ error_message: error_message || null,
259
+ completed_at: now,
260
+ duration_ms,
261
+ })
262
+ .eq('id', id)
263
+ .select('id')
264
+ .single()
265
+
266
+ if (err) throw err
267
+
268
+ await emitLog(ctx, 'pipeline_execution.completed',
269
+ { type: 'pipeline_execution', id },
270
+ { after: { status: finalStatus, error_message } }
271
+ )
272
+
273
+ return { success: true }
274
+ })
275
+ // ─── CHUNK_END: PIPELINE_EXECUTIONS_COMPLETE ────────────────────────────────────────────────
276
+
277
+ // ─── CHUNK_START: PIPELINE_EXECUTIONS_CANCEL ──────────────────────────────────────────────
278
+ /**
279
+ * @chunk-id PIPELINE_EXECUTIONS_CANCEL_1_0_0
280
+ * @version 1.0.0
281
+ * @hash f45e336099afeb28cb3db099fa428d8637e07876dcabf7ec85de844c25b43d97
282
+ * @macro Pipeline Execution Cancel Handler
283
+ * @micro Cancels execution by setting status to cancelled with timestamp
284
+ * @inputs ctx: CoreContext — Request context with principal and database
285
+ * @inputs body: object — execution id to cancel
286
+ * @outputs {success: true} — Confirmation of successful cancellation
287
+ * @depends-on [createHandler, emitLog]
288
+ * @depended-by [Netlify function routing]
289
+ * @side-effects [DB update, audit logging]
290
+ * @tags pipeline-executions, cancel, state-transition, audit
291
+ */
292
+ export const cancel = createHandler(async (ctx, body) => {
293
+ const { id } = body
294
+
295
+ if (!id) {
296
+ throw new Error('Execution ID is required')
297
+ }
298
+
299
+ const { data, error: err } = await ctx.db
300
+ .from('pipeline_executions')
301
+ .update({ status: 'cancelled', completed_at: new Date().toISOString() })
302
+ .eq('id', id)
303
+ .select('id')
304
+ .single()
305
+
306
+ if (err) throw err
307
+
308
+ await emitLog(ctx, 'pipeline_execution.cancelled',
309
+ { type: 'pipeline_execution', id },
310
+ { after: { status: 'cancelled' } }
311
+ )
312
+
313
+ return { success: true }
314
+ })
315
+ // ─── CHUNK_END: PIPELINE_EXECUTIONS_CANCEL ────────────────────────────────────────────────
316
+
317
+ // ─── CHUNK_START: PIPELINE_EXECUTIONS_GET_RUNNING ──────────────────────────────────────────────
318
+ /**
319
+ * @chunk-id PIPELINE_EXECUTIONS_GET_RUNNING_1_0_0
320
+ * @version 1.0.0
321
+ * @hash d43691d1d9063a7421eae3b32ede4bb603efa7b2faf635861f66178fde5641b6
322
+ * @macro Running Pipeline Executions Handler
323
+ * @micro Returns currently running executions with optional pipeline filter
324
+ * @inputs ctx: CoreContext — Request context with principal and database
325
+ * @inputs body: any — Request body (unused for GET)
326
+ * @outputs Array of running execution records with joins
327
+ * @depends-on [createHandler, SELECT_WITH_JOINS]
328
+ * @depended-by [Netlify function routing]
329
+ * @side-effects [DB query with joins]
330
+ * @tags pipeline-executions, running, status-filter, monitoring
331
+ */
332
+ export const getRunning = createHandler(async (ctx, body) => {
333
+ const { pipeline_id } = ctx.query || {}
334
+
335
+ if (!ctx.accountId) {
336
+ throw new Error('Account context required')
337
+ }
338
+
339
+ let query = ctx.db
340
+ .from('pipeline_executions')
341
+ .select(SELECT_WITH_JOINS)
342
+ .eq('account_id', ctx.accountId)
343
+ .eq('status', 'running')
344
+ .order('started_at', { ascending: false })
345
+
346
+ if (pipeline_id) query = query.eq('pipeline_id', pipeline_id)
347
+
348
+ const { data, error: err } = await query
349
+
350
+ if (err) throw err
351
+
352
+ return data
353
+ })
354
+ // ─── CHUNK_END: PIPELINE_EXECUTIONS_GET_RUNNING ────────────────────────────────────────────────
355
+
356
+ // ─── CHUNK_START: PIPELINE_EXECUTIONS_GET_STATS ──────────────────────────────────────────────
357
+ /**
358
+ * @chunk-id PIPELINE_EXECUTIONS_GET_STATS_1_0_0
359
+ * @version 1.0.0
360
+ * @hash f80bc6b6b830d1bafcd7d02ecac50c78cab10ceef7441dc477b3193a7b29143e
361
+ * @macro Pipeline Executions Statistics Handler
362
+ * @micro Returns execution counts by status with filtering options
363
+ * @inputs ctx: CoreContext — Request context with principal and database
364
+ * @inputs body: any — Request body (unused for GET)
365
+ * @outputs {total, completed, failed, running} — Status count statistics
366
+ * @depends-on [createHandler]
367
+ * @depended-by [Netlify function routing]
368
+ * @side-effects [DB count query, aggregation]
369
+ * @tags pipeline-executions, stats, analytics, monitoring
370
+ */
371
+ export const getStats = createHandler(async (ctx, body) => {
372
+ const { pipeline_id, date_from, date_to } = ctx.query || {}
373
+
374
+ if (!ctx.accountId) {
375
+ throw new Error('Account context required')
376
+ }
377
+
378
+ let query = ctx.db
379
+ .from('pipeline_executions')
380
+ .select('id, status')
381
+ .eq('account_id', ctx.accountId)
382
+
383
+ if (pipeline_id) query = query.eq('pipeline_id', pipeline_id)
384
+ if (date_from) query = query.gte('created_at', date_from)
385
+ if (date_to) query = query.lte('created_at', date_to)
386
+
387
+ const { data, error: err } = await query
388
+
389
+ if (err) throw err
390
+
391
+ const rows = data || []
392
+ return {
393
+ total: rows.length,
394
+ completed: rows.filter((r: any) => r.status === 'completed').length,
395
+ failed: rows.filter((r: any) => r.status === 'failed').length,
396
+ running: rows.filter((r: any) => r.status === 'running').length,
397
+ }
398
+ })
399
+ // ─── CHUNK_END: PIPELINE_EXECUTIONS_GET_STATS ────────────────────────────────────────────────
400
+
401
+ // ─── CHUNK_START: PIPELINE_EXECUTIONS_CLEANUP ──────────────────────────────────────────────
402
+ /**
403
+ * @chunk-id PIPELINE_EXECUTIONS_CLEANUP_1_0_0
404
+ * @version 1.0.0
405
+ * @hash 713c36d875b9e210b16504c324491c66485681a47265ab8cd228c66be58386d4
406
+ * @macro Pipeline Executions Cleanup Handler
407
+ * @micro Deletes old execution records beyond retention period
408
+ * @inputs ctx: CoreContext — Request context with principal and database
409
+ * @inputs body: object — days_to_keep (default 30) and optional status_filter
410
+ * @outputs {deleted_count: number} — Number of deleted execution records
411
+ * @depends-on [createHandler, emitLog]
412
+ * @depended-by [Netlify function routing]
413
+ * @side-effects [DB delete by date, audit logging]
414
+ * @tags pipeline-executions, cleanup, retention, maintenance
415
+ */
416
+ export const cleanup = createHandler(async (ctx, body) => {
417
+ const { days_to_keep = 30, status_filter } = body
418
+
419
+ const cutoff = new Date()
420
+ cutoff.setDate(cutoff.getDate() - parseInt(days_to_keep.toString()))
421
+
422
+ let query = ctx.db
423
+ .from('pipeline_executions')
424
+ .delete()
425
+ .lt('created_at', cutoff.toISOString())
426
+
427
+ if (status_filter) query = query.eq('status', status_filter)
428
+
429
+ const { data, error: err } = await query.select('id')
430
+
431
+ if (err) throw err
432
+
433
+ await emitLog(ctx, 'pipeline_executions.cleaned',
434
+ { type: 'system', id: 'cleanup' },
435
+ { after: { deleted_count: (data || []).length } }
436
+ )
437
+
438
+ return { deleted_count: (data || []).length }
439
+ })
440
+ // ─── CHUNK_END: PIPELINE_EXECUTIONS_CLEANUP ────────────────────────────────────────────────
441
+
442
+ // ─── MAIN HANDLER ────────────────────────────────────────────────────────────
443
+
444
+ // ─── CHUNK_START: PIPELINE_EXECUTIONS_HANDLER ──────────────────────────────────────────────
445
+ /**
446
+ * @chunk-id PIPELINE_EXECUTIONS_HANDLER_1_0_0
447
+ * @version 1.0.0
448
+ * @hash d1ff32ebff977774775afb91952838530a5d628211a7ab7ac5c74aca2e7c77d2
449
+ * @macro Pipeline Executions Router
450
+ * @micro Routes HTTP methods and actions to appropriate pipeline execution handlers
451
+ * @inputs ctx: CoreContext — Request context with principal and database
452
+ * @inputs body: any — Request body for POST/PATCH operations
453
+ * @outputs Varies — Depends on routed handler (list/get/create/start/complete/cancel/getRunning/getStats/cleanup)
454
+ * @depends-on [createHandler, list, get, create, start, complete, cancel, getRunning, getStats, cleanup]
455
+ * @depended-by [Netlify function routing, pipeline-runner.ts]
456
+ * @side-effects [Delegates to appropriate handler]
457
+ * @tags pipeline-executions, router, crud, netlify-function
458
+ */
459
+ export const handler = createHandler(async (ctx, body) => {
460
+ const { action } = ctx.query || {}
461
+ const method = ctx.query?.method || 'GET'
462
+
463
+ switch (action) {
464
+ case 'list':
465
+ if (method === 'GET') return await list(ctx, body)
466
+ break
467
+ case 'running':
468
+ if (method === 'GET') return await getRunning(ctx, body)
469
+ break
470
+ case 'stats':
471
+ if (method === 'GET') return await getStats(ctx, body)
472
+ break
473
+ case 'cleanup':
474
+ if (method === 'POST') return await cleanup(ctx, body)
475
+ break
476
+ default:
477
+ if (method === 'GET') {
478
+ if (ctx.query?.id) {
479
+ return await get(ctx, body)
480
+ } else {
481
+ return await list(ctx, body)
482
+ }
483
+ } else if (method === 'POST') {
484
+ return await create(ctx, body)
485
+ } else if (method === 'PATCH') {
486
+ if (ctx.query?.action === 'start') return await start(ctx, body)
487
+ else if (ctx.query?.action === 'complete') return await complete(ctx, body)
488
+ else if (ctx.query?.action === 'cancel') return await cancel(ctx, body)
489
+ }
490
+ }
491
+
492
+ throw new Error('Invalid action or method')
493
+ })
494
+ // ─── CHUNK_END: PIPELINE_EXECUTIONS_HANDLER ────────────────────────────────────────────────