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,41 +1,101 @@
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
- // CIL[BEGIN chunk_id="chart_module_header_1783881474" type="module_header" identity="module_header" parent="none"]
12
- // CIL[DOC-MACRO purpose="Chart component library with Recharts integration"]
13
- // CIL[DOC-RESPONSIBILITY responsibility="Provide chart infrastructure and configuration types"]
14
- // CIL[DOC-CONTEXT module="ui.chart" layer="component" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
15
- // CIL[DOC-CONTRACT inputs="none" outputs="Chart types, constants, context" errors="none" side_effects="none"]
16
- // CIL[DOC-MICRO logic_summary="Defines chart configuration system, themes, and React context" notable_decisions="['theme-aware styling', 'flexible color configuration', 'context pattern']"]
17
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:use_client:directive" type="directive" identity="use_client" parent="~/.framework/src/components/ui/chart.tsx"]
2
+ // CIL[DOC-MACRO purpose="Mark this module as a client-side React component"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Indicate the module must run in the browser"]
4
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Next.js use client directive" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
18
8
  // CIL[DOC-STABILITY stability="stable"]
19
- // CIL[DOC-AUDIENCE audience="developer"]
20
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/components/ui/table-primitives.tsx, custom/apps/portal/pages/ContentPage.tsx, \."]
21
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
22
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
23
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
9
+ "use client"
10
+ // CIL[DOC-VECTOR type="context" content="purpose='Mark this module as a client-side React component'; No verified external callers; imports: .framework/src/lib/utils.ts"]
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"]
24
14
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
25
15
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
26
- "use client"
27
-
16
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:use_client:directive"]
17
+
18
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/ui/chart.tsx"]
19
+ // CIL[DOC-MACRO purpose="Import dependencies for the chart component module"]
20
+ // CIL[DOC-RESPONSIBILITY responsibility="Load React, Recharts primitives, and the cn utility"]
21
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/lib/utils.ts"]
22
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="" side_effects="none"]
23
+ // CIL[DOC-MICRO logic_summary="Imports React, Recharts, TooltipValueType, and cn" notable_decisions="[]"]
24
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
25
+ // CIL[DOC-STABILITY stability="stable"]
26
+ // CIL[DOC-AUDIENCE audience="frontend-developers"]
28
27
  import * as React from "react"
29
28
  import * as RechartsPrimitive from "recharts"
30
29
  import type { TooltipValueType } from "recharts"
31
30
 
32
31
  import { cn } from "@/lib/utils"
33
-
32
+ // CIL[DOC-VECTOR type="context" content="purpose='Import dependencies for the chart component module'; No verified external callers; imports: .framework/src/lib/utils.ts"]
33
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
34
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
35
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
36
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
37
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
38
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:module_header:module_header"]
39
+
40
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:THEMES:constant" type="constant" identity="THEMES" parent="~/.framework/src/components/ui/chart.tsx"]
41
+ // CIL[DOC-MACRO purpose="Define CSS selector prefixes for light and dark themes"]
42
+ // CIL[DOC-RESPONSIBILITY responsibility="Map theme keys to CSS class prefixes"]
43
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
44
+ // CIL[DOC-CONTRACT inputs="none" outputs="{ light: "", dark: ".dark" }" errors="" side_effects="none"]
45
+ // CIL[DOC-MICRO logic_summary="Object mapping light to empty and dark to .dark" notable_decisions="[]"]
46
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
47
+ // CIL[DOC-STABILITY stability="stable"]
34
48
  const THEMES = { light: "", dark: ".dark" } as const
35
-
49
+ // CIL[DOC-VECTOR type="context" content="purpose='Define CSS selector prefixes for light and dark themes'; No verified external callers; imports: .framework/src/lib/utils.ts"]
50
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
51
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
52
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
53
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
54
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
55
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:THEMES:constant"]
56
+
57
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:INITIAL_DIMENSION:constant" type="constant" identity="INITIAL_DIMENSION" parent="~/.framework/src/components/ui/chart.tsx"]
58
+ // CIL[DOC-MACRO purpose="Provide default dimensions for the responsive chart container"]
59
+ // CIL[DOC-RESPONSIBILITY responsibility="Supply fallback width and height before resize"]
60
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
61
+ // CIL[DOC-CONTRACT inputs="none" outputs="{ width: 320, height: 200 }" errors="" side_effects="none"]
62
+ // CIL[DOC-MICRO logic_summary="Default width 320 and height 200 as const" notable_decisions="[]"]
63
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
64
+ // CIL[DOC-STABILITY stability="stable"]
36
65
  const INITIAL_DIMENSION = { width: 320, height: 200 } as const
66
+ // CIL[DOC-VECTOR type="context" content="purpose='Provide default dimensions for the responsive chart container'; No verified external callers; imports: .framework/src/lib/utils.ts"]
67
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
68
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
69
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
70
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
71
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
72
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:INITIAL_DIMENSION:constant"]
73
+
74
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:TooltipNameType:type" type="type" identity="TooltipNameType" parent="~/.framework/src/components/ui/chart.tsx"]
75
+ // CIL[DOC-MACRO purpose="Allow tooltip names to be numbers or strings"]
76
+ // CIL[DOC-RESPONSIBILITY responsibility="Type alias for tooltip label keys"]
77
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
78
+ // CIL[DOC-CONTRACT inputs="none" outputs="number | string" errors="" side_effects="none"]
79
+ // CIL[DOC-MICRO logic_summary="Union of number and string" notable_decisions="[]"]
80
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
81
+ // CIL[DOC-STABILITY stability="stable"]
37
82
  type TooltipNameType = number | string
38
-
83
+ // CIL[DOC-VECTOR type="context" content="purpose='Allow tooltip names to be numbers or strings'; No verified external callers; imports: .framework/src/lib/utils.ts"]
84
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
85
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
86
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
87
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
88
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
89
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:TooltipNameType:type"]
90
+
91
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:ChartConfig:type" type="type" identity="ChartConfig" parent="~/.framework/src/components/ui/chart.tsx"]
92
+ // CIL[DOC-MACRO purpose="Define the shape of chart color and label configuration"]
93
+ // CIL[DOC-RESPONSIBILITY responsibility="Type the mapping of data keys to labels, icons, and theme-aware colors"]
94
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
95
+ // CIL[DOC-CONTRACT inputs="none" outputs="ChartConfig type alias" errors="" side_effects="none"]
96
+ // CIL[DOC-MICRO logic_summary="Record of key to label, icon, and exclusive color or theme map" notable_decisions="[]"]
97
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
98
+ // CIL[DOC-STABILITY stability="stable"]
39
99
  export type ChartConfig = Record<
40
100
  string,
41
101
  {
@@ -46,27 +106,58 @@ export type ChartConfig = Record<
46
106
  | { color?: never; theme: Record<keyof typeof THEMES, string> }
47
107
  )
48
108
  >
49
-
109
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the shape of chart color and label configuration'; 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"]
113
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
114
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
115
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:ChartConfig:type"]
116
+
117
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:ChartContextProps:type" type="type" identity="ChartContextProps" parent="~/.framework/src/components/ui/chart.tsx"]
118
+ // CIL[DOC-MACRO purpose="Type the chart context value"]
119
+ // CIL[DOC-RESPONSIBILITY responsibility="Carry the active ChartConfig down the tree"]
120
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
121
+ // CIL[DOC-CONTRACT inputs="none" outputs="{ config: ChartConfig }" errors="" side_effects="none"]
122
+ // CIL[DOC-MICRO logic_summary="Object containing the chart config" notable_decisions="[]"]
123
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
124
+ // CIL[DOC-STABILITY stability="stable"]
50
125
  type ChartContextProps = {
51
126
  config: ChartConfig
52
127
  }
53
-
54
- const ChartContext = React.createContext<ChartContextProps | null>(null)
55
- // CIL[END chunk_id="chart_module_header_1783881474"]
56
- // CIL[BEGIN chunk_id="chart_usechart_1783881474" type="function" identity="useChart" parent="none"]
57
- // CIL[DOC-MACRO purpose="Hook to access chart configuration context"]
58
- // CIL[DOC-RESPONSIBILITY responsibility="Provide safe access to chart context with error handling"]
59
- // CIL[DOC-CONTEXT module="ui.chart" layer="component" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
60
- // CIL[DOC-CONTRACT inputs="none" outputs="ChartContextProps" errors="throws if not in ChartContainer" side_effects="none"]
61
- // CIL[DOC-MICRO logic_summary="Retrieves chart context and throws descriptive error if missing" notable_decisions="['context validation', 'developer-friendly error messages']"]
62
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
128
+ // CIL[DOC-VECTOR type="context" content="purpose='Type the chart context value'; No verified external callers; imports: .framework/src/lib/utils.ts"]
129
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
130
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
131
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
132
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
133
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
134
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:ChartContextProps:type"]
135
+
136
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:ChartContext:constant" type="constant" identity="ChartContext" parent="~/.framework/src/components/ui/chart.tsx"]
137
+ // CIL[DOC-MACRO purpose="Create a React context for chart configuration"]
138
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide ChartContext to container and child components"]
139
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
140
+ // CIL[DOC-CONTRACT inputs="none" outputs="React context" errors="" side_effects="none"]
141
+ // CIL[DOC-MICRO logic_summary="React.createContext with null default" notable_decisions="[]"]
142
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
63
143
  // CIL[DOC-STABILITY stability="stable"]
64
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 2. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/RolesPage.tsx, \."]
65
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 2."]
66
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
67
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
144
+ const ChartContext = React.createContext<ChartContextProps | null>(null)
145
+ // CIL[DOC-VECTOR type="context" content="purpose='Create a React context for chart configuration'; No verified external callers; imports: .framework/src/lib/utils.ts"]
146
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
147
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
148
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
68
149
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
69
150
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
151
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:ChartContext:constant"]
152
+
153
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:useChart:hook" type="hook" identity="useChart" parent="~/.framework/src/components/ui/chart.tsx"]
154
+ // CIL[DOC-MACRO purpose="Access the surrounding ChartContext value"]
155
+ // CIL[DOC-RESPONSIBILITY responsibility="Return chart config or throw if outside a container"]
156
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
157
+ // CIL[DOC-CONTRACT inputs="none" outputs="ChartConfig from context" errors="Error if context is null" side_effects="none"]
158
+ // CIL[DOC-MICRO logic_summary="useContext wrapper with missing-context guard" notable_decisions="[]"]
159
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
160
+ // CIL[DOC-STABILITY stability="stable"]
70
161
  function useChart() {
71
162
  const context = React.useContext(ChartContext)
72
163
 
@@ -76,21 +167,22 @@ function useChart() {
76
167
 
77
168
  return context
78
169
  }
79
- // CIL[END chunk_id="chart_usechart_1783881474"]
80
- // CIL[BEGIN chunk_id="chart_chartcontainer_1783881474" type="function" identity="ChartContainer" parent="none"]
81
- // CIL[DOC-MACRO purpose="Main chart container with responsive layout and context provider"]
82
- // CIL[DOC-RESPONSIBILITY responsibility="Wrap chart components with responsive container and configuration context"]
83
- // CIL[DOC-CONTEXT module="ui.chart" layer="component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/db.ts\",\"\\\"]"]
84
- // CIL[DOC-CONTRACT inputs="none" outputs="responsive chart container" errors="none" side_effects="provides context, renders DOM"]
85
- // CIL[DOC-MICRO logic_summary="Generates unique chart ID, provides context, applies comprehensive styling" notable_decisions="['unique ID generation', 'comprehensive recharts styling', 'responsive container pattern']"]
86
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
87
- // CIL[DOC-STABILITY stability="stable"]
88
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/db.ts, \."]
89
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
90
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
91
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
170
+ // CIL[DOC-VECTOR type="context" content="purpose='Access the surrounding ChartContext value'; No verified external callers; imports: .framework/src/lib/utils.ts"]
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"]
92
174
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
93
175
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
176
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:useChart:hook"]
177
+
178
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:ChartContainer:component" type="component" identity="ChartContainer" parent="~/.framework/src/components/ui/chart.tsx"]
179
+ // CIL[DOC-MACRO purpose="Render a chart inside a styled responsive container"]
180
+ // CIL[DOC-RESPONSIBILITY responsibility="Generate a unique chart id, provide config context, and wrap Recharts ResponsiveContainer"]
181
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
182
+ // CIL[DOC-CONTRACT inputs="id, className, children, config, initialDimension, div props" outputs="JSX wrapping ResponsiveContainer" errors="" side_effects="sets ChartContext.Provider"]
183
+ // CIL[DOC-MICRO logic_summary="Computes chartId, renders Provider, div, ChartStyle, and ResponsiveContainer" notable_decisions="[]"]
184
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
185
+ // CIL[DOC-STABILITY stability="stable"]
94
186
  function ChartContainer({
95
187
  id,
96
188
  className,
@@ -132,21 +224,22 @@ function ChartContainer({
132
224
  </ChartContext.Provider>
133
225
  )
134
226
  }
135
- // CIL[END chunk_id="chart_chartcontainer_1783881474"]
136
- // CIL[BEGIN chunk_id="chart_chartstyle_1783881474" type="function" identity="ChartStyle" parent="none"]
137
- // CIL[DOC-MACRO purpose="Dynamic CSS generation for chart theme colors"]
138
- // CIL[DOC-RESPONSIBILITY responsibility="Generate theme-aware CSS variables for chart colors"]
139
- // CIL[DOC-CONTEXT module="ui.chart" layer="component" 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\",\"\\\"]"]
140
- // CIL[DOC-CONTRACT inputs="none" outputs="style element with CSS variables" errors="none" side_effects="injects styles into DOM"]
141
- // CIL[DOC-MICRO logic_summary="Creates CSS custom properties for chart colors across light/dark themes" notable_decisions="['dynamic CSS generation', 'theme-aware color system', 'dangerouslySetInnerHTML usage']"]
142
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
143
- // CIL[DOC-STABILITY stability="stable"]
144
- // CIL[DOC-VECTOR type="context" content="Layer: component. 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, \."]
145
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
146
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
147
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
227
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a chart inside a styled responsive container'; No verified external callers; imports: .framework/src/lib/utils.ts"]
228
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
229
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
230
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
148
231
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
149
232
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
233
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:ChartContainer:component"]
234
+
235
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:ChartStyle:component" type="component" identity="ChartStyle" parent="~/.framework/src/components/ui/chart.tsx"]
236
+ // CIL[DOC-MACRO purpose="Generate CSS custom properties for chart colors per theme"]
237
+ // CIL[DOC-RESPONSIBILITY responsibility="Inject a style tag mapping each config color to --color-* variables"]
238
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
239
+ // CIL[DOC-CONTRACT inputs="id, config" outputs="style element or null" errors="" side_effects="injects inline styles into DOM"]
240
+ // CIL[DOC-MICRO logic_summary="Filters color config, maps themes, and produces CSS variable rules" notable_decisions="[]"]
241
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
242
+ // CIL[DOC-STABILITY stability="stable"]
150
243
  const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {
151
244
  const colorConfig = Object.entries(config).filter(
152
245
  ([, config]) => config.theme ?? config.color
@@ -179,37 +272,39 @@ ${colorConfig
179
272
  />
180
273
  )
181
274
  }
182
- // CIL[END chunk_id="chart_chartstyle_1783881474"]
183
- // CIL[BEGIN chunk_id="chart_charttooltip_1783881474" type="constant" identity="ChartTooltip" parent="none"]
184
- // CIL[DOC-MACRO purpose="Re-export of Recharts Tooltip component"]
185
- // CIL[DOC-RESPONSIBILITY responsibility="Provide direct access to underlying Recharts tooltip"]
186
- // CIL[DOC-CONTEXT module="ui.chart" layer="component" 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/RolesPage.tsx\",\"\\\"]"]
187
- // CIL[DOC-CONTRACT inputs="none" outputs="Recharts Primitive Tooltip" errors="none" side_effects="none"]
188
- // CIL[DOC-MICRO logic_summary="Simple re-export for advanced tooltip customization" notable_decisions="['re-export pattern', 'library integration']"]
189
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
190
- // CIL[DOC-STABILITY stability="stable"]
191
- // CIL[DOC-VECTOR type="context" content="Layer: component. 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/RolesPage.tsx, \."]
192
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
193
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
194
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
275
+ // CIL[DOC-VECTOR type="context" content="purpose='Generate CSS custom properties for chart colors per theme'; No verified external callers; imports: .framework/src/lib/utils.ts"]
276
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
277
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
278
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
195
279
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
196
280
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
197
- const ChartTooltip = RechartsPrimitive.Tooltip
198
- // CIL[END chunk_id="chart_charttooltip_1783881474"]
199
- // CIL[BEGIN chunk_id="chart_charttooltipcontent_1783881474" type="function" identity="ChartTooltipContent" parent="none"]
200
- // CIL[DOC-MACRO purpose="Custom tooltip content with configurable indicators and formatting"]
201
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled tooltip with chart configuration integration"]
202
- // CIL[DOC-CONTEXT module="ui.chart" layer="component" related_files="[]"]
203
- // CIL[DOC-CONTRACT inputs="none" outputs="styled tooltip component" errors="none" side_effects="renders DOM"]
204
- // CIL[DOC-MICRO logic_summary="Complex tooltip rendering with label formatting, custom indicators, and chart config integration" notable_decisions="['complex prop interface', 'multiple indicator types', 'custom formatting support']"]
205
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
281
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:ChartStyle:component"]
282
+
283
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:ChartTooltip:constant" type="constant" identity="ChartTooltip" parent="~/.framework/src/components/ui/chart.tsx"]
284
+ // CIL[DOC-MACRO purpose="Expose the Recharts Tooltip component under the Chart namespace"]
285
+ // CIL[DOC-RESPONSIBILITY responsibility="Re-export RechartsPrimitive.Tooltip"]
286
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
287
+ // CIL[DOC-CONTRACT inputs="none" outputs="Tooltip component" errors="" side_effects="none"]
288
+ // CIL[DOC-MICRO logic_summary="Alias to RechartsPrimitive.Tooltip" notable_decisions="[]"]
289
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
206
290
  // CIL[DOC-STABILITY stability="stable"]
207
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
208
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
209
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
210
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
291
+ const ChartTooltip = RechartsPrimitive.Tooltip
292
+ // CIL[DOC-VECTOR type="context" content="purpose='Expose the Recharts Tooltip component under the Chart namespace'; No verified external callers; imports: .framework/src/lib/utils.ts"]
293
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
294
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
295
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
211
296
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
212
297
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
298
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:ChartTooltip:constant"]
299
+
300
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:ChartTooltipContent:component" type="component" identity="ChartTooltipContent" parent="~/.framework/src/components/ui/chart.tsx"]
301
+ // CIL[DOC-MACRO purpose="Render a customized tooltip for Recharts charts"]
302
+ // CIL[DOC-RESPONSIBILITY responsibility="Format tooltip label, indicator, and payload values using chart config"]
303
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
304
+ // CIL[DOC-CONTRACT inputs="active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, Tooltip props, React" outputs="JSX tooltip or null" errors="" side_effects="none"]
305
+ // CIL[DOC-MICRO logic_summary="Computes label from payload and config, renders dot/line/dashed indicators and values" notable_decisions="[]"]
306
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
307
+ // CIL[DOC-STABILITY stability="stable"]
213
308
  function ChartTooltipContent({
214
309
  active,
215
310
  payload,
@@ -363,37 +458,39 @@ function ChartTooltipContent({
363
458
  </div>
364
459
  )
365
460
  }
366
- // CIL[END chunk_id="chart_charttooltipcontent_1783881474"]
367
- // CIL[BEGIN chunk_id="chart_chartlegend_1783881474" type="constant" identity="ChartLegend" parent="none"]
368
- // CIL[DOC-MACRO purpose="Re-export of Recharts Legend component"]
369
- // CIL[DOC-RESPONSIBILITY responsibility="Provide direct access to underlying Recharts legend"]
370
- // CIL[DOC-CONTEXT module="ui.chart" layer="component" related_files="[]"]
371
- // CIL[DOC-CONTRACT inputs="none" outputs="Recharts Primitive Legend" errors="none" side_effects="none"]
372
- // CIL[DOC-MICRO logic_summary="Simple re-export for advanced legend customization" notable_decisions="['re-export pattern', 'library integration']"]
373
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
374
- // CIL[DOC-STABILITY stability="stable"]
375
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
376
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
377
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
378
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
461
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a customized tooltip for Recharts charts'; No verified external callers; imports: .framework/src/lib/utils.ts"]
462
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
463
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
464
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
379
465
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
380
466
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
381
- const ChartLegend = RechartsPrimitive.Legend
382
- // CIL[END chunk_id="chart_chartlegend_1783881474"]
383
- // CIL[BEGIN chunk_id="chart_chartlegendcontent_1783881474" type="function" identity="ChartLegendContent" parent="none"]
384
- // CIL[DOC-MACRO purpose="Custom legend content with configurable icons and alignment"]
385
- // CIL[DOC-RESPONSIBILITY responsibility="Render styled legend with chart configuration integration"]
386
- // CIL[DOC-CONTEXT module="ui.chart" layer="component" related_files="[]"]
387
- // CIL[DOC-CONTRACT inputs="none" outputs="styled legend component" errors="none" side_effects="renders DOM"]
388
- // CIL[DOC-MICRO logic_summary="Maps legend payload to styled items with optional icons and configuration" notable_decisions="['config-aware rendering', 'flexible icon support', 'vertical alignment options']"]
389
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
467
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:ChartTooltipContent:component"]
468
+
469
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:ChartLegend:constant" type="constant" identity="ChartLegend" parent="~/.framework/src/components/ui/chart.tsx"]
470
+ // CIL[DOC-MACRO purpose="Expose the Recharts Legend component under the Chart namespace"]
471
+ // CIL[DOC-RESPONSIBILITY responsibility="Re-export RechartsPrimitive.Legend"]
472
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
473
+ // CIL[DOC-CONTRACT inputs="none" outputs="Legend component" errors="" side_effects="none"]
474
+ // CIL[DOC-MICRO logic_summary="Alias to RechartsPrimitive.Legend" notable_decisions="[]"]
475
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
390
476
  // CIL[DOC-STABILITY stability="stable"]
391
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
392
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
393
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
394
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
477
+ const ChartLegend = RechartsPrimitive.Legend
478
+ // CIL[DOC-VECTOR type="context" content="purpose='Expose the Recharts Legend component under the Chart namespace'; No verified external callers; imports: .framework/src/lib/utils.ts"]
479
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
480
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
481
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
395
482
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
396
483
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
484
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:ChartLegend:constant"]
485
+
486
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:ChartLegendContent:component" type="component" identity="ChartLegendContent" parent="~/.framework/src/components/ui/chart.tsx"]
487
+ // CIL[DOC-MACRO purpose="Render a customized legend for Recharts charts"]
488
+ // CIL[DOC-RESPONSIBILITY responsibility="Map payload items to labels and color swatches using chart config"]
489
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
490
+ // CIL[DOC-CONTRACT inputs="className, hideIcon, payload, verticalAlign, nameKey, div props" outputs="JSX legend or null" errors="" side_effects="none"]
491
+ // CIL[DOC-MICRO logic_summary="Filters payload, resolves item config, renders icon or color dot with label" notable_decisions="[]"]
492
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
493
+ // CIL[DOC-STABILITY stability="stable"]
397
494
  function ChartLegendContent({
398
495
  className,
399
496
  hideIcon = false,
@@ -448,21 +545,22 @@ function ChartLegendContent({
448
545
  </div>
449
546
  )
450
547
  }
451
- // CIL[END chunk_id="chart_chartlegendcontent_1783881474"]
452
- // CIL[BEGIN chunk_id="chart_getpayloadconfigfrompayload_1783881474" type="function" identity="getPayloadConfigFromPayload" parent="none"]
453
- // CIL[DOC-MACRO purpose="Extract chart configuration from tooltip payload"]
454
- // CIL[DOC-RESPONSIBILITY responsibility="Resolve chart config items from complex payload structures"]
455
- // CIL[DOC-CONTEXT module="ui.chart" layer="component" related_files="[]"]
456
- // CIL[DOC-CONTRACT inputs="none" outputs="ChartConfig item or undefined" errors="none" side_effects="none"]
457
- // CIL[DOC-MICRO logic_summary="Handles nested payload structures and dynamic key resolution" notable_decisions="['defensive programming', 'nested object handling', 'key fallback strategy']"]
458
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
459
- // CIL[DOC-STABILITY stability="stable"]
460
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
461
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
462
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
463
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
548
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a customized legend for Recharts charts'; No verified external callers; imports: .framework/src/lib/utils.ts"]
549
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
550
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
551
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
464
552
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
465
553
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
554
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:ChartLegendContent:component"]
555
+
556
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:getPayloadConfigFromPayload:function" type="function" identity="getPayloadConfigFromPayload" parent="~/.framework/src/components/ui/chart.tsx"]
557
+ // CIL[DOC-MACRO purpose="Resolve the chart config entry for a payload item"]
558
+ // CIL[DOC-RESPONSIBILITY responsibility="Determine which config key to use based on payload fields"]
559
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
560
+ // CIL[DOC-CONTRACT inputs="config: ChartConfig, payload: unknown, key: string" outputs="ChartConfig entry for the resolved key" errors="" side_effects="none"]
561
+ // CIL[DOC-MICRO logic_summary="Looks for key in payload and payload.payload, falls back to original key" notable_decisions="[]"]
562
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
563
+ // CIL[DOC-STABILITY stability="stable"]
466
564
  function getPayloadConfigFromPayload(
467
565
  config: ChartConfig,
468
566
  payload: unknown,
@@ -498,21 +596,22 @@ function getPayloadConfigFromPayload(
498
596
 
499
597
  return configLabelKey in config ? config[configLabelKey] : config[key]
500
598
  }
501
- // CIL[END chunk_id="chart_getpayloadconfigfrompayload_1783881474"]
502
- // CIL[BEGIN chunk_id="chart_exports_1783881474" type="exports" identity="exports" parent="none"]
503
- // CIL[DOC-MACRO purpose="Export chart components and utilities for public API"]
504
- // CIL[DOC-RESPONSIBILITY responsibility="Provide public interface for chart component library"]
505
- // CIL[DOC-CONTEXT module="ui.chart" layer="component" related_files="[]"]
506
- // CIL[DOC-CONTRACT inputs="none" outputs="named exports of chart components" errors="none" side_effects="module exports"]
507
- // CIL[DOC-MICRO logic_summary="Exports all chart components and utilities for consumption" notable_decisions="['comprehensive export strategy', 'named exports pattern']"]
508
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
509
- // CIL[DOC-STABILITY stability="stable"]
510
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: none."]
511
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
512
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
513
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
599
+ // CIL[DOC-VECTOR type="context" content="purpose='Resolve the chart config entry for a payload item'; No verified external callers; imports: .framework/src/lib/utils.ts"]
600
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
601
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
602
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
514
603
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
515
604
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
605
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:getPayloadConfigFromPayload:function"]
606
+
607
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/chart.tsx:exports:export" type="export" identity="exports" parent="~/.framework/src/components/ui/chart.tsx"]
608
+ // CIL[DOC-MACRO purpose="Export public chart components and helpers"]
609
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, and ChartStyle"]
610
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/chart.tsx,.framework/src/lib/utils.ts"]
611
+ // CIL[DOC-CONTRACT inputs="none" outputs="named exports" errors="" side_effects="none"]
612
+ // CIL[DOC-MICRO logic_summary="Named exports for chart primitives" notable_decisions="[]"]
613
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
614
+ // CIL[DOC-STABILITY stability="stable"]
516
615
  export {
517
616
  ChartContainer,
518
617
  ChartTooltip,
@@ -521,4 +620,10 @@ export {
521
620
  ChartLegendContent,
522
621
  ChartStyle,
523
622
  }
524
- // CIL[END chunk_id="chart_exports_1783881474"]
623
+ // CIL[DOC-VECTOR type="context" content="purpose='Export public chart components and helpers'; No verified external callers; imports: .framework/src/lib/utils.ts"]
624
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
625
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
626
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
627
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
628
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
629
+ // CIL[END stable_id="~/.framework/src/components/ui/chart.tsx:exports:export"]