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,357 @@
1
+ /**
2
+ * @module timers
3
+ * @audience core-contributor
4
+ * @layer api-handler
5
+ * @stability stable
6
+ *
7
+ * CRUD API for the `timers` table. Timers are scheduled pipeline triggers
8
+ * (cron-style). They are evaluated and fired by `system-cron.ts` on each
9
+ * scheduled invocation.
10
+ *
11
+ * **Routed by:** `GET/POST/PATCH/DELETE /.netlify/functions/timers`
12
+ *
13
+ * **Actions:**
14
+ * | method | ?action | handler |
15
+ * |--------|----------|----------|
16
+ * | POST | toggle | toggle |
17
+ * | GET | ?id | get |
18
+ * | GET | (default)| list |
19
+ * | POST | — | create |
20
+ * | PATCH | — | update |
21
+ * | DELETE | — | remove (hard) |
22
+ *
23
+ * **Authorization:** All operations use `ctx.db` (RLS-scoped). Authenticated
24
+ * principal required for writes.
25
+ *
26
+ * INVARIANT: `remove` is a hard delete.
27
+ * INVARIANT: `update` only patches allowed fields: name, description, config,
28
+ * pipeline_id, metadata, is_active.
29
+ *
30
+ * @seeAlso system-cron.ts (fires timers on schedule)
31
+ * @seeAlso pipelines.ts (pipeline_id FK on timers)
32
+ * @seeAlso audit.ts (emitLog for timer.* events)
33
+ */
34
+
35
+ import { createHandler } from './_shared/middleware'
36
+ import { joins } from './_shared/db'
37
+ import { emitLog } from './_shared/audit'
38
+ import { sanitizeRecordData } from './_shared/permissions'
39
+
40
+ // ─── HANDLERS ─────────────────────────────────────────────────────────────────
41
+
42
+ // ─── CHUNK_START: TIMERS_LIST ──────────────────────────────────────────────
43
+ /**
44
+ * @chunk-id TIMERS_LIST_1_0_0
45
+ * @version 1.0.0
46
+ * @hash 151a2403c9d974004a34303443368921966ea3adeada07e5f63b9a20ad3f08a1
47
+ * @macro Timers List Handler
48
+ * @micro Lists timers with filtering and sanitization
49
+ * @inputs ctx: CoreContext — Request context with principal and database
50
+ * @inputs _body: any — Request body (unused for GET)
51
+ * @outputs Array of sanitized timer records with app/createdBy joins
52
+ * @depends-on [createHandler, joins, sanitizeRecordData]
53
+ * @depended-by [Netlify function routing]
54
+ * @side-effects [DB queries, permission sanitization]
55
+ * @tags timers, list, crud, filtering
56
+ */
57
+ export const list = createHandler(async (ctx, _body) => {
58
+ const { app_id, timer_type, is_active } = ctx.query || {}
59
+
60
+ if (!ctx.accountId) {
61
+ throw new Error('Account context required')
62
+ }
63
+
64
+ let query = ctx.db
65
+ .from('timers')
66
+ .select(`*, ${joins.app}, ${joins.createdBy}`)
67
+ .order('name')
68
+
69
+ if (app_id) {
70
+ query = query.eq('app_id', app_id)
71
+ }
72
+ if (timer_type) {
73
+ query = query.eq('timer_type', timer_type)
74
+ }
75
+ if (is_active !== undefined) {
76
+ query = query.eq('is_active', is_active === 'true')
77
+ }
78
+
79
+ const { data, error: err } = await query
80
+
81
+ if (err) throw err
82
+
83
+ const sanitized = []
84
+ for (const timer of data || []) {
85
+ sanitized.push(await sanitizeRecordData(ctx, timer, 'timer'))
86
+ }
87
+
88
+ return sanitized
89
+ })
90
+ // ─── CHUNK_END: TIMERS_LIST ────────────────────────────────────────────────
91
+
92
+ // ─── CHUNK_START: TIMERS_GET ──────────────────────────────────────────────
93
+ /**
94
+ * @chunk-id TIMERS_GET_1_0_0
95
+ * @version 1.0.0
96
+ * @hash 8bbf46bb1410299eb881680ba4b508093157000a7fe525f7380e96ff0a241f32
97
+ * @macro Timer Get Handler
98
+ * @micro Returns single timer record with joins and sanitization
99
+ * @inputs ctx: CoreContext — Request context with principal and database
100
+ * @inputs _body: any — Request body (unused for GET)
101
+ * @outputs Sanitized timer record with app/createdBy joins
102
+ * @depends-on [createHandler, joins, sanitizeRecordData]
103
+ * @depended-by [Netlify function routing]
104
+ * @side-effects [DB single row query, permission sanitization]
105
+ * @tags timers, get, crud, single-record
106
+ */
107
+ export const get = createHandler(async (ctx, _body) => {
108
+ const { id } = ctx.query || {}
109
+
110
+ if (!id) {
111
+ throw new Error('Timer ID is required')
112
+ }
113
+
114
+ const { data, error: err } = await ctx.db
115
+ .from('timers')
116
+ .select(`*, ${joins.app}, ${joins.createdBy}`)
117
+ .eq('id', id)
118
+ .single()
119
+
120
+ if (err) throw err
121
+
122
+ return await sanitizeRecordData(ctx, data, 'timer')
123
+ })
124
+ // ─── CHUNK_END: TIMERS_GET ────────────────────────────────────────────────
125
+
126
+ // ─── CHUNK_START: TIMERS_CREATE ──────────────────────────────────────────────
127
+ /**
128
+ * @chunk-id TIMERS_CREATE_1_0_0
129
+ * @version 1.0.0
130
+ * @hash b655ea396b23dac3548323612decef91b712c0a2b42bc5c7bc0f79aee4d11af4
131
+ * @macro Timer Create Handler
132
+ * @micro Creates timer with validation and audit logging
133
+ * @inputs ctx: CoreContext — Request context with principal and database
134
+ * @inputs body: object — Timer data including name, timer_type, and optional fields
135
+ * @outputs Inserted timer record
136
+ * @depends-on [createHandler, emitLog]
137
+ * @depended-by [Netlify function routing]
138
+ * @side-effects [DB insert, audit logging]
139
+ * @tags timers, create, crud, audit
140
+ */
141
+ export const create = createHandler(async (ctx, body) => {
142
+ const { app_id, name, description, timer_type, config, pipeline_id, metadata } = body
143
+
144
+ if (!name || !timer_type) {
145
+ throw new Error('name and timer_type are required')
146
+ }
147
+
148
+ if (!ctx.principal || ctx.principal.id === 'anonymous' || !ctx.accountId) {
149
+ throw new Error('User context (person and account) required')
150
+ }
151
+
152
+ const { data, error: err } = await ctx.db
153
+ .from('timers')
154
+ .insert({
155
+ app_id: app_id || null,
156
+ account_id: ctx.accountId,
157
+ name,
158
+ description: description || null,
159
+ timer_type,
160
+ config: config || {},
161
+ pipeline_id: pipeline_id || null,
162
+ metadata: metadata || {},
163
+ created_by: ctx.principal.id
164
+ })
165
+ .select()
166
+ .single()
167
+
168
+ if (err) throw err
169
+
170
+ await emitLog(ctx, 'timer.created',
171
+ { type: 'timer', id: data.id },
172
+ { after: { name, timer_type } }
173
+ )
174
+
175
+ return data
176
+ })
177
+ // ─── CHUNK_END: TIMERS_CREATE ────────────────────────────────────────────────
178
+
179
+ // ─── CHUNK_START: TIMERS_UPDATE ──────────────────────────────────────────────
180
+ /**
181
+ * @chunk-id TIMERS_UPDATE_1_0_0
182
+ * @version 1.0.0
183
+ * @hash 3c53499205d63b8643e28671b397b97b344976e88ea561860e2e394ca246942d
184
+ * @macro Timer Update Handler
185
+ * @micro Updates timer with field allowlist and audit logging
186
+ * @inputs ctx: CoreContext — Request context with principal and database
187
+ * @inputs body: object — Timer updates including id and updatable fields
188
+ * @outputs Updated timer record
189
+ * @depends-on [createHandler, emitLog]
190
+ * @depended-by [Netlify function routing]
191
+ * @side-effects [DB update, audit logging]
192
+ * @tags timers, update, crud, audit
193
+ */
194
+ export const update = createHandler(async (ctx, body) => {
195
+ const id = body?.id || ctx.query?.id
196
+ const { id: _bodyId, ...updates } = body || {}
197
+
198
+ if (!id) {
199
+ throw new Error('Timer ID is required')
200
+ }
201
+
202
+ const allowed = ['name', 'description', 'config', 'pipeline_id', 'metadata', 'is_active']
203
+ const updateData: Record<string, any> = { updated_at: new Date().toISOString() }
204
+ for (const key of allowed) {
205
+ if (updates[key] !== undefined) updateData[key] = updates[key]
206
+ }
207
+
208
+ const { data, error: err } = await ctx.db
209
+ .from('timers')
210
+ .update(updateData)
211
+ .eq('id', id)
212
+ .select()
213
+ .single()
214
+
215
+ if (err) throw err
216
+
217
+ await emitLog(ctx, 'timer.updated',
218
+ { type: 'timer', id },
219
+ { after: updateData }
220
+ )
221
+
222
+ return data
223
+ })
224
+ // ─── CHUNK_END: TIMERS_UPDATE ────────────────────────────────────────────────
225
+
226
+ // ─── CHUNK_START: TIMERS_TOGGLE ──────────────────────────────────────────────
227
+ /**
228
+ * @chunk-id TIMERS_TOGGLE_1_0_0
229
+ * @version 1.0.0
230
+ * @hash 5db82e7a94fbdb9a0e3452c63a044789a993ed8881033d9372b86778c50a2d8c
231
+ * @macro Timer Toggle Handler
232
+ * @micro Activates or deactivates timer with audit logging
233
+ * @inputs ctx: CoreContext — Request context with principal and database
234
+ * @inputs body: object — Timer id and is_active boolean
235
+ * @outputs Updated timer record
236
+ * @depends-on [createHandler, emitLog]
237
+ * @depended-by [Netlify function routing]
238
+ * @side-effects [DB update, audit logging]
239
+ * @tags timers, toggle, state-transition, audit
240
+ */
241
+ export const toggle = createHandler(async (ctx, body) => {
242
+ const { id, is_active } = body
243
+
244
+ if (!id || is_active === undefined) {
245
+ throw new Error('Timer ID and is_active are required')
246
+ }
247
+
248
+ const { data, error: err } = await ctx.db
249
+ .from('timers')
250
+ .update({ is_active, updated_at: new Date().toISOString() })
251
+ .eq('id', id)
252
+ .select()
253
+ .single()
254
+
255
+ if (err) throw err
256
+
257
+ await emitLog(ctx, 'timer.toggled',
258
+ { type: 'timer', id },
259
+ { after: { is_active } }
260
+ )
261
+
262
+ return data
263
+ })
264
+ // ─── CHUNK_END: TIMERS_TOGGLE ────────────────────────────────────────────────
265
+
266
+ // ─── CHUNK_START: TIMERS_REMOVE ──────────────────────────────────────────────
267
+ /**
268
+ * @chunk-id TIMERS_REMOVE_1_0_0
269
+ * @version 1.0.0
270
+ * @hash 2d999f6948d616925eaa36be8b39b2fd23de364bf242d4fb0ff3304e1ff9f275
271
+ * @macro Timer Remove Handler
272
+ * @micro Hard-deletes timer with audit logging
273
+ * @inputs ctx: CoreContext — Request context with principal and database
274
+ * @inputs _body: any — Request body (unused for DELETE)
275
+ * @outputs {success: true} — Confirmation of successful deletion
276
+ * @depends-on [createHandler, emitLog]
277
+ * @depended-by [Netlify function routing]
278
+ * @side-effects [DB delete, audit logging]
279
+ * @tags timers, remove, delete, audit
280
+ */
281
+ export const remove = createHandler(async (ctx, _body) => {
282
+ const id = ctx.query?.id
283
+
284
+ if (!id) {
285
+ throw new Error('Timer ID is required')
286
+ }
287
+
288
+ const { data: current } = await ctx.db
289
+ .from('timers')
290
+ .select('id, name')
291
+ .eq('id', id)
292
+ .single()
293
+
294
+ if (!current) throw new Error('Timer not found')
295
+
296
+ const { error: err } = await ctx.db
297
+ .from('timers')
298
+ .delete()
299
+ .eq('id', id)
300
+
301
+ if (err) throw err
302
+
303
+ await emitLog(ctx, 'timer.deleted',
304
+ { type: 'timer', id },
305
+ { before: current }
306
+ )
307
+
308
+ return { success: true }
309
+ })
310
+ // ─── CHUNK_END: TIMERS_REMOVE ────────────────────────────────────────────────
311
+
312
+ // ─── MAIN HANDLER ────────────────────────────────────────────────────────────
313
+
314
+ // ─── CHUNK_START: TIMERS_HANDLER ──────────────────────────────────────────────
315
+ /**
316
+ * @chunk-id TIMERS_HANDLER_1_0_0
317
+ * @version 1.0.0
318
+ * @hash e890b54a4f767885a6e9d54b4ab19b968e09f6fc2f8db840d5b60df1e3cd2ba3
319
+ * @macro Timers Router
320
+ * @micro Routes HTTP methods and actions to appropriate timer handlers
321
+ * @inputs ctx: CoreContext — Request context with principal and database
322
+ * @inputs body: any — Request body for POST/PATCH/DELETE operations
323
+ * @outputs Varies — Depends on routed handler (list/get/create/update/remove/toggle)
324
+ * @depends-on [createHandler, list, get, create, update, remove, toggle]
325
+ * @depended-by [Netlify function routing]
326
+ * @side-effects [Delegates to appropriate handler]
327
+ * @tags timers, router, crud, netlify-function
328
+ */
329
+ export const handler = createHandler(async (ctx, body) => {
330
+ const { action } = ctx.query || {}
331
+ const method = ctx.query?.method || 'GET'
332
+
333
+ switch (action) {
334
+ case 'toggle':
335
+ if (method === 'POST') {
336
+ return await toggle(ctx, body)
337
+ }
338
+ break
339
+ default:
340
+ if (method === 'GET') {
341
+ if (ctx.query?.id) {
342
+ return await get(ctx, body)
343
+ } else {
344
+ return await list(ctx, body)
345
+ }
346
+ } else if (method === 'POST') {
347
+ return await create(ctx, body)
348
+ } else if (method === 'PATCH') {
349
+ return await update(ctx, body)
350
+ } else if (method === 'DELETE') {
351
+ return await remove(ctx, body)
352
+ }
353
+ }
354
+
355
+ throw new Error('Invalid action or method')
356
+ })
357
+ // ─── CHUNK_END: TIMERS_HANDLER ────────────────────────────────────────────────