spine-framework 0.3.144 → 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 +20 -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,14 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/avatar.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/ui/avatar.tsx"]
2
+ // CIL[DOC-MACRO purpose="Import the dependencies and utilities used by the avatar component module"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide React, Radix UI Avatar, and the cn utility to the Avatar subcomponents"]
4
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/avatar.tsx" layer="ui" related_files=".framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="React, AvatarPrimitive, and cn bindings available to the module" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Import third-party and local dependencies required by the avatar components" notable_decisions="Uses the @/lib/utils alias to import the cn class-name utility"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.9" flags="[]"]
8
+ // CIL[DOC-STABILITY stable]
9
+ // CIL[DOC-AUDIENCE audience="developers"]
10
+
11
+
1
12
 
2
13
 
3
14
 
@@ -6,40 +17,27 @@
6
17
 
7
18
 
8
19
 
9
- // CIL[BEGIN chunk_id="avatar_module_header_1783883196" type="module_header" identity="module_header" parent="none"]
10
- // CIL[DOC-MACRO purpose="Import React and Radix UI Avatar dependencies"]
11
- // CIL[DOC-RESPONSIBILITY responsibility="Provide external dependencies for Avatar component system"]
12
- // CIL[DOC-CONTEXT module="avatar" layer="ui" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\"\\\"]"]
13
- // CIL[DOC-CONTRACT inputs="none" outputs="React, AvatarPrimitive, cn" errors="none" side_effects="none"]
14
- // CIL[DOC-MICRO logic_summary="Imports React, Radix UI Avatar primitives, and utility function" notable_decisions="[]"]
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: ui. 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/components/ui/table-primitives.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
20
  import * as React from "react"
25
21
  import { Avatar as AvatarPrimitive } from "radix-ui"
26
22
 
27
23
  import { cn } from "@/lib/utils"
28
- // CIL[END chunk_id="avatar_module_header_1783883196"]
29
- // CIL[BEGIN chunk_id="avatar_avatar_1783883196" type="function" identity="Avatar" parent="none"]
30
- // CIL[DOC-MACRO purpose="Main Avatar container with size variants and styling"]
31
- // CIL[DOC-RESPONSIBILITY responsibility="Render avatar root with responsive sizing and visual effects"]
32
- // CIL[DOC-CONTEXT module="avatar" layer="ui" 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/RolesPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
33
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX AvatarPrimitive.Root" errors="none" side_effects="renders DOM"]
34
- // CIL[DOC-MICRO logic_summary="Creates avatar root with size variants, overlay effects, and responsive styling" notable_decisions="[]"]
35
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
36
- // CIL[DOC-STABILITY stability="stable"]
37
- // CIL[DOC-VECTOR type="context" content="Layer: ui. 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/RolesPage.tsx, .framework/functions/_shared/principal.ts, \."]
38
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
39
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
40
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
24
+ // CIL[DOC-VECTOR type="context" content="purpose='Import the dependencies and utilities used by the avatar component module'; No verified external callers; imports: .framework/src/lib/utils.ts"]
25
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
26
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
27
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
41
28
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
42
29
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
30
+ // CIL[END stable_id="~/.framework/src/components/ui/avatar.tsx:module_header:module_header"]
31
+
32
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/avatar.tsx:Avatar:component" type="component" identity="Avatar" parent="~/.framework/src/components/ui/avatar.tsx"]
33
+ // CIL[DOC-MACRO purpose="Render an avatar root element with configurable size and Tailwind styling"]
34
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a styled AvatarPrimitive.Root wrapper that supports default, sm, and lg sizes"]
35
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/avatar.tsx" layer="ui" related_files=".framework/src/components/ui/avatar.tsx,.framework/src/lib/utils.ts"]
36
+ // CIL[DOC-CONTRACT inputs="className: string, size: default|sm|lg, and standard AvatarPrimitive.Root props" outputs="JSX element styled as a rounded avatar root with data attributes" errors="none" side_effects="none"]
37
+ // CIL[DOC-MICRO logic_summary="Wrap AvatarPrimitive.Root and apply size-aware Tailwind classes via cn, including a subtle border overlay" notable_decisions="Uses data-size attributes and dark mode mix-blend utilities for the border"]
38
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="[]"]
39
+ // CIL[DOC-STABILITY stable]
40
+ // CIL[DOC-AUDIENCE audience="developers"]
43
41
  function Avatar({
44
42
  className,
45
43
  size = "default",
@@ -59,21 +57,23 @@ function Avatar({
59
57
  />
60
58
  )
61
59
  }
62
- // CIL[END chunk_id="avatar_avatar_1783883196"]
63
- // CIL[BEGIN chunk_id="avatar_avatarimage_1783883196" type="function" identity="AvatarImage" parent="none"]
64
- // CIL[DOC-MACRO purpose="Avatar image component with proper aspect ratio and sizing"]
65
- // CIL[DOC-RESPONSIBILITY responsibility="Render avatar image with circular cropping and cover fit"]
66
- // CIL[DOC-CONTEXT module="avatar" layer="ui" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/components/ui/table-primitives.tsx\",\"\\\"]"]
67
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX AvatarPrimitive.Image" errors="none" side_effects="renders DOM"]
68
- // CIL[DOC-MICRO logic_summary="Creates circular image with aspect-square, full size, rounded corners, object-cover" notable_decisions="[]"]
69
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
70
- // CIL[DOC-STABILITY stability="stable"]
71
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/src/components/ui/table-primitives.tsx, \."]
72
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
73
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
74
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
60
+ // CIL[DOC-VECTOR type="context" content="purpose='Render an avatar root element with configurable size and Tailwind styling'; No verified external callers; imports: .framework/src/lib/utils.ts"]
61
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
62
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
63
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
75
64
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
76
65
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
66
+ // CIL[END stable_id="~/.framework/src/components/ui/avatar.tsx:Avatar:component"]
67
+
68
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/avatar.tsx:AvatarImage:component" type="component" identity="AvatarImage" parent="~/.framework/src/components/ui/avatar.tsx"]
69
+ // CIL[DOC-MACRO purpose="Render the image content of an avatar"]
70
+ // CIL[DOC-RESPONSIBILITY responsibility="Display an image inside an Avatar, cropped to a circle and covering the container"]
71
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/avatar.tsx" layer="ui" related_files=".framework/src/components/ui/avatar.tsx,.framework/src/lib/utils.ts"]
72
+ // CIL[DOC-CONTRACT inputs="className: string, props: spread of standard AvatarPrimitive.Image props" outputs="JSX image element with rounded cover styling" errors="none" side_effects="none"]
73
+ // CIL[DOC-MICRO logic_summary="Wrap AvatarPrimitive.Image and apply aspect-square, size-full, rounded-full, and object-cover classes" notable_decisions="Merges additional className with the cover classes"]
74
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="[]"]
75
+ // CIL[DOC-STABILITY stable]
76
+ // CIL[DOC-AUDIENCE audience="developers"]
77
77
  function AvatarImage({
78
78
  className,
79
79
  ...props
@@ -89,21 +89,23 @@ function AvatarImage({
89
89
  />
90
90
  )
91
91
  }
92
- // CIL[END chunk_id="avatar_avatarimage_1783883196"]
93
- // CIL[BEGIN chunk_id="avatar_avatarfallback_1783883196" type="function" identity="AvatarFallback" parent="none"]
94
- // CIL[DOC-MACRO purpose="Avatar fallback component for when image fails to load"]
95
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled fallback content with responsive text sizing"]
96
- // CIL[DOC-CONTEXT module="avatar" layer="ui" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
97
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX AvatarPrimitive.Fallback" errors="none" side_effects="renders DOM"]
98
- // CIL[DOC-MICRO logic_summary="Creates circular fallback with centered content, muted styling, size-responsive text" notable_decisions="[]"]
99
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
100
- // CIL[DOC-STABILITY stability="stable"]
101
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/table-primitives.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
102
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
103
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
104
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
92
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the image content of an avatar'; No verified external callers; imports: .framework/src/lib/utils.ts"]
93
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
94
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
95
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
105
96
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
106
97
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
98
+ // CIL[END stable_id="~/.framework/src/components/ui/avatar.tsx:AvatarImage:component"]
99
+
100
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/avatar.tsx:AvatarFallback:component" type="component" identity="AvatarFallback" parent="~/.framework/src/components/ui/avatar.tsx"]
101
+ // CIL[DOC-MACRO purpose="Render placeholder content when an avatar image cannot be displayed"]
102
+ // CIL[DOC-RESPONSIBILITY responsibility="Show initials or an icon inside an Avatar when no image is loaded"]
103
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/avatar.tsx" layer="ui" related_files=".framework/src/components/ui/avatar.tsx,.framework/src/lib/utils.ts"]
104
+ // CIL[DOC-CONTRACT inputs="className: string, props: spread of standard AvatarPrimitive.Fallback props" outputs="JSX fallback element with muted background and centered content" errors="none" side_effects="none"]
105
+ // CIL[DOC-MICRO logic_summary="Wrap AvatarPrimitive.Fallback and apply a centered, rounded, muted background with size-aware text" notable_decisions="Reduces text size for sm avatars via the group-data selector"]
106
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="[]"]
107
+ // CIL[DOC-STABILITY stable]
108
+ // CIL[DOC-AUDIENCE audience="developers"]
107
109
  function AvatarFallback({
108
110
  className,
109
111
  ...props
@@ -119,21 +121,23 @@ function AvatarFallback({
119
121
  />
120
122
  )
121
123
  }
122
- // CIL[END chunk_id="avatar_avatarfallback_1783883196"]
123
- // CIL[BEGIN chunk_id="avatar_avatarbadge_1783883196" type="function" identity="AvatarBadge" parent="none"]
124
- // CIL[DOC-MACRO purpose="Avatar badge component for status indicators or overlays"]
125
- // CIL[DOC-RESPONSIBILITY responsibility="Render positioned badge with size-responsive styling"]
126
- // CIL[DOC-CONTEXT module="avatar" layer="ui" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\"]"]
127
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX span element" errors="none" side_effects="renders DOM"]
128
- // CIL[DOC-MICRO logic_summary="Creates positioned badge with size variants, ring styling, icon handling" notable_decisions="[]"]
129
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
130
- // CIL[DOC-STABILITY stability="stable"]
131
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/TypeDetailPage.tsx."]
132
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
133
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
134
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
124
+ // CIL[DOC-VECTOR type="context" content="purpose='Render placeholder content when an avatar image cannot be displayed'; No verified external callers; imports: .framework/src/lib/utils.ts"]
125
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
126
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
127
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
135
128
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
136
129
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
130
+ // CIL[END stable_id="~/.framework/src/components/ui/avatar.tsx:AvatarFallback:component"]
131
+
132
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/avatar.tsx:AvatarBadge:component" type="component" identity="AvatarBadge" parent="~/.framework/src/components/ui/avatar.tsx"]
133
+ // CIL[DOC-MACRO purpose="Render a small status badge overlaid on an avatar"]
134
+ // CIL[DOC-RESPONSIBILITY responsibility="Display a positioned badge at the bottom-right of an Avatar, adapting to avatar size"]
135
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/avatar.tsx" layer="ui" related_files=".framework/src/components/ui/avatar.tsx,.framework/src/lib/utils.ts"]
136
+ // CIL[DOC-CONTRACT inputs="className: string, props: spread of standard span props" outputs="JSX span element positioned absolutely over the avatar" errors="none" side_effects="none"]
137
+ // CIL[DOC-MICRO logic_summary="Render an absolute positioned span with primary background and size-aware dimensions" notable_decisions="Uses group-data selectors for sm/default/lg sizing and hides nested svg on sm"]
138
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="[]"]
139
+ // CIL[DOC-STABILITY stable]
140
+ // CIL[DOC-AUDIENCE audience="developers"]
137
141
  function AvatarBadge({ className, ...props }: React.ComponentProps<"span">) {
138
142
  return (
139
143
  <span
@@ -149,21 +153,23 @@ function AvatarBadge({ className, ...props }: React.ComponentProps<"span">) {
149
153
  />
150
154
  )
151
155
  }
152
- // CIL[END chunk_id="avatar_avatarbadge_1783883196"]
153
- // CIL[BEGIN chunk_id="avatar_avatargroup_1783883196" type="function" identity="AvatarGroup" parent="none"]
154
- // CIL[DOC-MACRO purpose="Avatar group container for stacking multiple avatars"]
155
- // CIL[DOC-RESPONSIBILITY responsibility="Render container with overlapping avatar layout"]
156
- // CIL[DOC-CONTEXT module="avatar" layer="ui" related_files="[]"]
157
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX div element" errors="none" side_effects="renders DOM"]
158
- // CIL[DOC-MICRO logic_summary="Creates flex container with negative space-x for overlapping avatars with ring styling" notable_decisions="[]"]
159
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
160
- // CIL[DOC-STABILITY stability="stable"]
161
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
162
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
163
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
164
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
156
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a small status badge overlaid on an avatar'; No verified external callers; imports: .framework/src/lib/utils.ts"]
157
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
158
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
159
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
165
160
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
166
161
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
162
+ // CIL[END stable_id="~/.framework/src/components/ui/avatar.tsx:AvatarBadge:component"]
163
+
164
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/avatar.tsx:AvatarGroup:component" type="component" identity="AvatarGroup" parent="~/.framework/src/components/ui/avatar.tsx"]
165
+ // CIL[DOC-MACRO purpose="Group multiple avatars into a compact, overlapping stack"]
166
+ // CIL[DOC-RESPONSIBILITY responsibility="Layout a horizontal row of Avatars with negative horizontal spacing"]
167
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/avatar.tsx" layer="ui" related_files=".framework/src/components/ui/avatar.tsx,.framework/src/lib/utils.ts"]
168
+ // CIL[DOC-CONTRACT inputs="className: string, props: spread of standard div props" outputs="JSX div element containing the overlapped avatar children" errors="none" side_effects="none"]
169
+ // CIL[DOC-MICRO logic_summary="Render a flex container that overlaps child avatars and adds a ring around each" notable_decisions="Uses Tailwind space-negative utilities and attribute selectors for child styling"]
170
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="[]"]
171
+ // CIL[DOC-STABILITY stable]
172
+ // CIL[DOC-AUDIENCE audience="developers"]
167
173
  function AvatarGroup({ className, ...props }: React.ComponentProps<"div">) {
168
174
  return (
169
175
  <div
@@ -176,21 +182,23 @@ function AvatarGroup({ className, ...props }: React.ComponentProps<"div">) {
176
182
  />
177
183
  )
178
184
  }
179
- // CIL[END chunk_id="avatar_avatargroup_1783883196"]
180
- // CIL[BEGIN chunk_id="avatar_avatargroupcount_1783883196" type="function" identity="AvatarGroupCount" parent="none"]
181
- // CIL[DOC-MACRO purpose="Avatar group count indicator for showing remaining items"]
182
- // CIL[DOC-RESPONSIBILITY responsibility="Render count badge with responsive sizing and group awareness"]
183
- // CIL[DOC-CONTEXT module="avatar" layer="ui" related_files="[]"]
184
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX div element" errors="none" side_effects="renders DOM"]
185
- // CIL[DOC-MICRO logic_summary="Creates count indicator with size responsiveness, group styling, icon handling" notable_decisions="[]"]
186
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
187
- // CIL[DOC-STABILITY stability="stable"]
188
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
189
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
190
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
191
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
185
+ // CIL[DOC-VECTOR type="context" content="purpose='Group multiple avatars into a compact, overlapping stack'; No verified external callers; imports: .framework/src/lib/utils.ts"]
186
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
187
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
188
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
192
189
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
193
190
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
191
+ // CIL[END stable_id="~/.framework/src/components/ui/avatar.tsx:AvatarGroup:component"]
192
+
193
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/avatar.tsx:AvatarGroupCount:component" type="component" identity="AvatarGroupCount" parent="~/.framework/src/components/ui/avatar.tsx"]
194
+ // CIL[DOC-MACRO purpose="Render a circular counter for additional avatars in a group"]
195
+ // CIL[DOC-RESPONSIBILITY responsibility="Show the number of hidden or extra avatars beyond those visible in an AvatarGroup"]
196
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/avatar.tsx" layer="ui" related_files=".framework/src/components/ui/avatar.tsx,.framework/src/lib/utils.ts"]
197
+ // CIL[DOC-CONTRACT inputs="className: string, props: spread of standard div props" outputs="JSX div element styled as a count badge with size-aware scaling" errors="none" side_effects="none"]
198
+ // CIL[DOC-MICRO logic_summary="Render a centered count element with muted background and group-based size scaling" notable_decisions="Scales size and svg icon dimensions based on the parent AvatarGroup size"]
199
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="[]"]
200
+ // CIL[DOC-STABILITY stable]
201
+ // CIL[DOC-AUDIENCE audience="developers"]
194
202
  function AvatarGroupCount({
195
203
  className,
196
204
  ...props
@@ -206,21 +214,22 @@ function AvatarGroupCount({
206
214
  />
207
215
  )
208
216
  }
209
- // CIL[END chunk_id="avatar_avatargroupcount_1783883196"]
210
- // CIL[BEGIN chunk_id="avatar_exports_1783883196" type="exports" identity="exports" parent="none"]
211
- // CIL[DOC-MACRO purpose="Export all Avatar components for external use"]
212
- // CIL[DOC-RESPONSIBILITY responsibility="Provide public API for Avatar component library"]
213
- // CIL[DOC-CONTEXT module="avatar" layer="ui" related_files="[]"]
214
- // CIL[DOC-CONTRACT inputs="none" outputs="exported components" errors="none" side_effects="module exports"]
215
- // CIL[DOC-MICRO logic_summary="Exports Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge" notable_decisions="[]"]
216
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
217
- // CIL[DOC-STABILITY stability="stable"]
218
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
219
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
220
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
221
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
217
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a circular counter for additional avatars in a group'; No verified external callers; imports: .framework/src/lib/utils.ts"]
218
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
219
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
220
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
222
221
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
223
222
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
223
+ // CIL[END stable_id="~/.framework/src/components/ui/avatar.tsx:AvatarGroupCount:component"]
224
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/avatar.tsx:exports:variable" type="variable" identity="exports" parent="~/.framework/src/components/ui/avatar.tsx"]
225
+ // CIL[DOC-MACRO purpose="Re-export the Avatar subcomponents and the Avatar root"]
226
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose the public API of the avatar module for consumers"]
227
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/avatar.tsx" layer="ui" related_files=".framework/src/components/ui/avatar.tsx,.framework/src/lib/utils.ts"]
228
+ // CIL[DOC-CONTRACT inputs="none" outputs="Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, and AvatarBadge named exports" errors="none" side_effects="none"]
229
+ // CIL[DOC-MICRO logic_summary="Named export list for the Avatar components" notable_decisions="Exports all subcomponents so consumers can compose them explicitly"]
230
+ // CIL[DOC-CONFIDENCE pass="second" score="0.9" flags="[]"]
231
+ // CIL[DOC-STABILITY stable]
232
+ // CIL[DOC-AUDIENCE audience="developers"]
224
233
  export {
225
234
  Avatar,
226
235
  AvatarImage,
@@ -229,4 +238,10 @@ export {
229
238
  AvatarGroupCount,
230
239
  AvatarBadge,
231
240
  }
232
- // CIL[END chunk_id="avatar_exports_1783883196"]
241
+ // CIL[DOC-VECTOR type="context" content="purpose='Re-export the Avatar subcomponents and the Avatar root'; No verified external callers; imports: .framework/src/lib/utils.ts"]
242
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
243
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
244
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
245
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
246
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
247
+ // CIL[END stable_id="~/.framework/src/components/ui/avatar.tsx:exports:variable"]
@@ -1,42 +1,38 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/badge.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/ui/badge.tsx"]
2
+ // CIL[DOC-MACRO purpose="Import the dependencies and utilities used by the badge component module"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide React, cva, radix Slot, and the cn utility to the Badge and badgeVariants definitions"]
4
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/badge.tsx" layer="ui" related_files=".framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="React, cva, Slot, and cn bindings available to the module" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Import third-party and local dependencies required by badge variants and the Badge component" notable_decisions="Uses the @/lib/utils alias to import the cn class-name utility"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stable]
9
+ // CIL[DOC-AUDIENCE audience="developers"]
10
+
1
11
 
2
12
 
3
13
 
4
14
 
5
- // CIL[BEGIN chunk_id="badge_module_header_1783883196" type="module_header" identity="module_header" parent="none"]
6
- // CIL[DOC-MACRO purpose="Import React, styling, and composition dependencies for Badge"]
7
- // CIL[DOC-RESPONSIBILITY responsibility="Provide external dependencies for Badge UI component"]
8
- // CIL[DOC-CONTEXT module="badge" layer="ui" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
9
- // CIL[DOC-CONTRACT inputs="none" outputs="React, cva, VariantProps, Slot, cn" errors="none" side_effects="none"]
10
- // CIL[DOC-MICRO logic_summary="Imports React, class-variance-authority, Radix Slot for composition, utility function" notable_decisions="[]"]
11
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
12
- // CIL[DOC-STABILITY stability="stable"]
13
- // CIL[DOC-AUDIENCE audience="developer"]
14
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, \."]
15
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
16
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
17
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
18
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
19
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
20
15
  import * as React from "react"
21
16
  import { cva, type VariantProps } from "class-variance-authority"
22
17
  import { Slot } from "radix-ui"
23
18
 
24
19
  import { cn } from "@/lib/utils"
25
- // CIL[END chunk_id="badge_module_header_1783883196"]
26
- // CIL[BEGIN chunk_id="badge_badgevariants_1783883196" type="constant" identity="badgeVariants" parent="none"]
27
- // CIL[DOC-MACRO purpose="Define comprehensive styling variants for Badge component"]
28
- // CIL[DOC-RESPONSIBILITY responsibility="Manage Badge visual appearance with multiple variant options"]
29
- // CIL[DOC-CONTEXT module="badge" layer="ui" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
30
- // CIL[DOC-CONTRACT inputs="none" outputs="badgeVariants function" errors="none" side_effects="none"]
31
- // CIL[DOC-MICRO logic_summary="Creates CVA config with default, secondary, destructive, outline, ghost, link variants" notable_decisions="[]"]
32
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
33
- // CIL[DOC-STABILITY stability="stable"]
34
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 1. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/components/ui/table-primitives.tsx, custom/apps/portal/pages/ContentPage.tsx, \."]
35
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 3."]
36
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
37
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
20
+ // CIL[DOC-VECTOR type="context" content="purpose='Import the dependencies and utilities used by the badge component module'; No verified external callers; imports: .framework/src/lib/utils.ts"]
21
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
22
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
23
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
38
24
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
39
25
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
26
+ // CIL[END stable_id="~/.framework/src/components/ui/badge.tsx:module_header:module_header"]
27
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/badge.tsx:badgeVariants:constant" type="constant" identity="badgeVariants" parent="~/.framework/src/components/ui/badge.tsx"]
28
+ // CIL[DOC-MACRO purpose="Define the class-variance-authority configuration for badge styling"]
29
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a cva-based styling contract with named variants for the Badge component"]
30
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/badge.tsx" layer="ui" related_files=".framework/src/components/ui/badge.tsx,.framework/src/lib/utils.ts"]
31
+ // CIL[DOC-CONTRACT inputs="variant name string (default, secondary, destructive, outline, ghost, link)" outputs="string of Tailwind CSS classes for the selected badge variant" errors="none" side_effects="none"]
32
+ // CIL[DOC-MICRO logic_summary="Build a cva style function with base classes and variant-driven class mappings" notable_decisions="Keeps all Tailwind classes inline; supports aria-invalid and has-data icon selectors"]
33
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
34
+ // CIL[DOC-STABILITY stable]
35
+ // CIL[DOC-AUDIENCE audience="developers"]
40
36
  const badgeVariants = cva(
41
37
  "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-2.5!",
42
38
  {
@@ -59,21 +55,23 @@ const badgeVariants = cva(
59
55
  },
60
56
  }
61
57
  )
62
- // CIL[END chunk_id="badge_badgevariants_1783883196"]
63
- // CIL[BEGIN chunk_id="badge_badge_1783883196" type="function" identity="Badge" parent="none"]
64
- // CIL[DOC-MACRO purpose="Main Badge component with composition support and variants"]
65
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled badge with optional element composition via asChild"]
66
- // CIL[DOC-CONTEXT module="badge" layer="ui" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\"\\\"]"]
67
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="renders DOM"]
68
- // CIL[DOC-MICRO logic_summary="Creates badge with Radix Slot composition, applies variants, spreads props" notable_decisions="[]"]
69
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
70
- // CIL[DOC-STABILITY stability="stable"]
71
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 2. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/components/ui/table-primitives.tsx, \."]
72
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 2."]
73
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
74
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
58
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the class-variance-authority configuration for badge styling'; No verified external callers; imports: .framework/src/lib/utils.ts"]
59
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
60
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
61
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
75
62
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
76
63
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
64
+ // CIL[END stable_id="~/.framework/src/components/ui/badge.tsx:badgeVariants:constant"]
65
+
66
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/badge.tsx:Badge:component" type="component" identity="Badge" parent="~/.framework/src/components/ui/badge.tsx"]
67
+ // CIL[DOC-MACRO purpose="Render a small status badge element with variant-based Tailwind styling"]
68
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a span or polymorphic child element styled by the badgeVariants contract"]
69
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/badge.tsx" layer="ui" related_files=".framework/src/components/ui/badge.tsx,.framework/src/lib/utils.ts"]
70
+ // CIL[DOC-CONTRACT inputs="className: string, variant: cva variant name, asChild: boolean, VariantProps type from cva, plus standard span props" outputs="JSX element styled with the computed badge classes" errors="none" side_effects="none"]
71
+ // CIL[DOC-MICRO logic_summary="Select Slot.Root or span based on asChild, then render with merged classes and data attributes" notable_decisions="Defaults variant to default; merges additional className with the variant classes"]
72
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
73
+ // CIL[DOC-STABILITY stable]
74
+ // CIL[DOC-AUDIENCE audience="developers"]
77
75
  function Badge({
78
76
  className,
79
77
  variant = "default",
@@ -92,20 +90,27 @@ function Badge({
92
90
  />
93
91
  )
94
92
  }
95
- // CIL[END chunk_id="badge_badge_1783883196"]
96
- // CIL[BEGIN chunk_id="badge_exports_1783883196" type="exports" identity="exports" parent="none"]
97
- // CIL[DOC-MACRO purpose="Export Badge component and variants for external use"]
98
- // CIL[DOC-RESPONSIBILITY responsibility="Provide public API for Badge component library"]
99
- // CIL[DOC-CONTEXT module="badge" layer="ui" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\"\\\"]"]
100
- // CIL[DOC-CONTRACT inputs="none" outputs="exported Badge, badgeVariants" errors="none" side_effects="module exports"]
101
- // CIL[DOC-MICRO logic_summary="Exports Badge component and badgeVariants styling function" notable_decisions="[]"]
102
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
103
- // CIL[DOC-STABILITY stability="stable"]
104
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/components/ui/table-primitives.tsx, \."]
105
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
106
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
107
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
93
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a small status badge element with variant-based Tailwind styling'; No verified external callers; imports: .framework/src/lib/utils.ts"]
94
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
95
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
96
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
108
97
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
109
98
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
99
+ // CIL[END stable_id="~/.framework/src/components/ui/badge.tsx:Badge:component"]
100
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/badge.tsx:exports:variable" type="variable" identity="exports" parent="~/.framework/src/components/ui/badge.tsx"]
101
+ // CIL[DOC-MACRO purpose="Re-export the Badge component and badgeVariants style utility"]
102
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose the public API of the badge module for consumers"]
103
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/badge.tsx" layer="ui" related_files=".framework/src/components/ui/badge.tsx,.framework/src/lib/utils.ts"]
104
+ // CIL[DOC-CONTRACT inputs="none" outputs="Badge and badgeVariants named exports" errors="none" side_effects="none"]
105
+ // CIL[DOC-MICRO logic_summary="Named export list for the Badge component and badgeVariants constant" notable_decisions="Exports both component and styling contract so consumers can compose or extend variants"]
106
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
107
+ // CIL[DOC-STABILITY stable]
108
+ // CIL[DOC-AUDIENCE audience="developers"]
110
109
  export { Badge, badgeVariants }
111
- // CIL[END chunk_id="badge_exports_1783883196"]
110
+ // CIL[DOC-VECTOR type="context" content="purpose='Re-export the Badge component and badgeVariants style utility'; No verified external callers; imports: .framework/src/lib/utils.ts"]
111
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
112
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
113
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
114
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
115
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
116
+ // CIL[END stable_id="~/.framework/src/components/ui/badge.tsx:exports:variable"]