spine-framework 0.3.145 → 0.4.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 (451) hide show
  1. package/.env.example +76 -0
  2. package/.framework/.spine-manifest.json +19 -0
  3. package/.framework/cli/commands/agents.ts +61 -33
  4. package/.framework/cli/commands/auth.ts +60 -28
  5. package/.framework/cli/commands/create-app.ts +212 -80
  6. package/.framework/cli/commands/dev.ts +184 -68
  7. package/.framework/cli/commands/doctor.ts +324 -152
  8. package/.framework/cli/commands/generate.ts +119 -68
  9. package/.framework/cli/commands/init.ts +141 -242
  10. package/.framework/cli/commands/install-app.ts +1336 -314
  11. package/.framework/cli/commands/items.ts +31 -29
  12. package/.framework/cli/commands/migrate.ts +299 -156
  13. package/.framework/cli/commands/migrations.ts +62 -30
  14. package/.framework/cli/commands/pipelines.ts +31 -29
  15. package/.framework/cli/commands/status.ts +105 -45
  16. package/.framework/cli/commands/system.ts +47 -42
  17. package/.framework/cli/commands/test.ts +161 -102
  18. package/.framework/cli/commands/upgrade.ts +260 -0
  19. package/.framework/cli/commands/validate-app.ts +517 -161
  20. package/.framework/cli/context.ts +117 -85
  21. package/.framework/cli/env-loader.ts +74 -43
  22. package/.framework/cli/index.ts +70 -46
  23. package/.framework/cli/lib/project-files.ts +404 -0
  24. package/.framework/docs/guides/testing-guide.md +1 -1
  25. package/.framework/docs/runtime-types.md +72 -72
  26. package/.framework/functions/_shared/access.ts +84 -0
  27. package/.framework/functions/_shared/agent-runner.ts +5051 -1026
  28. package/.framework/functions/_shared/app-manifest.ts +214 -94
  29. package/.framework/functions/_shared/ast.ts +214 -0
  30. package/.framework/functions/_shared/audit.ts +91 -55
  31. package/.framework/functions/_shared/cil.ts +368 -127
  32. package/.framework/functions/_shared/db.ts +337 -68
  33. package/.framework/functions/_shared/funnel.ts +228 -0
  34. package/.framework/functions/_shared/geo.ts +105 -0
  35. package/.framework/functions/_shared/hash-api-key.ts +94 -17
  36. package/.framework/functions/_shared/index.ts +22 -224
  37. package/.framework/functions/_shared/kb.ts +832 -58
  38. package/.framework/functions/_shared/llm.ts +118 -18
  39. package/.framework/functions/_shared/logging.ts +317 -19
  40. package/.framework/functions/_shared/middleware.ts +701 -131
  41. package/.framework/functions/_shared/notify.ts +70 -0
  42. package/.framework/functions/_shared/outcomes.ts +34 -19
  43. package/.framework/functions/_shared/permissions.ts +501 -315
  44. package/.framework/functions/_shared/pipeline-runner.ts +704 -155
  45. package/.framework/functions/_shared/principal.ts +436 -263
  46. package/.framework/functions/_shared/rate-limit.ts +233 -0
  47. package/.framework/functions/_shared/resolve-credentials.ts +86 -19
  48. package/.framework/functions/_shared/resolve-ids.ts +203 -139
  49. package/.framework/functions/_shared/retry-deliveries.ts +51 -16
  50. package/.framework/functions/_shared/schema-utils.ts +602 -521
  51. package/.framework/functions/_shared/security.ts +345 -0
  52. package/.framework/functions/_shared/testing.ts +197 -172
  53. package/.framework/functions/_shared/tracing.ts +351 -21
  54. package/.framework/functions/_shared/trigger-engine.ts +425 -136
  55. package/.framework/functions/_shared/webhook-registration.ts +71 -70
  56. package/.framework/functions/_shared/webhook-registry.ts +126 -83
  57. package/.framework/functions/account-nodes.ts +30 -30
  58. package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
  59. package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
  60. package/.framework/functions/adapters/openai-outbound.ts +15 -16
  61. package/.framework/functions/admin-data.ts +596 -173
  62. package/.framework/functions/admin-funnel.ts +64 -60
  63. package/.framework/functions/admin-install-funnel.ts +84 -66
  64. package/.framework/functions/admin-signals.ts +69 -51
  65. package/.framework/functions/ai-agents.ts +431 -106
  66. package/.framework/functions/ai-interactions.ts +186 -112
  67. package/.framework/functions/api-keys.ts +107 -107
  68. package/.framework/functions/apps.ts +154 -136
  69. package/.framework/functions/auth.ts +83 -65
  70. package/.framework/functions/cil-agent-ingest.ts +189 -232
  71. package/.framework/functions/cil-agent.ts +433 -177
  72. package/.framework/functions/cil-callmap.ts +642 -430
  73. package/.framework/functions/cil-config.ts +139 -135
  74. package/.framework/functions/cil-context.ts +214 -127
  75. package/.framework/functions/cil-doc.ts +587 -458
  76. package/.framework/functions/cil-embeddings.ts +453 -364
  77. package/.framework/functions/cil-graph.ts +427 -142
  78. package/.framework/functions/cil-ingest.ts +1418 -1154
  79. package/.framework/functions/cil-pipeline.ts +276 -21
  80. package/.framework/functions/cil-project.ts +659 -132
  81. package/.framework/functions/cil-validate.ts +198 -164
  82. package/.framework/functions/debug-auth.ts +57 -55
  83. package/.framework/functions/deliveries.ts +80 -21
  84. package/.framework/functions/embeddings.ts +1023 -318
  85. package/.framework/functions/eval-harness.ts +146 -108
  86. package/.framework/functions/integration-outbound.ts +205 -75
  87. package/.framework/functions/integration-routes.ts +128 -23
  88. package/.framework/functions/integrations.ts +125 -100
  89. package/.framework/functions/invites.ts +1095 -460
  90. package/.framework/functions/item-progress.ts +158 -102
  91. package/.framework/functions/kb.ts +34 -10
  92. package/.framework/functions/logs.ts +133 -133
  93. package/.framework/functions/observability.ts +152 -122
  94. package/.framework/functions/pipeline-executions.ts +147 -132
  95. package/.framework/functions/pipelines.ts +134 -119
  96. package/.framework/functions/prompt-configs.ts +96 -80
  97. package/.framework/functions/roles.ts +112 -82
  98. package/.framework/functions/security.ts +450 -0
  99. package/.framework/functions/system-cron.ts +117 -80
  100. package/.framework/functions/system.ts +158 -98
  101. package/.framework/functions/tests.ts +29 -29
  102. package/.framework/functions/timers.ts +94 -95
  103. package/.framework/functions/trigger-scheduler.ts +10 -0
  104. package/.framework/functions/triggers.ts +179 -149
  105. package/.framework/functions/types.ts +137 -125
  106. package/.framework/mcp/index.ts +133 -0
  107. package/.framework/mcp/load-env.ts +60 -0
  108. package/.framework/mcp/shared/app-manifest.ts +275 -0
  109. package/.framework/mcp/shared/db.ts +477 -0
  110. package/.framework/mcp/shared/kb.ts +118 -0
  111. package/.framework/mcp/tools/architect.ts +431 -0
  112. package/.framework/mcp/tools/cil/context.ts +345 -0
  113. package/.framework/mcp/tools/cil/graph.ts +242 -0
  114. package/.framework/mcp/tools/cil/ingest.ts +1217 -0
  115. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
  116. package/.framework/mcp/tools/cil/pipeline.ts +767 -0
  117. package/.framework/mcp/tools/cil/project.ts +791 -0
  118. package/.framework/mcp/tools/cil/retrieval.ts +336 -0
  119. package/.framework/mcp/tools/cil/search-core.ts +454 -0
  120. package/.framework/mcp/tools/cil/search.ts +97 -0
  121. package/.framework/mcp/tools/cil/suggest.ts +186 -0
  122. package/.framework/mcp/tools/cil/validate.ts +1369 -0
  123. package/.framework/mcp/tools/kb/delete.ts +139 -0
  124. package/.framework/mcp/tools/kb/index.ts +52 -0
  125. package/.framework/mcp/tools/kb/ingest.ts +84 -0
  126. package/.framework/mcp/tools/kb/list-types.ts +102 -0
  127. package/.framework/mcp/tools/kb/publish.ts +100 -0
  128. package/.framework/mcp/tools/kb/reindex.ts +86 -0
  129. package/.framework/mcp/tools/kb/revoke.ts +85 -0
  130. package/.framework/mcp/tools/kb/search.ts +101 -0
  131. package/.framework/mcp/tools/kb/upsert.ts +125 -0
  132. package/.framework/mcp/tools/observability.ts +510 -0
  133. package/.framework/migrations/001_core_schema.sql +15 -0
  134. package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
  135. package/.framework/migrations/003_core_system_data.sql +16 -1
  136. package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
  137. package/.framework/migrations/005_core_observability.sql +17 -1
  138. package/.framework/migrations/006_security_hardening_rls.sql +15 -0
  139. package/.framework/migrations/007_kb_article_list.sql +17 -1
  140. package/.framework/migrations/008_items_target.sql +15 -0
  141. package/.framework/migrations/009_roles_slug_unique.sql +15 -0
  142. package/.framework/migrations/010_auth_user_trigger.sql +15 -0
  143. package/.framework/migrations/011_spine_system_account.sql +16 -0
  144. package/.framework/migrations/012_service_role_grants.sql +16 -0
  145. package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
  146. package/.framework/migrations/014_apps_required_roles.sql +16 -0
  147. package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
  148. package/.framework/migrations/016_cil_types.sql +281 -0
  149. package/.framework/migrations/017_cil_stable_ids.sql +37 -0
  150. package/.framework/migrations/018_runtime_tables.sql +129 -0
  151. package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
  152. package/.framework/migrations/020_schema_reconciliation.sql +67 -0
  153. package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
  154. package/.framework/migrations/032_cil_status_migration.sql +73 -0
  155. package/.framework/migrations/033_cil_versioning.sql +73 -0
  156. package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
  157. package/.framework/migrations/035_rate_limits.sql +55 -0
  158. package/.framework/migrations/036_demo_record_flags.sql +72 -0
  159. package/.framework/migrations/037_kb_types_canonical.sql +244 -0
  160. package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
  161. package/.framework/migrations/042_registration_hierarchy.sql +309 -0
  162. package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
  163. package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
  164. package/.framework/migrations/045_security_critical_rls.sql +139 -0
  165. package/.framework/migrations/046_security_missing_rls.sql +79 -0
  166. package/.framework/migrations/047_people_updated_by.sql +27 -0
  167. package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
  168. package/.framework/migrations/049_security_blocklist.sql +148 -0
  169. package/.framework/migrations/050_notifications.sql +49 -0
  170. package/.framework/migrations/051_message_agent_fields.sql +74 -0
  171. package/.framework/migrations/052_registration_security.sql +421 -0
  172. package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
  173. package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
  174. package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
  175. package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
  176. package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
  177. package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
  178. package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
  179. package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
  180. package/.framework/migrations/061_fk_dedup.sql +32 -0
  181. package/.framework/public/spine-logo.svg +10 -3
  182. package/.framework/scripts/app-install-cli.ts +190 -93
  183. package/.framework/scripts/assemble-frontend.sh +127 -44
  184. package/.framework/scripts/assemble-functions.sh +128 -30
  185. package/.framework/scripts/boundary-check.sh +6 -2
  186. package/.framework/scripts/build-manifest.sh +24 -68
  187. package/.framework/scripts/check-core-integrity.sh +15 -76
  188. package/.framework/scripts/checksum-manifest.mts +343 -0
  189. package/.framework/scripts/cil-migrate-markers.ts +403 -0
  190. package/.framework/scripts/fix-cil-markers.mjs +176 -0
  191. package/.framework/scripts/verify-integrity.sh +21 -57
  192. package/.framework/scripts/verify-manifest.mts +305 -0
  193. package/.framework/seeds/types/funnel_signal_use.json +74 -21
  194. package/.framework/seeds/types/spine_instance.json +73 -21
  195. package/.framework/src/App.tsx +118 -72
  196. package/.framework/src/apps/admin/index.tsx +855 -58
  197. package/.framework/src/components/AppWrapper.tsx +43 -45
  198. package/.framework/src/components/CustomAppLoader.tsx +160 -116
  199. package/.framework/src/components/admin/AdminListPage.tsx +46 -44
  200. package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
  201. package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
  202. package/.framework/src/components/admin/PageInstructions.tsx +98 -2
  203. package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
  204. package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
  205. package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
  206. package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
  207. package/.framework/src/components/app-sidebar.tsx +42 -45
  208. package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
  209. package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
  210. package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
  211. package/.framework/src/components/kb/KBArticleList.tsx +251 -10
  212. package/.framework/src/components/layout/AppShell.tsx +51 -45
  213. package/.framework/src/components/layout/Header.tsx +42 -43
  214. package/.framework/src/components/layout/Layout.tsx +46 -46
  215. package/.framework/src/components/layout/Sidebar.tsx +196 -96
  216. package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
  217. package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
  218. package/.framework/src/components/runtime/DataFilters.tsx +49 -74
  219. package/.framework/src/components/runtime/DataHeader.tsx +53 -32
  220. package/.framework/src/components/runtime/DataListPage.tsx +51 -155
  221. package/.framework/src/components/runtime/DataStats.tsx +66 -44
  222. package/.framework/src/components/runtime/DataTable.tsx +49 -149
  223. package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
  224. package/.framework/src/components/runtime/index.ts +119 -16
  225. package/.framework/src/components/search-form.tsx +46 -29
  226. package/.framework/src/components/shared/AgentView.tsx +65 -48
  227. package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
  228. package/.framework/src/components/shared/InviteManager.tsx +207 -97
  229. package/.framework/src/components/shared/MemberList.tsx +97 -0
  230. package/.framework/src/components/shared/SchemaFields.tsx +107 -86
  231. package/.framework/src/components/ui/DataTable.tsx +80 -68
  232. package/.framework/src/components/ui/Form.tsx +157 -146
  233. package/.framework/src/components/ui/ItemCard.tsx +74 -67
  234. package/.framework/src/components/ui/ItemListView.tsx +73 -68
  235. package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
  236. package/.framework/src/components/ui/Modal.tsx +78 -68
  237. package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
  238. package/.framework/src/components/ui/accordion.tsx +85 -86
  239. package/.framework/src/components/ui/alert-dialog.tsx +197 -184
  240. package/.framework/src/components/ui/alert.tsx +105 -94
  241. package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
  242. package/.framework/src/components/ui/avatar.tsx +122 -107
  243. package/.framework/src/components/ui/badge.tsx +60 -55
  244. package/.framework/src/components/ui/breadcrumb.tsx +127 -128
  245. package/.framework/src/components/ui/button-group.tsx +86 -72
  246. package/.framework/src/components/ui/button.tsx +71 -50
  247. package/.framework/src/components/ui/calendar.tsx +72 -57
  248. package/.framework/src/components/ui/card.tsx +136 -129
  249. package/.framework/src/components/ui/carousel.tsx +226 -107
  250. package/.framework/src/components/ui/chart.tsx +252 -147
  251. package/.framework/src/components/ui/checkbox.tsx +43 -44
  252. package/.framework/src/components/ui/collapsible.tsx +86 -71
  253. package/.framework/src/components/ui/combobox.tsx +282 -249
  254. package/.framework/src/components/ui/command.tsx +158 -146
  255. package/.framework/src/components/ui/context-menu.tsx +239 -240
  256. package/.framework/src/components/ui/dialog.tsx +174 -157
  257. package/.framework/src/components/ui/direction.tsx +72 -56
  258. package/.framework/src/components/ui/drawer.tsx +168 -169
  259. package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
  260. package/.framework/src/components/ui/empty.tsx +131 -120
  261. package/.framework/src/components/ui/field.tsx +205 -173
  262. package/.framework/src/components/ui/hover-card.tsx +71 -72
  263. package/.framework/src/components/ui/input-group.tsx +148 -133
  264. package/.framework/src/components/ui/input-otp.tsx +99 -86
  265. package/.framework/src/components/ui/input.tsx +43 -41
  266. package/.framework/src/components/ui/item.tsx +207 -185
  267. package/.framework/src/components/ui/kbd.tsx +57 -56
  268. package/.framework/src/components/ui/label.tsx +45 -41
  269. package/.framework/src/components/ui/menubar.tsx +268 -236
  270. package/.framework/src/components/ui/native-select.tsx +85 -86
  271. package/.framework/src/components/ui/navigation-menu.tsx +166 -156
  272. package/.framework/src/components/ui/pagination.tsx +131 -141
  273. package/.framework/src/components/ui/popover.tsx +125 -128
  274. package/.framework/src/components/ui/progress.tsx +47 -44
  275. package/.framework/src/components/ui/radio-group.tsx +60 -55
  276. package/.framework/src/components/ui/resizable.tsx +85 -72
  277. package/.framework/src/components/ui/scroll-area.tsx +57 -58
  278. package/.framework/src/components/ui/select.tsx +182 -169
  279. package/.framework/src/components/ui/separator.tsx +42 -43
  280. package/.framework/src/components/ui/sheet.tsx +170 -159
  281. package/.framework/src/components/ui/sidebar.tsx +395 -398
  282. package/.framework/src/components/ui/skeleton.tsx +42 -43
  283. package/.framework/src/components/ui/slider.tsx +61 -44
  284. package/.framework/src/components/ui/sonner.tsx +44 -44
  285. package/.framework/src/components/ui/spinner.tsx +47 -42
  286. package/.framework/src/components/ui/switch.tsx +56 -42
  287. package/.framework/src/components/ui/table-primitives.tsx +272 -132
  288. package/.framework/src/components/ui/table.tsx +140 -142
  289. package/.framework/src/components/ui/tabs.tsx +110 -93
  290. package/.framework/src/components/ui/textarea.tsx +43 -44
  291. package/.framework/src/components/ui/toggle-group.tsx +87 -71
  292. package/.framework/src/components/ui/toggle.tsx +56 -56
  293. package/.framework/src/components/ui/tooltip.tsx +99 -85
  294. package/.framework/src/contexts/AppContext.tsx +166 -114
  295. package/.framework/src/contexts/AuthContext.tsx +232 -137
  296. package/.framework/src/hooks/use-mobile.ts +43 -44
  297. package/.framework/src/hooks/useApi.ts +185 -172
  298. package/.framework/src/hooks/useAppPath.ts +31 -29
  299. package/.framework/src/hooks/useApps.ts +77 -42
  300. package/.framework/src/hooks/useEntityList.ts +66 -29
  301. package/.framework/src/hooks/useEntityRecord.ts +76 -32
  302. package/.framework/src/hooks/useForm.ts +62 -30
  303. package/.framework/src/hooks/useListSchema.ts +60 -43
  304. package/.framework/src/hooks/useSchemaRecord.ts +115 -95
  305. package/.framework/src/lib/api.ts +258 -134
  306. package/.framework/src/lib/registration.ts +181 -0
  307. package/.framework/src/lib/supabase.ts +118 -81
  308. package/.framework/src/lib/utils.ts +266 -266
  309. package/.framework/src/main.tsx +43 -44
  310. package/.framework/src/pages/DashboardPage.tsx +44 -43
  311. package/.framework/src/pages/NoAppPage.tsx +50 -0
  312. package/.framework/src/pages/NotFoundPage.tsx +32 -29
  313. package/.framework/src/pages/SetupPage.tsx +34 -33
  314. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
  315. package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
  316. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
  317. package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
  318. package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
  319. package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
  320. package/.framework/src/pages/admin/AppsPage.tsx +45 -42
  321. package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
  322. package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
  323. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
  324. package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
  325. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
  326. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
  327. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
  328. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
  329. package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
  330. package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
  331. package/.framework/src/pages/admin/LogsPage.tsx +87 -137
  332. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
  333. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
  334. package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
  335. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
  336. package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
  337. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
  338. package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
  339. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
  340. package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
  341. package/.framework/src/pages/admin/RolesPage.tsx +47 -164
  342. package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
  343. package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
  344. package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
  345. package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
  346. package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
  347. package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
  348. package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
  349. package/.framework/src/pages/admin/TimersPage.tsx +44 -42
  350. package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
  351. package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
  352. package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
  353. package/.framework/src/pages/admin/TypesPage.tsx +45 -42
  354. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
  355. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
  356. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
  357. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
  358. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
  359. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
  360. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
  361. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
  362. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
  363. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
  364. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
  365. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
  366. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  367. package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
  368. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
  369. package/.framework/src/pages/auth/LoginPage.tsx +38 -32
  370. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
  371. package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
  372. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
  373. package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
  374. package/.framework/src/types/auth.ts +101 -93
  375. package/.framework/src/types/types.ts +283 -262
  376. package/.framework/templates/project.json +87 -0
  377. package/.framework/templates/spine.config.neutral.json +7 -0
  378. package/.framework/tests/api/api-surface.test.ts +381 -0
  379. package/.framework/tests/fixtures/seed.ts +427 -0
  380. package/.framework/tests/fixtures/teardown.ts +228 -0
  381. package/.framework/tests/reporter.ts +351 -0
  382. package/.framework/tests/setup.ts +135 -0
  383. package/.framework/tests/ui/ui-sweep.ts +278 -0
  384. package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
  385. package/.framework/tests/unit/agent-runner.test.ts +2389 -0
  386. package/.framework/tests/unit/ai-interactions.test.ts +81 -0
  387. package/.framework/tests/unit/app-manifest.test.ts +359 -0
  388. package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
  389. package/.framework/tests/unit/cil-determinism.test.ts +85 -0
  390. package/.framework/tests/unit/core-isolation.test.ts +153 -0
  391. package/.framework/tests/unit/funnel-signals.test.ts +135 -0
  392. package/.framework/tests/unit/install-app.test.ts +1759 -0
  393. package/.framework/tests/unit/invites-security.test.ts +572 -0
  394. package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
  395. package/.framework/tests/unit/kb-search.test.ts +119 -0
  396. package/.framework/tests/unit/migrate.test.ts +509 -0
  397. package/.framework/tests/unit/notify.test.ts +136 -0
  398. package/.framework/tests/unit/permissions.test.ts +269 -0
  399. package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
  400. package/.framework/tests/unit/principal-cache.test.ts +138 -0
  401. package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
  402. package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
  403. package/.framework/tests/unit/schema-utils.test.ts +225 -0
  404. package/.framework/tests/unit/trigger-engine.test.ts +513 -0
  405. package/.framework/tests/unit/validate-app.test.ts +527 -0
  406. package/README.md +34 -3
  407. package/bin/spine-framework.cjs +1 -0
  408. package/config/tailwind.config.cjs +7 -0
  409. package/config/tsconfig.functions.json +42 -0
  410. package/config/tsconfig.json +37 -9
  411. package/config/vite.config.ts +31 -2
  412. package/netlify.toml +31 -3
  413. package/package.json +46 -29
  414. package/scripts/assemble-frontend.sh +127 -44
  415. package/scripts/assemble-functions.sh +127 -29
  416. package/scripts/boundary-check.sh +6 -2
  417. package/scripts/build-manifest.sh +24 -68
  418. package/scripts/checksum-manifest.mts +345 -0
  419. package/scripts/dev-clean.sh +86 -0
  420. package/scripts/dev-netlify.sh +49 -0
  421. package/scripts/netlify-dev-wrapper.sh +2 -0
  422. package/scripts/verify-install.ts +358 -0
  423. package/scripts/verify-integrity.sh +21 -57
  424. package/scripts/verify-manifest.mts +305 -0
  425. package/templates/project/gitignore +45 -0
  426. package/{config → templates/project}/package-lock.json +22335 -9366
  427. package/vitest.config.ts +46 -0
  428. package/.framework/public/spine.config.json +0 -91
  429. package/config/deno.lock +0 -108
  430. package/config/tsconfig.node.tsbuildinfo +0 -1
  431. package/config/tsconfig.tsbuildinfo +0 -1
  432. package/config/vite.config.d.ts +0 -2
  433. package/custom/.devin/AGENT.md +0 -357
  434. package/custom/.devin/skills/install-app/SKILL.md +0 -39
  435. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
  436. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
  437. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
  438. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
  439. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
  440. package/custom/.devin/workflows/app-install.yaml +0 -83
  441. package/custom/README.md +0 -79
  442. package/docs/README.md +0 -15
  443. package/scripts/app-install-cli.ts +0 -286
  444. package/scripts/check-core-integrity.sh +0 -82
  445. package/scripts/ingest-chunks.cjs +0 -202
  446. package/scripts/kb-chunk-parser.cjs +0 -312
  447. package/scripts/kb-chunk-parser.ts +0 -330
  448. package/scripts/kb-ingest-docs.ts +0 -203
  449. package/scripts/load-test-app-install.ts +0 -484
  450. package/scripts/test-login.js +0 -33
  451. package/spine.config.json +0 -91
@@ -1,8 +1,24 @@
1
+ // CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/functions/pipelines.ts"]
2
+ // CIL[DOC-MACRO purpose="Pipeline handler module imports shared dependencies and exports CRUD and dispatch handlers."]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Import createHandler, adminDb, emitLog, sanitizeRecordData, and isSystemAdmin for pipeline operation handlers."]
4
+ // CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts"]
5
+ // CIL[DOC-CONTRACT inputs="shared module imports" outputs="bound handler functions" errors="import failures" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Module header imports shared middleware and helpers" notable_decisions="Uses shared helpers instead of inline logic"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="internal"]
1
10
  import { createHandler } from './_shared/middleware'
2
11
  import { adminDb } from './_shared/db'
3
12
  import { emitLog } from './_shared/audit'
4
13
  import { sanitizeRecordData } from './_shared/permissions'
5
14
  import { isSystemAdmin } from './_shared/principal'
15
+ // CIL[DOC-VECTOR type="context" content="purpose='Pipeline handler module imports shared dependencies and exports CRUD and dispatch handlers.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
16
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
17
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
18
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
19
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
20
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
21
+ // CIL[END stable_id="~/.framework/functions/pipelines.ts:module_header:module_header"]
6
22
 
7
23
 
8
24
 
@@ -13,21 +29,14 @@ import { isSystemAdmin } from './_shared/principal'
13
29
 
14
30
 
15
31
 
16
- // CIL[BEGIN chunk_id="pipelines_module_header_1783932909" type="module_header" identity="module_header" parent="none"]
17
- // CIL[DOC-MACRO purpose="Lists pipelines filtered by trigger type with sanitization"]
18
- // CIL[DOC-RESPONSIBILITY responsibility="Handle trigger-based pipeline listing"]
19
- // CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
20
- // CIL[DOC-CONTRACT inputs="ctx, _body" outputs="Array of pipeline records" errors="Throws on validation or DB errors" side_effects="Database queries, permission sanitization"]
21
- // CIL[DOC-MICRO logic_summary="Filters by trigger_type, applies permission sanitization" notable_decisions="[]"]
22
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
32
+ // CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:listByTrigger:constant" type="constant" identity="listByTrigger" parent="~/.framework/functions/pipelines.ts"]
33
+ // CIL[DOC-MACRO purpose="List pipelines filtered by trigger type, optional app and active state."]
34
+ // CIL[DOC-RESPONSIBILITY responsibility="Return a filtered, sanitized list of pipelines for the account."]
35
+ // CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
36
+ // CIL[DOC-CONTRACT inputs="ctx.query: trigger_type, app_id, include_inactive" outputs="sanitized pipeline array" errors="Missing trigger_type or account; DB errors" side_effects="none"]
37
+ // CIL[DOC-MICRO logic_summary="Validate trigger_type and account, query pipelines with filters, sanitize each result" notable_decisions="System admins use adminDb; non-admins use ctx.db"]
38
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
23
39
  // CIL[DOC-STABILITY stability="stable"]
24
- // CIL[DOC-AUDIENCE audience="developer"]
25
- // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
26
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
27
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
28
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
29
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
30
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
31
40
  export const listByTrigger = createHandler(async (ctx, _body) => {
32
41
  const { trigger_type, app_id, include_inactive } = ctx.query || {}
33
42
 
@@ -64,21 +73,21 @@ export const listByTrigger = createHandler(async (ctx, _body) => {
64
73
 
65
74
  return sanitized
66
75
  })
67
- // CIL[END chunk_id="pipelines_module_header_1783932909"]
68
- // CIL[BEGIN chunk_id="pipelines_list_1783932909" type="function" identity="list" parent="none"]
69
- // CIL[DOC-MACRO purpose="Lists all pipelines with optional app filtering"]
70
- // CIL[DOC-RESPONSIBILITY responsibility="Handle general pipeline listing"]
71
- // CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
72
- // CIL[DOC-CONTRACT inputs="none" outputs="Array of pipeline records" errors="Throws on validation or DB errors" side_effects="Database queries, permission sanitization"]
73
- // CIL[DOC-MICRO logic_summary="Lists pipelines with optional app filter, applies sanitization" notable_decisions="[]"]
74
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
75
- // CIL[DOC-STABILITY stability="stable"]
76
- // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 3. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
77
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 3. Total affected: 4."]
78
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
79
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
76
+ // CIL[DOC-VECTOR type="context" content="purpose='List pipelines filtered by trigger type, optional app and active state.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
77
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
78
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
79
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
80
80
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
81
81
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
82
+ // CIL[END stable_id="~/.framework/functions/pipelines.ts:listByTrigger:constant"]
83
+ // CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:list:constant" type="constant" identity="list" parent="~/.framework/functions/pipelines.ts"]
84
+ // CIL[DOC-MACRO purpose="List all pipelines for the account, optionally filtered by app and active state."]
85
+ // CIL[DOC-RESPONSIBILITY responsibility="Return a sanitized list of all pipelines for the account."]
86
+ // CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
87
+ // CIL[DOC-CONTRACT inputs="ctx.query: app_id, include_inactive" outputs="sanitized pipeline array" errors="Missing account; DB errors" side_effects="none"]
88
+ // CIL[DOC-MICRO logic_summary="Validate account, query all pipelines with optional app/active filters, sanitize results" notable_decisions="System admins use adminDb"]
89
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
90
+ // CIL[DOC-STABILITY stability="stable"]
82
91
  export const list = createHandler(async (ctx, body) => {
83
92
  const { app_id, include_inactive } = ctx.query || {}
84
93
 
@@ -107,21 +116,21 @@ export const list = createHandler(async (ctx, body) => {
107
116
 
108
117
  return sanitized
109
118
  })
110
- // CIL[END chunk_id="pipelines_list_1783932909"]
111
- // CIL[BEGIN chunk_id="pipelines_get_1783932909" type="function" identity="get" parent="none"]
112
- // CIL[DOC-MACRO purpose="Retrieves single pipeline by ID with sanitization"]
113
- // CIL[DOC-RESPONSIBILITY responsibility="Handle individual pipeline retrieval"]
114
- // CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
115
- // CIL[DOC-CONTRACT inputs="none" outputs="Single pipeline record" errors="Throws if ID missing or DB error" side_effects="Database query, permission sanitization"]
116
- // CIL[DOC-MICRO logic_summary="Fetches pipeline by ID, applies permission sanitization" notable_decisions="[]"]
117
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
118
- // CIL[DOC-STABILITY stability="stable"]
119
- // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/components/ui/dialog.tsx, \."]
120
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
121
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
122
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
119
+ // CIL[DOC-VECTOR type="context" content="purpose='List all pipelines for the account, optionally filtered by app and active state.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
120
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
121
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
122
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
123
123
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
124
124
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
125
+ // CIL[END stable_id="~/.framework/functions/pipelines.ts:list:constant"]
126
+ // CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:get:constant" type="constant" identity="get" parent="~/.framework/functions/pipelines.ts"]
127
+ // CIL[DOC-MACRO purpose="Get a single pipeline by ID with sanitized output."]
128
+ // CIL[DOC-RESPONSIBILITY responsibility="Return one sanitized pipeline record matching the requested ID."]
129
+ // CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
130
+ // CIL[DOC-CONTRACT inputs="ctx.query.id" outputs="sanitized pipeline object" errors="Missing ID or account; not found; DB errors" side_effects="none"]
131
+ // CIL[DOC-MICRO logic_summary="Validate ID and account, fetch single pipeline, sanitize result" notable_decisions="Uses .single() and adminDb for system admins"]
132
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
133
+ // CIL[DOC-STABILITY stability="stable"]
125
134
  export const get = createHandler(async (ctx, body) => {
126
135
  const { id } = ctx.query || {}
127
136
 
@@ -141,21 +150,21 @@ export const get = createHandler(async (ctx, body) => {
141
150
 
142
151
  return await sanitizeRecordData(ctx, data, 'pipeline')
143
152
  })
144
- // CIL[END chunk_id="pipelines_get_1783932909"]
145
- // CIL[BEGIN chunk_id="pipelines_create_1783932909" type="function" identity="create" parent="none"]
146
- // CIL[DOC-MACRO purpose="Creates new pipeline with validation and audit logging"]
147
- // CIL[DOC-RESPONSIBILITY responsibility="Handle pipeline creation with security checks"]
148
- // CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
149
- // CIL[DOC-CONTRACT inputs="none" outputs="Created pipeline record" errors="Throws on validation or DB errors" side_effects="Database insert, audit logging"]
150
- // CIL[DOC-MICRO logic_summary="Validates required fields, creates pipeline with audit trail" notable_decisions="[]"]
151
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
152
- // CIL[DOC-STABILITY stability="stable"]
153
- // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
154
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
155
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
156
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
153
+ // CIL[DOC-VECTOR type="context" content="purpose='Get a single pipeline by ID with sanitized output.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
154
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
155
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
156
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
157
157
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
158
158
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
159
+ // CIL[END stable_id="~/.framework/functions/pipelines.ts:get:constant"]
160
+ // CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:create:constant" type="constant" identity="create" parent="~/.framework/functions/pipelines.ts"]
161
+ // CIL[DOC-MACRO purpose="Create a new pipeline record and emit an audit log."]
162
+ // CIL[DOC-RESPONSIBILITY responsibility="Insert a new pipeline and return the created record."]
163
+ // CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
164
+ // CIL[DOC-CONTRACT inputs="body: name, trigger_type, stages; optional app_id, description, config, metadata" outputs="created pipeline record" errors="Missing required fields; unauthenticated; DB errors" side_effects="Inserts row and emits pipeline.created audit log"]
165
+ // CIL[DOC-MICRO logic_summary="Validate required fields and principal, insert pipeline with created_by, emit audit log" notable_decisions="Defaults empty optional fields to null or empty objects"]
166
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
167
+ // CIL[DOC-STABILITY stability="stable"]
159
168
  export const create = createHandler(async (ctx, body) => {
160
169
  const { app_id, name, description, trigger_type, config, stages, metadata } = body
161
170
 
@@ -192,21 +201,21 @@ export const create = createHandler(async (ctx, body) => {
192
201
 
193
202
  return data
194
203
  })
195
- // CIL[END chunk_id="pipelines_create_1783932909"]
196
- // CIL[BEGIN chunk_id="pipelines_update_1783932909" type="function" identity="update" parent="none"]
197
- // CIL[DOC-MACRO purpose="Updates pipeline with selective field validation"]
198
- // CIL[DOC-RESPONSIBILITY responsibility="Handle pipeline updates with audit trail"]
199
- // CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
200
- // CIL[DOC-CONTRACT inputs="none" outputs="Updated pipeline record" errors="Throws on validation or DB errors" side_effects="Database update, audit logging"]
201
- // CIL[DOC-MICRO logic_summary="Updates specified fields, maintains audit trail" notable_decisions="[]"]
202
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
203
- // CIL[DOC-STABILITY stability="stable"]
204
- // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, \."]
205
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
206
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
207
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
204
+ // CIL[DOC-VECTOR type="context" content="purpose='Create a new pipeline record and emit an audit log.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
205
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
206
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
207
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
208
208
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
209
209
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
210
+ // CIL[END stable_id="~/.framework/functions/pipelines.ts:create:constant"]
211
+ // CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:update:constant" type="constant" identity="update" parent="~/.framework/functions/pipelines.ts"]
212
+ // CIL[DOC-MACRO purpose="Update an existing pipeline by ID and emit an audit log."]
213
+ // CIL[DOC-RESPONSIBILITY responsibility="Partially update a pipeline record and return the updated row."]
214
+ // CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
215
+ // CIL[DOC-CONTRACT inputs="body or query: id; optional name, description, config, stages, metadata, trigger_type, is_active, app_id" outputs="updated pipeline record" errors="Missing ID or principal; not found; DB errors" side_effects="Updates row and emits pipeline.updated audit log"]
216
+ // CIL[DOC-MICRO logic_summary="Fetch current record, build sparse update set, apply update, emit audit log" notable_decisions="Uses undefined check to allow null values; updates updated_at"]
217
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
218
+ // CIL[DOC-STABILITY stability="stable"]
210
219
  export const update = createHandler(async (ctx, body) => {
211
220
  const id = body?.id || ctx.query?.id
212
221
  const { id: _bodyId, name, description, config, stages, metadata, trigger_type, is_active, app_id } = body || {}
@@ -255,21 +264,21 @@ export const update = createHandler(async (ctx, body) => {
255
264
 
256
265
  return data
257
266
  })
258
- // CIL[END chunk_id="pipelines_update_1783932909"]
259
- // CIL[BEGIN chunk_id="pipelines_toggle_1783932909" type="function" identity="toggle" parent="none"]
260
- // CIL[DOC-MACRO purpose="Toggles pipeline active/inactive status"]
261
- // CIL[DOC-RESPONSIBILITY responsibility="Handle pipeline activation state changes"]
262
- // CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\"]"]
263
- // CIL[DOC-CONTRACT inputs="none" outputs="Updated pipeline record" errors="Throws on validation or DB errors" side_effects="Database update, audit logging"]
264
- // CIL[DOC-MICRO logic_summary="Updates is_active flag, tracks state changes" notable_decisions="[]"]
265
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
266
- // CIL[DOC-STABILITY stability="stable"]
267
- // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 1. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts."]
268
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
269
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
270
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
267
+ // CIL[DOC-VECTOR type="context" content="purpose='Update an existing pipeline by ID and emit an audit log.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
268
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
269
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
270
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
271
271
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
272
272
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
273
+ // CIL[END stable_id="~/.framework/functions/pipelines.ts:update:constant"]
274
+ // CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:toggle:constant" type="constant" identity="toggle" parent="~/.framework/functions/pipelines.ts"]
275
+ // CIL[DOC-MACRO purpose="Toggle the active state of a pipeline."]
276
+ // CIL[DOC-RESPONSIBILITY responsibility="Set is_active on a pipeline and return the updated record."]
277
+ // CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
278
+ // CIL[DOC-CONTRACT inputs="body: id, is_active" outputs="updated pipeline record" errors="Missing fields or principal; not found; DB errors" side_effects="Updates is_active and emits pipeline.toggled audit log"]
279
+ // CIL[DOC-MICRO logic_summary="Validate id and is_active, verify pipeline exists, update active flag, emit audit log" notable_decisions="Switches active state independently from full update"]
280
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
281
+ // CIL[DOC-STABILITY stability="stable"]
273
282
  export const toggle = createHandler(async (ctx, body) => {
274
283
  const { id, is_active } = body
275
284
 
@@ -307,21 +316,21 @@ export const toggle = createHandler(async (ctx, body) => {
307
316
 
308
317
  return data
309
318
  })
310
- // CIL[END chunk_id="pipelines_toggle_1783932909"]
311
- // CIL[BEGIN chunk_id="pipelines_getexecutions_1783932909" type="function" identity="getExecutions" parent="none"]
312
- // CIL[DOC-MACRO purpose="Retrieves execution history for specific pipeline"]
313
- // CIL[DOC-RESPONSIBILITY responsibility="Handle pipeline execution history queries"]
314
- // CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
315
- // CIL[DOC-CONTRACT inputs="none" outputs="Array of execution records" errors="Throws if pipeline_id missing or DB error" side_effects="Database query"]
316
- // CIL[DOC-MICRO logic_summary="Queries execution history with pagination" notable_decisions="[]"]
317
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
318
- // CIL[DOC-STABILITY stability="stable"]
319
- // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
320
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
321
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
322
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
319
+ // CIL[DOC-VECTOR type="context" content="purpose='Toggle the active state of a pipeline.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
320
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
321
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
322
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
323
323
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
324
324
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
325
+ // CIL[END stable_id="~/.framework/functions/pipelines.ts:toggle:constant"]
326
+ // CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:getExecutions:constant" type="constant" identity="getExecutions" parent="~/.framework/functions/pipelines.ts"]
327
+ // CIL[DOC-MACRO purpose="List execution records for a pipeline with pagination."]
328
+ // CIL[DOC-RESPONSIBILITY responsibility="Return paginated pipeline execution history."]
329
+ // CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
330
+ // CIL[DOC-CONTRACT inputs="ctx.query: pipeline_id, limit, offset" outputs="array of pipeline execution records" errors="Missing pipeline_id; DB errors" side_effects="none"]
331
+ // CIL[DOC-MICRO logic_summary="Validate pipeline_id, query executions with range, return data" notable_decisions="Default limit 50 and offset 0; uses ctx.db"]
332
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
333
+ // CIL[DOC-STABILITY stability="stable"]
325
334
  export const getExecutions = createHandler(async (ctx, _body) => {
326
335
  const { pipeline_id, limit = 50, offset = 0 } = ctx.query || {}
327
336
 
@@ -343,21 +352,21 @@ export const getExecutions = createHandler(async (ctx, _body) => {
343
352
 
344
353
  return data
345
354
  })
346
- // CIL[END chunk_id="pipelines_getexecutions_1783932909"]
347
- // CIL[BEGIN chunk_id="pipelines_remove_1783932909" type="function" identity="remove" parent="none"]
348
- // CIL[DOC-MACRO purpose="Hard deletes pipeline with audit logging"]
349
- // CIL[DOC-RESPONSIBILITY responsibility="Handle pipeline deletion with audit trail"]
350
- // CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[]"]
351
- // CIL[DOC-CONTRACT inputs="none" outputs="{success: true}" errors="Throws if ID missing or DB error" side_effects="Database delete, audit logging"]
352
- // CIL[DOC-MICRO logic_summary="Hard deletes pipeline, maintains audit trail" notable_decisions="[]"]
353
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
354
- // CIL[DOC-STABILITY stability="stable"]
355
- // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
356
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
357
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
358
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
355
+ // CIL[DOC-VECTOR type="context" content="purpose='List execution records for a pipeline with pagination.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
356
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
357
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
358
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
359
359
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
360
360
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
361
+ // CIL[END stable_id="~/.framework/functions/pipelines.ts:getExecutions:constant"]
362
+ // CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:remove:constant" type="constant" identity="remove" parent="~/.framework/functions/pipelines.ts"]
363
+ // CIL[DOC-MACRO purpose="Delete a pipeline by ID and emit an audit log."]
364
+ // CIL[DOC-RESPONSIBILITY responsibility="Remove a pipeline record and return success."]
365
+ // CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
366
+ // CIL[DOC-CONTRACT inputs="ctx.query.id" outputs="{ success: true }" errors="Missing ID; not found; DB errors" side_effects="Deletes row and emits pipeline.deleted audit log"]
367
+ // CIL[DOC-MICRO logic_summary="Validate ID, fetch existing pipeline, delete, emit audit log" notable_decisions="Fetches minimal id and name before delete for audit"]
368
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
369
+ // CIL[DOC-STABILITY stability="stable"]
361
370
  export const remove = createHandler(async (ctx, _body) => {
362
371
  const id = ctx.query?.id
363
372
 
@@ -387,21 +396,21 @@ export const remove = createHandler(async (ctx, _body) => {
387
396
 
388
397
  return { success: true }
389
398
  })
390
- // CIL[END chunk_id="pipelines_remove_1783932909"]
391
- // CIL[BEGIN chunk_id="pipelines_handler_1783932909" type="function" identity="handler" parent="none"]
392
- // CIL[DOC-MACRO purpose="Routes HTTP methods and actions to pipeline handlers"]
393
- // CIL[DOC-RESPONSIBILITY responsibility="Handle request routing for pipeline operations"]
394
- // CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[]"]
395
- // CIL[DOC-CONTRACT inputs="none" outputs="Varies by handler" errors="Throws on unsupported methods" side_effects="Delegates to appropriate handler"]
396
- // CIL[DOC-MICRO logic_summary="Routes based on action and method, delegates to handlers" notable_decisions="[]"]
397
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
398
- // CIL[DOC-STABILITY stability="stable"]
399
- // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
400
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
401
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
402
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
399
+ // CIL[DOC-VECTOR type="context" content="purpose='Delete a pipeline by ID and emit an audit log.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
400
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
401
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
402
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
403
403
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
404
404
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
405
+ // CIL[END stable_id="~/.framework/functions/pipelines.ts:remove:constant"]
406
+ // CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:handler:constant" type="constant" identity="handler" parent="~/.framework/functions/pipelines.ts"]
407
+ // CIL[DOC-MACRO purpose="Dispatch pipeline requests to the correct handler based on action and method."]
408
+ // CIL[DOC-RESPONSIBILITY responsibility="Route incoming pipeline API calls to the appropriate handler."]
409
+ // CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
410
+ // CIL[DOC-CONTRACT inputs="ctx.query.action, ctx.query.method, body" outputs="handler result" errors="Invalid action or method" side_effects="Calls delegated handlers"]
411
+ // CIL[DOC-MICRO logic_summary="Switch on action and method to route to listByTrigger, getExecutions, toggle, get, list, create, update, or remove" notable_decisions="Default GET routes to list or get by presence of id"]
412
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
413
+ // CIL[DOC-STABILITY stability="stable"]
405
414
  export const handler = createHandler(async (ctx, body) => {
406
415
  const { action } = ctx.query || {}
407
416
  const method = ctx.query?.method || 'GET'
@@ -440,4 +449,10 @@ export const handler = createHandler(async (ctx, body) => {
440
449
 
441
450
  throw new Error('Invalid action or method')
442
451
  })
443
- // CIL[END chunk_id="pipelines_handler_1783932909"]
452
+ // CIL[DOC-VECTOR type="context" content="purpose='Dispatch pipeline requests to the correct handler based on action and method.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
453
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
454
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
455
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
456
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
457
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
458
+ // CIL[END stable_id="~/.framework/functions/pipelines.ts:handler:constant"]