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,11 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:use_client:directive" type="directive" identity="use_client" parent="none"]
2
+ // CIL[DOC-MACRO purpose="Marks this module for client-side rendering in Next.js"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the use client directive at the top of the file"]
4
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="client rendering directive" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Contains the 'use client' string required by Next.js for client components." notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
1
9
 
2
10
 
3
11
 
@@ -17,22 +25,24 @@
17
25
 
18
26
 
19
27
 
20
- // CIL[BEGIN chunk_id="combobox_module_header_1783844098" type="module_header" identity="imports" parent="none"]
21
- // CIL[DOC-MACRO purpose="Import dependencies for combobox components"]
22
- // CIL[DOC-RESPONSIBILITY responsibility="Import React, Base UI primitives and UI components"]
23
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
24
- // CIL[DOC-CONTRACT inputs="none" outputs="React, Base UI primitives, UI components" errors="none" side_effects="none"]
25
- // CIL[DOC-MICRO logic_summary="Imports React, Base UI Combobox primitives, input groups and icons" notable_decisions="[]"]
26
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
27
- // CIL[DOC-STABILITY stability="stable"]
28
- // CIL[DOC-AUDIENCE audience="developer"]
29
- // 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/components/layout/Sidebar.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, \."]
30
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
31
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
32
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
28
+
29
+ "use client"
30
+ // CIL[DOC-VECTOR type="context" content="purpose='Marks this module for client-side rendering in Next.js'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
31
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
32
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
33
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
33
34
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
34
35
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
35
- "use client"
36
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:use_client:directive"]
37
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
38
+ // CIL[DOC-MACRO purpose="Provides the Combobox UI components built on Base UI for the shadcn/ui design system"]
39
+ // CIL[DOC-RESPONSIBILITY responsibility="Import combobox dependencies and re-export the public Combobox component surface"]
40
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
41
+ // CIL[DOC-CONTRACT inputs="none" outputs="imports and component exports" errors="none" side_effects="none"]
42
+ // CIL[DOC-MICRO logic_summary="Sets up React, Base UI Combobox, utility, Button, InputGroup, and icon imports used by all combobox subcomponents." notable_decisions="[]"]
43
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
44
+ // CIL[DOC-STABILITY stability="stable"]
45
+ // CIL[DOC-AUDIENCE audience="frontend-developers"]
36
46
  import * as React from "react"
37
47
  import { Combobox as ComboboxPrimitive } from "@base-ui/react"
38
48
  import { cn } from "@/lib/utils"
@@ -44,55 +54,58 @@ import {
44
54
  InputGroupInput,
45
55
  } from "@/components/ui/input-group"
46
56
  import { ChevronDownIcon, XIcon, CheckIcon } from "lucide-react"
47
- // CIL[END chunk_id="combobox_module_header_1783844098"]
48
- // CIL[BEGIN chunk_id="combobox_combobox_1783844098" type="const" identity="Combobox" parent="none"]
49
- // CIL[DOC-MACRO purpose="Root combobox component"]
50
- // CIL[DOC-RESPONSIBILITY responsibility="Provide Base UI Combobox root primitive"]
51
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
52
- // CIL[DOC-CONTRACT inputs="none" outputs="Combobox root primitive" errors="none" side_effects="none"]
53
- // CIL[DOC-MICRO logic_summary="Direct alias to Base UI ComboboxPrimitive.Root" notable_decisions="[]"]
54
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
55
- // CIL[DOC-STABILITY stability="stable"]
56
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, .framework/src/components/layout/Sidebar.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
57
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
58
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
59
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
57
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides the Combobox UI components built on Base UI for the shadcn/ui design system'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
58
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
59
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
60
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
60
61
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
61
62
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
62
- const Combobox = ComboboxPrimitive.Root
63
- // CIL[END chunk_id="combobox_combobox_1783844098"]
64
- // CIL[BEGIN chunk_id="combobox_comboboxvalue_1783844098" type="function" identity="ComboboxValue" parent="none"]
65
- // CIL[DOC-MACRO purpose="Combobox value display component"]
66
- // CIL[DOC-RESPONSIBILITY responsibility="Render hidden value storage for combobox"]
67
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
68
- // CIL[DOC-CONTRACT inputs="none" outputs="value storage" errors="none" side_effects="renders DOM"]
69
- // CIL[DOC-MICRO logic_summary="Wraps Base UI Value primitive with data-slot attribute" notable_decisions="[]"]
70
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
63
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
64
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:combobox:constant" type="constant" identity="combobox" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
65
+ // CIL[DOC-MACRO purpose="Assigns ComboboxPrimitive.Root to a local Combobox constant"]
66
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose the root Combobox component under a concise local alias"]
67
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
68
+ // CIL[DOC-CONTRACT inputs="none" outputs="Combobox constant alias" errors="none" side_effects="none"]
69
+ // CIL[DOC-MICRO logic_summary="Aliases ComboboxPrimitive.Root as Combobox for the public API." notable_decisions="[]"]
70
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
71
71
  // CIL[DOC-STABILITY stability="stable"]
72
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, .framework/src/components/layout/Sidebar.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
73
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
74
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
75
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
72
+ const Combobox = ComboboxPrimitive.Root
73
+ // CIL[DOC-VECTOR type="context" content="purpose='Assigns ComboboxPrimitive.Root to a local Combobox constant'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
74
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
75
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
76
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
76
77
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
77
78
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
79
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:combobox:constant"]
80
+
81
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxValue:component" type="component" identity="ComboboxValue" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
82
+ // CIL[DOC-MACRO purpose="Renders the selected value display inside a combobox"]
83
+ // CIL[DOC-RESPONSIBILITY responsibility="Return a styled ComboboxPrimitive.Value wrapper"]
84
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
85
+ // CIL[DOC-CONTRACT inputs="...props from ComboboxPrimitive.Value.Props" outputs="React element" errors="none" side_effects="none"]
86
+ // CIL[DOC-MICRO logic_summary="Spreads props onto ComboboxPrimitive.Value with a data-slot attribute." notable_decisions="[]"]
87
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
88
+ // CIL[DOC-STABILITY stability="stable"]
78
89
  function ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {
79
90
  return <ComboboxPrimitive.Value data-slot="combobox-value" {...props} />
80
91
  }
81
- // CIL[END chunk_id="combobox_comboboxvalue_1783844098"]
82
- // CIL[BEGIN chunk_id="combobox_comboboxtrigger_1783844098" type="function" identity="ComboboxTrigger" parent="none"]
83
- // CIL[DOC-MACRO purpose="Combobox dropdown trigger"]
84
- // CIL[DOC-RESPONSIBILITY responsibility="Provide trigger button with chevron icon"]
85
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[\"\\\"]"]
86
- // CIL[DOC-CONTRACT inputs="none" outputs="trigger with icon" errors="none" side_effects="renders DOM"]
87
- // CIL[DOC-MICRO logic_summary="Creates trigger with chevron down icon and icon sizing" notable_decisions="[]"]
88
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
89
- // CIL[DOC-STABILITY stability="stable"]
90
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: \."]
91
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
92
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
93
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
92
+
93
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the selected value display inside a combobox'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
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"]
94
97
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
95
98
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
99
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxValue:component"]
100
+
101
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxTrigger:component" type="component" identity="ComboboxTrigger" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
102
+ // CIL[DOC-MACRO purpose="Renders the combobox trigger button with a chevron icon"]
103
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a trigger element that opens the combobox popup"]
104
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
105
+ // CIL[DOC-CONTRACT inputs="className, children, ...props and trigger props" outputs="React element" errors="none" side_effects="none"]
106
+ // CIL[DOC-MICRO logic_summary="Wraps ComboboxPrimitive.Trigger with cn utilities and appends a ChevronDownIcon." notable_decisions="[]"]
107
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
108
+ // CIL[DOC-STABILITY stability="stable"]
96
109
  function ComboboxTrigger({
97
110
  className,
98
111
  children,
@@ -109,21 +122,22 @@ function ComboboxTrigger({
109
122
  </ComboboxPrimitive.Trigger>
110
123
  )
111
124
  }
112
- // CIL[END chunk_id="combobox_comboboxtrigger_1783844098"]
113
- // CIL[BEGIN chunk_id="combobox_comboboxclear_1783844098" type="function" identity="ComboboxClear" parent="none"]
114
- // CIL[DOC-MACRO purpose="Combobox clear button"]
115
- // CIL[DOC-RESPONSIBILITY responsibility="Provide clear button with X icon for resetting selection"]
116
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[\"\\\"]"]
117
- // CIL[DOC-CONTRACT inputs="none" outputs="clear button" errors="none" side_effects="renders DOM"]
118
- // CIL[DOC-MICRO logic_summary="Creates ghost button with X icon using InputGroupButton" notable_decisions="[]"]
119
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
120
- // CIL[DOC-STABILITY stability="stable"]
121
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: \."]
122
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
123
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
124
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
125
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the combobox trigger button with a chevron icon'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
126
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
127
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
128
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
125
129
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
126
130
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
131
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxTrigger:component"]
132
+
133
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxClear:component" type="component" identity="ComboboxClear" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
134
+ // CIL[DOC-MACRO purpose="Renders a clear button for the combobox selection"]
135
+ // CIL[DOC-RESPONSIBILITY responsibility="Render an accessible clear control as an InputGroupButton"]
136
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
137
+ // CIL[DOC-CONTRACT inputs="className, ...props and clear props" outputs="React element" errors="none" side_effects="none"]
138
+ // CIL[DOC-MICRO logic_summary="Renders ComboboxPrimitive.Clear using an icon ghost button and an XIcon." notable_decisions="[]"]
139
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
140
+ // CIL[DOC-STABILITY stability="stable"]
127
141
  function ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {
128
142
  return (
129
143
  <ComboboxPrimitive.Clear
@@ -136,21 +150,22 @@ function ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {
136
150
  </ComboboxPrimitive.Clear>
137
151
  )
138
152
  }
139
- // CIL[END chunk_id="combobox_comboboxclear_1783844098"]
140
- // CIL[BEGIN chunk_id="combobox_comboboxinput_1783844098" type="function" identity="ComboboxInput" parent="none"]
141
- // CIL[DOC-MACRO purpose="Combobox input with optional trigger and clear"]
142
- // CIL[DOC-RESPONSIBILITY responsibility="Provide input field with conditional trigger and clear buttons"]
143
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
144
- // CIL[DOC-CONTRACT inputs="none" outputs="input group" errors="none" side_effects="renders DOM"]
145
- // CIL[DOC-MICRO logic_summary="Creates InputGroup with conditional trigger and clear button addons" notable_decisions="[]"]
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: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
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."]
153
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a clear button for the combobox selection'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
154
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
155
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
156
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
152
157
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
153
158
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
159
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxClear:component"]
160
+
161
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxInput:component" type="component" identity="ComboboxInput" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
162
+ // CIL[DOC-MACRO purpose="Renders the combobox text input with optional trigger and clear controls"]
163
+ // CIL[DOC-RESPONSIBILITY responsibility="Compose an InputGroup with the primitive input, trigger and clear addons"]
164
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
165
+ // CIL[DOC-CONTRACT inputs="className, children, disabled, showTrigger, showClear and input props" outputs="React element" errors="none" side_effects="none"]
166
+ // CIL[DOC-MICRO logic_summary="Assembles an InputGroup around ComboboxPrimitive.Input and conditionally renders a ComboboxTrigger and ComboboxClear." notable_decisions="[]"]
167
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
168
+ // CIL[DOC-STABILITY stability="stable"]
154
169
  function ComboboxInput({
155
170
  className,
156
171
  children,
@@ -187,21 +202,22 @@ function ComboboxInput({
187
202
  </InputGroup>
188
203
  )
189
204
  }
190
- // CIL[END chunk_id="combobox_comboboxinput_1783844098"]
191
- // CIL[BEGIN chunk_id="combobox_comboboxcontent_1783844098" type="function" identity="ComboboxContent" parent="none"]
192
- // CIL[DOC-MACRO purpose="Combobox dropdown content container"]
193
- // CIL[DOC-RESPONSIBILITY responsibility="Provide positioned popup container for dropdown items"]
194
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
195
- // CIL[DOC-CONTRACT inputs="none" outputs="popup container" errors="none" side_effects="renders DOM"]
196
- // CIL[DOC-MICRO logic_summary="Creates positioned popup with animations and responsive sizing" notable_decisions="[]"]
197
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
198
- // CIL[DOC-STABILITY stability="stable"]
199
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
200
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
201
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
202
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
205
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the combobox text input with optional trigger and clear controls'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
206
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
207
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
208
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
203
209
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
204
210
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
211
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxInput:component"]
212
+
213
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxContent:component" type="component" identity="ComboboxContent" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
214
+ // CIL[DOC-MACRO purpose="Renders the combobox popup content with positioning"]
215
+ // CIL[DOC-RESPONSIBILITY responsibility="Portal and position the popup surface for the combobox list"]
216
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
217
+ // CIL[DOC-CONTRACT inputs="className, side, sideOffset, align, alignOffset, anchor, ...props, Pick positioner props and popup props" outputs="React element" errors="none" side_effects="DOM portal"]
218
+ // CIL[DOC-MICRO logic_summary="Uses ComboboxPrimitive.Portal and Positioner to render a themed Popup with animation and data attributes." notable_decisions="[]"]
219
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
220
+ // CIL[DOC-STABILITY stability="stable"]
205
221
  function ComboboxContent({
206
222
  className,
207
223
  side = "bottom",
@@ -235,21 +251,22 @@ function ComboboxContent({
235
251
  </ComboboxPrimitive.Portal>
236
252
  )
237
253
  }
238
- // CIL[END chunk_id="combobox_comboboxcontent_1783844098"]
239
- // CIL[BEGIN chunk_id="combobox_comboboxlist_1783844098" type="function" identity="ComboboxList" parent="none"]
240
- // CIL[DOC-MACRO purpose="Scrollable list container for combobox items"]
241
- // CIL[DOC-RESPONSIBILITY responsibility="Provide scrollable container with max height and padding"]
242
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
243
- // CIL[DOC-CONTRACT inputs="none" outputs="scrollable list" errors="none" side_effects="renders DOM"]
244
- // CIL[DOC-MICRO logic_summary="Creates scrollable container with overflow handling and padding" notable_decisions="[]"]
245
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
246
- // CIL[DOC-STABILITY stability="stable"]
247
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
248
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
249
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
250
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
254
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the combobox popup content with positioning'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
255
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
256
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
257
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
251
258
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
252
259
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
260
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxContent:component"]
261
+
262
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxList:component" type="component" identity="ComboboxList" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
263
+ // CIL[DOC-MACRO purpose="Renders the scrollable list container for combobox items"]
264
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a styled ComboboxPrimitive.List with overflow and empty state support"]
265
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
266
+ // CIL[DOC-CONTRACT inputs="className, ...props and list props" outputs="React element" errors="none" side_effects="none"]
267
+ // CIL[DOC-MICRO logic_summary="Applies a themed className with no-scrollbar, scroll padding and empty-state styling." notable_decisions="[]"]
268
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
269
+ // CIL[DOC-STABILITY stability="stable"]
253
270
  function ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {
254
271
  return (
255
272
  <ComboboxPrimitive.List
@@ -262,21 +279,22 @@ function ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {
262
279
  />
263
280
  )
264
281
  }
265
- // CIL[END chunk_id="combobox_comboboxlist_1783844098"]
266
- // CIL[BEGIN chunk_id="combobox_comboboxitem_1783844098" type="function" identity="ComboboxItem" parent="none"]
267
- // CIL[DOC-MACRO purpose="Individual combobox selectable item"]
268
- // CIL[DOC-RESPONSIBILITY responsibility="Render selectable item with hover and selection styling"]
269
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
270
- // CIL[DOC-CONTRACT inputs="none" outputs="selectable item" errors="none" side_effects="renders DOM"]
271
- // CIL[DOC-MICRO logic_summary="Creates interactive item with selection indicator and styling" notable_decisions="[]"]
272
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
273
- // CIL[DOC-STABILITY stability="stable"]
274
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
275
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
276
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
277
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
282
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the scrollable list container for combobox items'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
283
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
284
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
285
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
278
286
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
279
287
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
288
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxList:component"]
289
+
290
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxItem:component" type="component" identity="ComboboxItem" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
291
+ // CIL[DOC-MACRO purpose="Renders a selectable item inside the combobox list"]
292
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a list item with highlighting, disabled and checked indicator states"]
293
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
294
+ // CIL[DOC-CONTRACT inputs="className, children, ...props and item props" outputs="React element" errors="none" side_effects="none"]
295
+ // CIL[DOC-MICRO logic_summary="Wraps ComboboxPrimitive.Item and renders a CheckIcon indicator when selected." notable_decisions="[]"]
296
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
297
+ // CIL[DOC-STABILITY stability="stable"]
280
298
  function ComboboxItem({
281
299
  className,
282
300
  children,
@@ -302,21 +320,22 @@ function ComboboxItem({
302
320
  </ComboboxPrimitive.Item>
303
321
  )
304
322
  }
305
- // CIL[END chunk_id="combobox_comboboxitem_1783844098"]
306
- // CIL[BEGIN chunk_id="combobox_comboboxgroup_1783844098" type="function" identity="ComboboxGroup" parent="none"]
307
- // CIL[DOC-MACRO purpose="Container for grouping combobox items"]
308
- // CIL[DOC-RESPONSIBILITY responsibility="Provide grouping container for related combobox items"]
309
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
310
- // CIL[DOC-CONTRACT inputs="none" outputs="group container" errors="none" side_effects="renders DOM"]
311
- // CIL[DOC-MICRO logic_summary="Wraps Base UI Group primitive with data-slot attribute" notable_decisions="[]"]
312
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
313
- // CIL[DOC-STABILITY stability="stable"]
314
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
315
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
316
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
317
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
323
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a selectable item inside the combobox list'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
324
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
325
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
326
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
318
327
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
319
328
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
329
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxItem:component"]
330
+
331
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxGroup:component" type="component" identity="ComboboxGroup" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
332
+ // CIL[DOC-MACRO purpose="Groups related combobox items under a common wrapper"]
333
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a ComboboxPrimitive.Group with className merging"]
334
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
335
+ // CIL[DOC-CONTRACT inputs="className, ...props and group props" outputs="React element" errors="none" side_effects="none"]
336
+ // CIL[DOC-MICRO logic_summary="Forwards props to ComboboxPrimitive.Group and applies className via cn." notable_decisions="[]"]
337
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
338
+ // CIL[DOC-STABILITY stability="stable"]
320
339
  function ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {
321
340
  return (
322
341
  <ComboboxPrimitive.Group
@@ -326,21 +345,22 @@ function ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {
326
345
  />
327
346
  )
328
347
  }
329
- // CIL[END chunk_id="combobox_comboboxgroup_1783844098"]
330
- // CIL[BEGIN chunk_id="combobox_comboboxlabel_1783844098" type="function" identity="ComboboxLabel" parent="none"]
331
- // CIL[DOC-MACRO purpose="Label for combobox groups"]
332
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled label text for combobox groups"]
333
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
334
- // CIL[DOC-CONTRACT inputs="none" outputs="styled label" errors="none" side_effects="renders DOM"]
335
- // CIL[DOC-MICRO logic_summary="Creates muted text label with padding for group headers" notable_decisions="[]"]
336
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
337
- // CIL[DOC-STABILITY stability="stable"]
338
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
339
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
340
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
341
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
348
+ // CIL[DOC-VECTOR type="context" content="purpose='Groups related combobox items under a common wrapper'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
349
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
350
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
351
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
342
352
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
343
353
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
354
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxGroup:component"]
355
+
356
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxLabel:component" type="component" identity="ComboboxLabel" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
357
+ // CIL[DOC-MACRO purpose="Renders a label for a combobox group"]
358
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a muted group label using ComboboxPrimitive.GroupLabel"]
359
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
360
+ // CIL[DOC-CONTRACT inputs="className, ...props and label props" outputs="React element" errors="none" side_effects="none"]
361
+ // CIL[DOC-MICRO logic_summary="Applies muted typography and padding to a ComboboxPrimitive.GroupLabel." notable_decisions="[]"]
362
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
363
+ // CIL[DOC-STABILITY stability="stable"]
344
364
  function ComboboxLabel({
345
365
  className,
346
366
  ...props
@@ -353,41 +373,43 @@ function ComboboxLabel({
353
373
  />
354
374
  )
355
375
  }
356
- // CIL[END chunk_id="combobox_comboboxlabel_1783844098"]
357
- // CIL[BEGIN chunk_id="combobox_comboboxcollection_1783844098" type="function" identity="ComboboxCollection" parent="none"]
358
- // CIL[DOC-MACRO purpose="Collection wrapper for combobox items"]
359
- // CIL[DOC-RESPONSIBILITY responsibility="Provide collection container for combobox items management"]
360
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
361
- // CIL[DOC-CONTRACT inputs="none" outputs="collection wrapper" errors="none" side_effects="renders DOM"]
362
- // CIL[DOC-MICRO logic_summary="Wraps Base UI Collection primitive with data-slot attribute" notable_decisions="[]"]
363
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
364
- // CIL[DOC-STABILITY stability="stable"]
365
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
366
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
367
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
368
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
376
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a label for a combobox group'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
377
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
378
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
379
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
369
380
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
370
381
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
382
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxLabel:component"]
383
+
384
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxCollection:component" type="component" identity="ComboboxCollection" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
385
+ // CIL[DOC-MACRO purpose="Provides the collection wrapper for combobox options"]
386
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a ComboboxPrimitive.Collection with a data-slot attribute"]
387
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
388
+ // CIL[DOC-CONTRACT inputs="...props as collection props" outputs="React element" errors="none" side_effects="none"]
389
+ // CIL[DOC-MICRO logic_summary="Forwards props to ComboboxPrimitive.Collection and adds a data-slot marker." notable_decisions="[]"]
390
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
391
+ // CIL[DOC-STABILITY stability="stable"]
371
392
  function ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {
372
393
  return (
373
394
  <ComboboxPrimitive.Collection data-slot="combobox-collection" {...props} />
374
395
  )
375
396
  }
376
- // CIL[END chunk_id="combobox_comboboxcollection_1783844098"]
377
- // CIL[BEGIN chunk_id="combobox_comboboxempty_1783844098" type="function" identity="ComboboxEmpty" parent="none"]
378
- // CIL[DOC-MACRO purpose="Empty state for combobox list"]
379
- // CIL[DOC-RESPONSIBILITY responsibility="Display styled content when no items match search"]
380
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
381
- // CIL[DOC-CONTRACT inputs="none" outputs="styled empty state" errors="none" side_effects="renders DOM"]
382
- // CIL[DOC-MICRO logic_summary="Creates centered container with padding for empty state content" notable_decisions="[]"]
383
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
384
- // CIL[DOC-STABILITY stability="stable"]
385
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
386
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
387
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
388
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
397
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides the collection wrapper for combobox options'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
398
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
399
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
400
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
389
401
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
390
402
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
403
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxCollection:component"]
404
+
405
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxEmpty:component" type="component" identity="ComboboxEmpty" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
406
+ // CIL[DOC-MACRO purpose="Renders the empty state when no combobox items match"]
407
+ // CIL[DOC-RESPONSIBILITY responsibility="Display a centered empty message when the list has no matches"]
408
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
409
+ // CIL[DOC-CONTRACT inputs="className, ...props and empty props" outputs="React element" errors="none" side_effects="none"]
410
+ // CIL[DOC-MICRO logic_summary="Uses a group-data-empty selector to show the message only when the list is empty." notable_decisions="[]"]
411
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
412
+ // CIL[DOC-STABILITY stability="stable"]
391
413
  function ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {
392
414
  return (
393
415
  <ComboboxPrimitive.Empty
@@ -400,21 +422,22 @@ function ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {
400
422
  />
401
423
  )
402
424
  }
403
- // CIL[END chunk_id="combobox_comboboxempty_1783844098"]
404
- // CIL[BEGIN chunk_id="combobox_comboboxseparator_1783844098" type="function" identity="ComboboxSeparator" parent="none"]
405
- // CIL[DOC-MACRO purpose="Visual separator for combobox groups"]
406
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled separator between combobox sections"]
407
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
408
- // CIL[DOC-CONTRACT inputs="none" outputs="styled separator" errors="none" side_effects="renders DOM"]
409
- // CIL[DOC-MICRO logic_summary="Creates horizontal line with margin and border styling" notable_decisions="[]"]
410
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
411
- // CIL[DOC-STABILITY stability="stable"]
412
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
413
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
414
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
415
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
425
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the empty state when no combobox items match'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
426
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
427
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
428
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
416
429
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
417
430
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
431
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxEmpty:component"]
432
+
433
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxSeparator:component" type="component" identity="ComboboxSeparator" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
434
+ // CIL[DOC-MACRO purpose="Renders a visual divider between combobox groups"]
435
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a horizontal separator between list groups"]
436
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
437
+ // CIL[DOC-CONTRACT inputs="className, ...props and separator props" outputs="React element" errors="none" side_effects="none"]
438
+ // CIL[DOC-MICRO logic_summary="Forwards props to ComboboxPrimitive.Separator and applies a border line style." notable_decisions="[]"]
439
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
440
+ // CIL[DOC-STABILITY stability="stable"]
418
441
  function ComboboxSeparator({
419
442
  className,
420
443
  ...props
@@ -427,21 +450,22 @@ function ComboboxSeparator({
427
450
  />
428
451
  )
429
452
  }
430
- // CIL[END chunk_id="combobox_comboboxseparator_1783844098"]
431
- // CIL[BEGIN chunk_id="combobox_comboboxchips_1783844098" type="function" identity="ComboboxChips" parent="none"]
432
- // CIL[DOC-MACRO purpose="Container for combobox selection chips"]
433
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled container for multiple selected items"]
434
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
435
- // CIL[DOC-CONTRACT inputs="none" outputs="chips container" errors="none" side_effects="renders DOM"]
436
- // CIL[DOC-MICRO logic_summary="Creates flex container with border and focus styling for chips" notable_decisions="[]"]
437
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
438
- // CIL[DOC-STABILITY stability="stable"]
439
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
440
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
441
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
442
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
453
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a visual divider between combobox groups'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
454
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
455
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
456
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
443
457
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
444
458
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
459
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxSeparator:component"]
460
+
461
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxChips:component" type="component" identity="ComboboxChips" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
462
+ // CIL[DOC-MACRO purpose="Renders the chip container for a multi-select combobox"]
463
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a flex-wrapped chip list with focus and invalid states"]
464
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
465
+ // CIL[DOC-CONTRACT inputs="className, ...props, ComboboxPrimitive chips type and component props" outputs="React element" errors="none" side_effects="none"]
466
+ // CIL[DOC-MICRO logic_summary="Wraps ComboboxPrimitive.Chips with a styled input-like container and focus ring." notable_decisions="[]"]
467
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
468
+ // CIL[DOC-STABILITY stability="stable"]
445
469
  function ComboboxChips({
446
470
  className,
447
471
  ...props
@@ -458,21 +482,22 @@ function ComboboxChips({
458
482
  />
459
483
  )
460
484
  }
461
- // CIL[END chunk_id="combobox_comboboxchips_1783844098"]
462
- // CIL[BEGIN chunk_id="combobox_comboboxchip_1783844098" type="function" identity="ComboboxChip" parent="none"]
463
- // CIL[DOC-MACRO purpose="Individual selection chip component"]
464
- // CIL[DOC-RESPONSIBILITY responsibility="Render removable chip for selected combobox items"]
465
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
466
- // CIL[DOC-CONTRACT inputs="none" outputs="styled chip" errors="none" side_effects="renders DOM"]
467
- // CIL[DOC-MICRO logic_summary="Creates removable chip with conditional remove button and styling" notable_decisions="[]"]
468
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
469
- // CIL[DOC-STABILITY stability="stable"]
470
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
471
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
472
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
473
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
485
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the chip container for a multi-select combobox'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
486
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
487
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
488
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
474
489
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
475
490
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
491
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxChips:component"]
492
+
493
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxChip:component" type="component" identity="ComboboxChip" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
494
+ // CIL[DOC-MACRO purpose="Renders an individual selected chip with optional remove button"]
495
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a chip label and conditionally a remove button"]
496
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
497
+ // CIL[DOC-CONTRACT inputs="className, children, showRemove, ...props and chip props" outputs="React element" errors="none" side_effects="none"]
498
+ // CIL[DOC-MICRO logic_summary="Renders ComboboxPrimitive.Chip and conditionally a ChipRemove button using Button." notable_decisions="[]"]
499
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
500
+ // CIL[DOC-STABILITY stability="stable"]
476
501
  function ComboboxChip({
477
502
  className,
478
503
  children,
@@ -503,21 +528,22 @@ function ComboboxChip({
503
528
  </ComboboxPrimitive.Chip>
504
529
  )
505
530
  }
506
- // CIL[END chunk_id="combobox_comboboxchip_1783844098"]
507
- // CIL[BEGIN chunk_id="combobox_comboboxchipsinput_1783844098" type="function" identity="ComboboxChipsInput" parent="none"]
508
- // CIL[DOC-MACRO purpose="Input field for chips container"]
509
- // CIL[DOC-RESPONSIBILITY responsibility="Provide input field within chips for adding new items"]
510
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
511
- // CIL[DOC-CONTRACT inputs="none" outputs="chips input" errors="none" side_effects="renders DOM"]
512
- // CIL[DOC-MICRO logic_summary="Creates minimal input field with outline removal for chips" notable_decisions="[]"]
513
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
514
- // CIL[DOC-STABILITY stability="stable"]
515
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
516
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
517
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
518
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
531
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders an individual selected chip with optional remove button'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
532
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
533
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
534
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
519
535
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
520
536
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
537
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxChip:component"]
538
+
539
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxChipsInput:component" type="component" identity="ComboboxChipsInput" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
540
+ // CIL[DOC-MACRO purpose="Renders the inline text input inside the chip container"]
541
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a flexible text input for typing within chips"]
542
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
543
+ // CIL[DOC-CONTRACT inputs="className, ...props and input props" outputs="React element" errors="none" side_effects="none"]
544
+ // CIL[DOC-MICRO logic_summary="Forwards props to ComboboxPrimitive.Input and applies a small outline-none className." notable_decisions="[]"]
545
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
546
+ // CIL[DOC-STABILITY stability="stable"]
521
547
  function ComboboxChipsInput({
522
548
  className,
523
549
  ...props
@@ -530,39 +556,40 @@ function ComboboxChipsInput({
530
556
  />
531
557
  )
532
558
  }
533
- // CIL[END chunk_id="combobox_comboboxchipsinput_1783844098"]
534
- // CIL[BEGIN chunk_id="combobox_usecomboboxanchor_1783844098" type="function" identity="useComboboxAnchor" parent="none"]
535
- // CIL[DOC-MACRO purpose="Hook for combobox anchor reference"]
536
- // CIL[DOC-RESPONSIBILITY responsibility="Provide ref for anchoring combobox content"]
537
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
538
- // CIL[DOC-CONTRACT inputs="none" outputs="React ref" errors="none" side_effects="none"]
539
- // CIL[DOC-MICRO logic_summary="Creates React ref for HTMLDivElement anchor element" notable_decisions="[]"]
540
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
541
- // CIL[DOC-STABILITY stability="stable"]
542
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
543
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
544
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
545
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
559
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders the inline text input inside the chip container'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
560
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
561
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
562
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
546
563
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
547
564
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
565
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:ComboboxChipsInput:component"]
566
+
567
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:useComboboxAnchor:hook" type="hook" identity="useComboboxAnchor" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
568
+ // CIL[DOC-MACRO purpose="Provides a ref for anchoring the combobox popup"]
569
+ // CIL[DOC-RESPONSIBILITY responsibility="Return a ref that can be attached to an anchor element"]
570
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
571
+ // CIL[DOC-CONTRACT inputs="none" outputs="React ref to HTMLDivElement" errors="none" side_effects="none"]
572
+ // CIL[DOC-MICRO logic_summary="Creates a React ref typed to HTMLDivElement for anchoring." notable_decisions="[]"]
573
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
574
+ // CIL[DOC-STABILITY stability="stable"]
548
575
  function useComboboxAnchor() {
549
576
  return React.useRef<HTMLDivElement | null>(null)
550
577
  }
551
- // CIL[END chunk_id="combobox_usecomboboxanchor_1783844098"]
552
- // CIL[BEGIN chunk_id="combobox_exports_1783844098" type="exports" identity="exports" parent="none"]
553
- // CIL[DOC-MACRO purpose="Export combobox components"]
554
- // CIL[DOC-RESPONSIBILITY responsibility="Make all combobox components available for import"]
555
- // CIL[DOC-CONTEXT module="combobox" layer="ui" related_files="[]"]
556
- // CIL[DOC-CONTRACT inputs="none" outputs="component exports" errors="none" side_effects="module exports"]
557
- // CIL[DOC-MICRO logic_summary="Exports all combobox components and utility hook for external usage" notable_decisions="[]"]
558
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
559
- // CIL[DOC-STABILITY stability="stable"]
560
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
561
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
562
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
563
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
578
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides a ref for anchoring the combobox popup'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
579
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
580
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
581
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
564
582
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
565
583
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
584
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:useComboboxAnchor:hook"]
585
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/combobox.tsx:combobox:exports" type="export" identity="combobox" parent="~/.framework/src/components/ui/combobox.tsx:module_header:module_header"]
586
+ // CIL[DOC-MACRO purpose="Re-exports the public Combobox component surface"]
587
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose all combobox subcomponents and the anchor hook"]
588
+ // CIL[DOC-CONTEXT module="combobox" layer="components/ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/combobox.tsx,.framework/src/components/ui/input-group.tsx,.framework/src/lib/utils.ts"]
589
+ // CIL[DOC-CONTRACT inputs="none" outputs="named exports" errors="none" side_effects="none"]
590
+ // CIL[DOC-MICRO logic_summary="Lists all named component and hook exports for consumers." notable_decisions="[]"]
591
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
592
+ // CIL[DOC-STABILITY stability="stable"]
566
593
  export {
567
594
  Combobox,
568
595
  ComboboxInput,
@@ -581,4 +608,10 @@ export {
581
608
  ComboboxValue,
582
609
  useComboboxAnchor,
583
610
  }
584
- // CIL[END chunk_id="combobox_exports_1783844098"]
611
+ // CIL[DOC-VECTOR type="context" content="purpose='Re-exports the public Combobox component surface'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input-group.tsx"]
612
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
613
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
614
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
615
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
616
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
617
+ // CIL[END stable_id="~/.framework/src/components/ui/combobox.tsx:combobox:exports"]