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,3 +1,16 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
2
+ // CIL[DOC-MACRO purpose="Provides the Carousel UI components built on Embla Carousel for the shadcn/ui design system"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Import carousel dependencies and re-export the public Carousel component surface"]
4
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="imports and component exports" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Sets up React, Embla Carousel, utility, Button, and icon imports used by Carousel, Content, Item, Previous, and Next." notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="frontend-developers"]
10
+
11
+
12
+
13
+
1
14
 
2
15
 
3
16
 
@@ -6,21 +19,6 @@
6
19
 
7
20
 
8
21
 
9
- // CIL[BEGIN chunk_id="carousel_module_header_1783881474" type="module_header" identity="module_header" parent="none"]
10
- // CIL[DOC-MACRO purpose="Carousel component library with Embla Carousel integration"]
11
- // CIL[DOC-RESPONSIBILITY responsibility="Provide carousel infrastructure, types, and context system"]
12
- // CIL[DOC-CONTEXT module="ui.carousel" layer="component" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
13
- // CIL[DOC-CONTRACT inputs="none" outputs="carousel types, context, React, Embla" errors="none" side_effects="none"]
14
- // CIL[DOC-MICRO logic_summary="Defines carousel type system, context provider, and Embla integration" notable_decisions="['embla-carousel integration', 'comprehensive type system', 'context pattern']"]
15
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
16
- // CIL[DOC-STABILITY stability="stable"]
17
- // CIL[DOC-AUDIENCE audience="developer"]
18
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/components/layout/Sidebar.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
19
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
20
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
21
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
22
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
23
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
24
22
  import * as React from "react"
25
23
  import useEmblaCarousel, {
26
24
  type UseEmblaCarouselType,
@@ -29,19 +27,112 @@ import useEmblaCarousel, {
29
27
  import { cn } from "@/lib/utils"
30
28
  import { Button } from "@/components/ui/button"
31
29
  import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react"
30
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides the Carousel UI components built on Embla Carousel for the shadcn/ui design system'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
31
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
32
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
33
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
34
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
35
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
36
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
32
37
 
38
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carouselapi:type" type="type" identity="carouselapi" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
39
+ // CIL[DOC-MACRO purpose="Exposes the Embla Carousel API type returned by useEmblaCarousel"]
40
+ // CIL[DOC-RESPONSIBILITY responsibility="Define the CarouselApi type alias for consumer typing"]
41
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
42
+ // CIL[DOC-CONTRACT inputs="none" outputs="CarouselApi type alias" errors="none" side_effects="none"]
43
+ // CIL[DOC-MICRO logic_summary="Aliases UseEmblaCarouselType[1] as CarouselApi." notable_decisions="[]"]
44
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
45
+ // CIL[DOC-STABILITY stability="stable"]
33
46
  type CarouselApi = UseEmblaCarouselType[1]
47
+ // CIL[DOC-VECTOR type="context" content="purpose='Exposes the Embla Carousel API type returned by useEmblaCarousel'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
48
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
49
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
50
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
51
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
52
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
53
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carouselapi:type"]
54
+
55
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:usecarouselparameters:type" type="type" identity="usecarouselparameters" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
56
+ // CIL[DOC-MACRO purpose="Defines the parameter tuple type accepted by the useEmblaCarousel hook"]
57
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the UseCarouselParameters type for the Carousel hook"]
58
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
59
+ // CIL[DOC-CONTRACT inputs="none" outputs="UseCarouselParameters type alias" errors="none" side_effects="none"]
60
+ // CIL[DOC-MICRO logic_summary="Aliases Parameters<typeof useEmblaCarousel> as UseCarouselParameters." notable_decisions="[]"]
61
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
62
+ // CIL[DOC-STABILITY stability="stable"]
34
63
  type UseCarouselParameters = Parameters<typeof useEmblaCarousel>
64
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the parameter tuple type accepted by the useEmblaCarousel hook'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
65
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
66
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
67
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
68
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
69
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
70
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:usecarouselparameters:type"]
71
+
72
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carouseloptions:type" type="type" identity="carouseloptions" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
73
+ // CIL[DOC-MACRO purpose="Defines the carousel configuration options type"]
74
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the CarouselOptions type for the Carousel component"]
75
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
76
+ // CIL[DOC-CONTRACT inputs="none" outputs="CarouselOptions type alias" errors="none" side_effects="none"]
77
+ // CIL[DOC-MICRO logic_summary="Aliases UseCarouselParameters[0] as CarouselOptions." notable_decisions="[]"]
78
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
79
+ // CIL[DOC-STABILITY stability="stable"]
35
80
  type CarouselOptions = UseCarouselParameters[0]
81
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the carousel configuration options type'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
82
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
83
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
84
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
85
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
86
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
87
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carouseloptions:type"]
88
+
89
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carouselplugin:type" type="type" identity="carouselplugin" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
90
+ // CIL[DOC-MACRO purpose="Defines the carousel plugin type"]
91
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the CarouselPlugin type for Embla plugins"]
92
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
93
+ // CIL[DOC-CONTRACT inputs="none" outputs="CarouselPlugin type alias" errors="none" side_effects="none"]
94
+ // CIL[DOC-MICRO logic_summary="Aliases UseCarouselParameters[1] as CarouselPlugin." notable_decisions="[]"]
95
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
96
+ // CIL[DOC-STABILITY stability="stable"]
36
97
  type CarouselPlugin = UseCarouselParameters[1]
98
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the carousel plugin type'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
99
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
100
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
101
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
102
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
103
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
104
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carouselplugin:type"]
37
105
 
106
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carouselprops:type" type="type" identity="carouselprops" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
107
+ // CIL[DOC-MACRO purpose="Defines the props accepted by the Carousel component"]
108
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the CarouselProps interface with options, plugins, orientation, and setApi"]
109
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
110
+ // CIL[DOC-CONTRACT inputs="none" outputs="CarouselProps type declaration" errors="none" side_effects="none"]
111
+ // CIL[DOC-MICRO logic_summary="Describes the public props for the Carousel component including optional opts, plugins, orientation, and setApi callback." notable_decisions="[]"]
112
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
113
+ // CIL[DOC-STABILITY stability="stable"]
38
114
  type CarouselProps = {
39
115
  opts?: CarouselOptions
40
116
  plugins?: CarouselPlugin
41
117
  orientation?: "horizontal" | "vertical"
42
118
  setApi?: (api: CarouselApi) => void
43
119
  }
120
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the props accepted by the Carousel component'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
121
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
122
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
123
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
124
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
125
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
126
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carouselprops:type"]
44
127
 
128
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carouselcontextprops:type" type="type" identity="carouselcontextprops" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
129
+ // CIL[DOC-MACRO purpose="Defines the context shape consumed by nested Carousel subcomponents"]
130
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the CarouselContextProps interface"]
131
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
132
+ // CIL[DOC-CONTRACT inputs="none" outputs="CarouselContextProps type declaration" errors="none" side_effects="none"]
133
+ // CIL[DOC-MICRO logic_summary="Extends CarouselProps with carouselRef, api, scroll handlers, and scrollability booleans." notable_decisions="[]"]
134
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
135
+ // CIL[DOC-STABILITY stability="stable"]
45
136
  type CarouselContextProps = {
46
137
  carouselRef: ReturnType<typeof useEmblaCarousel>[0]
47
138
  api: ReturnType<typeof useEmblaCarousel>[1]
@@ -50,23 +141,39 @@ type CarouselContextProps = {
50
141
  canScrollPrev: boolean
51
142
  canScrollNext: boolean
52
143
  } & CarouselProps
144
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the context shape consumed by nested Carousel subcomponents'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
145
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
146
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
147
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
148
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
149
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
150
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carouselcontextprops:type"]
53
151
 
54
- const CarouselContext = React.createContext<CarouselContextProps | null>(null)
55
- // CIL[END chunk_id="carousel_module_header_1783881474"]
56
- // CIL[BEGIN chunk_id="carousel_usecarousel_1783881474" type="function" identity="useCarousel" parent="none"]
57
- // CIL[DOC-MACRO purpose="Hook to access carousel context with error handling"]
58
- // CIL[DOC-RESPONSIBILITY responsibility="Provide safe access to carousel context and API"]
59
- // CIL[DOC-CONTEXT module="ui.carousel" layer="component" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
60
- // CIL[DOC-CONTRACT inputs="none" outputs="CarouselContextProps" errors="throws if not in Carousel" side_effects="none"]
61
- // CIL[DOC-MICRO logic_summary="Retrieves carousel context and throws descriptive error if missing" notable_decisions="['context validation', 'developer-friendly error messages']"]
62
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
152
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carouselcontext:constant" type="constant" identity="carouselcontext" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
153
+ // CIL[DOC-MACRO purpose="Creates the React context for Carousel subcomponent communication"]
154
+ // CIL[DOC-RESPONSIBILITY responsibility="Initialize the CarouselContext with a null default"]
155
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
156
+ // CIL[DOC-CONTRACT inputs="none" outputs="CarouselContext constant" errors="none" side_effects="none"]
157
+ // CIL[DOC-MICRO logic_summary="Creates a React context typed to CarouselContextProps or null." notable_decisions="[]"]
158
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
63
159
  // CIL[DOC-STABILITY stability="stable"]
64
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 4. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
65
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 4. Total affected: 4."]
66
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
67
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
160
+ const CarouselContext = React.createContext<CarouselContextProps | null>(null)
161
+ // CIL[DOC-VECTOR type="context" content="purpose='Creates the React context for Carousel subcomponent communication'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
162
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
163
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
164
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
68
165
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
69
166
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
167
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carouselcontext:constant"]
168
+
169
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:usecarousel:function" type="function" identity="usecarousel" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
170
+ // CIL[DOC-MACRO purpose="Hook to access the Carousel context from subcomponents"]
171
+ // CIL[DOC-RESPONSIBILITY responsibility="Return the CarouselContext value or throw if used outside a Carousel"]
172
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
173
+ // CIL[DOC-CONTRACT inputs="none" outputs="CarouselContextProps" errors="Throws if context is null" side_effects="none"]
174
+ // CIL[DOC-MICRO logic_summary="Reads React context and throws an error when not inside a Carousel provider." notable_decisions="[]"]
175
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
176
+ // CIL[DOC-STABILITY stability="stable"]
70
177
  function useCarousel() {
71
178
  const context = React.useContext(CarouselContext)
72
179
 
@@ -76,21 +183,22 @@ function useCarousel() {
76
183
 
77
184
  return context
78
185
  }
79
- // CIL[END chunk_id="carousel_usecarousel_1783881474"]
80
- // CIL[BEGIN chunk_id="carousel_carousel_1783881474" type="function" identity="Carousel" parent="none"]
81
- // CIL[DOC-MACRO purpose="Main carousel component with orientation support and keyboard navigation"]
82
- // CIL[DOC-RESPONSIBILITY responsibility="Manage carousel state, navigation, and context provision"]
83
- // CIL[DOC-CONTEXT module="ui.carousel" layer="component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
84
- // CIL[DOC-CONTRACT inputs="none" outputs="carousel container with context" errors="none" side_effects="provides context, manages state"]
85
- // CIL[DOC-MICRO logic_summary="Integrates Embla Carousel, manages scroll state, handles keyboard events" notable_decisions="['embla integration', 'keyboard navigation', 'context provision pattern']"]
86
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
87
- // CIL[DOC-STABILITY stability="stable"]
88
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/layout/Sidebar.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
89
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
90
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
91
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
186
+ // CIL[DOC-VECTOR type="context" content="purpose='Hook to access the Carousel context from subcomponents'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
187
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
188
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
189
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
92
190
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
93
191
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
192
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:usecarousel:function"]
193
+
194
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carousel:function" type="function" identity="carousel" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
195
+ // CIL[DOC-MACRO purpose="Main Carousel component that wires Embla and exposes context to children"]
196
+ // CIL[DOC-RESPONSIBILITY responsibility="Initialize the Embla carousel, track scrollability, handle keyboard input, and render the provider"]
197
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
198
+ // CIL[DOC-CONTRACT inputs="props: React.ComponentProps<'div'> & CarouselProps" outputs="JSX element with CarouselContext.Provider and a keyboard-handled container" errors="none" side_effects="Registers Embla select/reInit event handlers and keyboard event handling"]
199
+ // CIL[DOC-MICRO logic_summary="Creates an Embla instance, manages canScrollPrev/Next state, binds keyboard navigation, and passes values to context." notable_decisions="[]"]
200
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
201
+ // CIL[DOC-STABILITY stability="stable"]
94
202
  function Carousel({
95
203
  orientation = "horizontal",
96
204
  opts,
@@ -180,21 +288,22 @@ function Carousel({
180
288
  </CarouselContext.Provider>
181
289
  )
182
290
  }
183
- // CIL[END chunk_id="carousel_carousel_1783881474"]
184
- // CIL[BEGIN chunk_id="carousel_carouselcontent_1783881474" type="function" identity="CarouselContent" parent="none"]
185
- // CIL[DOC-MACRO purpose="Carousel content container with orientation-aware layout"]
186
- // CIL[DOC-RESPONSIBILITY responsibility="Provide scrollable content area with proper ref attachment"]
187
- // CIL[DOC-CONTEXT module="ui.carousel" layer="component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
188
- // CIL[DOC-CONTRACT inputs="none" outputs="scrollable content container" errors="none" side_effects="renders DOM"]
189
- // CIL[DOC-MICRO logic_summary="Attaches carousel ref, applies orientation-specific flex layout" notable_decisions="['orientation-aware layout', 'ref attachment pattern']"]
190
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
191
- // CIL[DOC-STABILITY stability="stable"]
192
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 1. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, \."]
193
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
194
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
195
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
291
+ // CIL[DOC-VECTOR type="context" content="purpose='Main Carousel component that wires Embla and exposes context to children'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
292
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
293
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
294
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
196
295
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
197
296
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
297
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carousel:function"]
298
+
299
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carouselcontent:function" type="function" identity="carouselcontent" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
300
+ // CIL[DOC-MACRO purpose="Renders the scrollable viewport and track for carousel items"]
301
+ // CIL[DOC-RESPONSIBILITY responsibility="Apply the carousel ref and orientation styles to the content wrapper"]
302
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
303
+ // CIL[DOC-CONTRACT inputs="className, ...props: React.ComponentProps<'div'>" outputs="JSX element with overflow-hidden viewport and flex track" errors="none" side_effects="none"]
304
+ // CIL[DOC-MICRO logic_summary="Receives the Embla ref and orientation from context and renders the inner track with orientation-specific spacing." notable_decisions="[]"]
305
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
306
+ // CIL[DOC-STABILITY stability="stable"]
198
307
  function CarouselContent({ className, ...props }: React.ComponentProps<"div">) {
199
308
  const { carouselRef, orientation } = useCarousel()
200
309
 
@@ -215,21 +324,22 @@ function CarouselContent({ className, ...props }: React.ComponentProps<"div">) {
215
324
  </div>
216
325
  )
217
326
  }
218
- // CIL[END chunk_id="carousel_carouselcontent_1783881474"]
219
- // CIL[BEGIN chunk_id="carousel_carouselitem_1783881474" type="function" identity="CarouselItem" parent="none"]
220
- // CIL[DOC-MACRO purpose="Individual carousel slide with orientation-aware spacing"]
221
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled container for individual carousel slides"]
222
- // CIL[DOC-CONTEXT module="ui.carousel" layer="component" related_files="[\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
223
- // CIL[DOC-CONTRACT inputs="none" outputs="slide container element" errors="none" side_effects="renders DOM"]
224
- // CIL[DOC-MICRO logic_summary="Applies orientation-specific padding and slide layout styling" notable_decisions="['orientation-aware spacing', 'accessibility roles']"]
225
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
226
- // CIL[DOC-STABILITY stability="stable"]
227
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
228
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
229
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
230
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
327
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the scrollable viewport and track for carousel items'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
328
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
329
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
330
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
231
331
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
232
332
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
333
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carouselcontent:function"]
334
+
335
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carouselitem:function" type="function" identity="carouselitem" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
336
+ // CIL[DOC-MACRO purpose="Renders a single slide inside the Carousel track"]
337
+ // CIL[DOC-RESPONSIBILITY responsibility="Apply slide role and orientation-specific padding to each item"]
338
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
339
+ // CIL[DOC-CONTRACT inputs="className, ...props: React.ComponentProps<'div'>" outputs="JSX slide element" errors="none" side_effects="none"]
340
+ // CIL[DOC-MICRO logic_summary="Renders a group with aria-roledescription 'slide' and orientation padding." notable_decisions="[]"]
341
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
342
+ // CIL[DOC-STABILITY stability="stable"]
233
343
  function CarouselItem({ className, ...props }: React.ComponentProps<"div">) {
234
344
  const { orientation } = useCarousel()
235
345
 
@@ -247,21 +357,22 @@ function CarouselItem({ className, ...props }: React.ComponentProps<"div">) {
247
357
  />
248
358
  )
249
359
  }
250
- // CIL[END chunk_id="carousel_carouselitem_1783881474"]
251
- // CIL[BEGIN chunk_id="carousel_carouselprevious_1783881474" type="function" identity="CarouselPrevious" parent="none"]
252
- // CIL[DOC-MACRO purpose="Previous navigation button with orientation-aware positioning"]
253
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled previous button with state management"]
254
- // CIL[DOC-CONTEXT module="ui.carousel" layer="component" related_files="[]"]
255
- // CIL[DOC-CONTRACT inputs="none" outputs="navigation button component" errors="none" side_effects="renders DOM, triggers scroll"]
256
- // CIL[DOC-MICRO logic_summary="Applies orientation-specific positioning and manages disabled state" notable_decisions="['orientation-aware positioning', 'state management integration']"]
257
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
258
- // CIL[DOC-STABILITY stability="stable"]
259
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
260
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
261
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
262
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
360
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a single slide inside the Carousel track'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
361
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
362
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
363
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
263
364
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
264
365
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
366
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carouselitem:function"]
367
+
368
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carouselprevious:function" type="function" identity="carouselprevious" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
369
+ // CIL[DOC-MACRO purpose="Renders the previous-slide control button"]
370
+ // CIL[DOC-RESPONSIBILITY responsibility="Scroll the carousel to the previous item when enabled"]
371
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
372
+ // CIL[DOC-CONTRACT inputs="props: React.ComponentProps<typeof Button> with optional variant, size, className" outputs="Button element" errors="none" side_effects="Calls scrollPrev on click"]
373
+ // CIL[DOC-MICRO logic_summary="Displays a ChevronLeft button positioned absolutely; disabled when no previous slide is available." notable_decisions="[]"]
374
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
375
+ // CIL[DOC-STABILITY stability="stable"]
265
376
  function CarouselPrevious({
266
377
  className,
267
378
  variant = "outline",
@@ -291,21 +402,22 @@ function CarouselPrevious({
291
402
  </Button>
292
403
  )
293
404
  }
294
- // CIL[END chunk_id="carousel_carouselprevious_1783881474"]
295
- // CIL[BEGIN chunk_id="carousel_carouselnext_1783881474" type="function" identity="CarouselNext" parent="none"]
296
- // CIL[DOC-MACRO purpose="Next navigation button with orientation-aware positioning"]
297
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled next button with state management"]
298
- // CIL[DOC-CONTEXT module="ui.carousel" layer="component" related_files="[]"]
299
- // CIL[DOC-CONTRACT inputs="none" outputs="navigation button component" errors="none" side_effects="renders DOM, triggers scroll"]
300
- // CIL[DOC-MICRO logic_summary="Applies orientation-specific positioning and manages disabled state" notable_decisions="['orientation-aware positioning', 'state management integration']"]
301
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
302
- // CIL[DOC-STABILITY stability="stable"]
303
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
304
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
305
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
306
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
405
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the previous-slide control button'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
406
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
407
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
408
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
307
409
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
308
410
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
411
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carouselprevious:function"]
412
+
413
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:carouselnext:function" type="function" identity="carouselnext" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
414
+ // CIL[DOC-MACRO purpose="Renders the next-slide control button"]
415
+ // CIL[DOC-RESPONSIBILITY responsibility="Scroll the carousel to the next item when enabled"]
416
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
417
+ // CIL[DOC-CONTRACT inputs="props: React.ComponentProps<typeof Button> with optional variant, size, className" outputs="Button element" errors="none" side_effects="Calls scrollNext on click"]
418
+ // CIL[DOC-MICRO logic_summary="Displays a ChevronRight button positioned absolutely; disabled when no next slide is available." notable_decisions="[]"]
419
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
420
+ // CIL[DOC-STABILITY stability="stable"]
309
421
  function CarouselNext({
310
422
  className,
311
423
  variant = "outline",
@@ -335,21 +447,22 @@ function CarouselNext({
335
447
  </Button>
336
448
  )
337
449
  }
338
- // CIL[END chunk_id="carousel_carouselnext_1783881474"]
339
- // CIL[BEGIN chunk_id="carousel_exports_1783881474" type="exports" identity="exports" parent="none"]
340
- // CIL[DOC-MACRO purpose="Export carousel components and types for public API"]
341
- // CIL[DOC-RESPONSIBILITY responsibility="Provide public interface for carousel component library"]
342
- // CIL[DOC-CONTEXT module="ui.carousel" layer="component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\"]"]
343
- // CIL[DOC-CONTRACT inputs="none" outputs="carousel components, types, and hook" errors="none" side_effects="module exports"]
344
- // CIL[DOC-MICRO logic_summary="Exports all carousel components, types, and utilities for consumption" notable_decisions="['comprehensive export strategy', 'type exports included', 'hook exports']"]
345
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
346
- // CIL[DOC-STABILITY stability="stable"]
347
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/layout/Sidebar.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/TypeDetailPage.tsx."]
348
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
349
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
350
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
450
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the next-slide control button'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
451
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
452
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
453
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
351
454
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
352
455
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
456
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:carouselnext:function"]
457
+
458
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/carousel.tsx:export_list:export" type="export" identity="export_list" parent="~/.framework/src/components/ui/carousel.tsx:module_header:module_header"]
459
+ // CIL[DOC-MACRO purpose="Re-exports the public Carousel component surface"]
460
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose Carousel, subcomponents, hooks, and types for module consumers"]
461
+ // CIL[DOC-CONTEXT module="carousel" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/carousel.tsx,.framework/src/lib/utils.ts"]
462
+ // CIL[DOC-CONTRACT inputs="none" outputs="Named exports of component and type symbols" errors="none" side_effects="none"]
463
+ // CIL[DOC-MICRO logic_summary="Lists all public identifiers for external consumers." notable_decisions="[]"]
464
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
465
+ // CIL[DOC-STABILITY stability="stable"]
353
466
  export {
354
467
  type CarouselApi,
355
468
  Carousel,
@@ -359,4 +472,10 @@ export {
359
472
  CarouselNext,
360
473
  useCarousel,
361
474
  }
362
- // CIL[END chunk_id="carousel_exports_1783881474"]
475
+ // CIL[DOC-VECTOR type="context" content="purpose='Re-exports the public Carousel component surface'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
476
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
477
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
478
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
479
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
480
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
481
+ // CIL[END stable_id="~/.framework/src/components/ui/carousel.tsx:export_list:export"]