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/dropdown-menu.tsx:use_client:directive"]
2
+ // CIL[DOC-MACRO purpose="Marks this module as client-side only"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Instructs the bundler to treat this file as a client component"]
4
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="use client directive" errors="none" side_effects="Excludes module from server rendering"]
6
+ // CIL[DOC-MICRO logic_summary="Single use client directive" 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
 
@@ -15,61 +23,65 @@
15
23
 
16
24
 
17
25
 
18
- // CIL[BEGIN chunk_id="dropdownmenu_module_header_1783844098" type="module_header" identity="imports" parent="none"]
19
- // CIL[DOC-MACRO purpose="Import dependencies for dropdown menu components"]
20
- // CIL[DOC-RESPONSIBILITY responsibility="Import React, Radix UI primitives and utilities"]
21
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
22
- // CIL[DOC-CONTRACT inputs="none" outputs="React, Radix primitives, utilities" errors="none" side_effects="none"]
23
- // CIL[DOC-MICRO logic_summary="Imports React, Radix DropdownMenu primitives, styling utilities and icons" notable_decisions="[]"]
24
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
25
- // CIL[DOC-STABILITY stability="stable"]
26
- // CIL[DOC-AUDIENCE audience="developer"]
27
- // 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/ui/dialog.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
28
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
29
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
30
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
26
+
27
+ "use client"
28
+ // CIL[DOC-VECTOR type="context" content="purpose='Marks this module as client-side only'; No verified external callers; imports: .framework/src/lib/utils.ts"]
29
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
30
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
31
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
31
32
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
32
33
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
33
- "use client"
34
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:use_client:directive"]
35
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:module_header:module_header"]
36
+ // CIL[DOC-MACRO purpose="Imports dependencies for the dropdown menu UI components"]
37
+ // CIL[DOC-RESPONSIBILITY responsibility="Set up React, Radix UI, utility and icon imports used by the components below"]
38
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/lib/utils.ts"]
39
+ // CIL[DOC-CONTRACT inputs="none" outputs="imported symbols" errors="none" side_effects="Registers module dependencies"]
40
+ // CIL[DOC-MICRO logic_summary="Import statements for React, Radix primitives, cn and icons" notable_decisions="[]"]
41
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
42
+ // CIL[DOC-STABILITY stability="stable"]
43
+ // CIL[DOC-AUDIENCE audience="ui-developers"]
34
44
  import * as React from "react"
35
45
  import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui"
36
46
  import { cn } from "@/lib/utils"
37
47
  import { CheckIcon, ChevronRightIcon } from "lucide-react"
38
- // CIL[END chunk_id="dropdownmenu_module_header_1783844098"]
39
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenu_1783844098" type="function" identity="DropdownMenu" parent="none"]
40
- // CIL[DOC-MACRO purpose="Root dropdown menu component"]
41
- // CIL[DOC-RESPONSIBILITY responsibility="Provide Radix UI DropdownMenu root primitive"]
42
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
43
- // CIL[DOC-CONTRACT inputs="none" outputs="dropdown menu root" errors="none" side_effects="renders DOM"]
44
- // CIL[DOC-MICRO logic_summary="Wraps Radix DropdownMenu.Root with data-slot attribute" notable_decisions="[]"]
45
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
46
- // CIL[DOC-STABILITY stability="stable"]
47
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
48
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
49
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
50
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
48
+ // CIL[DOC-VECTOR type="context" content="purpose='Imports dependencies for the dropdown menu UI components'; No verified external callers; imports: .framework/src/lib/utils.ts"]
49
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
50
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
51
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
51
52
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
52
53
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
54
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:module_header:module_header"]
55
+
56
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenu:component"]
57
+ // CIL[DOC-MACRO purpose="Root dropdown menu component wrapping Radix DropdownMenuPrimitive.Root"]
58
+ // CIL[DOC-RESPONSIBILITY responsibility="Render the top-level dropdown menu container"]
59
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
60
+ // CIL[DOC-CONTRACT inputs="...props" outputs="JSX element" errors="None" side_effects="None"]
61
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix root with a data-slot attribute" notable_decisions="[]"]
62
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
63
+ // CIL[DOC-STABILITY stability="stable"]
53
64
  function DropdownMenu({
54
65
  ...props
55
66
  }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {
56
67
  return <DropdownMenuPrimitive.Root data-slot="dropdown-menu" {...props} />
57
68
  }
58
- // CIL[END chunk_id="dropdownmenu_dropdownmenu_1783844098"]
59
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenuportal_1783844098" type="function" identity="DropdownMenuPortal" parent="none"]
60
- // CIL[DOC-MACRO purpose="Portal for rendering dropdown menu outside DOM tree"]
61
- // CIL[DOC-RESPONSIBILITY responsibility="Provide portal for dropdown menu positioning"]
62
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
63
- // CIL[DOC-CONTRACT inputs="none" outputs="dropdown menu portal" errors="none" side_effects="renders DOM"]
64
- // CIL[DOC-MICRO logic_summary="Wraps Radix DropdownMenuPortal with data-slot attribute" notable_decisions="[]"]
65
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
66
- // CIL[DOC-STABILITY stability="stable"]
67
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 1. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
68
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 2."]
69
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
70
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
69
+ // CIL[DOC-VECTOR type="context" content="purpose='Root dropdown menu component wrapping Radix DropdownMenuPrimitive.Root'; No verified external callers; imports: .framework/src/lib/utils.ts"]
70
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
71
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
72
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
71
73
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
72
74
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
75
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenu:component"]
76
+
77
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuPortal:component"]
78
+ // CIL[DOC-MACRO purpose="Portal wrapper for dropdown menu content"]
79
+ // CIL[DOC-RESPONSIBILITY responsibility="Render dropdown content outside the normal DOM hierarchy"]
80
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
81
+ // CIL[DOC-CONTRACT inputs="...props" outputs="JSX element" errors="None" side_effects="Renders content outside parent DOM"]
82
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix portal with a data-slot attribute" notable_decisions="[]"]
83
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
84
+ // CIL[DOC-STABILITY stability="stable"]
73
85
  function DropdownMenuPortal({
74
86
  ...props
75
87
  }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {
@@ -77,21 +89,22 @@ function DropdownMenuPortal({
77
89
  <DropdownMenuPrimitive.Portal data-slot="dropdown-menu-portal" {...props} />
78
90
  )
79
91
  }
80
- // CIL[END chunk_id="dropdownmenu_dropdownmenuportal_1783844098"]
81
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenutrigger_1783844098" type="function" identity="DropdownMenuTrigger" parent="none"]
82
- // CIL[DOC-MACRO purpose="Dropdown menu trigger component"]
83
- // CIL[DOC-RESPONSIBILITY responsibility="Provide trigger element for opening dropdown menu"]
84
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
85
- // CIL[DOC-CONTRACT inputs="none" outputs="dropdown menu trigger" errors="none" side_effects="renders DOM"]
86
- // CIL[DOC-MICRO logic_summary="Wraps Radix DropdownMenuTrigger with data-slot attribute" notable_decisions="[]"]
87
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
88
- // CIL[DOC-STABILITY stability="stable"]
89
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 1. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
90
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 2."]
91
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
92
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
92
+ // CIL[DOC-VECTOR type="context" content="purpose='Portal wrapper for dropdown menu content'; No verified external callers; imports: .framework/src/lib/utils.ts"]
93
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
94
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
95
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
93
96
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
94
97
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
98
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuPortal:component"]
99
+
100
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuTrigger:component"]
101
+ // CIL[DOC-MACRO purpose="Trigger element for opening a dropdown menu"]
102
+ // CIL[DOC-RESPONSIBILITY responsibility="Render the button or element that toggles the dropdown"]
103
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
104
+ // CIL[DOC-CONTRACT inputs="...props" outputs="JSX element" errors="None" side_effects="None"]
105
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix trigger with a data-slot attribute" notable_decisions="[]"]
106
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
107
+ // CIL[DOC-STABILITY stability="stable"]
95
108
  function DropdownMenuTrigger({
96
109
  ...props
97
110
  }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {
@@ -102,21 +115,22 @@ function DropdownMenuTrigger({
102
115
  />
103
116
  )
104
117
  }
105
- // CIL[END chunk_id="dropdownmenu_dropdownmenutrigger_1783844098"]
106
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenucontent_1783844098" type="function" identity="DropdownMenuContent" parent="none"]
107
- // CIL[DOC-MACRO purpose="Main dropdown menu content container"]
108
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled popup container for menu items"]
109
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
110
- // CIL[DOC-CONTRACT inputs="none" outputs="styled popup container" errors="none" side_effects="renders DOM"]
111
- // CIL[DOC-MICRO logic_summary="Creates popup with portal, animations and popover styling" notable_decisions="[]"]
112
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
113
- // CIL[DOC-STABILITY stability="stable"]
114
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
115
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
116
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
117
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
118
+ // CIL[DOC-VECTOR type="context" content="purpose='Trigger element for opening a dropdown menu'; No verified external callers; imports: .framework/src/lib/utils.ts"]
119
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
120
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
121
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
118
122
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
119
123
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
124
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuTrigger:component"]
125
+
126
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuContent:component"]
127
+ // CIL[DOC-MACRO purpose="Dropdown menu content panel with positioning and styling"]
128
+ // CIL[DOC-RESPONSIBILITY responsibility="Render styled, positioned dropdown content with animations and overflow handling"]
129
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
130
+ // CIL[DOC-CONTRACT inputs="className, align, sideOffset, Radix content props" outputs="JSX element" errors="None" side_effects="Renders dropdown content into a portal"]
131
+ // CIL[DOC-MICRO logic_summary="Wraps Radix Portal and Content with default alignment, side offset and a Tailwind class string" notable_decisions="[]"]
132
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
133
+ // CIL[DOC-STABILITY stability="stable"]
120
134
  function DropdownMenuContent({
121
135
  className,
122
136
  align = "start",
@@ -135,21 +149,22 @@ function DropdownMenuContent({
135
149
  </DropdownMenuPrimitive.Portal>
136
150
  )
137
151
  }
138
- // CIL[END chunk_id="dropdownmenu_dropdownmenucontent_1783844098"]
139
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenugroup_1783844098" type="function" identity="DropdownMenuGroup" parent="none"]
140
- // CIL[DOC-MACRO purpose="Container for grouping dropdown menu items"]
141
- // CIL[DOC-RESPONSIBILITY responsibility="Provide grouping container for related menu items"]
142
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
143
- // CIL[DOC-CONTRACT inputs="none" outputs="group container" errors="none" side_effects="renders DOM"]
144
- // CIL[DOC-MICRO logic_summary="Wraps Radix DropdownMenuGroup with data-slot attribute" notable_decisions="[]"]
145
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
146
- // CIL[DOC-STABILITY stability="stable"]
147
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
148
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
149
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
150
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
152
+ // CIL[DOC-VECTOR type="context" content="purpose='Dropdown menu content panel with positioning and styling'; No verified external callers; imports: .framework/src/lib/utils.ts"]
153
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
154
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
155
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
151
156
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
152
157
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
158
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuContent:component"]
159
+
160
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuGroup:component"]
161
+ // CIL[DOC-MACRO purpose="Group container for dropdown menu items"]
162
+ // CIL[DOC-RESPONSIBILITY responsibility="Group related dropdown items visually and semantically"]
163
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
164
+ // CIL[DOC-CONTRACT inputs="...props" outputs="JSX element" errors="None" side_effects="None"]
165
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix group with a data-slot attribute" notable_decisions="[]"]
166
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
167
+ // CIL[DOC-STABILITY stability="stable"]
153
168
  function DropdownMenuGroup({
154
169
  ...props
155
170
  }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {
@@ -157,21 +172,22 @@ function DropdownMenuGroup({
157
172
  <DropdownMenuPrimitive.Group data-slot="dropdown-menu-group" {...props} />
158
173
  )
159
174
  }
160
- // CIL[END chunk_id="dropdownmenu_dropdownmenugroup_1783844098"]
161
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenuitem_1783844098" type="function" identity="DropdownMenuItem" parent="none"]
162
- // CIL[DOC-MACRO purpose="Individual dropdown menu item"]
163
- // CIL[DOC-RESPONSIBILITY responsibility="Render selectable menu item with variants and inset support"]
164
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
165
- // CIL[DOC-CONTRACT inputs="none" outputs="styled menu item" errors="none" side_effects="renders DOM"]
166
- // CIL[DOC-MICRO logic_summary="Creates interactive item with focus styling and destructive variant" notable_decisions="[]"]
167
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
168
- // CIL[DOC-STABILITY stability="stable"]
169
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
170
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
171
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
172
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
175
+ // CIL[DOC-VECTOR type="context" content="purpose='Group container for dropdown menu items'; No verified external callers; imports: .framework/src/lib/utils.ts"]
176
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
177
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
178
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
173
179
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
174
180
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
181
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuGroup:component"]
182
+
183
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuItem:component"]
184
+ // CIL[DOC-MACRO purpose="Selectable item inside a dropdown menu"]
185
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a styled dropdown item supporting default and destructive variants and inset padding"]
186
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
187
+ // CIL[DOC-CONTRACT inputs="className, inset, variant, Radix item props" outputs="JSX element" errors="None" side_effects="None"]
188
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix Item with data-slot, data-inset, data-variant and a compound Tailwind class string" notable_decisions="[]"]
189
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
190
+ // CIL[DOC-STABILITY stability="stable"]
175
191
  function DropdownMenuItem({
176
192
  className,
177
193
  inset,
@@ -194,21 +210,22 @@ function DropdownMenuItem({
194
210
  />
195
211
  )
196
212
  }
197
- // CIL[END chunk_id="dropdownmenu_dropdownmenuitem_1783844098"]
198
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenucheckboxitem_1783844098" type="function" identity="DropdownMenuCheckboxItem" parent="none"]
199
- // CIL[DOC-MACRO purpose="Checkbox item for dropdown menus"]
200
- // CIL[DOC-RESPONSIBILITY responsibility="Render toggleable menu item with check indicator"]
201
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
202
- // CIL[DOC-CONTRACT inputs="none" outputs="checkbox menu item" errors="none" side_effects="renders DOM"]
203
- // CIL[DOC-MICRO logic_summary="Creates toggleable item with check indicator and inset styling" notable_decisions="[]"]
204
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
205
- // CIL[DOC-STABILITY stability="stable"]
206
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
207
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
208
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
209
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
213
+ // CIL[DOC-VECTOR type="context" content="purpose='Selectable item inside a dropdown menu'; No verified external callers; imports: .framework/src/lib/utils.ts"]
214
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
215
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
216
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
210
217
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
211
218
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
219
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuItem:component"]
220
+
221
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuCheckboxItem:component"]
222
+ // CIL[DOC-MACRO purpose="Checkbox item in a dropdown menu"]
223
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a checkbox item with checked state, inset support and an indicator"]
224
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
225
+ // CIL[DOC-CONTRACT inputs="className, children, checked, inset, ...props" outputs="JSX element" errors="None" side_effects="Displays check icon when checked"]
226
+ // CIL[DOC-MICRO logic_summary="Wraps Radix CheckboxItem with data attributes and renders a right-aligned check icon indicator" notable_decisions="[]"]
227
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
228
+ // CIL[DOC-STABILITY stability="stable"]
212
229
  function DropdownMenuCheckboxItem({
213
230
  className,
214
231
  children,
@@ -242,21 +259,22 @@ function DropdownMenuCheckboxItem({
242
259
  </DropdownMenuPrimitive.CheckboxItem>
243
260
  )
244
261
  }
245
- // CIL[END chunk_id="dropdownmenu_dropdownmenucheckboxitem_1783844098"]
246
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenuradiogroup_1783844098" type="function" identity="DropdownMenuRadioGroup" parent="none"]
247
- // CIL[DOC-MACRO purpose="Radio group container for dropdown menu items"]
248
- // CIL[DOC-RESPONSIBILITY responsibility="Provide radio button grouping for menu items"]
249
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
250
- // CIL[DOC-CONTRACT inputs="none" outputs="radio group container" errors="none" side_effects="renders DOM"]
251
- // CIL[DOC-MICRO logic_summary="Wraps Radix DropdownMenuRadioGroup with data-slot attribute" notable_decisions="[]"]
252
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
253
- // CIL[DOC-STABILITY stability="stable"]
254
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
255
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
256
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
257
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
262
+ // CIL[DOC-VECTOR type="context" content="purpose='Checkbox item in a dropdown menu'; No verified external callers; imports: .framework/src/lib/utils.ts"]
263
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
264
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
265
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
258
266
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
259
267
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
268
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuCheckboxItem:component"]
269
+
270
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuRadioGroup:component"]
271
+ // CIL[DOC-MACRO purpose="Radio group container for dropdown menu"]
272
+ // CIL[DOC-RESPONSIBILITY responsibility="Group related radio items"]
273
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
274
+ // CIL[DOC-CONTRACT inputs="...props" outputs="JSX element" errors="None" side_effects="None"]
275
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix radio group with a data-slot attribute" notable_decisions="[]"]
276
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
277
+ // CIL[DOC-STABILITY stability="stable"]
260
278
  function DropdownMenuRadioGroup({
261
279
  ...props
262
280
  }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {
@@ -267,21 +285,22 @@ function DropdownMenuRadioGroup({
267
285
  />
268
286
  )
269
287
  }
270
- // CIL[END chunk_id="dropdownmenu_dropdownmenuradiogroup_1783844098"]
271
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenuradioitem_1783844098" type="function" identity="DropdownMenuRadioItem" parent="none"]
272
- // CIL[DOC-MACRO purpose="Radio button item for dropdown menus"]
273
- // CIL[DOC-RESPONSIBILITY responsibility="Render selectable radio item with check indicator"]
274
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
275
- // CIL[DOC-CONTRACT inputs="none" outputs="radio menu item" errors="none" side_effects="renders DOM"]
276
- // CIL[DOC-MICRO logic_summary="Creates radio item with check indicator and inset styling" notable_decisions="[]"]
277
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
278
- // CIL[DOC-STABILITY stability="stable"]
279
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
280
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
281
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
282
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
288
+ // CIL[DOC-VECTOR type="context" content="purpose='Radio group container for dropdown menu'; No verified external callers; imports: .framework/src/lib/utils.ts"]
289
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
290
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
291
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
283
292
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
284
293
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
294
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuRadioGroup:component"]
295
+
296
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuRadioItem:component"]
297
+ // CIL[DOC-MACRO purpose="Radio item in a dropdown menu"]
298
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a radio item with an indicator and inset support"]
299
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
300
+ // CIL[DOC-CONTRACT inputs="className, children, inset, ...props" outputs="JSX element" errors="None" side_effects="Displays selection indicator when selected"]
301
+ // CIL[DOC-MICRO logic_summary="Wraps Radix RadioItem with data attributes and renders a check icon as the selection indicator" notable_decisions="[]"]
302
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
303
+ // CIL[DOC-STABILITY stability="stable"]
285
304
  function DropdownMenuRadioItem({
286
305
  className,
287
306
  children,
@@ -313,21 +332,22 @@ function DropdownMenuRadioItem({
313
332
  </DropdownMenuPrimitive.RadioItem>
314
333
  )
315
334
  }
316
- // CIL[END chunk_id="dropdownmenu_dropdownmenuradioitem_1783844098"]
317
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenulabel_1783844098" type="function" identity="DropdownMenuLabel" parent="none"]
318
- // CIL[DOC-MACRO purpose="Label text for dropdown menu sections"]
319
- // CIL[DOC-RESPONSIBILITY responsibility="Display styled label text for menu sections"]
320
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
321
- // CIL[DOC-CONTRACT inputs="none" outputs="styled label" errors="none" side_effects="renders DOM"]
322
- // CIL[DOC-MICRO logic_summary="Creates muted text label with inset styling support" notable_decisions="[]"]
323
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
324
- // CIL[DOC-STABILITY stability="stable"]
325
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
326
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
327
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
328
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
335
+ // CIL[DOC-VECTOR type="context" content="purpose='Radio item in a dropdown menu'; No verified external callers; imports: .framework/src/lib/utils.ts"]
336
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
337
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
338
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
329
339
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
330
340
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
341
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuRadioItem:component"]
342
+
343
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuLabel:component"]
344
+ // CIL[DOC-MACRO purpose="Label for grouping or describing dropdown menu items"]
345
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a styled dropdown label with optional inset padding"]
346
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
347
+ // CIL[DOC-CONTRACT inputs="className, inset, ...props" outputs="JSX element" errors="None" side_effects="None"]
348
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix label with data-slot, data-inset and a muted text class string" notable_decisions="[]"]
349
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
350
+ // CIL[DOC-STABILITY stability="stable"]
331
351
  function DropdownMenuLabel({
332
352
  className,
333
353
  inset,
@@ -347,21 +367,22 @@ function DropdownMenuLabel({
347
367
  />
348
368
  )
349
369
  }
350
- // CIL[END chunk_id="dropdownmenu_dropdownmenulabel_1783844098"]
351
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenuseparator_1783844098" type="function" identity="DropdownMenuSeparator" parent="none"]
352
- // CIL[DOC-MACRO purpose="Visual separator for dropdown menu sections"]
353
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled separator between menu sections"]
354
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
355
- // CIL[DOC-CONTRACT inputs="none" outputs="styled separator" errors="none" side_effects="renders DOM"]
356
- // CIL[DOC-MICRO logic_summary="Creates horizontal line with margin and border styling" notable_decisions="[]"]
357
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
358
- // CIL[DOC-STABILITY stability="stable"]
359
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
360
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
361
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
362
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
370
+ // CIL[DOC-VECTOR type="context" content="purpose='Label for grouping or describing dropdown menu items'; No verified external callers; imports: .framework/src/lib/utils.ts"]
371
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
372
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
373
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
363
374
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
364
375
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
376
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuLabel:component"]
377
+
378
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuSeparator:component"]
379
+ // CIL[DOC-MACRO purpose="Horizontal separator between dropdown menu sections"]
380
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a styled horizontal divider"]
381
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
382
+ // CIL[DOC-CONTRACT inputs="className, ...props" outputs="JSX element" errors="None" side_effects="None"]
383
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix separator with data-slot and a border class string" notable_decisions="[]"]
384
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
385
+ // CIL[DOC-STABILITY stability="stable"]
365
386
  function DropdownMenuSeparator({
366
387
  className,
367
388
  ...props
@@ -374,21 +395,22 @@ function DropdownMenuSeparator({
374
395
  />
375
396
  )
376
397
  }
377
- // CIL[END chunk_id="dropdownmenu_dropdownmenuseparator_1783844098"]
378
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenushortcut_1783844098" type="function" identity="DropdownMenuShortcut" parent="none"]
379
- // CIL[DOC-MACRO purpose="Keyboard shortcut display for menu items"]
380
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled keyboard shortcut text"]
381
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
382
- // CIL[DOC-CONTRACT inputs="none" outputs="styled shortcut span" errors="none" side_effects="renders DOM"]
383
- // CIL[DOC-MICRO logic_summary="Creates small tracking-widest text with focus styling" notable_decisions="[]"]
384
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
385
- // CIL[DOC-STABILITY stability="stable"]
386
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
387
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
388
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
389
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
398
+ // CIL[DOC-VECTOR type="context" content="purpose='Horizontal separator between dropdown menu sections'; No verified external callers; imports: .framework/src/lib/utils.ts"]
399
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
400
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
401
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
390
402
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
391
403
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
404
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuSeparator:component"]
405
+
406
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuShortcut:component"]
407
+ // CIL[DOC-MACRO purpose="Keyboard shortcut text inside a dropdown menu item"]
408
+ // CIL[DOC-RESPONSIBILITY responsibility="Render small muted shortcut text that responds to focus state"]
409
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
410
+ // CIL[DOC-CONTRACT inputs="className, ...props" outputs="JSX element" errors="None" side_effects="None"]
411
+ // CIL[DOC-MICRO logic_summary="Renders a span with data-slot and a small muted text class string" notable_decisions="[]"]
412
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
413
+ // CIL[DOC-STABILITY stability="stable"]
392
414
  function DropdownMenuShortcut({
393
415
  className,
394
416
  ...props
@@ -404,41 +426,43 @@ function DropdownMenuShortcut({
404
426
  />
405
427
  )
406
428
  }
407
- // CIL[END chunk_id="dropdownmenu_dropdownmenushortcut_1783844098"]
408
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenusub_1783844098" type="function" identity="DropdownMenuSub" parent="none"]
409
- // CIL[DOC-MACRO purpose="Submenu container for nested dropdown menus"]
410
- // CIL[DOC-RESPONSIBILITY responsibility="Provide container for nested menu items"]
411
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
412
- // CIL[DOC-CONTRACT inputs="none" outputs="submenu container" errors="none" side_effects="renders DOM"]
413
- // CIL[DOC-MICRO logic_summary="Wraps Radix DropdownMenuSub with data-slot attribute" notable_decisions="[]"]
414
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
415
- // CIL[DOC-STABILITY stability="stable"]
416
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
417
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
418
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
419
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
429
+ // CIL[DOC-VECTOR type="context" content="purpose='Keyboard shortcut text inside a dropdown menu item'; No verified external callers; imports: .framework/src/lib/utils.ts"]
430
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
431
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
432
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
420
433
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
421
434
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
435
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuShortcut:component"]
436
+
437
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuSub:component"]
438
+ // CIL[DOC-MACRO purpose="Submenu root for nested dropdown menus"]
439
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a nested dropdown menu container"]
440
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
441
+ // CIL[DOC-CONTRACT inputs="...props" outputs="JSX element" errors="None" side_effects="None"]
442
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix sub with a data-slot attribute" notable_decisions="[]"]
443
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
444
+ // CIL[DOC-STABILITY stability="stable"]
422
445
  function DropdownMenuSub({
423
446
  ...props
424
447
  }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {
425
448
  return <DropdownMenuPrimitive.Sub data-slot="dropdown-menu-sub" {...props} />
426
449
  }
427
- // CIL[END chunk_id="dropdownmenu_dropdownmenusub_1783844098"]
428
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenusubtrigger_1783844098" type="function" identity="DropdownMenuSubTrigger" parent="none"]
429
- // CIL[DOC-MACRO purpose="Trigger for nested dropdown menu submenus"]
430
- // CIL[DOC-RESPONSIBILITY responsibility="Provide trigger with chevron for submenu expansion"]
431
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
432
- // CIL[DOC-CONTRACT inputs="none" outputs="submenu trigger" errors="none" side_effects="renders DOM"]
433
- // CIL[DOC-MICRO logic_summary="Creates trigger with chevron icon and inset styling support" notable_decisions="[]"]
434
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
435
- // CIL[DOC-STABILITY stability="stable"]
436
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
437
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
438
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
439
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
450
+ // CIL[DOC-VECTOR type="context" content="purpose='Submenu root for nested dropdown menus'; No verified external callers; imports: .framework/src/lib/utils.ts"]
451
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
452
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
453
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
440
454
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
441
455
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
456
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuSub:component"]
457
+
458
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuSubTrigger:component"]
459
+ // CIL[DOC-MACRO purpose="Trigger for a nested dropdown submenu"]
460
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a trigger with an inset option and a chevron icon"]
461
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
462
+ // CIL[DOC-CONTRACT inputs="className, inset, children, ...props" outputs="JSX element" errors="None" side_effects="None"]
463
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix sub trigger with data attributes and appends a ChevronRightIcon" notable_decisions="[]"]
464
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
465
+ // CIL[DOC-STABILITY stability="stable"]
442
466
  function DropdownMenuSubTrigger({
443
467
  className,
444
468
  inset,
@@ -462,21 +486,22 @@ function DropdownMenuSubTrigger({
462
486
  </DropdownMenuPrimitive.SubTrigger>
463
487
  )
464
488
  }
465
- // CIL[END chunk_id="dropdownmenu_dropdownmenusubtrigger_1783844098"]
466
- // CIL[BEGIN chunk_id="dropdownmenu_dropdownmenusubcontent_1783844098" type="function" identity="DropdownMenuSubContent" parent="none"]
467
- // CIL[DOC-MACRO purpose="Content container for nested submenus"]
468
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled popup for submenu items"]
469
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
470
- // CIL[DOC-CONTRACT inputs="none" outputs="styled submenu popup" errors="none" side_effects="renders DOM"]
471
- // CIL[DOC-MICRO logic_summary="Creates popup container with animations for submenu content" notable_decisions="[]"]
472
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
473
- // CIL[DOC-STABILITY stability="stable"]
474
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
475
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
476
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
477
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
489
+ // CIL[DOC-VECTOR type="context" content="purpose='Trigger for a nested dropdown submenu'; No verified external callers; imports: .framework/src/lib/utils.ts"]
490
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
491
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
492
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
478
493
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
479
494
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
495
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuSubTrigger:component"]
496
+
497
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuSubContent:component"]
498
+ // CIL[DOC-MACRO purpose="Nested dropdown submenu content panel"]
499
+ // CIL[DOC-RESPONSIBILITY responsibility="Render styled nested submenu content with animations"]
500
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
501
+ // CIL[DOC-CONTRACT inputs="className, ...props" outputs="JSX element" errors="None" side_effects="Renders nested submenu content"]
502
+ // CIL[DOC-MICRO logic_summary="Forwards props to Radix SubContent with data-slot and a Tailwind class string for nested menus" notable_decisions="[]"]
503
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
504
+ // CIL[DOC-STABILITY stability="stable"]
480
505
  function DropdownMenuSubContent({
481
506
  className,
482
507
  ...props
@@ -489,21 +514,21 @@ function DropdownMenuSubContent({
489
514
  />
490
515
  )
491
516
  }
492
- // CIL[END chunk_id="dropdownmenu_dropdownmenusubcontent_1783844098"]
493
- // CIL[BEGIN chunk_id="dropdownmenu_exports_1783844098" type="exports" identity="exports" parent="none"]
494
- // CIL[DOC-MACRO purpose="Export dropdown menu components"]
495
- // CIL[DOC-RESPONSIBILITY responsibility="Make all dropdown menu components available for import"]
496
- // CIL[DOC-CONTEXT module="dropdownmenu" layer="ui" related_files="[]"]
497
- // CIL[DOC-CONTRACT inputs="none" outputs="component exports" errors="none" side_effects="module exports"]
498
- // CIL[DOC-MICRO logic_summary="Exports all dropdown menu components for external usage" notable_decisions="[]"]
499
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
500
- // CIL[DOC-STABILITY stability="stable"]
501
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
502
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
503
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
504
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
517
+ // CIL[DOC-VECTOR type="context" content="purpose='Nested dropdown submenu content panel'; No verified external callers; imports: .framework/src/lib/utils.ts"]
518
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
519
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
520
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
505
521
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
506
522
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
523
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:DropdownMenuSubContent:component"]
524
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:export_block:export_block"]
525
+ // CIL[DOC-MACRO purpose="Export all dropdown menu component symbols"]
526
+ // CIL[DOC-RESPONSIBILITY responsibility="Make dropdown menu components available for import by consumers"]
527
+ // CIL[DOC-CONTEXT module="components/ui/dropdown-menu" layer="ui" related_files=".framework/src/components/ui/dropdown-menu.tsx,.framework/src/lib/utils.ts"]
528
+ // CIL[DOC-CONTRACT inputs="All component definitions in this module" outputs="Named exports" errors="None" side_effects="Exposes module public API"]
529
+ // CIL[DOC-MICRO logic_summary="Named export block listing every dropdown menu component" notable_decisions="[]"]
530
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
531
+ // CIL[DOC-STABILITY stability="stable"]
507
532
  export {
508
533
  DropdownMenu,
509
534
  DropdownMenuPortal,
@@ -521,4 +546,10 @@ export {
521
546
  DropdownMenuSubTrigger,
522
547
  DropdownMenuSubContent,
523
548
  }
524
- // CIL[END chunk_id="dropdownmenu_exports_1783844098"]
549
+ // CIL[DOC-VECTOR type="context" content="purpose='Export all dropdown menu component symbols'; No verified external callers; imports: .framework/src/lib/utils.ts"]
550
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
551
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
552
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
553
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
554
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
555
+ // CIL[END stable_id="~/.framework/src/components/ui/dropdown-menu.tsx:export_block:export_block"]