spine-framework 0.3.145 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/.env.example +76 -0
  2. package/.framework/.spine-manifest.json +19 -0
  3. package/.framework/cli/commands/agents.ts +61 -33
  4. package/.framework/cli/commands/auth.ts +60 -28
  5. package/.framework/cli/commands/create-app.ts +212 -80
  6. package/.framework/cli/commands/dev.ts +184 -68
  7. package/.framework/cli/commands/doctor.ts +324 -152
  8. package/.framework/cli/commands/generate.ts +119 -68
  9. package/.framework/cli/commands/init.ts +141 -242
  10. package/.framework/cli/commands/install-app.ts +1336 -314
  11. package/.framework/cli/commands/items.ts +31 -29
  12. package/.framework/cli/commands/migrate.ts +299 -156
  13. package/.framework/cli/commands/migrations.ts +62 -30
  14. package/.framework/cli/commands/pipelines.ts +31 -29
  15. package/.framework/cli/commands/status.ts +105 -45
  16. package/.framework/cli/commands/system.ts +47 -42
  17. package/.framework/cli/commands/test.ts +161 -102
  18. package/.framework/cli/commands/upgrade.ts +260 -0
  19. package/.framework/cli/commands/validate-app.ts +517 -161
  20. package/.framework/cli/context.ts +117 -85
  21. package/.framework/cli/env-loader.ts +74 -43
  22. package/.framework/cli/index.ts +70 -46
  23. package/.framework/cli/lib/project-files.ts +404 -0
  24. package/.framework/docs/guides/testing-guide.md +1 -1
  25. package/.framework/docs/runtime-types.md +72 -72
  26. package/.framework/functions/_shared/access.ts +84 -0
  27. package/.framework/functions/_shared/agent-runner.ts +5051 -1026
  28. package/.framework/functions/_shared/app-manifest.ts +214 -94
  29. package/.framework/functions/_shared/ast.ts +214 -0
  30. package/.framework/functions/_shared/audit.ts +91 -55
  31. package/.framework/functions/_shared/cil.ts +368 -127
  32. package/.framework/functions/_shared/db.ts +337 -68
  33. package/.framework/functions/_shared/funnel.ts +228 -0
  34. package/.framework/functions/_shared/geo.ts +105 -0
  35. package/.framework/functions/_shared/hash-api-key.ts +94 -17
  36. package/.framework/functions/_shared/index.ts +22 -224
  37. package/.framework/functions/_shared/kb.ts +832 -58
  38. package/.framework/functions/_shared/llm.ts +118 -18
  39. package/.framework/functions/_shared/logging.ts +317 -19
  40. package/.framework/functions/_shared/middleware.ts +701 -131
  41. package/.framework/functions/_shared/notify.ts +70 -0
  42. package/.framework/functions/_shared/outcomes.ts +34 -19
  43. package/.framework/functions/_shared/permissions.ts +501 -315
  44. package/.framework/functions/_shared/pipeline-runner.ts +704 -155
  45. package/.framework/functions/_shared/principal.ts +436 -263
  46. package/.framework/functions/_shared/rate-limit.ts +233 -0
  47. package/.framework/functions/_shared/resolve-credentials.ts +86 -19
  48. package/.framework/functions/_shared/resolve-ids.ts +203 -139
  49. package/.framework/functions/_shared/retry-deliveries.ts +51 -16
  50. package/.framework/functions/_shared/schema-utils.ts +602 -521
  51. package/.framework/functions/_shared/security.ts +345 -0
  52. package/.framework/functions/_shared/testing.ts +197 -172
  53. package/.framework/functions/_shared/tracing.ts +351 -21
  54. package/.framework/functions/_shared/trigger-engine.ts +425 -136
  55. package/.framework/functions/_shared/webhook-registration.ts +71 -70
  56. package/.framework/functions/_shared/webhook-registry.ts +126 -83
  57. package/.framework/functions/account-nodes.ts +30 -30
  58. package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
  59. package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
  60. package/.framework/functions/adapters/openai-outbound.ts +15 -16
  61. package/.framework/functions/admin-data.ts +596 -173
  62. package/.framework/functions/admin-funnel.ts +64 -60
  63. package/.framework/functions/admin-install-funnel.ts +84 -66
  64. package/.framework/functions/admin-signals.ts +69 -51
  65. package/.framework/functions/ai-agents.ts +431 -106
  66. package/.framework/functions/ai-interactions.ts +186 -112
  67. package/.framework/functions/api-keys.ts +107 -107
  68. package/.framework/functions/apps.ts +154 -136
  69. package/.framework/functions/auth.ts +83 -65
  70. package/.framework/functions/cil-agent-ingest.ts +189 -232
  71. package/.framework/functions/cil-agent.ts +433 -177
  72. package/.framework/functions/cil-callmap.ts +642 -430
  73. package/.framework/functions/cil-config.ts +139 -135
  74. package/.framework/functions/cil-context.ts +214 -127
  75. package/.framework/functions/cil-doc.ts +587 -458
  76. package/.framework/functions/cil-embeddings.ts +453 -364
  77. package/.framework/functions/cil-graph.ts +427 -142
  78. package/.framework/functions/cil-ingest.ts +1418 -1154
  79. package/.framework/functions/cil-pipeline.ts +276 -21
  80. package/.framework/functions/cil-project.ts +659 -132
  81. package/.framework/functions/cil-validate.ts +198 -164
  82. package/.framework/functions/debug-auth.ts +57 -55
  83. package/.framework/functions/deliveries.ts +80 -21
  84. package/.framework/functions/embeddings.ts +1023 -318
  85. package/.framework/functions/eval-harness.ts +146 -108
  86. package/.framework/functions/integration-outbound.ts +205 -75
  87. package/.framework/functions/integration-routes.ts +128 -23
  88. package/.framework/functions/integrations.ts +125 -100
  89. package/.framework/functions/invites.ts +1095 -460
  90. package/.framework/functions/item-progress.ts +158 -102
  91. package/.framework/functions/kb.ts +34 -10
  92. package/.framework/functions/logs.ts +133 -133
  93. package/.framework/functions/observability.ts +152 -122
  94. package/.framework/functions/pipeline-executions.ts +147 -132
  95. package/.framework/functions/pipelines.ts +134 -119
  96. package/.framework/functions/prompt-configs.ts +96 -80
  97. package/.framework/functions/roles.ts +112 -82
  98. package/.framework/functions/security.ts +450 -0
  99. package/.framework/functions/system-cron.ts +117 -80
  100. package/.framework/functions/system.ts +158 -98
  101. package/.framework/functions/tests.ts +29 -29
  102. package/.framework/functions/timers.ts +94 -95
  103. package/.framework/functions/trigger-scheduler.ts +10 -0
  104. package/.framework/functions/triggers.ts +179 -149
  105. package/.framework/functions/types.ts +137 -125
  106. package/.framework/mcp/index.ts +133 -0
  107. package/.framework/mcp/load-env.ts +60 -0
  108. package/.framework/mcp/shared/app-manifest.ts +275 -0
  109. package/.framework/mcp/shared/db.ts +477 -0
  110. package/.framework/mcp/shared/kb.ts +118 -0
  111. package/.framework/mcp/tools/architect.ts +431 -0
  112. package/.framework/mcp/tools/cil/context.ts +345 -0
  113. package/.framework/mcp/tools/cil/graph.ts +242 -0
  114. package/.framework/mcp/tools/cil/ingest.ts +1217 -0
  115. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
  116. package/.framework/mcp/tools/cil/pipeline.ts +767 -0
  117. package/.framework/mcp/tools/cil/project.ts +791 -0
  118. package/.framework/mcp/tools/cil/retrieval.ts +336 -0
  119. package/.framework/mcp/tools/cil/search-core.ts +454 -0
  120. package/.framework/mcp/tools/cil/search.ts +97 -0
  121. package/.framework/mcp/tools/cil/suggest.ts +186 -0
  122. package/.framework/mcp/tools/cil/validate.ts +1369 -0
  123. package/.framework/mcp/tools/kb/delete.ts +139 -0
  124. package/.framework/mcp/tools/kb/index.ts +52 -0
  125. package/.framework/mcp/tools/kb/ingest.ts +84 -0
  126. package/.framework/mcp/tools/kb/list-types.ts +102 -0
  127. package/.framework/mcp/tools/kb/publish.ts +100 -0
  128. package/.framework/mcp/tools/kb/reindex.ts +86 -0
  129. package/.framework/mcp/tools/kb/revoke.ts +85 -0
  130. package/.framework/mcp/tools/kb/search.ts +101 -0
  131. package/.framework/mcp/tools/kb/upsert.ts +125 -0
  132. package/.framework/mcp/tools/observability.ts +510 -0
  133. package/.framework/migrations/001_core_schema.sql +15 -0
  134. package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
  135. package/.framework/migrations/003_core_system_data.sql +16 -1
  136. package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
  137. package/.framework/migrations/005_core_observability.sql +17 -1
  138. package/.framework/migrations/006_security_hardening_rls.sql +15 -0
  139. package/.framework/migrations/007_kb_article_list.sql +17 -1
  140. package/.framework/migrations/008_items_target.sql +15 -0
  141. package/.framework/migrations/009_roles_slug_unique.sql +15 -0
  142. package/.framework/migrations/010_auth_user_trigger.sql +15 -0
  143. package/.framework/migrations/011_spine_system_account.sql +16 -0
  144. package/.framework/migrations/012_service_role_grants.sql +16 -0
  145. package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
  146. package/.framework/migrations/014_apps_required_roles.sql +16 -0
  147. package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
  148. package/.framework/migrations/016_cil_types.sql +281 -0
  149. package/.framework/migrations/017_cil_stable_ids.sql +37 -0
  150. package/.framework/migrations/018_runtime_tables.sql +129 -0
  151. package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
  152. package/.framework/migrations/020_schema_reconciliation.sql +67 -0
  153. package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
  154. package/.framework/migrations/032_cil_status_migration.sql +73 -0
  155. package/.framework/migrations/033_cil_versioning.sql +73 -0
  156. package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
  157. package/.framework/migrations/035_rate_limits.sql +55 -0
  158. package/.framework/migrations/036_demo_record_flags.sql +72 -0
  159. package/.framework/migrations/037_kb_types_canonical.sql +244 -0
  160. package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
  161. package/.framework/migrations/042_registration_hierarchy.sql +309 -0
  162. package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
  163. package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
  164. package/.framework/migrations/045_security_critical_rls.sql +139 -0
  165. package/.framework/migrations/046_security_missing_rls.sql +79 -0
  166. package/.framework/migrations/047_people_updated_by.sql +27 -0
  167. package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
  168. package/.framework/migrations/049_security_blocklist.sql +148 -0
  169. package/.framework/migrations/050_notifications.sql +49 -0
  170. package/.framework/migrations/051_message_agent_fields.sql +74 -0
  171. package/.framework/migrations/052_registration_security.sql +421 -0
  172. package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
  173. package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
  174. package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
  175. package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
  176. package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
  177. package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
  178. package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
  179. package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
  180. package/.framework/migrations/061_fk_dedup.sql +32 -0
  181. package/.framework/public/spine-logo.svg +10 -3
  182. package/.framework/scripts/app-install-cli.ts +190 -93
  183. package/.framework/scripts/assemble-frontend.sh +127 -44
  184. package/.framework/scripts/assemble-functions.sh +128 -30
  185. package/.framework/scripts/boundary-check.sh +6 -2
  186. package/.framework/scripts/build-manifest.sh +24 -68
  187. package/.framework/scripts/check-core-integrity.sh +15 -76
  188. package/.framework/scripts/checksum-manifest.mts +343 -0
  189. package/.framework/scripts/cil-migrate-markers.ts +403 -0
  190. package/.framework/scripts/fix-cil-markers.mjs +176 -0
  191. package/.framework/scripts/verify-integrity.sh +21 -57
  192. package/.framework/scripts/verify-manifest.mts +305 -0
  193. package/.framework/seeds/types/funnel_signal_use.json +74 -21
  194. package/.framework/seeds/types/spine_instance.json +73 -21
  195. package/.framework/src/App.tsx +118 -72
  196. package/.framework/src/apps/admin/index.tsx +855 -58
  197. package/.framework/src/components/AppWrapper.tsx +43 -45
  198. package/.framework/src/components/CustomAppLoader.tsx +160 -116
  199. package/.framework/src/components/admin/AdminListPage.tsx +46 -44
  200. package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
  201. package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
  202. package/.framework/src/components/admin/PageInstructions.tsx +98 -2
  203. package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
  204. package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
  205. package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
  206. package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
  207. package/.framework/src/components/app-sidebar.tsx +42 -45
  208. package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
  209. package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
  210. package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
  211. package/.framework/src/components/kb/KBArticleList.tsx +251 -10
  212. package/.framework/src/components/layout/AppShell.tsx +51 -45
  213. package/.framework/src/components/layout/Header.tsx +42 -43
  214. package/.framework/src/components/layout/Layout.tsx +46 -46
  215. package/.framework/src/components/layout/Sidebar.tsx +196 -96
  216. package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
  217. package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
  218. package/.framework/src/components/runtime/DataFilters.tsx +49 -74
  219. package/.framework/src/components/runtime/DataHeader.tsx +53 -32
  220. package/.framework/src/components/runtime/DataListPage.tsx +51 -155
  221. package/.framework/src/components/runtime/DataStats.tsx +66 -44
  222. package/.framework/src/components/runtime/DataTable.tsx +49 -149
  223. package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
  224. package/.framework/src/components/runtime/index.ts +119 -16
  225. package/.framework/src/components/search-form.tsx +46 -29
  226. package/.framework/src/components/shared/AgentView.tsx +65 -48
  227. package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
  228. package/.framework/src/components/shared/InviteManager.tsx +207 -97
  229. package/.framework/src/components/shared/MemberList.tsx +97 -0
  230. package/.framework/src/components/shared/SchemaFields.tsx +107 -86
  231. package/.framework/src/components/ui/DataTable.tsx +80 -68
  232. package/.framework/src/components/ui/Form.tsx +157 -146
  233. package/.framework/src/components/ui/ItemCard.tsx +74 -67
  234. package/.framework/src/components/ui/ItemListView.tsx +73 -68
  235. package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
  236. package/.framework/src/components/ui/Modal.tsx +78 -68
  237. package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
  238. package/.framework/src/components/ui/accordion.tsx +85 -86
  239. package/.framework/src/components/ui/alert-dialog.tsx +197 -184
  240. package/.framework/src/components/ui/alert.tsx +105 -94
  241. package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
  242. package/.framework/src/components/ui/avatar.tsx +122 -107
  243. package/.framework/src/components/ui/badge.tsx +60 -55
  244. package/.framework/src/components/ui/breadcrumb.tsx +127 -128
  245. package/.framework/src/components/ui/button-group.tsx +86 -72
  246. package/.framework/src/components/ui/button.tsx +71 -50
  247. package/.framework/src/components/ui/calendar.tsx +72 -57
  248. package/.framework/src/components/ui/card.tsx +136 -129
  249. package/.framework/src/components/ui/carousel.tsx +226 -107
  250. package/.framework/src/components/ui/chart.tsx +252 -147
  251. package/.framework/src/components/ui/checkbox.tsx +43 -44
  252. package/.framework/src/components/ui/collapsible.tsx +86 -71
  253. package/.framework/src/components/ui/combobox.tsx +282 -249
  254. package/.framework/src/components/ui/command.tsx +158 -146
  255. package/.framework/src/components/ui/context-menu.tsx +239 -240
  256. package/.framework/src/components/ui/dialog.tsx +174 -157
  257. package/.framework/src/components/ui/direction.tsx +72 -56
  258. package/.framework/src/components/ui/drawer.tsx +168 -169
  259. package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
  260. package/.framework/src/components/ui/empty.tsx +131 -120
  261. package/.framework/src/components/ui/field.tsx +205 -173
  262. package/.framework/src/components/ui/hover-card.tsx +71 -72
  263. package/.framework/src/components/ui/input-group.tsx +148 -133
  264. package/.framework/src/components/ui/input-otp.tsx +99 -86
  265. package/.framework/src/components/ui/input.tsx +43 -41
  266. package/.framework/src/components/ui/item.tsx +207 -185
  267. package/.framework/src/components/ui/kbd.tsx +57 -56
  268. package/.framework/src/components/ui/label.tsx +45 -41
  269. package/.framework/src/components/ui/menubar.tsx +268 -236
  270. package/.framework/src/components/ui/native-select.tsx +85 -86
  271. package/.framework/src/components/ui/navigation-menu.tsx +166 -156
  272. package/.framework/src/components/ui/pagination.tsx +131 -141
  273. package/.framework/src/components/ui/popover.tsx +125 -128
  274. package/.framework/src/components/ui/progress.tsx +47 -44
  275. package/.framework/src/components/ui/radio-group.tsx +60 -55
  276. package/.framework/src/components/ui/resizable.tsx +85 -72
  277. package/.framework/src/components/ui/scroll-area.tsx +57 -58
  278. package/.framework/src/components/ui/select.tsx +182 -169
  279. package/.framework/src/components/ui/separator.tsx +42 -43
  280. package/.framework/src/components/ui/sheet.tsx +170 -159
  281. package/.framework/src/components/ui/sidebar.tsx +395 -398
  282. package/.framework/src/components/ui/skeleton.tsx +42 -43
  283. package/.framework/src/components/ui/slider.tsx +61 -44
  284. package/.framework/src/components/ui/sonner.tsx +44 -44
  285. package/.framework/src/components/ui/spinner.tsx +47 -42
  286. package/.framework/src/components/ui/switch.tsx +56 -42
  287. package/.framework/src/components/ui/table-primitives.tsx +272 -132
  288. package/.framework/src/components/ui/table.tsx +140 -142
  289. package/.framework/src/components/ui/tabs.tsx +110 -93
  290. package/.framework/src/components/ui/textarea.tsx +43 -44
  291. package/.framework/src/components/ui/toggle-group.tsx +87 -71
  292. package/.framework/src/components/ui/toggle.tsx +56 -56
  293. package/.framework/src/components/ui/tooltip.tsx +99 -85
  294. package/.framework/src/contexts/AppContext.tsx +166 -114
  295. package/.framework/src/contexts/AuthContext.tsx +232 -137
  296. package/.framework/src/hooks/use-mobile.ts +43 -44
  297. package/.framework/src/hooks/useApi.ts +185 -172
  298. package/.framework/src/hooks/useAppPath.ts +31 -29
  299. package/.framework/src/hooks/useApps.ts +77 -42
  300. package/.framework/src/hooks/useEntityList.ts +66 -29
  301. package/.framework/src/hooks/useEntityRecord.ts +76 -32
  302. package/.framework/src/hooks/useForm.ts +62 -30
  303. package/.framework/src/hooks/useListSchema.ts +60 -43
  304. package/.framework/src/hooks/useSchemaRecord.ts +115 -95
  305. package/.framework/src/lib/api.ts +258 -134
  306. package/.framework/src/lib/registration.ts +181 -0
  307. package/.framework/src/lib/supabase.ts +118 -81
  308. package/.framework/src/lib/utils.ts +266 -266
  309. package/.framework/src/main.tsx +43 -44
  310. package/.framework/src/pages/DashboardPage.tsx +44 -43
  311. package/.framework/src/pages/NoAppPage.tsx +50 -0
  312. package/.framework/src/pages/NotFoundPage.tsx +32 -29
  313. package/.framework/src/pages/SetupPage.tsx +34 -33
  314. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
  315. package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
  316. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
  317. package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
  318. package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
  319. package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
  320. package/.framework/src/pages/admin/AppsPage.tsx +45 -42
  321. package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
  322. package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
  323. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
  324. package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
  325. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
  326. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
  327. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
  328. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
  329. package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
  330. package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
  331. package/.framework/src/pages/admin/LogsPage.tsx +87 -137
  332. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
  333. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
  334. package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
  335. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
  336. package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
  337. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
  338. package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
  339. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
  340. package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
  341. package/.framework/src/pages/admin/RolesPage.tsx +47 -164
  342. package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
  343. package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
  344. package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
  345. package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
  346. package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
  347. package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
  348. package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
  349. package/.framework/src/pages/admin/TimersPage.tsx +44 -42
  350. package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
  351. package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
  352. package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
  353. package/.framework/src/pages/admin/TypesPage.tsx +45 -42
  354. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
  355. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
  356. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
  357. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
  358. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
  359. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
  360. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
  361. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
  362. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
  363. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
  364. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
  365. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
  366. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  367. package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
  368. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
  369. package/.framework/src/pages/auth/LoginPage.tsx +38 -32
  370. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
  371. package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
  372. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
  373. package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
  374. package/.framework/src/types/auth.ts +101 -93
  375. package/.framework/src/types/types.ts +283 -262
  376. package/.framework/templates/project.json +87 -0
  377. package/.framework/templates/spine.config.neutral.json +7 -0
  378. package/.framework/tests/api/api-surface.test.ts +381 -0
  379. package/.framework/tests/fixtures/seed.ts +427 -0
  380. package/.framework/tests/fixtures/teardown.ts +228 -0
  381. package/.framework/tests/reporter.ts +351 -0
  382. package/.framework/tests/setup.ts +135 -0
  383. package/.framework/tests/ui/ui-sweep.ts +278 -0
  384. package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
  385. package/.framework/tests/unit/agent-runner.test.ts +2389 -0
  386. package/.framework/tests/unit/ai-interactions.test.ts +81 -0
  387. package/.framework/tests/unit/app-manifest.test.ts +359 -0
  388. package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
  389. package/.framework/tests/unit/cil-determinism.test.ts +85 -0
  390. package/.framework/tests/unit/core-isolation.test.ts +153 -0
  391. package/.framework/tests/unit/funnel-signals.test.ts +135 -0
  392. package/.framework/tests/unit/install-app.test.ts +1759 -0
  393. package/.framework/tests/unit/invites-security.test.ts +572 -0
  394. package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
  395. package/.framework/tests/unit/kb-search.test.ts +119 -0
  396. package/.framework/tests/unit/migrate.test.ts +509 -0
  397. package/.framework/tests/unit/notify.test.ts +136 -0
  398. package/.framework/tests/unit/permissions.test.ts +269 -0
  399. package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
  400. package/.framework/tests/unit/principal-cache.test.ts +138 -0
  401. package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
  402. package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
  403. package/.framework/tests/unit/schema-utils.test.ts +225 -0
  404. package/.framework/tests/unit/trigger-engine.test.ts +513 -0
  405. package/.framework/tests/unit/validate-app.test.ts +527 -0
  406. package/README.md +34 -3
  407. package/bin/spine-framework.cjs +1 -0
  408. package/config/tailwind.config.cjs +7 -0
  409. package/config/tsconfig.functions.json +42 -0
  410. package/config/tsconfig.json +37 -9
  411. package/config/vite.config.ts +31 -2
  412. package/netlify.toml +31 -3
  413. package/package.json +46 -29
  414. package/scripts/assemble-frontend.sh +127 -44
  415. package/scripts/assemble-functions.sh +127 -29
  416. package/scripts/boundary-check.sh +6 -2
  417. package/scripts/build-manifest.sh +24 -68
  418. package/scripts/checksum-manifest.mts +345 -0
  419. package/scripts/dev-clean.sh +86 -0
  420. package/scripts/dev-netlify.sh +49 -0
  421. package/scripts/netlify-dev-wrapper.sh +2 -0
  422. package/scripts/verify-install.ts +358 -0
  423. package/scripts/verify-integrity.sh +21 -57
  424. package/scripts/verify-manifest.mts +305 -0
  425. package/templates/project/gitignore +45 -0
  426. package/{config → templates/project}/package-lock.json +22335 -9366
  427. package/vitest.config.ts +46 -0
  428. package/.framework/public/spine.config.json +0 -91
  429. package/config/deno.lock +0 -108
  430. package/config/tsconfig.node.tsbuildinfo +0 -1
  431. package/config/tsconfig.tsbuildinfo +0 -1
  432. package/config/vite.config.d.ts +0 -2
  433. package/custom/.devin/AGENT.md +0 -357
  434. package/custom/.devin/skills/install-app/SKILL.md +0 -39
  435. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
  436. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
  437. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
  438. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
  439. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
  440. package/custom/.devin/workflows/app-install.yaml +0 -83
  441. package/custom/README.md +0 -79
  442. package/docs/README.md +0 -15
  443. package/scripts/app-install-cli.ts +0 -286
  444. package/scripts/check-core-integrity.sh +0 -82
  445. package/scripts/ingest-chunks.cjs +0 -202
  446. package/scripts/kb-chunk-parser.cjs +0 -312
  447. package/scripts/kb-chunk-parser.ts +0 -330
  448. package/scripts/kb-ingest-docs.ts +0 -203
  449. package/scripts/load-test-app-install.ts +0 -484
  450. package/scripts/test-login.js +0 -33
  451. package/spine.config.json +0 -91
@@ -1,3 +1,19 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:use_client:constant" type="constant" identity="use_client" parent="~/.framework/src/components/ui/field.tsx"]
2
+ // CIL[DOC-MACRO purpose="Declare this module as a Next.js client component"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Mark the file for client-side React execution"]
4
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="use client directive" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="String directive placed at the top of the file to enable client rendering" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stable]
9
+ "use client"
10
+ // CIL[DOC-VECTOR type="context" content="purpose='Declare this module as a Next.js client component'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
11
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
12
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
13
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
14
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
15
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
16
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:use_client:constant"]
1
17
 
2
18
 
3
19
 
@@ -11,42 +27,39 @@
11
27
 
12
28
 
13
29
 
14
- // CIL[BEGIN chunk_id="field_module_header_1783844098" type="module_header" identity="imports" parent="none"]
15
- // CIL[DOC-MACRO purpose="Import dependencies for form field components"]
16
- // CIL[DOC-RESPONSIBILITY responsibility="Import React hooks and UI components"]
17
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\"\\\"]"]
18
- // CIL[DOC-CONTRACT inputs="none" outputs="React hooks, styling utilities, components" errors="none" side_effects="none"]
19
- // CIL[DOC-MICRO logic_summary="Imports useMemo for optimization, cva for variants, and UI components" notable_decisions="[]"]
20
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
21
- // CIL[DOC-STABILITY stability="stable"]
22
- // CIL[DOC-AUDIENCE audience="developer"]
23
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/components/ui/table-primitives.tsx, \."]
24
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
25
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
26
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
27
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
28
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
29
- "use client"
30
+
31
+
32
+
33
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/ui/field.tsx"]
34
+ // CIL[DOC-MACRO purpose="Import dependencies for the field UI component module"]
35
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide React, CVA, and local UI utilities to the field subcomponents"]
36
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
37
+ // CIL[DOC-CONTRACT inputs="none" outputs="imported bindings available to the module" errors="none" side_effects="none"]
38
+ // CIL[DOC-MICRO logic_summary="Imports useMemo, cva, cn, Label, and Separator for use by the field components" notable_decisions="[]"]
39
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
40
+ // CIL[DOC-STABILITY stable]
41
+ // CIL[DOC-AUDIENCE audience="developers"]
30
42
  import { useMemo } from "react"
31
43
  import { cva, type VariantProps } from "class-variance-authority"
32
44
  import { cn } from "@/lib/utils"
33
45
  import { Label } from "@/components/ui/label"
34
46
  import { Separator } from "@/components/ui/separator"
35
- // CIL[END chunk_id="field_module_header_1783844098"]
36
- // CIL[BEGIN chunk_id="field_fieldset_1783844098" type="function" identity="FieldSet" parent="none"]
37
- // CIL[DOC-MACRO purpose="Fieldset wrapper for form controls"]
38
- // CIL[DOC-RESPONSIBILITY responsibility="Provide semantic fieldset container for form groups"]
39
- // CIL[DOC-CONTEXT module="field" 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\",\"\\\"]"]
40
- // CIL[DOC-CONTRACT inputs="none" outputs="styled fieldset element" errors="none" side_effects="renders DOM"]
41
- // CIL[DOC-MICRO logic_summary="Creates flex column fieldset with conditional gap spacing" notable_decisions="[]"]
42
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
43
- // CIL[DOC-STABILITY stability="stable"]
44
- // 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, \."]
45
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
46
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
47
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
47
+ // CIL[DOC-VECTOR type="context" content="purpose='Import dependencies for the field UI component module'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
48
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
49
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
50
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
48
51
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
49
52
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
53
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:module_header:module_header"]
54
+
55
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:FieldSet:component" type="component" identity="FieldSet" parent="~/.framework/src/components/ui/field.tsx"]
56
+ // CIL[DOC-MACRO purpose="Render a fieldset wrapper for grouped form controls"]
57
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a flex column layout for field sets with reduced gaps for checkbox and radio groups"]
58
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
59
+ // CIL[DOC-CONTRACT inputs="className: string, ...props: React.ComponentProps<fieldset>" outputs="JSX.Element" errors="none" side_effects="none"]
60
+ // CIL[DOC-MICRO logic_summary="Spreads props onto a fieldset with data-slot and a responsive flex gap using cn class merging" notable_decisions="[]"]
61
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
62
+ // CIL[DOC-STABILITY stable]
50
63
  function FieldSet({ className, ...props }: React.ComponentProps<"fieldset">) {
51
64
  return (
52
65
  <fieldset
@@ -59,21 +72,22 @@ function FieldSet({ className, ...props }: React.ComponentProps<"fieldset">) {
59
72
  />
60
73
  )
61
74
  }
62
- // CIL[END chunk_id="field_fieldset_1783844098"]
63
- // CIL[BEGIN chunk_id="field_fieldlegend_1783844098" type="function" identity="FieldLegend" parent="none"]
64
- // CIL[DOC-MACRO purpose="Legend component for fieldsets"]
65
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled legend with variant support"]
66
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
67
- // CIL[DOC-CONTRACT inputs="none" outputs="styled legend element" errors="none" side_effects="renders DOM"]
68
- // CIL[DOC-MICRO logic_summary="Creates legend with conditional styling based on variant type" notable_decisions="[]"]
69
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
70
- // CIL[DOC-STABILITY stability="stable"]
71
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, .framework/src/components/ui/table-primitives.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
72
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
73
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
74
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
75
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a fieldset wrapper for grouped form controls'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
76
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
77
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
78
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
75
79
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
76
80
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
81
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:FieldSet:component"]
82
+
83
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:FieldLegend:component" type="component" identity="FieldLegend" parent="~/.framework/src/components/ui/field.tsx"]
84
+ // CIL[DOC-MACRO purpose="Render a styled legend or label variant for field groups"]
85
+ // CIL[DOC-RESPONSIBILITY responsibility="Display a field legend with optional label styling"]
86
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
87
+ // CIL[DOC-CONTRACT inputs="className: string, variant: 'legend' | 'label', ...props: React.ComponentProps<legend>" outputs="JSX.Element" errors="none" side_effects="none"]
88
+ // CIL[DOC-MICRO logic_summary="Renders a legend with data-variant and conditional text sizing classes" notable_decisions="[]"]
89
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
90
+ // CIL[DOC-STABILITY stable]
77
91
  function FieldLegend({
78
92
  className,
79
93
  variant = "legend",
@@ -91,21 +105,22 @@ function FieldLegend({
91
105
  />
92
106
  )
93
107
  }
94
- // CIL[END chunk_id="field_fieldlegend_1783844098"]
95
- // CIL[BEGIN chunk_id="field_fieldgroup_1783844098" type="function" identity="FieldGroup" parent="none"]
96
- // CIL[DOC-MACRO purpose="Group container for form fields"]
97
- // CIL[DOC-RESPONSIBILITY responsibility="Provide responsive layout container for field groups"]
98
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/db.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
99
- // CIL[DOC-CONTRACT inputs="none" outputs="styled group div" errors="none" side_effects="renders DOM"]
100
- // CIL[DOC-MICRO logic_summary="Creates container query aware flex column with conditional spacing" notable_decisions="[]"]
101
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
102
- // CIL[DOC-STABILITY stability="stable"]
103
- // 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/schema-utils.ts, .framework/functions/_shared/principal.ts, .framework/functions/_shared/db.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
104
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
105
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
106
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
108
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a styled legend or label variant for field groups'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
109
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
110
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
111
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
107
112
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
108
113
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
114
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:FieldLegend:component"]
115
+
116
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:FieldGroup:component" type="component" identity="FieldGroup" parent="~/.framework/src/components/ui/field.tsx"]
117
+ // CIL[DOC-MACRO purpose="Render a full-width container for grouped fields"]
118
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a responsive, container-aware field group wrapper"]
119
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
120
+ // CIL[DOC-CONTRACT inputs="className: string, ...props: React.ComponentProps<div>" outputs="JSX.Element" errors="none" side_effects="none"]
121
+ // CIL[DOC-MICRO logic_summary="Applies data-slot and container query classes for vertical spacing between nested field groups" notable_decisions="[]"]
122
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
123
+ // CIL[DOC-STABILITY stable]
109
124
  function FieldGroup({ className, ...props }: React.ComponentProps<"div">) {
110
125
  return (
111
126
  <div
@@ -118,21 +133,23 @@ function FieldGroup({ className, ...props }: React.ComponentProps<"div">) {
118
133
  />
119
134
  )
120
135
  }
121
- // CIL[END chunk_id="field_fieldgroup_1783844098"]
122
- // CIL[BEGIN chunk_id="field_fieldvariants_1783844098" type="const" identity="fieldVariants" parent="none"]
123
- // CIL[DOC-MACRO purpose="Style variants for field layout"]
124
- // CIL[DOC-RESPONSIBILITY responsibility="Define orientation variants for field components"]
125
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[]"]
126
- // CIL[DOC-CONTRACT inputs="none" outputs="CSS class names" errors="none" side_effects="none"]
127
- // CIL[DOC-MICRO logic_summary="CVA configuration for vertical, horizontal, and responsive layouts" notable_decisions="[]"]
128
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
129
- // CIL[DOC-STABILITY stability="stable"]
130
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
131
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
132
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
133
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
136
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a full-width container for grouped fields'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
137
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
138
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
139
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
134
140
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
135
141
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
142
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:FieldGroup:component"]
143
+
144
+
145
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:fieldVariants:constant" type="constant" identity="fieldVariants" parent="~/.framework/src/components/ui/field.tsx"]
146
+ // CIL[DOC-MACRO purpose="Define CVA style variants for field layout orientation"]
147
+ // CIL[DOC-RESPONSIBILITY responsibility="Supply flex-orientation classes for vertical, horizontal, and responsive field layouts"]
148
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
149
+ // CIL[DOC-CONTRACT inputs="orientation: 'vertical' | 'horizontal' | 'responsive'" outputs="merged className string" errors="none" side_effects="none"]
150
+ // CIL[DOC-MICRO logic_summary="Uses class-variance-authority to combine base, orientation, and default variant classes" notable_decisions="[]"]
151
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
152
+ // CIL[DOC-STABILITY stable]
136
153
  const fieldVariants = cva(
137
154
  "group/field flex w-full gap-2 data-[invalid=true]:text-destructive",
138
155
  {
@@ -150,21 +167,23 @@ const fieldVariants = cva(
150
167
  },
151
168
  }
152
169
  )
153
- // CIL[END chunk_id="field_fieldvariants_1783844098"]
154
- // CIL[BEGIN chunk_id="field_field_1783844098" type="function" identity="Field" parent="none"]
155
- // CIL[DOC-MACRO purpose="Main field container component"]
156
- // CIL[DOC-RESPONSIBILITY responsibility="Provide layout container for form field elements"]
157
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[]"]
158
- // CIL[DOC-CONTRACT inputs="none" outputs="styled field div" errors="none" side_effects="renders DOM"]
159
- // CIL[DOC-MICRO logic_summary="Creates group role container with orientation-based styling" notable_decisions="[]"]
160
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
161
- // CIL[DOC-STABILITY stability="stable"]
162
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
163
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
164
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
165
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
170
+ // CIL[DOC-VECTOR type="context" content="purpose='Define CVA style variants for field layout orientation'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
171
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
172
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
173
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
166
174
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
167
175
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
176
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:fieldVariants:constant"]
177
+
178
+
179
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:Field:component" type="component" identity="Field" parent="~/.framework/src/components/ui/field.tsx"]
180
+ // CIL[DOC-MACRO purpose="Render the root field container with orientation variants"]
181
+ // CIL[DOC-RESPONSIBILITY responsibility="Compose the field wrapper and apply the selected field variant"]
182
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
183
+ // CIL[DOC-CONTRACT inputs="className: string, orientation: 'vertical' | 'horizontal' | 'responsive', ...props: React.ComponentProps<div>" outputs="JSX.Element" errors="none" side_effects="none"]
184
+ // CIL[DOC-MICRO logic_summary="Renders a div with role group, data-slot, and applies fieldVariants output with className" notable_decisions="[]"]
185
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
186
+ // CIL[DOC-STABILITY stable]
168
187
  function Field({
169
188
  className,
170
189
  orientation = "vertical",
@@ -180,21 +199,23 @@ function Field({
180
199
  />
181
200
  )
182
201
  }
183
- // CIL[END chunk_id="field_field_1783844098"]
184
- // CIL[BEGIN chunk_id="field_fieldcontent_1783844098" type="function" identity="FieldContent" parent="none"]
185
- // CIL[DOC-MACRO purpose="Content container for field elements"]
186
- // CIL[DOC-RESPONSIBILITY responsibility="Provide layout container for field input content"]
187
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[]"]
188
- // CIL[DOC-CONTRACT inputs="none" outputs="styled content div" errors="none" side_effects="renders DOM"]
189
- // CIL[DOC-MICRO logic_summary="Creates flex column container with tight spacing for inputs" notable_decisions="[]"]
190
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
191
- // CIL[DOC-STABILITY stability="stable"]
192
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
193
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
194
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
195
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
202
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the root field container with orientation variants'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
203
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
204
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
205
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
196
206
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
197
207
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
208
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:Field:component"]
209
+
210
+
211
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:FieldContent:component" type="component" identity="FieldContent" parent="~/.framework/src/components/ui/field.tsx"]
212
+ // CIL[DOC-MACRO purpose="Render the content area inside a field"]
213
+ // CIL[DOC-RESPONSIBILITY responsibility="Hold the control and description within a field"]
214
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
215
+ // CIL[DOC-CONTRACT inputs="className: string, ...props: React.ComponentProps<div>" outputs="JSX.Element" errors="none" side_effects="none"]
216
+ // CIL[DOC-MICRO logic_summary="Renders a div with data-slot, flex-1, and a tight vertical gap for field content" notable_decisions="[]"]
217
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
218
+ // CIL[DOC-STABILITY stable]
198
219
  function FieldContent({ className, ...props }: React.ComponentProps<"div">) {
199
220
  return (
200
221
  <div
@@ -207,21 +228,22 @@ function FieldContent({ className, ...props }: React.ComponentProps<"div">) {
207
228
  />
208
229
  )
209
230
  }
210
- // CIL[END chunk_id="field_fieldcontent_1783844098"]
211
- // CIL[BEGIN chunk_id="field_fieldlabel_1783844098" type="function" identity="FieldLabel" parent="none"]
212
- // CIL[DOC-MACRO purpose="Label component for form fields"]
213
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled label with field-specific styling"]
214
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[]"]
215
- // CIL[DOC-CONTRACT inputs="none" outputs="styled Label component" errors="none" side_effects="renders DOM"]
216
- // CIL[DOC-MICRO logic_summary="Creates label with conditional styling and responsive layout" notable_decisions="[]"]
217
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
218
- // CIL[DOC-STABILITY stability="stable"]
219
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
220
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
221
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
222
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
231
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the content area inside a field'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
232
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
233
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
234
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
223
235
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
224
236
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
237
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:FieldContent:component"]
238
+
239
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:FieldLabel:component" type="component" identity="FieldLabel" parent="~/.framework/src/components/ui/field.tsx"]
240
+ // CIL[DOC-MACRO purpose="Render a label for a field using the shared Label component"]
241
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a styled, interactive-aware label wrapper"]
242
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
243
+ // CIL[DOC-CONTRACT inputs="className: string, ...props: React.ComponentProps<typeof Label>" outputs="JSX.Element" errors="none" side_effects="none"]
244
+ // CIL[DOC-MICRO logic_summary="Wraps the imported Label with data-slot and peer/state-aware background and border classes" notable_decisions="[]"]
245
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
246
+ // CIL[DOC-STABILITY stable]
225
247
  function FieldLabel({
226
248
  className,
227
249
  ...props
@@ -238,21 +260,22 @@ function FieldLabel({
238
260
  />
239
261
  )
240
262
  }
241
- // CIL[END chunk_id="field_fieldlabel_1783844098"]
242
- // CIL[BEGIN chunk_id="field_fieldtitle_1783844098" type="function" identity="FieldTitle" parent="none"]
243
- // CIL[DOC-MACRO purpose="Title component for field headers"]
244
- // CIL[DOC-RESPONSIBILITY responsibility="Display styled title text for form sections"]
245
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[]"]
246
- // CIL[DOC-CONTRACT inputs="none" outputs="styled title div" errors="none" side_effects="renders DOM"]
247
- // CIL[DOC-MICRO logic_summary="Creates small, medium-weight title with disabled state styling" 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."]
263
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a label for a field using the shared Label component'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
264
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
265
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
266
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
254
267
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
255
268
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
269
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:FieldLabel:component"]
270
+
271
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:FieldTitle:component" type="component" identity="FieldTitle" parent="~/.framework/src/components/ui/field.tsx"]
272
+ // CIL[DOC-MACRO purpose="Render a small field title inside a label"]
273
+ // CIL[DOC-RESPONSIBILITY responsibility="Display a concise title for field labels"]
274
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
275
+ // CIL[DOC-CONTRACT inputs="className: string, ...props: React.ComponentProps<div>" outputs="JSX.Element" errors="none" side_effects="none"]
276
+ // CIL[DOC-MICRO logic_summary="Renders a div with data-slot and small medium text styling" notable_decisions="[]"]
277
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
278
+ // CIL[DOC-STABILITY stable]
256
279
  function FieldTitle({ className, ...props }: React.ComponentProps<"div">) {
257
280
  return (
258
281
  <div
@@ -265,21 +288,22 @@ function FieldTitle({ className, ...props }: React.ComponentProps<"div">) {
265
288
  />
266
289
  )
267
290
  }
268
- // CIL[END chunk_id="field_fieldtitle_1783844098"]
269
- // CIL[BEGIN chunk_id="field_fielddescription_1783844098" type="function" identity="FieldDescription" parent="none"]
270
- // CIL[DOC-MACRO purpose="Description text for form fields"]
271
- // CIL[DOC-RESPONSIBILITY responsibility="Display styled description text with link support"]
272
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[]"]
273
- // CIL[DOC-CONTRACT inputs="none" outputs="styled description p" errors="none" side_effects="renders DOM"]
274
- // CIL[DOC-MICRO logic_summary="Creates muted text with conditional spacing and link styling" notable_decisions="[]"]
275
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
276
- // CIL[DOC-STABILITY stability="stable"]
277
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
278
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
279
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
280
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
291
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a small field title inside a label'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
292
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
293
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
294
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
281
295
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
282
296
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
297
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:FieldTitle:component"]
298
+
299
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:FieldDescription:component" type="component" identity="FieldDescription" parent="~/.framework/src/components/ui/field.tsx"]
300
+ // CIL[DOC-MACRO purpose="Render descriptive helper text for a field"]
301
+ // CIL[DOC-RESPONSIBILITY responsibility="Show muted helper or hint text with link styling"]
302
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
303
+ // CIL[DOC-CONTRACT inputs="className: string, ...props: React.ComponentProps<p>" outputs="JSX.Element" errors="none" side_effects="none"]
304
+ // CIL[DOC-MICRO logic_summary="Renders a p with data-slot, muted color, and underline styles for nested links" notable_decisions="[]"]
305
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
306
+ // CIL[DOC-STABILITY stable]
283
307
  function FieldDescription({ className, ...props }: React.ComponentProps<"p">) {
284
308
  return (
285
309
  <p
@@ -294,21 +318,22 @@ function FieldDescription({ className, ...props }: React.ComponentProps<"p">) {
294
318
  />
295
319
  )
296
320
  }
297
- // CIL[END chunk_id="field_fielddescription_1783844098"]
298
- // CIL[BEGIN chunk_id="field_fieldseparator_1783844098" type="function" identity="FieldSeparator" parent="none"]
299
- // CIL[DOC-MACRO purpose="Visual separator between field sections"]
300
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled separator with optional content"]
301
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[]"]
302
- // CIL[DOC-CONTRACT inputs="none" outputs="styled separator div" errors="none" side_effects="renders DOM"]
303
- // CIL[DOC-MICRO logic_summary="Creates horizontal line with centered content overlay" notable_decisions="[]"]
304
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
305
- // CIL[DOC-STABILITY stability="stable"]
306
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
307
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
308
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
309
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
321
+ // CIL[DOC-VECTOR type="context" content="purpose='Render descriptive helper text for a field'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
322
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
323
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
324
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
310
325
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
311
326
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
327
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:FieldDescription:component"]
328
+
329
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:FieldSeparator:component" type="component" identity="FieldSeparator" parent="~/.framework/src/components/ui/field.tsx"]
330
+ // CIL[DOC-MACRO purpose="Render a visual separator with optional centered content"]
331
+ // CIL[DOC-RESPONSIBILITY responsibility="Display a horizontal separator with an optional label"]
332
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
333
+ // CIL[DOC-CONTRACT inputs="className: string, children: React.ReactNode, ...props: React.ComponentProps<div>" outputs="JSX.Element" errors="none" side_effects="none"]
334
+ // CIL[DOC-MICRO logic_summary="Renders a relative div with the Separator primitive and centered text when children are present" notable_decisions="[]"]
335
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
336
+ // CIL[DOC-STABILITY stable]
312
337
  function FieldSeparator({
313
338
  children,
314
339
  className,
@@ -338,21 +363,22 @@ function FieldSeparator({
338
363
  </div>
339
364
  )
340
365
  }
341
- // CIL[END chunk_id="field_fieldseparator_1783844098"]
342
- // CIL[BEGIN chunk_id="field_fielderror_1783844098" type="function" identity="FieldError" parent="none"]
343
- // CIL[DOC-MACRO purpose="Error display component for form validation"]
344
- // CIL[DOC-RESPONSIBILITY responsibility="Render validation errors with deduplication"]
345
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[]"]
346
- // CIL[DOC-CONTRACT inputs="none" outputs="error display div" errors="none" side_effects="renders DOM"]
347
- // CIL[DOC-MICRO logic_summary="Processes error array with deduplication and conditional rendering" notable_decisions="[]"]
348
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
349
- // CIL[DOC-STABILITY stability="stable"]
350
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
351
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
352
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
353
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
366
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a visual separator with optional centered content'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
367
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
368
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
369
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
354
370
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
355
371
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
372
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:FieldSeparator:component"]
373
+
374
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:FieldError:component" type="component" identity="FieldError" parent="~/.framework/src/components/ui/field.tsx"]
375
+ // CIL[DOC-MACRO purpose="Render validation errors for a field"]
376
+ // CIL[DOC-RESPONSIBILITY responsibility="Format and display field-level errors or children"]
377
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
378
+ // CIL[DOC-CONTRACT inputs="className: string, children: React.ReactNode, errors: Array<{message?: string} | undefined>, ...props: React.ComponentProps<div>" outputs="JSX.Element | null" errors="none" side_effects="none"]
379
+ // CIL[DOC-MICRO logic_summary="Deduplicates error messages with useMemo and renders a single message or bullet list" notable_decisions="[]"]
380
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
381
+ // CIL[DOC-STABILITY stable]
356
382
  function FieldError({
357
383
  className,
358
384
  children,
@@ -403,21 +429,21 @@ function FieldError({
403
429
  </div>
404
430
  )
405
431
  }
406
- // CIL[END chunk_id="field_fielderror_1783844098"]
407
- // CIL[BEGIN chunk_id="field_exports_1783844098" type="exports" identity="exports" parent="none"]
408
- // CIL[DOC-MACRO purpose="Export field components"]
409
- // CIL[DOC-RESPONSIBILITY responsibility="Make all field components available for import"]
410
- // CIL[DOC-CONTEXT module="field" layer="ui" related_files="[]"]
411
- // CIL[DOC-CONTRACT inputs="none" outputs="component exports" errors="none" side_effects="module exports"]
412
- // CIL[DOC-MICRO logic_summary="Exports all field form components for external usage" notable_decisions="[]"]
413
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
414
- // CIL[DOC-STABILITY stability="stable"]
415
- // CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
416
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
417
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
418
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
432
+ // CIL[DOC-VECTOR type="context" content="purpose='Render validation errors for a field'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
433
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
434
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
435
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
419
436
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
420
437
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
438
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:FieldError:component"]
439
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/field.tsx:exports:variable" type="variable" identity="exports" parent="~/.framework/src/components/ui/field.tsx"]
440
+ // CIL[DOC-MACRO purpose="Public exports of the field UI primitives"]
441
+ // CIL[DOC-RESPONSIBILITY responsibility="Re-export all field component symbols for module consumers"]
442
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui/field.tsx" layer="ui" related_files=".framework/src/components/ui/field.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx,.framework/src/lib/utils.ts"]
443
+ // CIL[DOC-CONTRACT inputs="none" outputs="named field component exports" errors="none" side_effects="none"]
444
+ // CIL[DOC-MICRO logic_summary="Named export block exposing Field, FieldLabel, FieldDescription, FieldError, FieldGroup, FieldLegend, FieldSeparator, FieldSet, FieldContent, FieldTitle" notable_decisions="[]"]
445
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
446
+ // CIL[DOC-STABILITY stable]
421
447
  export {
422
448
  Field,
423
449
  FieldLabel,
@@ -430,4 +456,10 @@ export {
430
456
  FieldContent,
431
457
  FieldTitle,
432
458
  }
433
- // CIL[END chunk_id="field_exports_1783844098"]
459
+ // CIL[DOC-VECTOR type="context" content="purpose='Public exports of the field UI primitives'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/label.tsx,.framework/src/components/ui/separator.tsx"]
460
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
461
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
462
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
463
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
464
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
465
+ // CIL[END stable_id="~/.framework/src/components/ui/field.tsx:exports:variable"]