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,47 +1,33 @@
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
- // CIL[BEGIN chunk_id="breadcrumb_module_header_1783881474" type="module_header" identity="module_header" parent="none"]
11
- // CIL[DOC-MACRO purpose="Breadcrumb navigation component library with Radix integration"]
12
- // CIL[DOC-RESPONSIBILITY responsibility="Provide breadcrumb infrastructure and navigation utilities"]
13
- // CIL[DOC-CONTEXT module="ui.breadcrumb" layer="component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
14
- // CIL[DOC-CONTRACT inputs="none" outputs="React, Slot, utils, navigation icons" errors="none" side_effects="none"]
15
- // CIL[DOC-MICRO logic_summary="Imports React, Radix Slot, utility functions, and navigation icons" notable_decisions="['radix-ui integration', 'lucide icon usage', 'navigation pattern']"]
16
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/breadcrumb.tsx:module_header:module_header" type="module_header" identity="module_header" parent=""]
2
+ // CIL[DOC-MACRO purpose="Provides the set of breadcrumb UI primitives for navigation patterns."]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Imports required dependencies and exports the breadcrumb component set."]
4
+ // CIL[DOC-CONTEXT module="ui/breadcrumb" layer="components/ui" related_files=".framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="N/A" errors="N/A" side_effects="N/A"]
6
+ // CIL[DOC-MICRO logic_summary="Imports React, radix Slot, local utils, and Lucide icons." notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
17
8
  // CIL[DOC-STABILITY stability="stable"]
18
- // CIL[DOC-AUDIENCE audience="developer"]
19
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
20
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
21
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
22
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
23
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
24
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
9
+ // CIL[DOC-AUDIENCE audience="frontend-developers, ui-consumers"]
25
10
  import * as React from "react"
26
11
  import { Slot } from "radix-ui"
27
12
 
28
13
  import { cn } from "@/lib/utils"
29
14
  import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"
30
- // CIL[END chunk_id="breadcrumb_module_header_1783881474"]
31
- // CIL[BEGIN chunk_id="breadcrumb_breadcrumb_1783881474" type="function" identity="Breadcrumb" parent="none"]
32
- // CIL[DOC-MACRO purpose="Main breadcrumb navigation container with accessibility"]
33
- // CIL[DOC-RESPONSIBILITY responsibility="Provide semantic breadcrumb navigation wrapper"]
34
- // CIL[DOC-CONTEXT module="ui.breadcrumb" layer="component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
35
- // CIL[DOC-CONTRACT inputs="none" outputs="semantic nav element" errors="none" side_effects="renders DOM"]
36
- // CIL[DOC-MICRO logic_summary="Wraps nav element with proper ARIA label and slot attribution" notable_decisions="['semantic HTML', 'accessibility attributes', 'slot pattern']"]
37
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
38
- // CIL[DOC-STABILITY stability="stable"]
39
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
40
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
41
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
42
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
15
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides the set of breadcrumb UI primitives for navigation patterns.'; No verified external callers; imports: .framework/src/lib/utils.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"]
43
19
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
44
20
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
21
+ // CIL[END stable_id="~/.framework/src/components/ui/breadcrumb.tsx:module_header:module_header"]
22
+
23
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumb:function" type="function" identity="Breadcrumb" parent="~/.framework/src/components/ui/breadcrumb.tsx:module_header:module_header"]
24
+ // CIL[DOC-MACRO purpose="Renders a semantic <nav> wrapper for breadcrumb navigation."]
25
+ // CIL[DOC-RESPONSIBILITY responsibility="Wraps children in a nav element with an accessible aria-label."]
26
+ // CIL[DOC-CONTEXT module="ui/breadcrumb" layer="components/ui" related_files=".framework/src/components/ui/breadcrumb.tsx,.framework/src/lib/utils.ts"]
27
+ // CIL[DOC-CONTRACT inputs="className?: string, props: React.ComponentProps<'nav'>" outputs="JSX.Element" errors="None" side_effects="None"]
28
+ // CIL[DOC-MICRO logic_summary="Returns a nav element with aria-label=breadcrumb and merged className via cn." notable_decisions="[]"]
29
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
30
+ // CIL[DOC-STABILITY stability="stable"]
45
31
  function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">) {
46
32
  return (
47
33
  <nav
@@ -52,21 +38,22 @@ function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">) {
52
38
  />
53
39
  )
54
40
  }
55
- // CIL[END chunk_id="breadcrumb_breadcrumb_1783881474"]
56
- // CIL[BEGIN chunk_id="breadcrumb_breadcrumblist_1783881474" type="function" identity="BreadcrumbList" parent="none"]
57
- // CIL[DOC-MACRO purpose="Breadcrumb list container with responsive layout"]
58
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled ordered list for breadcrumb items"]
59
- // CIL[DOC-CONTEXT module="ui.breadcrumb" layer="component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
60
- // CIL[DOC-CONTRACT inputs="none" outputs="styled ol element" errors="none" side_effects="renders DOM"]
61
- // CIL[DOC-MICRO logic_summary="Applies flex layout with responsive wrapping and text styling" notable_decisions="['flex layout', 'responsive design', 'text handling']"]
62
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
63
- // CIL[DOC-STABILITY stability="stable"]
64
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 1. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
65
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 2."]
66
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
67
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
41
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a semantic <nav> wrapper for breadcrumb navigation.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
42
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
43
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
44
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
68
45
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
69
46
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
47
+ // CIL[END stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumb:function"]
48
+
49
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumblist:function" type="function" identity="BreadcrumbList" parent="~/.framework/src/components/ui/breadcrumb.tsx:module_header:module_header"]
50
+ // CIL[DOC-MACRO purpose="Renders the ordered list of breadcrumb items."]
51
+ // CIL[DOC-RESPONSIBILITY responsibility="Displays an ordered list styled for breadcrumb navigation."]
52
+ // CIL[DOC-CONTEXT module="ui/breadcrumb" layer="components/ui" related_files=".framework/src/components/ui/breadcrumb.tsx,.framework/src/lib/utils.ts"]
53
+ // CIL[DOC-CONTRACT inputs="className?: string, props: React.ComponentProps<'ol'>" outputs="JSX.Element" errors="None" side_effects="None"]
54
+ // CIL[DOC-MICRO logic_summary="Returns an ol element with flex wrap and muted-foreground styling." notable_decisions="[]"]
55
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
56
+ // CIL[DOC-STABILITY stability="stable"]
70
57
  function BreadcrumbList({ className, ...props }: React.ComponentProps<"ol">) {
71
58
  return (
72
59
  <ol
@@ -79,21 +66,22 @@ function BreadcrumbList({ className, ...props }: React.ComponentProps<"ol">) {
79
66
  />
80
67
  )
81
68
  }
82
- // CIL[END chunk_id="breadcrumb_breadcrumblist_1783881474"]
83
- // CIL[BEGIN chunk_id="breadcrumb_breadcrumbitem_1783881474" type="function" identity="BreadcrumbItem" parent="none"]
84
- // CIL[DOC-MACRO purpose="Individual breadcrumb item with inline layout"]
85
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled list item for breadcrumb navigation"]
86
- // CIL[DOC-CONTEXT module="ui.breadcrumb" layer="component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
87
- // CIL[DOC-CONTRACT inputs="none" outputs="styled li element" errors="none" side_effects="renders DOM"]
88
- // CIL[DOC-MICRO logic_summary="Applies inline flex layout with consistent spacing for items" notable_decisions="['inline layout', 'consistent spacing pattern']"]
89
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
90
- // CIL[DOC-STABILITY stability="stable"]
91
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 1. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, \."]
92
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 2."]
93
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
94
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
69
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the ordered list of breadcrumb items.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
70
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
71
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
72
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
95
73
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
96
74
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
75
+ // CIL[END stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumblist:function"]
76
+
77
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumbitem:function" type="function" identity="BreadcrumbItem" parent="~/.framework/src/components/ui/breadcrumb.tsx:module_header:module_header"]
78
+ // CIL[DOC-MACRO purpose="Renders a single item in the breadcrumb list."]
79
+ // CIL[DOC-RESPONSIBILITY responsibility="Represents one breadcrumb entry as an inline list item."]
80
+ // CIL[DOC-CONTEXT module="ui/breadcrumb" layer="components/ui" related_files=".framework/src/components/ui/breadcrumb.tsx,.framework/src/lib/utils.ts"]
81
+ // CIL[DOC-CONTRACT inputs="className?: string, props: React.ComponentProps<'li'>" outputs="JSX.Element" errors="None" side_effects="None"]
82
+ // CIL[DOC-MICRO logic_summary="Returns an li element with inline-flex gap styling." notable_decisions="[]"]
83
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
84
+ // CIL[DOC-STABILITY stability="stable"]
97
85
  function BreadcrumbItem({ className, ...props }: React.ComponentProps<"li">) {
98
86
  return (
99
87
  <li
@@ -103,21 +91,22 @@ function BreadcrumbItem({ className, ...props }: React.ComponentProps<"li">) {
103
91
  />
104
92
  )
105
93
  }
106
- // CIL[END chunk_id="breadcrumb_breadcrumbitem_1783881474"]
107
- // CIL[BEGIN chunk_id="breadcrumb_breadcrumblink_1783881474" type="function" identity="BreadcrumbLink" parent="none"]
108
- // CIL[DOC-MACRO purpose="Breadcrumb link with composition support and hover styling"]
109
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled navigation link with asChild pattern"]
110
- // CIL[DOC-CONTEXT module="ui.breadcrumb" layer="component" related_files="[]"]
111
- // CIL[DOC-CONTRACT inputs="none" outputs="styled link or Slot component" errors="none" side_effects="renders DOM"]
112
- // CIL[DOC-MICRO logic_summary="Uses Radix Slot for composition, applies hover color transitions" notable_decisions="['composition pattern', 'hover state styling', 'slot integration']"]
113
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
114
- // CIL[DOC-STABILITY stability="stable"]
115
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
116
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
117
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
118
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
94
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a single item in the breadcrumb list.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
95
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
96
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
97
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
119
98
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
120
99
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
100
+ // CIL[END stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumbitem:function"]
101
+
102
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumblink:function" type="function" identity="BreadcrumbLink" parent="~/.framework/src/components/ui/breadcrumb.tsx:module_header:module_header"]
103
+ // CIL[DOC-MACRO purpose="Renders a clickable link within a breadcrumb item."]
104
+ // CIL[DOC-RESPONSIBILITY responsibility="Provides a navigational link or slottable anchor for a breadcrumb item."]
105
+ // CIL[DOC-CONTEXT module="ui/breadcrumb" layer="components/ui" related_files=".framework/src/components/ui/breadcrumb.tsx,.framework/src/lib/utils.ts"]
106
+ // CIL[DOC-CONTRACT inputs="asChild?: boolean, className?: string, props: React.ComponentProps<'a'>" outputs="JSX.Element" errors="None" side_effects="None"]
107
+ // CIL[DOC-MICRO logic_summary="Selects between Slot.Root or an a tag based on asChild, applies hover classes." notable_decisions="[]"]
108
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
109
+ // CIL[DOC-STABILITY stability="stable"]
121
110
  function BreadcrumbLink({
122
111
  asChild,
123
112
  className,
@@ -135,21 +124,22 @@ function BreadcrumbLink({
135
124
  />
136
125
  )
137
126
  }
138
- // CIL[END chunk_id="breadcrumb_breadcrumblink_1783881474"]
139
- // CIL[BEGIN chunk_id="breadcrumb_breadcrumbpage_1783881474" type="function" identity="BreadcrumbPage" parent="none"]
140
- // CIL[DOC-MACRO purpose="Current page indicator with semantic styling"]
141
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled span for current breadcrumb page"]
142
- // CIL[DOC-CONTEXT module="ui.breadcrumb" layer="component" related_files="[]"]
143
- // CIL[DOC-CONTRACT inputs="none" outputs="styled span element" errors="none" side_effects="renders DOM"]
144
- // CIL[DOC-MICRO logic_summary="Applies semantic attributes and foreground color for current page" notable_decisions="['semantic HTML', 'accessibility attributes', 'visual hierarchy']"]
145
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
146
- // CIL[DOC-STABILITY stability="stable"]
147
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
148
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
149
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
150
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
127
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a clickable link within a breadcrumb item.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
128
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
129
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
130
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
151
131
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
152
132
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
133
+ // CIL[END stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumblink:function"]
134
+
135
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumbpage:function" type="function" identity="BreadcrumbPage" parent="~/.framework/src/components/ui/breadcrumb.tsx:module_header:module_header"]
136
+ // CIL[DOC-MACRO purpose="Renders the current page segment in a breadcrumb."]
137
+ // CIL[DOC-RESPONSIBILITY responsibility="Displays the active page with current-page semantics."]
138
+ // CIL[DOC-CONTEXT module="ui/breadcrumb" layer="components/ui" related_files=".framework/src/components/ui/breadcrumb.tsx,.framework/src/lib/utils.ts"]
139
+ // CIL[DOC-CONTRACT inputs="className?: string, props: React.ComponentProps<'span'>" outputs="JSX.Element" errors="None" side_effects="None"]
140
+ // CIL[DOC-MICRO logic_summary="Returns a span with role=link, aria-current=page, and foreground styling." notable_decisions="[]"]
141
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
142
+ // CIL[DOC-STABILITY stability="stable"]
153
143
  function BreadcrumbPage({ className, ...props }: React.ComponentProps<"span">) {
154
144
  return (
155
145
  <span
@@ -162,21 +152,22 @@ function BreadcrumbPage({ className, ...props }: React.ComponentProps<"span">) {
162
152
  />
163
153
  )
164
154
  }
165
- // CIL[END chunk_id="breadcrumb_breadcrumbpage_1783881474"]
166
- // CIL[BEGIN chunk_id="breadcrumb_breadcrumbseparator_1783881474" type="function" identity="BreadcrumbSeparator" parent="none"]
167
- // CIL[DOC-MACRO purpose="Breadcrumb separator with default chevron icon"]
168
- // CIL[DOC-RESPONSIBILITY responsibility="Provide visual separator between breadcrumb items"]
169
- // CIL[DOC-CONTEXT module="ui.breadcrumb" layer="component" related_files="[]"]
170
- // CIL[DOC-CONTRACT inputs="none" outputs="separator li element" errors="none" side_effects="renders DOM"]
171
- // CIL[DOC-MICRO logic_summary="Uses semantic presentation role with customizable icon fallback" notable_decisions="['semantic HTML', 'icon fallback pattern', 'accessibility attributes']"]
172
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
173
- // CIL[DOC-STABILITY stability="stable"]
174
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
175
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
176
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
177
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
155
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the current page segment in a breadcrumb.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
156
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
157
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
158
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
178
159
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
179
160
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
161
+ // CIL[END stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumbpage:function"]
162
+
163
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumbseparator:function" type="function" identity="BreadcrumbSeparator" parent="~/.framework/src/components/ui/breadcrumb.tsx:module_header:module_header"]
164
+ // CIL[DOC-MACRO purpose="Renders a visual separator between breadcrumb items."]
165
+ // CIL[DOC-RESPONSIBILITY responsibility="Separates breadcrumb items with a chevron icon."]
166
+ // CIL[DOC-CONTEXT module="ui/breadcrumb" layer="components/ui" related_files=".framework/src/components/ui/breadcrumb.tsx,.framework/src/lib/utils.ts"]
167
+ // CIL[DOC-CONTRACT inputs="children?: React.ReactNode, className?: string, props: React.ComponentProps<'li'>" outputs="JSX.Element" errors="None" side_effects="None"]
168
+ // CIL[DOC-MICRO logic_summary="Returns an li with role=presentation, renders ChevronRightIcon by default." notable_decisions="[]"]
169
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
170
+ // CIL[DOC-STABILITY stability="stable"]
180
171
  function BreadcrumbSeparator({
181
172
  children,
182
173
  className,
@@ -196,21 +187,22 @@ function BreadcrumbSeparator({
196
187
  </li>
197
188
  )
198
189
  }
199
- // CIL[END chunk_id="breadcrumb_breadcrumbseparator_1783881474"]
200
- // CIL[BEGIN chunk_id="breadcrumb_breadcrumbellipsis_1783881474" type="function" identity="BreadcrumbEllipsis" parent="none"]
201
- // CIL[DOC-MACRO purpose="Breadcrumb ellipsis indicator with accessibility support"]
202
- // CIL[DOC-RESPONSIBILITY responsibility="Provide visual indicator for collapsed breadcrumb items"]
203
- // CIL[DOC-CONTEXT module="ui.breadcrumb" layer="component" related_files="[]"]
204
- // CIL[DOC-CONTRACT inputs="none" outputs="ellipsis span element" errors="none" side_effects="renders DOM"]
205
- // CIL[DOC-MICRO logic_summary="Uses semantic presentation role with icon and screen reader text" notable_decisions="['semantic HTML', 'accessibility support', 'icon integration']"]
206
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
207
- // CIL[DOC-STABILITY stability="stable"]
208
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
209
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
210
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
211
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
190
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a visual separator between breadcrumb items.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
191
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
192
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
193
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
212
194
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
213
195
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
196
+ // CIL[END stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumbseparator:function"]
197
+
198
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumbellipsis:function" type="function" identity="BreadcrumbEllipsis" parent="~/.framework/src/components/ui/breadcrumb.tsx:module_header:module_header"]
199
+ // CIL[DOC-MACRO purpose="Renders a collapsed-overflow indicator for long breadcrumbs."]
200
+ // CIL[DOC-RESPONSIBILITY responsibility="Indicates collapsed breadcrumb items while preserving screen-reader text."]
201
+ // CIL[DOC-CONTEXT module="ui/breadcrumb" layer="components/ui" related_files=".framework/src/components/ui/breadcrumb.tsx,.framework/src/lib/utils.ts"]
202
+ // CIL[DOC-CONTRACT inputs="className?: string, props: React.ComponentProps<'span'>" outputs="JSX.Element" errors="None" side_effects="None"]
203
+ // CIL[DOC-MICRO logic_summary="Returns a span with MoreHorizontalIcon and an sr-only More label." notable_decisions="[]"]
204
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
205
+ // CIL[DOC-STABILITY stability="stable"]
214
206
  function BreadcrumbEllipsis({
215
207
  className,
216
208
  ...props
@@ -232,21 +224,22 @@ function BreadcrumbEllipsis({
232
224
  </span>
233
225
  )
234
226
  }
235
- // CIL[END chunk_id="breadcrumb_breadcrumbellipsis_1783881474"]
236
- // CIL[BEGIN chunk_id="breadcrumb_exports_1783881474" type="exports" identity="exports" parent="none"]
237
- // CIL[DOC-MACRO purpose="Export breadcrumb components for public API"]
238
- // CIL[DOC-RESPONSIBILITY responsibility="Provide public interface for breadcrumb component library"]
239
- // CIL[DOC-CONTEXT module="ui.breadcrumb" layer="component" related_files="[]"]
240
- // CIL[DOC-CONTRACT inputs="none" outputs="all breadcrumb components" errors="none" side_effects="module exports"]
241
- // CIL[DOC-MICRO logic_summary="Exports comprehensive breadcrumb component set for navigation" notable_decisions="['comprehensive export strategy', 'navigation component library']"]
242
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
243
- // CIL[DOC-STABILITY stability="stable"]
244
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
245
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
246
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
247
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
227
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a collapsed-overflow indicator for long breadcrumbs.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
228
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
229
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
230
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
248
231
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
249
232
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
233
+ // CIL[END stable_id="~/.framework/src/components/ui/breadcrumb.tsx:breadcrumbellipsis:function"]
234
+
235
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/breadcrumb.tsx:module_exports:module_exports" type="module_exports" identity="module_exports" parent="~/.framework/src/components/ui/breadcrumb.tsx:module_header:module_header"]
236
+ // CIL[DOC-MACRO purpose="Re-exports the public breadcrumb component set for consumers."]
237
+ // CIL[DOC-RESPONSIBILITY responsibility="Exposes named component exports from the breadcrumb module."]
238
+ // CIL[DOC-CONTEXT module="ui/breadcrumb" layer="components/ui" related_files=".framework/src/components/ui/breadcrumb.tsx,.framework/src/lib/utils.ts"]
239
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="Named component exports" errors="None" side_effects="None"]
240
+ // CIL[DOC-MICRO logic_summary="Lists the named component exports in a single export block." notable_decisions="[]"]
241
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
242
+ // CIL[DOC-STABILITY stability="stable"]
250
243
  export {
251
244
  Breadcrumb,
252
245
  BreadcrumbList,
@@ -256,4 +249,10 @@ export {
256
249
  BreadcrumbSeparator,
257
250
  BreadcrumbEllipsis,
258
251
  }
259
- // CIL[END chunk_id="breadcrumb_exports_1783881474"]
252
+ // CIL[DOC-VECTOR type="context" content="purpose='Re-exports the public breadcrumb component set for consumers.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
253
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
254
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
255
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
256
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
257
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
258
+ // CIL[END stable_id="~/.framework/src/components/ui/breadcrumb.tsx:module_exports:module_exports"]
@@ -1,29 +1,33 @@
1
-
2
-
3
-
4
-
5
-
6
- // CIL[BEGIN chunk_id="button-group_module_header_1783881474" type="module_header" identity="module_header" parent="none"]
7
- // CIL[DOC-MACRO purpose="Button group component with orientation-aware styling using CVA"]
8
- // CIL[DOC-RESPONSIBILITY responsibility="Define button group variants and component infrastructure"]
9
- // CIL[DOC-CONTEXT module="ui.button-group" layer="component" related_files="[\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
10
- // CIL[DOC-CONTRACT inputs="none" outputs="buttonGroupVariants, CVA, Slot, Separator" errors="none" side_effects="none"]
11
- // CIL[DOC-MICRO logic_summary="Creates orientation-aware button group variant system with complex border management" notable_decisions="['class-variance-authority pattern', 'complex CSS selector system', 'orientation-aware styling']"]
12
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/button-group.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
2
+ // CIL[DOC-MACRO purpose="Import CVA, Radix Slot, and project utilities for the ButtonGroup UI component set"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide shared imports and dependencies for button group building blocks"]
4
+ // CIL[DOC-CONTEXT module="components/ui/button-group" layer="ui" related_files=".framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="imported utilities and dependencies" errors="none" side_effects="adds module dependencies"]
6
+ // CIL[DOC-MICRO logic_summary="Imports class-variance-authority, Radix Slot, cn utility, and the Separator component" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
13
8
  // CIL[DOC-STABILITY stability="stable"]
14
- // CIL[DOC-AUDIENCE audience="developer"]
15
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, \."]
16
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
17
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
18
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
19
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
20
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
9
+ // CIL[DOC-AUDIENCE audience="ui component consumers and maintainers"]
21
10
  import { cva, type VariantProps } from "class-variance-authority"
22
11
  import { Slot } from "radix-ui"
23
12
 
24
13
  import { cn } from "@/lib/utils"
25
14
  import { Separator } from "@/components/ui/separator"
15
+ // CIL[DOC-VECTOR type="context" content="purpose='Import CVA, Radix Slot, and project utilities for the ButtonGroup UI component set'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/separator.tsx"]
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/src/components/ui/button-group.tsx:module_header:module_header"]
26
22
 
23
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/button-group.tsx:buttongroupvariants:constant" type="constant" identity="buttonGroupVariants" parent="none"]
24
+ // CIL[DOC-MACRO purpose="Define the class-variance-authority variant map for ButtonGroup styling"]
25
+ // CIL[DOC-RESPONSIBILITY responsibility="Generate CSS classes for horizontal and vertical button group orientations"]
26
+ // CIL[DOC-CONTEXT module="components/ui/button-group" layer="ui" related_files=".framework/src/components/ui/button-group.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
27
+ // CIL[DOC-CONTRACT inputs="props: { orientation?: 'horizontal' | 'vertical' }" outputs="Tailwind class string" errors="none" side_effects="none"]
28
+ // CIL[DOC-MICRO logic_summary="Combines a base flex layout with orientation-specific border rounding, gap, and focus rules" notable_decisions="[]"]
29
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
30
+ // CIL[DOC-STABILITY stability="stable"]
27
31
  const buttonGroupVariants = cva(
28
32
  "group/button-group flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
29
33
  {
@@ -40,21 +44,22 @@ const buttonGroupVariants = cva(
40
44
  },
41
45
  }
42
46
  )
43
- // CIL[END chunk_id="button-group_module_header_1783881474"]
44
- // CIL[BEGIN chunk_id="button-group_buttongroup_1783881474" type="function" identity="ButtonGroup" parent="none"]
45
- // CIL[DOC-MACRO purpose="Main button group container with orientation support"]
46
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled button group with semantic grouping and orientation"]
47
- // CIL[DOC-CONTEXT module="ui.button-group" layer="component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
48
- // CIL[DOC-CONTRACT inputs="none" outputs="styled button group container" errors="none" side_effects="renders DOM"]
49
- // CIL[DOC-MICRO logic_summary="Applies CVA variants, sets semantic group role, handles orientation" notable_decisions="['semantic HTML', 'CVA integration', 'orientation handling']"]
50
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
51
- // CIL[DOC-STABILITY stability="stable"]
52
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
53
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
54
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
55
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
47
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the class-variance-authority variant map for ButtonGroup styling'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/separator.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"]
56
51
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
57
52
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
53
+ // CIL[END stable_id="~/.framework/src/components/ui/button-group.tsx:buttongroupvariants:constant"]
54
+
55
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/button-group.tsx:buttongroup:function" type="function" identity="ButtonGroup" parent="none"]
56
+ // CIL[DOC-MACRO purpose="Render a container that groups child buttons with role, data-slot, and orientation styling"]
57
+ // CIL[DOC-RESPONSIBILITY responsibility="Apply buttonGroupVariants classes and data attributes to a group div"]
58
+ // CIL[DOC-CONTEXT module="components/ui/button-group" layer="ui" related_files=".framework/src/components/ui/button-group.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
59
+ // CIL[DOC-CONTRACT inputs="className: string | undefined, orientation: 'horizontal' | 'vertical' | undefined, ...props: React.ComponentProps<'div'> & VariantProps<typeof buttonGroupVariants>" outputs="JSX div" errors="prop type mismatch" side_effects="renders DOM"]
60
+ // CIL[DOC-MICRO logic_summary="Applies cva-generated classes, role='group', and data-orientation; passes remaining props through" notable_decisions="[]"]
61
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
62
+ // CIL[DOC-STABILITY stability="stable"]
58
63
  function ButtonGroup({
59
64
  className,
60
65
  orientation,
@@ -70,21 +75,22 @@ function ButtonGroup({
70
75
  />
71
76
  )
72
77
  }
73
- // CIL[END chunk_id="button-group_buttongroup_1783881474"]
74
- // CIL[BEGIN chunk_id="button-group_buttongrouptext_1783881474" type="function" identity="ButtonGroupText" parent="none"]
75
- // CIL[DOC-MACRO purpose="Button group text with composition support and styling"]
76
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled text content with asChild pattern for button groups"]
77
- // CIL[DOC-CONTEXT module="ui.button-group" layer="component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
78
- // CIL[DOC-CONTRACT inputs="none" outputs="styled text or Slot component" errors="none" side_effects="renders DOM"]
79
- // CIL[DOC-MICRO logic_summary="Uses Radix Slot for composition, applies muted styling with icon handling" notable_decisions="['composition pattern', 'muted styling', 'icon integration']"]
80
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
81
- // CIL[DOC-STABILITY stability="stable"]
82
- // CIL[DOC-VECTOR type="context" content="Layer: component. 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, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, \."]
83
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
84
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
85
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
78
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a container that groups child buttons with role, data-slot, and orientation styling'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/separator.tsx"]
79
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
80
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
81
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
86
82
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
87
83
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
84
+ // CIL[END stable_id="~/.framework/src/components/ui/button-group.tsx:buttongroup:function"]
85
+
86
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/button-group.tsx:buttongrouptext:function" type="function" identity="ButtonGroupText" parent="none"]
87
+ // CIL[DOC-MACRO purpose="Render a compact text or metadata element inside a button group"]
88
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a muted, rounded label slot with optional Slot.Root composition"]
89
+ // CIL[DOC-CONTEXT module="components/ui/button-group" layer="ui" related_files=".framework/src/components/ui/button-group.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
90
+ // CIL[DOC-CONTRACT inputs="className: string | undefined, asChild: boolean, ...props: React.ComponentProps<'div'> & { asChild?: boolean }" outputs="JSX div or Slot.Root" errors="none" side_effects="renders DOM"]
91
+ // CIL[DOC-MICRO logic_summary="Chooses Slot.Root when asChild is true; applies muted, rounded, small text styles" notable_decisions="[]"]
92
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
93
+ // CIL[DOC-STABILITY stability="stable"]
88
94
  function ButtonGroupText({
89
95
  className,
90
96
  asChild = false,
@@ -104,21 +110,22 @@ function ButtonGroupText({
104
110
  />
105
111
  )
106
112
  }
107
- // CIL[END chunk_id="button-group_buttongrouptext_1783881474"]
108
- // CIL[BEGIN chunk_id="button-group_buttongroupseparator_1783881474" type="function" identity="ButtonGroupSeparator" parent="none"]
109
- // CIL[DOC-MACRO purpose="Button group separator with orientation-aware styling"]
110
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled separator for button groups with orientation support"]
111
- // CIL[DOC-CONTEXT module="ui.button-group" layer="component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
112
- // CIL[DOC-CONTRACT inputs="none" outputs="styled separator component" errors="none" side_effects="renders DOM"]
113
- // CIL[DOC-MICRO logic_summary="Wraps Separator with orientation-specific styling and data attributes" notable_decisions="['separator wrapper pattern', 'orientation-aware styling', 'data attributes']"]
114
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
115
- // CIL[DOC-STABILITY stability="stable"]
116
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
117
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
118
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
119
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
113
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a compact text or metadata element inside a button group'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/separator.tsx"]
114
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
115
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
116
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
120
117
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
121
118
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
119
+ // CIL[END stable_id="~/.framework/src/components/ui/button-group.tsx:buttongrouptext:function"]
120
+
121
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/button-group.tsx:buttongroupseparator:function" type="function" identity="ButtonGroupSeparator" parent="none"]
122
+ // CIL[DOC-MACRO purpose="Render a visual separator between items in a button group"]
123
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a stretchable Separator with theme-aware input background"]
124
+ // CIL[DOC-CONTEXT module="components/ui/button-group" layer="ui" related_files=".framework/src/components/ui/button-group.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
125
+ // CIL[DOC-CONTRACT inputs="className: string | undefined, orientation: 'horizontal' | 'vertical' | undefined, ...props: React.ComponentProps<typeof Separator>" outputs="JSX Separator" errors="none" side_effects="renders DOM"]
126
+ // CIL[DOC-MICRO logic_summary="Renders a Separator with data-slot and orientation-aware background utility classes" notable_decisions="[]"]
127
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
128
+ // CIL[DOC-STABILITY stability="stable"]
122
129
  function ButtonGroupSeparator({
123
130
  className,
124
131
  orientation = "vertical",
@@ -136,25 +143,32 @@ function ButtonGroupSeparator({
136
143
  />
137
144
  )
138
145
  }
139
- // CIL[END chunk_id="button-group_buttongroupseparator_1783881474"]
140
- // CIL[BEGIN chunk_id="button-group_exports_1783881474" type="exports" identity="exports" parent="none"]
141
- // CIL[DOC-MACRO purpose="Export button group components and variants for public API"]
142
- // CIL[DOC-RESPONSIBILITY responsibility="Provide public interface for button group component library"]
143
- // CIL[DOC-CONTEXT module="ui.button-group" layer="component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
144
- // CIL[DOC-CONTRACT inputs="none" outputs="button group components and variants" errors="none" side_effects="module exports"]
145
- // CIL[DOC-MICRO logic_summary="Exports all button group components and variants for customization" notable_decisions="['export variants for customization', 'named exports pattern']"]
146
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
147
- // CIL[DOC-STABILITY stability="stable"]
148
- // 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/ui/dialog.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, \."]
149
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
150
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
151
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
146
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a visual separator between items in a button group'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/separator.tsx"]
147
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
148
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
149
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
152
150
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
153
151
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
152
+ // CIL[END stable_id="~/.framework/src/components/ui/button-group.tsx:buttongroupseparator:function"]
153
+
154
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/button-group.tsx:module_exports:module_exports" type="module_exports" identity="module_exports" parent="none"]
155
+ // CIL[DOC-MACRO purpose="Expose the ButtonGroup, ButtonGroupText, ButtonGroupSeparator, and buttonGroupVariants API"]
156
+ // CIL[DOC-RESPONSIBILITY responsibility="Named export of the public button-group module members"]
157
+ // CIL[DOC-CONTEXT module="components/ui/button-group" layer="ui" related_files=".framework/src/components/ui/button-group.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
158
+ // CIL[DOC-CONTRACT inputs="none" outputs="named exports" errors="none" side_effects="none"]
159
+ // CIL[DOC-MICRO logic_summary="Re-exports all component pieces from this module as named exports" notable_decisions="[]"]
160
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
161
+ // CIL[DOC-STABILITY stability="stable"]
154
162
  export {
155
163
  ButtonGroup,
156
164
  ButtonGroupSeparator,
157
165
  ButtonGroupText,
158
166
  buttonGroupVariants,
159
167
  }
160
- // CIL[END chunk_id="button-group_exports_1783881474"]
168
+ // CIL[DOC-VECTOR type="context" content="purpose='Expose the ButtonGroup, ButtonGroupText, ButtonGroupSeparator, and buttonGroupVariants API'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/separator.tsx"]
169
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
170
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
171
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
172
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
173
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
174
+ // CIL[END stable_id="~/.framework/src/components/ui/button-group.tsx:module_exports:module_exports"]