spine-framework 0.3.145 → 0.4.1

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 +5067 -1026
  28. package/.framework/functions/_shared/app-manifest.ts +214 -94
  29. package/.framework/functions/_shared/ast.ts +214 -0
  30. package/.framework/functions/_shared/audit.ts +91 -55
  31. package/.framework/functions/_shared/cil.ts +368 -127
  32. package/.framework/functions/_shared/db.ts +337 -68
  33. package/.framework/functions/_shared/funnel.ts +228 -0
  34. package/.framework/functions/_shared/geo.ts +105 -0
  35. package/.framework/functions/_shared/hash-api-key.ts +94 -17
  36. package/.framework/functions/_shared/index.ts +22 -224
  37. package/.framework/functions/_shared/kb.ts +832 -58
  38. package/.framework/functions/_shared/llm.ts +118 -18
  39. package/.framework/functions/_shared/logging.ts +317 -19
  40. package/.framework/functions/_shared/middleware.ts +701 -131
  41. package/.framework/functions/_shared/notify.ts +70 -0
  42. package/.framework/functions/_shared/outcomes.ts +34 -19
  43. package/.framework/functions/_shared/permissions.ts +501 -315
  44. package/.framework/functions/_shared/pipeline-runner.ts +704 -155
  45. package/.framework/functions/_shared/principal.ts +436 -263
  46. package/.framework/functions/_shared/rate-limit.ts +233 -0
  47. package/.framework/functions/_shared/resolve-credentials.ts +86 -19
  48. package/.framework/functions/_shared/resolve-ids.ts +203 -139
  49. package/.framework/functions/_shared/retry-deliveries.ts +51 -16
  50. package/.framework/functions/_shared/schema-utils.ts +602 -521
  51. package/.framework/functions/_shared/security.ts +345 -0
  52. package/.framework/functions/_shared/testing.ts +197 -172
  53. package/.framework/functions/_shared/tracing.ts +351 -21
  54. package/.framework/functions/_shared/trigger-engine.ts +425 -136
  55. package/.framework/functions/_shared/webhook-registration.ts +71 -70
  56. package/.framework/functions/_shared/webhook-registry.ts +126 -83
  57. package/.framework/functions/account-nodes.ts +30 -30
  58. package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
  59. package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
  60. package/.framework/functions/adapters/openai-outbound.ts +15 -16
  61. package/.framework/functions/admin-data.ts +596 -173
  62. package/.framework/functions/admin-funnel.ts +64 -60
  63. package/.framework/functions/admin-install-funnel.ts +84 -66
  64. package/.framework/functions/admin-signals.ts +69 -51
  65. package/.framework/functions/ai-agents.ts +431 -106
  66. package/.framework/functions/ai-interactions.ts +186 -112
  67. package/.framework/functions/api-keys.ts +107 -107
  68. package/.framework/functions/apps.ts +154 -136
  69. package/.framework/functions/auth.ts +83 -65
  70. package/.framework/functions/cil-agent-ingest.ts +189 -232
  71. package/.framework/functions/cil-agent.ts +433 -177
  72. package/.framework/functions/cil-callmap.ts +642 -430
  73. package/.framework/functions/cil-config.ts +139 -135
  74. package/.framework/functions/cil-context.ts +214 -127
  75. package/.framework/functions/cil-doc.ts +587 -458
  76. package/.framework/functions/cil-embeddings.ts +453 -364
  77. package/.framework/functions/cil-graph.ts +427 -142
  78. package/.framework/functions/cil-ingest.ts +1418 -1154
  79. package/.framework/functions/cil-pipeline.ts +276 -21
  80. package/.framework/functions/cil-project.ts +659 -132
  81. package/.framework/functions/cil-validate.ts +198 -164
  82. package/.framework/functions/debug-auth.ts +57 -55
  83. package/.framework/functions/deliveries.ts +80 -21
  84. package/.framework/functions/embeddings.ts +1023 -318
  85. package/.framework/functions/eval-harness.ts +146 -108
  86. package/.framework/functions/integration-outbound.ts +205 -75
  87. package/.framework/functions/integration-routes.ts +128 -23
  88. package/.framework/functions/integrations.ts +125 -100
  89. package/.framework/functions/invites.ts +1095 -460
  90. package/.framework/functions/item-progress.ts +158 -102
  91. package/.framework/functions/kb.ts +34 -10
  92. package/.framework/functions/logs.ts +133 -133
  93. package/.framework/functions/observability.ts +152 -122
  94. package/.framework/functions/pipeline-executions.ts +147 -132
  95. package/.framework/functions/pipelines.ts +134 -119
  96. package/.framework/functions/prompt-configs.ts +96 -80
  97. package/.framework/functions/roles.ts +112 -82
  98. package/.framework/functions/security.ts +450 -0
  99. package/.framework/functions/system-cron.ts +117 -80
  100. package/.framework/functions/system.ts +158 -98
  101. package/.framework/functions/tests.ts +29 -29
  102. package/.framework/functions/timers.ts +94 -95
  103. package/.framework/functions/trigger-scheduler.ts +10 -0
  104. package/.framework/functions/triggers.ts +179 -149
  105. package/.framework/functions/types.ts +137 -125
  106. package/.framework/mcp/index.ts +133 -0
  107. package/.framework/mcp/load-env.ts +60 -0
  108. package/.framework/mcp/shared/app-manifest.ts +275 -0
  109. package/.framework/mcp/shared/db.ts +477 -0
  110. package/.framework/mcp/shared/kb.ts +118 -0
  111. package/.framework/mcp/tools/architect.ts +431 -0
  112. package/.framework/mcp/tools/cil/context.ts +345 -0
  113. package/.framework/mcp/tools/cil/graph.ts +242 -0
  114. package/.framework/mcp/tools/cil/ingest.ts +1217 -0
  115. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
  116. package/.framework/mcp/tools/cil/pipeline.ts +767 -0
  117. package/.framework/mcp/tools/cil/project.ts +791 -0
  118. package/.framework/mcp/tools/cil/retrieval.ts +336 -0
  119. package/.framework/mcp/tools/cil/search-core.ts +454 -0
  120. package/.framework/mcp/tools/cil/search.ts +97 -0
  121. package/.framework/mcp/tools/cil/suggest.ts +186 -0
  122. package/.framework/mcp/tools/cil/validate.ts +1369 -0
  123. package/.framework/mcp/tools/kb/delete.ts +139 -0
  124. package/.framework/mcp/tools/kb/index.ts +52 -0
  125. package/.framework/mcp/tools/kb/ingest.ts +84 -0
  126. package/.framework/mcp/tools/kb/list-types.ts +102 -0
  127. package/.framework/mcp/tools/kb/publish.ts +100 -0
  128. package/.framework/mcp/tools/kb/reindex.ts +86 -0
  129. package/.framework/mcp/tools/kb/revoke.ts +85 -0
  130. package/.framework/mcp/tools/kb/search.ts +101 -0
  131. package/.framework/mcp/tools/kb/upsert.ts +125 -0
  132. package/.framework/mcp/tools/observability.ts +510 -0
  133. package/.framework/migrations/001_core_schema.sql +15 -0
  134. package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
  135. package/.framework/migrations/003_core_system_data.sql +16 -1
  136. package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
  137. package/.framework/migrations/005_core_observability.sql +17 -1
  138. package/.framework/migrations/006_security_hardening_rls.sql +15 -0
  139. package/.framework/migrations/007_kb_article_list.sql +17 -1
  140. package/.framework/migrations/008_items_target.sql +15 -0
  141. package/.framework/migrations/009_roles_slug_unique.sql +15 -0
  142. package/.framework/migrations/010_auth_user_trigger.sql +15 -0
  143. package/.framework/migrations/011_spine_system_account.sql +16 -0
  144. package/.framework/migrations/012_service_role_grants.sql +16 -0
  145. package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
  146. package/.framework/migrations/014_apps_required_roles.sql +16 -0
  147. package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
  148. package/.framework/migrations/016_cil_types.sql +281 -0
  149. package/.framework/migrations/017_cil_stable_ids.sql +37 -0
  150. package/.framework/migrations/018_runtime_tables.sql +129 -0
  151. package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
  152. package/.framework/migrations/020_schema_reconciliation.sql +67 -0
  153. package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
  154. package/.framework/migrations/032_cil_status_migration.sql +73 -0
  155. package/.framework/migrations/033_cil_versioning.sql +73 -0
  156. package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
  157. package/.framework/migrations/035_rate_limits.sql +55 -0
  158. package/.framework/migrations/036_demo_record_flags.sql +72 -0
  159. package/.framework/migrations/037_kb_types_canonical.sql +244 -0
  160. package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
  161. package/.framework/migrations/042_registration_hierarchy.sql +309 -0
  162. package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
  163. package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
  164. package/.framework/migrations/045_security_critical_rls.sql +139 -0
  165. package/.framework/migrations/046_security_missing_rls.sql +79 -0
  166. package/.framework/migrations/047_people_updated_by.sql +27 -0
  167. package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
  168. package/.framework/migrations/049_security_blocklist.sql +148 -0
  169. package/.framework/migrations/050_notifications.sql +49 -0
  170. package/.framework/migrations/051_message_agent_fields.sql +74 -0
  171. package/.framework/migrations/052_registration_security.sql +421 -0
  172. package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
  173. package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
  174. package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
  175. package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
  176. package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
  177. package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
  178. package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
  179. package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
  180. package/.framework/migrations/061_fk_dedup.sql +32 -0
  181. package/.framework/public/spine-logo.svg +10 -3
  182. package/.framework/scripts/app-install-cli.ts +190 -93
  183. package/.framework/scripts/assemble-frontend.sh +127 -44
  184. package/.framework/scripts/assemble-functions.sh +128 -30
  185. package/.framework/scripts/boundary-check.sh +6 -2
  186. package/.framework/scripts/build-manifest.sh +24 -68
  187. package/.framework/scripts/check-core-integrity.sh +15 -76
  188. package/.framework/scripts/checksum-manifest.mts +343 -0
  189. package/.framework/scripts/cil-migrate-markers.ts +403 -0
  190. package/.framework/scripts/fix-cil-markers.mjs +176 -0
  191. package/.framework/scripts/verify-integrity.sh +21 -57
  192. package/.framework/scripts/verify-manifest.mts +305 -0
  193. package/.framework/seeds/types/funnel_signal_use.json +74 -21
  194. package/.framework/seeds/types/spine_instance.json +73 -21
  195. package/.framework/src/App.tsx +118 -72
  196. package/.framework/src/apps/admin/index.tsx +855 -58
  197. package/.framework/src/components/AppWrapper.tsx +43 -45
  198. package/.framework/src/components/CustomAppLoader.tsx +160 -116
  199. package/.framework/src/components/admin/AdminListPage.tsx +46 -44
  200. package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
  201. package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
  202. package/.framework/src/components/admin/PageInstructions.tsx +98 -2
  203. package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
  204. package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
  205. package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
  206. package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
  207. package/.framework/src/components/app-sidebar.tsx +42 -45
  208. package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
  209. package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
  210. package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
  211. package/.framework/src/components/kb/KBArticleList.tsx +251 -10
  212. package/.framework/src/components/layout/AppShell.tsx +51 -45
  213. package/.framework/src/components/layout/Header.tsx +42 -43
  214. package/.framework/src/components/layout/Layout.tsx +46 -46
  215. package/.framework/src/components/layout/Sidebar.tsx +196 -96
  216. package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
  217. package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
  218. package/.framework/src/components/runtime/DataFilters.tsx +49 -74
  219. package/.framework/src/components/runtime/DataHeader.tsx +53 -32
  220. package/.framework/src/components/runtime/DataListPage.tsx +51 -155
  221. package/.framework/src/components/runtime/DataStats.tsx +66 -44
  222. package/.framework/src/components/runtime/DataTable.tsx +49 -149
  223. package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
  224. package/.framework/src/components/runtime/index.ts +119 -16
  225. package/.framework/src/components/search-form.tsx +46 -29
  226. package/.framework/src/components/shared/AgentView.tsx +65 -48
  227. package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
  228. package/.framework/src/components/shared/InviteManager.tsx +207 -97
  229. package/.framework/src/components/shared/MemberList.tsx +97 -0
  230. package/.framework/src/components/shared/SchemaFields.tsx +107 -86
  231. package/.framework/src/components/ui/DataTable.tsx +80 -68
  232. package/.framework/src/components/ui/Form.tsx +157 -146
  233. package/.framework/src/components/ui/ItemCard.tsx +74 -67
  234. package/.framework/src/components/ui/ItemListView.tsx +73 -68
  235. package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
  236. package/.framework/src/components/ui/Modal.tsx +78 -68
  237. package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
  238. package/.framework/src/components/ui/accordion.tsx +85 -86
  239. package/.framework/src/components/ui/alert-dialog.tsx +197 -184
  240. package/.framework/src/components/ui/alert.tsx +105 -94
  241. package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
  242. package/.framework/src/components/ui/avatar.tsx +122 -107
  243. package/.framework/src/components/ui/badge.tsx +60 -55
  244. package/.framework/src/components/ui/breadcrumb.tsx +127 -128
  245. package/.framework/src/components/ui/button-group.tsx +86 -72
  246. package/.framework/src/components/ui/button.tsx +71 -50
  247. package/.framework/src/components/ui/calendar.tsx +72 -57
  248. package/.framework/src/components/ui/card.tsx +136 -129
  249. package/.framework/src/components/ui/carousel.tsx +226 -107
  250. package/.framework/src/components/ui/chart.tsx +252 -147
  251. package/.framework/src/components/ui/checkbox.tsx +43 -44
  252. package/.framework/src/components/ui/collapsible.tsx +86 -71
  253. package/.framework/src/components/ui/combobox.tsx +282 -249
  254. package/.framework/src/components/ui/command.tsx +158 -146
  255. package/.framework/src/components/ui/context-menu.tsx +239 -240
  256. package/.framework/src/components/ui/dialog.tsx +174 -157
  257. package/.framework/src/components/ui/direction.tsx +72 -56
  258. package/.framework/src/components/ui/drawer.tsx +168 -169
  259. package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
  260. package/.framework/src/components/ui/empty.tsx +131 -120
  261. package/.framework/src/components/ui/field.tsx +205 -173
  262. package/.framework/src/components/ui/hover-card.tsx +71 -72
  263. package/.framework/src/components/ui/input-group.tsx +148 -133
  264. package/.framework/src/components/ui/input-otp.tsx +99 -86
  265. package/.framework/src/components/ui/input.tsx +43 -41
  266. package/.framework/src/components/ui/item.tsx +207 -185
  267. package/.framework/src/components/ui/kbd.tsx +57 -56
  268. package/.framework/src/components/ui/label.tsx +45 -41
  269. package/.framework/src/components/ui/menubar.tsx +268 -236
  270. package/.framework/src/components/ui/native-select.tsx +85 -86
  271. package/.framework/src/components/ui/navigation-menu.tsx +166 -156
  272. package/.framework/src/components/ui/pagination.tsx +131 -141
  273. package/.framework/src/components/ui/popover.tsx +125 -128
  274. package/.framework/src/components/ui/progress.tsx +47 -44
  275. package/.framework/src/components/ui/radio-group.tsx +60 -55
  276. package/.framework/src/components/ui/resizable.tsx +85 -72
  277. package/.framework/src/components/ui/scroll-area.tsx +57 -58
  278. package/.framework/src/components/ui/select.tsx +182 -169
  279. package/.framework/src/components/ui/separator.tsx +42 -43
  280. package/.framework/src/components/ui/sheet.tsx +170 -159
  281. package/.framework/src/components/ui/sidebar.tsx +395 -398
  282. package/.framework/src/components/ui/skeleton.tsx +42 -43
  283. package/.framework/src/components/ui/slider.tsx +61 -44
  284. package/.framework/src/components/ui/sonner.tsx +44 -44
  285. package/.framework/src/components/ui/spinner.tsx +47 -42
  286. package/.framework/src/components/ui/switch.tsx +56 -42
  287. package/.framework/src/components/ui/table-primitives.tsx +272 -132
  288. package/.framework/src/components/ui/table.tsx +140 -142
  289. package/.framework/src/components/ui/tabs.tsx +110 -93
  290. package/.framework/src/components/ui/textarea.tsx +43 -44
  291. package/.framework/src/components/ui/toggle-group.tsx +87 -71
  292. package/.framework/src/components/ui/toggle.tsx +56 -56
  293. package/.framework/src/components/ui/tooltip.tsx +99 -85
  294. package/.framework/src/contexts/AppContext.tsx +166 -114
  295. package/.framework/src/contexts/AuthContext.tsx +232 -137
  296. package/.framework/src/hooks/use-mobile.ts +43 -44
  297. package/.framework/src/hooks/useApi.ts +185 -172
  298. package/.framework/src/hooks/useAppPath.ts +31 -29
  299. package/.framework/src/hooks/useApps.ts +77 -42
  300. package/.framework/src/hooks/useEntityList.ts +66 -29
  301. package/.framework/src/hooks/useEntityRecord.ts +76 -32
  302. package/.framework/src/hooks/useForm.ts +62 -30
  303. package/.framework/src/hooks/useListSchema.ts +60 -43
  304. package/.framework/src/hooks/useSchemaRecord.ts +115 -95
  305. package/.framework/src/lib/api.ts +258 -134
  306. package/.framework/src/lib/registration.ts +181 -0
  307. package/.framework/src/lib/supabase.ts +118 -81
  308. package/.framework/src/lib/utils.ts +266 -266
  309. package/.framework/src/main.tsx +43 -44
  310. package/.framework/src/pages/DashboardPage.tsx +44 -43
  311. package/.framework/src/pages/NoAppPage.tsx +50 -0
  312. package/.framework/src/pages/NotFoundPage.tsx +32 -29
  313. package/.framework/src/pages/SetupPage.tsx +34 -33
  314. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
  315. package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
  316. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
  317. package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
  318. package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
  319. package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
  320. package/.framework/src/pages/admin/AppsPage.tsx +45 -42
  321. package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
  322. package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
  323. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
  324. package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
  325. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
  326. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
  327. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
  328. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
  329. package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
  330. package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
  331. package/.framework/src/pages/admin/LogsPage.tsx +87 -137
  332. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
  333. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
  334. package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
  335. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
  336. package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
  337. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
  338. package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
  339. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
  340. package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
  341. package/.framework/src/pages/admin/RolesPage.tsx +47 -164
  342. package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
  343. package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
  344. package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
  345. package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
  346. package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
  347. package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
  348. package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
  349. package/.framework/src/pages/admin/TimersPage.tsx +44 -42
  350. package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
  351. package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
  352. package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
  353. package/.framework/src/pages/admin/TypesPage.tsx +45 -42
  354. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
  355. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
  356. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
  357. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
  358. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
  359. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
  360. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
  361. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
  362. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
  363. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
  364. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
  365. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
  366. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  367. package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
  368. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
  369. package/.framework/src/pages/auth/LoginPage.tsx +38 -32
  370. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
  371. package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
  372. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
  373. package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
  374. package/.framework/src/types/auth.ts +101 -93
  375. package/.framework/src/types/types.ts +283 -262
  376. package/.framework/templates/project.json +87 -0
  377. package/.framework/templates/spine.config.neutral.json +7 -0
  378. package/.framework/tests/api/api-surface.test.ts +381 -0
  379. package/.framework/tests/fixtures/seed.ts +427 -0
  380. package/.framework/tests/fixtures/teardown.ts +228 -0
  381. package/.framework/tests/reporter.ts +351 -0
  382. package/.framework/tests/setup.ts +135 -0
  383. package/.framework/tests/ui/ui-sweep.ts +278 -0
  384. package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
  385. package/.framework/tests/unit/agent-runner.test.ts +2389 -0
  386. package/.framework/tests/unit/ai-interactions.test.ts +81 -0
  387. package/.framework/tests/unit/app-manifest.test.ts +359 -0
  388. package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
  389. package/.framework/tests/unit/cil-determinism.test.ts +85 -0
  390. package/.framework/tests/unit/core-isolation.test.ts +153 -0
  391. package/.framework/tests/unit/funnel-signals.test.ts +135 -0
  392. package/.framework/tests/unit/install-app.test.ts +1759 -0
  393. package/.framework/tests/unit/invites-security.test.ts +572 -0
  394. package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
  395. package/.framework/tests/unit/kb-search.test.ts +119 -0
  396. package/.framework/tests/unit/migrate.test.ts +509 -0
  397. package/.framework/tests/unit/notify.test.ts +136 -0
  398. package/.framework/tests/unit/permissions.test.ts +269 -0
  399. package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
  400. package/.framework/tests/unit/principal-cache.test.ts +138 -0
  401. package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
  402. package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
  403. package/.framework/tests/unit/schema-utils.test.ts +225 -0
  404. package/.framework/tests/unit/trigger-engine.test.ts +513 -0
  405. package/.framework/tests/unit/validate-app.test.ts +527 -0
  406. package/README.md +34 -3
  407. package/bin/spine-framework.cjs +1 -0
  408. package/config/tailwind.config.cjs +7 -0
  409. package/config/tsconfig.functions.json +42 -0
  410. package/config/tsconfig.json +37 -9
  411. package/config/vite.config.ts +31 -2
  412. package/netlify.toml +31 -3
  413. package/package.json +46 -29
  414. package/scripts/assemble-frontend.sh +127 -44
  415. package/scripts/assemble-functions.sh +127 -29
  416. package/scripts/boundary-check.sh +6 -2
  417. package/scripts/build-manifest.sh +24 -68
  418. package/scripts/checksum-manifest.mts +345 -0
  419. package/scripts/dev-clean.sh +86 -0
  420. package/scripts/dev-netlify.sh +49 -0
  421. package/scripts/netlify-dev-wrapper.sh +2 -0
  422. package/scripts/verify-install.ts +358 -0
  423. package/scripts/verify-integrity.sh +21 -57
  424. package/scripts/verify-manifest.mts +305 -0
  425. package/templates/project/gitignore +45 -0
  426. package/{config → templates/project}/package-lock.json +22335 -9366
  427. package/vitest.config.ts +46 -0
  428. package/.framework/public/spine.config.json +0 -91
  429. package/config/deno.lock +0 -108
  430. package/config/tsconfig.node.tsbuildinfo +0 -1
  431. package/config/tsconfig.tsbuildinfo +0 -1
  432. package/config/vite.config.d.ts +0 -2
  433. package/custom/.devin/AGENT.md +0 -357
  434. package/custom/.devin/skills/install-app/SKILL.md +0 -39
  435. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
  436. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
  437. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
  438. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
  439. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
  440. package/custom/.devin/workflows/app-install.yaml +0 -83
  441. package/custom/README.md +0 -79
  442. package/docs/README.md +0 -15
  443. package/scripts/app-install-cli.ts +0 -286
  444. package/scripts/check-core-integrity.sh +0 -82
  445. package/scripts/ingest-chunks.cjs +0 -202
  446. package/scripts/kb-chunk-parser.cjs +0 -312
  447. package/scripts/kb-chunk-parser.ts +0 -330
  448. package/scripts/kb-ingest-docs.ts +0 -203
  449. package/scripts/load-test-app-install.ts +0 -484
  450. package/scripts/test-login.js +0 -33
  451. package/spine.config.json +0 -91
@@ -1,74 +1,53 @@
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
- // CIL[BEGIN chunk_id="contextmenu_module_header_1783844098" type="module_header" identity="imports" parent="none"]
19
- // CIL[DOC-MACRO purpose="Import dependencies for context menu components"]
20
- // CIL[DOC-RESPONSIBILITY responsibility="Import React, Radix UI primitives and utilities"]
21
- // CIL[DOC-CONTEXT module="contextmenu" 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 ContextMenu primitives, styling utilities and icons" notable_decisions="[]"]
24
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/ui/context-menu.tsx"]
2
+ // CIL[DOC-MACRO purpose="Define the context-menu component module and its styled Radix UI subcomponents"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Import dependencies and provide composable, accessible context menu building blocks for the UI layer"]
4
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
5
+ // CIL[DOC-MICRO logic_summary="Imports React, Radix UI ContextMenu primitives, utility helpers and icons; prepares re-exported subcomponents" notable_decisions="[]"]
6
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/lib/utils.ts"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
25
8
  // 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."]
31
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
32
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
9
+ // CIL[DOC-AUDIENCE audience="frontend-developers"]
33
10
  import * as React from "react"
34
11
  import { ContextMenu as ContextMenuPrimitive } from "radix-ui"
35
12
  import { cn } from "@/lib/utils"
36
13
  import { ChevronRightIcon, CheckIcon } from "lucide-react"
37
- // CIL[END chunk_id="contextmenu_module_header_1783844098"]
38
- // CIL[BEGIN chunk_id="contextmenu_contextmenu_1783844098" type="function" identity="ContextMenu" parent="none"]
39
- // CIL[DOC-MACRO purpose="Root context menu component"]
40
- // CIL[DOC-RESPONSIBILITY responsibility="Provide Radix UI ContextMenu root primitive"]
41
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
42
- // CIL[DOC-CONTRACT inputs="none" outputs="context menu root" errors="none" side_effects="renders DOM"]
43
- // CIL[DOC-MICRO logic_summary="Wraps Radix ContextMenu.Root with data-slot attribute" notable_decisions="[]"]
44
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
45
- // CIL[DOC-STABILITY stability="stable"]
46
- // 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, \."]
47
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
48
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
49
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
14
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the context-menu component module and its styled Radix UI subcomponents'; No verified external callers; imports: .framework/src/lib/utils.ts"]
15
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
16
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
17
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
50
18
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
51
19
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
20
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
21
+
22
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenu:function" type="function" identity="contextmenu" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
23
+ // CIL[DOC-MACRO purpose="Render the context menu root wrapper"]
24
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.Root and forward props"]
25
+ // CIL[DOC-CONTRACT inputs="props: React.ComponentProps<typeof ContextMenuPrimitive.Root>" outputs="JSX.Element" errors="none" side_effects="none"]
26
+ // CIL[DOC-MICRO logic_summary="Returns ContextMenuPrimitive.Root with data-slot and spread props" notable_decisions="[]"]
27
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
28
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
29
+ // CIL[DOC-STABILITY stability="stable"]
52
30
  function ContextMenu({
53
31
  ...props
54
32
  }: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {
55
33
  return <ContextMenuPrimitive.Root data-slot="context-menu" {...props} />
56
34
  }
57
- // CIL[END chunk_id="contextmenu_contextmenu_1783844098"]
58
- // CIL[BEGIN chunk_id="contextmenu_contextmenutrigger_1783844098" type="function" identity="ContextMenuTrigger" parent="none"]
59
- // CIL[DOC-MACRO purpose="Context menu trigger component"]
60
- // CIL[DOC-RESPONSIBILITY responsibility="Provide trigger element for right-click context menu"]
61
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
62
- // CIL[DOC-CONTRACT inputs="none" outputs="context menu trigger" errors="none" side_effects="renders DOM"]
63
- // CIL[DOC-MICRO logic_summary="Wraps Radix ContextMenuTrigger with select-none styling" notable_decisions="[]"]
64
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
65
- // CIL[DOC-STABILITY stability="stable"]
66
- // 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, \."]
67
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
68
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
69
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
35
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu root wrapper'; No verified external callers; imports: .framework/src/lib/utils.ts"]
36
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
37
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
38
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
70
39
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
71
40
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
41
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenu:function"]
42
+
43
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenutrigger:function" type="function" identity="contextmenutrigger" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
44
+ // CIL[DOC-MACRO purpose="Render the context menu trigger subcomponent"]
45
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.Trigger with project styling and forward props"]
46
+ // CIL[DOC-CONTRACT inputs="className: string, ...props: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>" outputs="JSX.Element" errors="none" side_effects="none"]
47
+ // CIL[DOC-MICRO logic_summary="Returns ContextMenuPrimitive.Trigger with data-slot and merged className" notable_decisions="[]"]
48
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
49
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
50
+ // CIL[DOC-STABILITY stability="stable"]
72
51
  function ContextMenuTrigger({
73
52
  className,
74
53
  ...props
@@ -81,21 +60,22 @@ function ContextMenuTrigger({
81
60
  />
82
61
  )
83
62
  }
84
- // CIL[END chunk_id="contextmenu_contextmenutrigger_1783844098"]
85
- // CIL[BEGIN chunk_id="contextmenu_contextmenugroup_1783844098" type="function" identity="ContextMenuGroup" parent="none"]
86
- // CIL[DOC-MACRO purpose="Container for grouping context menu items"]
87
- // CIL[DOC-RESPONSIBILITY responsibility="Provide grouping container for related menu items"]
88
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
89
- // CIL[DOC-CONTRACT inputs="none" outputs="group container" errors="none" side_effects="renders DOM"]
90
- // CIL[DOC-MICRO logic_summary="Wraps Radix ContextMenuGroup with data-slot attribute" notable_decisions="[]"]
91
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
92
- // CIL[DOC-STABILITY stability="stable"]
93
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
94
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
95
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
96
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
63
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu trigger subcomponent'; No verified external callers; imports: .framework/src/lib/utils.ts"]
64
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
65
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
66
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
97
67
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
98
68
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
69
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenutrigger:function"]
70
+
71
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenugroup:function" type="function" identity="contextmenugroup" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
72
+ // CIL[DOC-MACRO purpose="Render the context menu group subcomponent"]
73
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.Group with project styling and forward props"]
74
+ // CIL[DOC-CONTRACT inputs="props: React.ComponentProps<typeof ContextMenuPrimitive.Group>" outputs="JSX.Element" errors="none" side_effects="none"]
75
+ // CIL[DOC-MICRO logic_summary="Returns ContextMenuPrimitive.Group with data-slot and merged className" notable_decisions="[]"]
76
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
77
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
78
+ // CIL[DOC-STABILITY stability="stable"]
99
79
  function ContextMenuGroup({
100
80
  ...props
101
81
  }: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {
@@ -103,21 +83,22 @@ function ContextMenuGroup({
103
83
  <ContextMenuPrimitive.Group data-slot="context-menu-group" {...props} />
104
84
  )
105
85
  }
106
- // CIL[END chunk_id="contextmenu_contextmenugroup_1783844098"]
107
- // CIL[BEGIN chunk_id="contextmenu_contextmenuportal_1783844098" type="function" identity="ContextMenuPortal" parent="none"]
108
- // CIL[DOC-MACRO purpose="Portal for rendering context menu outside DOM tree"]
109
- // CIL[DOC-RESPONSIBILITY responsibility="Provide portal for context menu positioning"]
110
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
111
- // CIL[DOC-CONTRACT inputs="none" outputs="context menu portal" errors="none" side_effects="renders DOM"]
112
- // CIL[DOC-MICRO logic_summary="Wraps Radix ContextMenuPortal with data-slot attribute" notable_decisions="[]"]
113
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
114
- // CIL[DOC-STABILITY stability="stable"]
115
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
116
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
117
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
118
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
86
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu group subcomponent'; No verified external callers; imports: .framework/src/lib/utils.ts"]
87
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
88
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
89
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
119
90
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
120
91
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
92
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenugroup:function"]
93
+
94
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenuportal:function" type="function" identity="contextmenuportal" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
95
+ // CIL[DOC-MACRO purpose="Render the context menu portal subcomponent"]
96
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.Portal with project styling and forward props"]
97
+ // CIL[DOC-CONTRACT inputs="props: React.ComponentProps<typeof ContextMenuPrimitive.Portal>" outputs="JSX.Element" errors="none" side_effects="none"]
98
+ // CIL[DOC-MICRO logic_summary="Returns ContextMenuPrimitive.Portal with data-slot and merged className" notable_decisions="[]"]
99
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
100
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
101
+ // CIL[DOC-STABILITY stability="stable"]
121
102
  function ContextMenuPortal({
122
103
  ...props
123
104
  }: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {
@@ -125,41 +106,43 @@ function ContextMenuPortal({
125
106
  <ContextMenuPrimitive.Portal data-slot="context-menu-portal" {...props} />
126
107
  )
127
108
  }
128
- // CIL[END chunk_id="contextmenu_contextmenuportal_1783844098"]
129
- // CIL[BEGIN chunk_id="contextmenu_contextmenusub_1783844098" type="function" identity="ContextMenuSub" parent="none"]
130
- // CIL[DOC-MACRO purpose="Submenu container for nested context menus"]
131
- // CIL[DOC-RESPONSIBILITY responsibility="Provide container for nested menu items"]
132
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
133
- // CIL[DOC-CONTRACT inputs="none" outputs="submenu container" errors="none" side_effects="renders DOM"]
134
- // CIL[DOC-MICRO logic_summary="Wraps Radix ContextMenuSub with data-slot attribute" notable_decisions="[]"]
135
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
136
- // CIL[DOC-STABILITY stability="stable"]
137
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
138
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
139
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
140
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
109
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu portal subcomponent'; No verified external callers; imports: .framework/src/lib/utils.ts"]
110
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
111
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
112
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
141
113
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
142
114
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
115
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenuportal:function"]
116
+
117
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenusub:function" type="function" identity="contextmenusub" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
118
+ // CIL[DOC-MACRO purpose="Render the context menu sub subcomponent"]
119
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.Sub with project styling and forward props"]
120
+ // CIL[DOC-CONTRACT inputs="props: React.ComponentProps<typeof ContextMenuPrimitive.Sub>" outputs="JSX.Element" errors="none" side_effects="none"]
121
+ // CIL[DOC-MICRO logic_summary="Returns ContextMenuPrimitive.Sub with data-slot and merged className" notable_decisions="[]"]
122
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
123
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
124
+ // CIL[DOC-STABILITY stability="stable"]
143
125
  function ContextMenuSub({
144
126
  ...props
145
127
  }: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {
146
128
  return <ContextMenuPrimitive.Sub data-slot="context-menu-sub" {...props} />
147
129
  }
148
- // CIL[END chunk_id="contextmenu_contextmenusub_1783844098"]
149
- // CIL[BEGIN chunk_id="contextmenu_contextmenuradiogroup_1783844098" type="function" identity="ContextMenuRadioGroup" parent="none"]
150
- // CIL[DOC-MACRO purpose="Radio group container for context menu items"]
151
- // CIL[DOC-RESPONSIBILITY responsibility="Provide radio button grouping for menu items"]
152
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
153
- // CIL[DOC-CONTRACT inputs="none" outputs="radio group container" errors="none" side_effects="renders DOM"]
154
- // CIL[DOC-MICRO logic_summary="Wraps Radix ContextMenuRadioGroup with data-slot attribute" notable_decisions="[]"]
155
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
156
- // CIL[DOC-STABILITY stability="stable"]
157
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
158
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
159
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
160
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
130
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu sub subcomponent'; No verified external callers; imports: .framework/src/lib/utils.ts"]
131
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
132
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
133
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
161
134
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
162
135
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
136
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenusub:function"]
137
+
138
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenuradiogroup:function" type="function" identity="contextmenuradiogroup" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
139
+ // CIL[DOC-MACRO purpose="Render the context menu radiogroup subcomponent"]
140
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.RadioGroup with project styling and forward props"]
141
+ // CIL[DOC-CONTRACT inputs="props: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>" outputs="JSX.Element" errors="none" side_effects="none"]
142
+ // CIL[DOC-MICRO logic_summary="Returns ContextMenuPrimitive.RadioGroup with data-slot and merged className" notable_decisions="[]"]
143
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
144
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
145
+ // CIL[DOC-STABILITY stability="stable"]
163
146
  function ContextMenuRadioGroup({
164
147
  ...props
165
148
  }: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {
@@ -170,21 +153,22 @@ function ContextMenuRadioGroup({
170
153
  />
171
154
  )
172
155
  }
173
- // CIL[END chunk_id="contextmenu_contextmenuradiogroup_1783844098"]
174
- // CIL[BEGIN chunk_id="contextmenu_contextmenucontent_1783844098" type="function" identity="ContextMenuContent" parent="none"]
175
- // CIL[DOC-MACRO purpose="Main context menu content container"]
176
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled popup container for menu items"]
177
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
178
- // CIL[DOC-CONTRACT inputs="none" outputs="styled popup container" errors="none" side_effects="renders DOM"]
179
- // CIL[DOC-MICRO logic_summary="Creates popup with portal, animations and popover styling" notable_decisions="[]"]
180
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
181
- // CIL[DOC-STABILITY stability="stable"]
182
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
183
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
184
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
185
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
156
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu radiogroup subcomponent'; No verified external callers; imports: .framework/src/lib/utils.ts"]
157
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
158
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
159
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
186
160
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
187
161
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
162
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenuradiogroup:function"]
163
+
164
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenucontent:function" type="function" identity="contextmenucontent" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
165
+ // CIL[DOC-MACRO purpose="Render the context menu content container"]
166
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.Content in a Portal with positioning and animation styles"]
167
+ // CIL[DOC-CONTRACT inputs="className: string, side: Side, ...props: React.ComponentProps<typeof ContextMenuPrimitive.Content>" outputs="JSX.Element" errors="none" side_effects="none"]
168
+ // CIL[DOC-MICRO logic_summary="Wraps Content in a Portal and applies positioning, animation and side-aware data attributes" notable_decisions="[]"]
169
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
170
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
171
+ // CIL[DOC-STABILITY stability="stable"]
188
172
  function ContextMenuContent({
189
173
  className,
190
174
  ...props
@@ -201,21 +185,22 @@ function ContextMenuContent({
201
185
  </ContextMenuPrimitive.Portal>
202
186
  )
203
187
  }
204
- // CIL[END chunk_id="contextmenu_contextmenucontent_1783844098"]
205
- // CIL[BEGIN chunk_id="contextmenu_contextmenuitem_1783844098" type="function" identity="ContextMenuItem" parent="none"]
206
- // CIL[DOC-MACRO purpose="Individual context menu item"]
207
- // CIL[DOC-RESPONSIBILITY responsibility="Render selectable menu item with variants and inset support"]
208
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
209
- // CIL[DOC-CONTRACT inputs="none" outputs="styled menu item" errors="none" side_effects="renders DOM"]
210
- // CIL[DOC-MICRO logic_summary="Creates interactive item with focus styling and destructive variant" notable_decisions="[]"]
211
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
212
- // CIL[DOC-STABILITY stability="stable"]
213
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
214
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
215
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
216
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
188
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu content container'; No verified external callers; imports: .framework/src/lib/utils.ts"]
189
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
190
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
191
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
217
192
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
218
193
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
194
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenucontent:function"]
195
+
196
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenuitem:function" type="function" identity="contextmenuitem" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
197
+ // CIL[DOC-MACRO purpose="Render a context menu item"]
198
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.Item with variant/inset support and styling"]
199
+ // CIL[DOC-CONTRACT inputs="props: React.ComponentProps<typeof ContextMenuPrimitive.Item> with optional inset and variant" outputs="JSX.Element" errors="none" side_effects="none"]
200
+ // CIL[DOC-MICRO logic_summary="Returns Item with variant/inset handling, data-slot and merged className" notable_decisions="[]"]
201
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
202
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
203
+ // CIL[DOC-STABILITY stability="stable"]
219
204
  function ContextMenuItem({
220
205
  className,
221
206
  inset,
@@ -238,21 +223,22 @@ function ContextMenuItem({
238
223
  />
239
224
  )
240
225
  }
241
- // CIL[END chunk_id="contextmenu_contextmenuitem_1783844098"]
242
- // CIL[BEGIN chunk_id="contextmenu_contextmenusubtrigger_1783844098" type="function" identity="ContextMenuSubTrigger" parent="none"]
243
- // CIL[DOC-MACRO purpose="Trigger for nested context menu submenus"]
244
- // CIL[DOC-RESPONSIBILITY responsibility="Provide trigger with chevron for submenu expansion"]
245
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
246
- // CIL[DOC-CONTRACT inputs="none" outputs="submenu trigger" errors="none" side_effects="renders DOM"]
247
- // CIL[DOC-MICRO logic_summary="Creates trigger with chevron icon and inset styling support" notable_decisions="[]"]
248
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
249
- // CIL[DOC-STABILITY stability="stable"]
250
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
251
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
252
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
253
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
226
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a context menu item'; No verified external callers; imports: .framework/src/lib/utils.ts"]
227
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
228
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
229
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
254
230
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
255
231
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
232
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenuitem:function"]
233
+
234
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenusubtrigger:function" type="function" identity="contextmenusubtrigger" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
235
+ // CIL[DOC-MACRO purpose="Render a sub-menu trigger"]
236
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.SubTrigger with chevron and inset support"]
237
+ // CIL[DOC-CONTRACT inputs="className: string, children: React.ReactNode, inset: boolean, ...props: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger>" outputs="JSX.Element" errors="none" side_effects="none"]
238
+ // CIL[DOC-MICRO logic_summary="Returns SubTrigger with ChevronRight icon, data-inset and merged className" notable_decisions="[]"]
239
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
240
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
241
+ // CIL[DOC-STABILITY stability="stable"]
256
242
  function ContextMenuSubTrigger({
257
243
  className,
258
244
  inset,
@@ -276,21 +262,22 @@ function ContextMenuSubTrigger({
276
262
  </ContextMenuPrimitive.SubTrigger>
277
263
  )
278
264
  }
279
- // CIL[END chunk_id="contextmenu_contextmenusubtrigger_1783844098"]
280
- // CIL[BEGIN chunk_id="contextmenu_contextmenusubcontent_1783844098" type="function" identity="ContextMenuSubContent" parent="none"]
281
- // CIL[DOC-MACRO purpose="Content container for nested submenus"]
282
- // CIL[DOC-RESPONSIBILITY responsibility="Provide styled popup for submenu items"]
283
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
284
- // CIL[DOC-CONTRACT inputs="none" outputs="styled submenu popup" errors="none" side_effects="renders DOM"]
285
- // CIL[DOC-MICRO logic_summary="Creates popup container with animations for submenu content" notable_decisions="[]"]
286
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
287
- // CIL[DOC-STABILITY stability="stable"]
288
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
289
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
290
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
291
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
265
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a sub-menu trigger'; No verified external callers; imports: .framework/src/lib/utils.ts"]
266
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
267
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
268
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
292
269
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
293
270
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
271
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenusubtrigger:function"]
272
+
273
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenusubcontent:function" type="function" identity="contextmenusubcontent" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
274
+ // CIL[DOC-MACRO purpose="Render the context menu subcontent subcomponent"]
275
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.SubContent with project styling and forward props"]
276
+ // CIL[DOC-CONTRACT inputs="className: string, ...props: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>" outputs="JSX.Element" errors="none" side_effects="none"]
277
+ // CIL[DOC-MICRO logic_summary="Returns ContextMenuPrimitive.SubContent with data-slot and merged className" notable_decisions="[]"]
278
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
279
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
280
+ // CIL[DOC-STABILITY stability="stable"]
294
281
  function ContextMenuSubContent({
295
282
  className,
296
283
  ...props
@@ -303,21 +290,22 @@ function ContextMenuSubContent({
303
290
  />
304
291
  )
305
292
  }
306
- // CIL[END chunk_id="contextmenu_contextmenusubcontent_1783844098"]
307
- // CIL[BEGIN chunk_id="contextmenu_contextmenucheckboxitem_1783844098" type="function" identity="ContextMenuCheckboxItem" parent="none"]
308
- // CIL[DOC-MACRO purpose="Checkbox item for context menus"]
309
- // CIL[DOC-RESPONSIBILITY responsibility="Render toggleable menu item with check indicator"]
310
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
311
- // CIL[DOC-CONTRACT inputs="none" outputs="checkbox menu item" errors="none" side_effects="renders DOM"]
312
- // CIL[DOC-MICRO logic_summary="Creates toggleable item with check indicator and inset styling" notable_decisions="[]"]
313
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
314
- // CIL[DOC-STABILITY stability="stable"]
315
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
316
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
317
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
318
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
293
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu subcontent subcomponent'; No verified external callers; imports: .framework/src/lib/utils.ts"]
294
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
295
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
296
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
319
297
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
320
298
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
299
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenusubcontent:function"]
300
+
301
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenucheckboxitem:function" type="function" identity="contextmenucheckboxitem" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
302
+ // CIL[DOC-MACRO purpose="Render a context menu checkbox item"]
303
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.CheckboxItem with checked state and icon indicator"]
304
+ // CIL[DOC-CONTRACT inputs="className: string, children: React.ReactNode, checked: boolean, inset: boolean, ...props: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>" outputs="JSX.Element" errors="none" side_effects="none"]
305
+ // CIL[DOC-MICRO logic_summary="Returns CheckboxItem with ItemIndicator for CheckIcon, data-inset and merged className" notable_decisions="[]"]
306
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
307
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
308
+ // CIL[DOC-STABILITY stability="stable"]
321
309
  function ContextMenuCheckboxItem({
322
310
  className,
323
311
  children,
@@ -348,21 +336,22 @@ function ContextMenuCheckboxItem({
348
336
  </ContextMenuPrimitive.CheckboxItem>
349
337
  )
350
338
  }
351
- // CIL[END chunk_id="contextmenu_contextmenucheckboxitem_1783844098"]
352
- // CIL[BEGIN chunk_id="contextmenu_contextmenuradioitem_1783844098" type="function" identity="ContextMenuRadioItem" parent="none"]
353
- // CIL[DOC-MACRO purpose="Radio button item for context menus"]
354
- // CIL[DOC-RESPONSIBILITY responsibility="Render selectable radio item with check indicator"]
355
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
356
- // CIL[DOC-CONTRACT inputs="none" outputs="radio menu item" errors="none" side_effects="renders DOM"]
357
- // CIL[DOC-MICRO logic_summary="Creates radio item with check indicator and inset styling" notable_decisions="[]"]
358
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
359
- // CIL[DOC-STABILITY stability="stable"]
360
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
361
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
362
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
363
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
339
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a context menu checkbox item'; No verified external callers; imports: .framework/src/lib/utils.ts"]
340
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
341
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
342
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
364
343
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
365
344
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
345
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenucheckboxitem:function"]
346
+
347
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenuradioitem:function" type="function" identity="contextmenuradioitem" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
348
+ // CIL[DOC-MACRO purpose="Render a context menu radio item"]
349
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.RadioItem with selection indicator"]
350
+ // CIL[DOC-CONTRACT inputs="className: string, children: React.ReactNode, inset: boolean, ...props: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>" outputs="JSX.Element" errors="none" side_effects="none"]
351
+ // CIL[DOC-MICRO logic_summary="Returns RadioItem with ItemIndicator for CheckIcon, data-inset and merged className" notable_decisions="[]"]
352
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
353
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
354
+ // CIL[DOC-STABILITY stability="stable"]
366
355
  function ContextMenuRadioItem({
367
356
  className,
368
357
  children,
@@ -391,21 +380,22 @@ function ContextMenuRadioItem({
391
380
  </ContextMenuPrimitive.RadioItem>
392
381
  )
393
382
  }
394
- // CIL[END chunk_id="contextmenu_contextmenuradioitem_1783844098"]
395
- // CIL[BEGIN chunk_id="contextmenu_contextmenulabel_1783844098" type="function" identity="ContextMenuLabel" parent="none"]
396
- // CIL[DOC-MACRO purpose="Label text for context menu sections"]
397
- // CIL[DOC-RESPONSIBILITY responsibility="Display styled label text for menu sections"]
398
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
399
- // CIL[DOC-CONTRACT inputs="none" outputs="styled label" errors="none" side_effects="renders DOM"]
400
- // CIL[DOC-MICRO logic_summary="Creates muted text label with inset styling support" notable_decisions="[]"]
401
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
402
- // CIL[DOC-STABILITY stability="stable"]
403
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
404
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
405
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
406
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
383
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a context menu radio item'; No verified external callers; imports: .framework/src/lib/utils.ts"]
384
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
385
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
386
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
407
387
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
408
388
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
389
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenuradioitem:function"]
390
+
391
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenulabel:function" type="function" identity="contextmenulabel" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
392
+ // CIL[DOC-MACRO purpose="Render the context menu label subcomponent"]
393
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.Label with project styling and forward props"]
394
+ // CIL[DOC-CONTRACT inputs="className: string, inset: boolean, ...props: React.ComponentProps<typeof ContextMenuPrimitive.Label>" outputs="JSX.Element" errors="none" side_effects="none"]
395
+ // CIL[DOC-MICRO logic_summary="Returns ContextMenuPrimitive.Label with data-slot and merged className" notable_decisions="[]"]
396
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
397
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
398
+ // CIL[DOC-STABILITY stability="stable"]
409
399
  function ContextMenuLabel({
410
400
  className,
411
401
  inset,
@@ -425,21 +415,22 @@ function ContextMenuLabel({
425
415
  />
426
416
  )
427
417
  }
428
- // CIL[END chunk_id="contextmenu_contextmenulabel_1783844098"]
429
- // CIL[BEGIN chunk_id="contextmenu_contextmenuseparator_1783844098" type="function" identity="ContextMenuSeparator" parent="none"]
430
- // CIL[DOC-MACRO purpose="Visual separator for context menu sections"]
431
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled separator between menu sections"]
432
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
433
- // CIL[DOC-CONTRACT inputs="none" outputs="styled separator" errors="none" side_effects="renders DOM"]
434
- // CIL[DOC-MICRO logic_summary="Creates horizontal line with margin and border styling" notable_decisions="[]"]
435
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
436
- // CIL[DOC-STABILITY stability="stable"]
437
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
438
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
439
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
440
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
418
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu label subcomponent'; No verified external callers; imports: .framework/src/lib/utils.ts"]
419
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
420
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
421
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
441
422
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
442
423
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
424
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenulabel:function"]
425
+
426
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenuseparator:function" type="function" identity="contextmenuseparator" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
427
+ // CIL[DOC-MACRO purpose="Render the context menu separator subcomponent"]
428
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap Radix ContextMenuPrimitive.Separator with project styling and forward props"]
429
+ // CIL[DOC-CONTRACT inputs="className: string, ...props: React.ComponentProps<typeof ContextMenuPrimitive.Separator>" outputs="JSX.Element" errors="none" side_effects="none"]
430
+ // CIL[DOC-MICRO logic_summary="Returns ContextMenuPrimitive.Separator with data-slot and merged className" notable_decisions="[]"]
431
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
432
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
433
+ // CIL[DOC-STABILITY stability="stable"]
443
434
  function ContextMenuSeparator({
444
435
  className,
445
436
  ...props
@@ -452,21 +443,22 @@ function ContextMenuSeparator({
452
443
  />
453
444
  )
454
445
  }
455
- // CIL[END chunk_id="contextmenu_contextmenuseparator_1783844098"]
456
- // CIL[BEGIN chunk_id="contextmenu_contextmenushortcut_1783844098" type="function" identity="ContextMenuShortcut" parent="none"]
457
- // CIL[DOC-MACRO purpose="Keyboard shortcut display for menu items"]
458
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled keyboard shortcut text"]
459
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
460
- // CIL[DOC-CONTRACT inputs="none" outputs="styled shortcut span" errors="none" side_effects="renders DOM"]
461
- // CIL[DOC-MICRO logic_summary="Creates small tracking-widest text with focus styling" notable_decisions="[]"]
462
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
463
- // CIL[DOC-STABILITY stability="stable"]
464
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
465
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
466
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
467
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
446
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu separator subcomponent'; No verified external callers; imports: .framework/src/lib/utils.ts"]
447
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
448
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
449
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
468
450
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
469
451
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
452
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenuseparator:function"]
453
+
454
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenushortcut:function" type="function" identity="contextmenushortcut" parent="~/.framework/src/components/ui/context-menu.tsx:module_header:module_header"]
455
+ // CIL[DOC-MACRO purpose="Render the context menu shortcut text"]
456
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a styled span for keyboard shortcut text with focus-aware coloring"]
457
+ // CIL[DOC-CONTRACT inputs="className: string, ...props: React.ComponentProps for span element" outputs="JSX.Element" errors="none" side_effects="none"]
458
+ // CIL[DOC-MICRO logic_summary="Returns a span with data-slot, merged className and accent-foreground focus styling" notable_decisions="[]"]
459
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
460
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
461
+ // CIL[DOC-STABILITY stability="stable"]
470
462
  function ContextMenuShortcut({
471
463
  className,
472
464
  ...props
@@ -482,21 +474,22 @@ function ContextMenuShortcut({
482
474
  />
483
475
  )
484
476
  }
485
- // CIL[END chunk_id="contextmenu_contextmenushortcut_1783844098"]
486
- // CIL[BEGIN chunk_id="contextmenu_exports_1783844098" type="exports" identity="exports" parent="none"]
487
- // CIL[DOC-MACRO purpose="Export context menu components"]
488
- // CIL[DOC-RESPONSIBILITY responsibility="Make all context menu components available for import"]
489
- // CIL[DOC-CONTEXT module="contextmenu" layer="ui" related_files="[]"]
490
- // CIL[DOC-CONTRACT inputs="none" outputs="component exports" errors="none" side_effects="module exports"]
491
- // CIL[DOC-MICRO logic_summary="Exports all context menu components for external usage" notable_decisions="[]"]
492
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
493
- // CIL[DOC-STABILITY stability="stable"]
494
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
495
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
496
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
497
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
477
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the context menu shortcut text'; No verified external callers; imports: .framework/src/lib/utils.ts"]
478
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
479
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
480
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
498
481
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
499
482
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
483
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:contextmenushortcut:function"]
484
+
485
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/context-menu.tsx:module_footer:module_footer" type="module_footer" identity="module_footer" parent="~/.framework/src/components/ui/context-menu.tsx"]
486
+ // CIL[DOC-MACRO purpose="Re-export context menu subcomponents from the module"]
487
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose the defined context menu subcomponents as named exports for consumers"]
488
+ // CIL[DOC-CONTRACT inputs="none" outputs="named exports" errors="none" side_effects="none"]
489
+ // CIL[DOC-MICRO logic_summary="Lists all context menu subcomponents in the export block" notable_decisions="[]"]
490
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/context-menu.tsx,.framework/src/lib/utils.ts"]
491
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
492
+ // CIL[DOC-STABILITY stability="stable"]
500
493
  export {
501
494
  ContextMenu,
502
495
  ContextMenuTrigger,
@@ -514,4 +507,10 @@ export {
514
507
  ContextMenuSubTrigger,
515
508
  ContextMenuRadioGroup,
516
509
  }
517
- // CIL[END chunk_id="contextmenu_exports_1783844098"]
510
+ // CIL[DOC-VECTOR type="context" content="purpose='Re-export context menu subcomponents from the module'; No verified external callers; imports: .framework/src/lib/utils.ts"]
511
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
512
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
513
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
514
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
515
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
516
+ // CIL[END stable_id="~/.framework/src/components/ui/context-menu.tsx:module_footer:module_footer"]