spine-framework 0.3.124 → 0.3.126

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 (319) hide show
  1. package/.framework/cli/commands/agents.ts +35 -37
  2. package/.framework/cli/commands/auth.ts +35 -34
  3. package/.framework/cli/commands/create-app.ts +104 -40
  4. package/.framework/cli/commands/dev.ts +104 -69
  5. package/.framework/cli/commands/doctor.ts +179 -69
  6. package/.framework/cli/commands/generate.ts +83 -143
  7. package/.framework/cli/commands/init.ts +72 -34
  8. package/.framework/cli/commands/install-app.ts +260 -125
  9. package/.framework/cli/commands/items.ts +33 -44
  10. package/.framework/cli/commands/migrate.ts +122 -40
  11. package/.framework/cli/commands/migrations.ts +33 -40
  12. package/.framework/cli/commands/pipelines.ts +31 -39
  13. package/.framework/cli/commands/status.ts +47 -23
  14. package/.framework/cli/commands/system.ts +47 -37
  15. package/.framework/cli/commands/test.ts +112 -68
  16. package/.framework/cli/commands/validate-app.ts +215 -121
  17. package/.framework/cli/context.ts +112 -130
  18. package/.framework/cli/env-loader.ts +47 -18
  19. package/.framework/cli/index.ts +81 -42
  20. package/.framework/docs/runtime-types.md +1024 -0
  21. package/.framework/functions/_shared/agent-runner.ts +1296 -961
  22. package/.framework/functions/_shared/app-manifest.ts +82 -68
  23. package/.framework/functions/_shared/audit.ts +135 -83
  24. package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
  25. package/.framework/functions/_shared/db.ts +80 -126
  26. package/.framework/functions/_shared/hash-api-key.ts +63 -0
  27. package/.framework/functions/_shared/index.ts +224 -335
  28. package/.framework/functions/_shared/kb.ts +319 -0
  29. package/.framework/functions/_shared/llm.ts +92 -0
  30. package/.framework/functions/_shared/logging.ts +288 -0
  31. package/.framework/functions/_shared/middleware.ts +329 -365
  32. package/.framework/functions/_shared/outcomes.ts +36 -0
  33. package/.framework/functions/_shared/permissions.ts +359 -643
  34. package/.framework/functions/_shared/pipeline-runner.ts +243 -316
  35. package/.framework/functions/_shared/principal.ts +376 -468
  36. package/.framework/functions/_shared/resolve-credentials.ts +102 -0
  37. package/.framework/functions/_shared/resolve-ids.ts +188 -16
  38. package/.framework/functions/_shared/retry-deliveries.ts +104 -0
  39. package/.framework/functions/_shared/schema-utils.ts +611 -373
  40. package/.framework/functions/_shared/testing.ts +207 -137
  41. package/.framework/functions/_shared/tracing.ts +276 -0
  42. package/.framework/functions/_shared/trigger-engine.ts +159 -211
  43. package/.framework/functions/_shared/webhook-registration.ts +95 -81
  44. package/.framework/functions/_shared/webhook-registry.ts +153 -75
  45. package/.framework/functions/account-nodes.ts +31 -53
  46. package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
  47. package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
  48. package/.framework/functions/adapters/openai-outbound.ts +40 -0
  49. package/.framework/functions/admin-data.ts +685 -537
  50. package/.framework/functions/admin-funnel.ts +31 -20
  51. package/.framework/functions/admin-install-funnel.ts +47 -28
  52. package/.framework/functions/admin-signals.ts +47 -29
  53. package/.framework/functions/ai-agents.ts +122 -147
  54. package/.framework/functions/ai-interactions.ts +180 -90
  55. package/.framework/functions/api-keys.ts +250 -192
  56. package/.framework/functions/apps.ts +203 -197
  57. package/.framework/functions/auth.ts +98 -91
  58. package/.framework/functions/cil-agent-ingest.ts +773 -0
  59. package/.framework/functions/cil-agent.ts +592 -0
  60. package/.framework/functions/cil-callmap.ts +1227 -0
  61. package/.framework/functions/cil-config.ts +583 -0
  62. package/.framework/functions/cil-context.ts +445 -0
  63. package/.framework/functions/cil-doc.ts +1752 -0
  64. package/.framework/functions/cil-embeddings.ts +1202 -0
  65. package/.framework/functions/cil-graph.ts +585 -0
  66. package/.framework/functions/cil-ingest.ts +2416 -0
  67. package/.framework/functions/cil-pipeline.ts +318 -0
  68. package/.framework/functions/cil-project.ts +499 -0
  69. package/.framework/functions/cil-validate.ts +469 -0
  70. package/.framework/functions/debug-auth.ts +73 -53
  71. package/.framework/functions/deliveries.ts +117 -0
  72. package/.framework/functions/embeddings.ts +528 -516
  73. package/.framework/functions/eval-harness.ts +158 -106
  74. package/.framework/functions/integration-outbound.ts +311 -0
  75. package/.framework/functions/integration-routes.ts +240 -466
  76. package/.framework/functions/integrations.ts +132 -140
  77. package/.framework/functions/invites.ts +401 -201
  78. package/.framework/functions/item-progress.ts +113 -53
  79. package/.framework/functions/kb.ts +28 -0
  80. package/.framework/functions/logs.ts +239 -222
  81. package/.framework/functions/observability.ts +308 -259
  82. package/.framework/functions/pipeline-executions.ts +179 -235
  83. package/.framework/functions/pipelines.ts +163 -205
  84. package/.framework/functions/prompt-configs.ts +109 -156
  85. package/.framework/functions/roles.ts +97 -147
  86. package/.framework/functions/system-cron.ts +132 -218
  87. package/.framework/functions/system.ts +112 -52
  88. package/.framework/functions/tests.ts +32 -28
  89. package/.framework/functions/timers.ts +162 -210
  90. package/.framework/functions/triggers.ts +282 -346
  91. package/.framework/functions/types.ts +283 -400
  92. package/.framework/migrations/001_core_schema.sql +630 -0
  93. package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
  94. package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
  95. package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
  96. package/.framework/migrations/005_core_observability.sql +598 -0
  97. package/.framework/migrations/006_security_hardening_rls.sql +97 -0
  98. package/.framework/migrations/007_kb_article_list.sql +237 -0
  99. package/.framework/migrations/008_items_target.sql +8 -0
  100. package/.framework/migrations/009_roles_slug_unique.sql +11 -0
  101. package/.framework/public/spine.config.json +91 -0
  102. package/.framework/scripts/app-install-cli.ts +112 -98
  103. package/.framework/src/App.tsx +67 -20
  104. package/.framework/src/apps/admin/index.tsx +97 -27
  105. package/.framework/src/components/AppWrapper.tsx +50 -11
  106. package/.framework/src/components/CustomAppLoader.tsx +131 -22
  107. package/.framework/src/components/admin/AdminListPage.tsx +75 -8
  108. package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
  109. package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
  110. package/.framework/src/components/admin/PageInstructions.tsx +49 -0
  111. package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
  112. package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
  113. package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
  114. package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
  115. package/.framework/src/components/app-sidebar.tsx +50 -3
  116. package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
  117. package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
  118. package/.framework/src/components/kb/KBArticleList.tsx +557 -0
  119. package/.framework/src/components/layout/AppShell.tsx +54 -16
  120. package/.framework/src/components/layout/Header.tsx +50 -38
  121. package/.framework/src/components/layout/Layout.tsx +48 -32
  122. package/.framework/src/components/layout/Sidebar.tsx +167 -16
  123. package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
  124. package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
  125. package/.framework/src/components/runtime/DataFilters.tsx +78 -1
  126. package/.framework/src/components/runtime/DataHeader.tsx +32 -29
  127. package/.framework/src/components/runtime/DataListPage.tsx +161 -2
  128. package/.framework/src/components/runtime/DataStats.tsx +48 -1
  129. package/.framework/src/components/runtime/DataTable.tsx +153 -1
  130. package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
  131. package/.framework/src/components/runtime/index.ts +16 -9
  132. package/.framework/src/components/search-form.tsx +33 -1
  133. package/.framework/src/components/shared/AgentView.tsx +48 -51
  134. package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
  135. package/.framework/src/components/shared/InviteManager.tsx +113 -52
  136. package/.framework/src/components/shared/MemberList.tsx +182 -0
  137. package/.framework/src/components/shared/SchemaFields.tsx +96 -78
  138. package/.framework/src/components/ui/DataTable.tsx +86 -56
  139. package/.framework/src/components/ui/Form.tsx +188 -109
  140. package/.framework/src/components/ui/ItemCard.tsx +86 -58
  141. package/.framework/src/components/ui/ItemListView.tsx +88 -61
  142. package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
  143. package/.framework/src/components/ui/Modal.tsx +81 -4
  144. package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
  145. package/.framework/src/components/ui/accordion.tsx +97 -5
  146. package/.framework/src/components/ui/alert-dialog.tsx +225 -13
  147. package/.framework/src/components/ui/alert.tsx +113 -6
  148. package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
  149. package/.framework/src/components/ui/avatar.tsx +129 -7
  150. package/.framework/src/components/ui/badge.tsx +65 -3
  151. package/.framework/src/components/ui/breadcrumb.tsx +145 -8
  152. package/.framework/src/components/ui/button-group.tsx +81 -4
  153. package/.framework/src/components/ui/button.tsx +49 -2
  154. package/.framework/src/components/ui/calendar.tsx +65 -3
  155. package/.framework/src/components/ui/card.tsx +145 -8
  156. package/.framework/src/components/ui/carousel.tsx +129 -7
  157. package/.framework/src/components/ui/chart.tsx +161 -10
  158. package/.framework/src/components/ui/checkbox.tsx +49 -2
  159. package/.framework/src/components/ui/collapsible.tsx +81 -5
  160. package/.framework/src/components/ui/combobox.tsx +305 -20
  161. package/.framework/src/components/ui/command.tsx +177 -11
  162. package/.framework/src/components/ui/context-menu.tsx +273 -17
  163. package/.framework/src/components/ui/dialog.tsx +209 -27
  164. package/.framework/src/components/ui/direction.tsx +64 -4
  165. package/.framework/src/components/ui/drawer.tsx +193 -12
  166. package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
  167. package/.framework/src/components/ui/empty.tsx +145 -9
  168. package/.framework/src/components/ui/field.tsx +209 -14
  169. package/.framework/src/components/ui/hover-card.tsx +81 -4
  170. package/.framework/src/components/ui/input-group.tsx +162 -10
  171. package/.framework/src/components/ui/input-otp.tsx +98 -5
  172. package/.framework/src/components/ui/input.tsx +49 -2
  173. package/.framework/src/components/ui/item.tsx +225 -13
  174. package/.framework/src/components/ui/kbd.tsx +65 -3
  175. package/.framework/src/components/ui/label.tsx +49 -2
  176. package/.framework/src/components/ui/menubar.tsx +289 -17
  177. package/.framework/src/components/ui/native-select.tsx +97 -5
  178. package/.framework/src/components/ui/navigation-menu.tsx +177 -10
  179. package/.framework/src/components/ui/pagination.tsx +161 -9
  180. package/.framework/src/components/ui/popover.tsx +145 -8
  181. package/.framework/src/components/ui/progress.tsx +49 -2
  182. package/.framework/src/components/ui/radio-group.tsx +65 -3
  183. package/.framework/src/components/ui/resizable.tsx +82 -4
  184. package/.framework/src/components/ui/scroll-area.tsx +65 -3
  185. package/.framework/src/components/ui/select.tsx +193 -11
  186. package/.framework/src/components/ui/separator.tsx +49 -2
  187. package/.framework/src/components/ui/sheet.tsx +193 -11
  188. package/.framework/src/components/ui/sidebar.tsx +481 -38
  189. package/.framework/src/components/ui/skeleton.tsx +49 -2
  190. package/.framework/src/components/ui/slider.tsx +49 -2
  191. package/.framework/src/components/ui/sonner.tsx +49 -2
  192. package/.framework/src/components/ui/spinner.tsx +49 -2
  193. package/.framework/src/components/ui/switch.tsx +49 -2
  194. package/.framework/src/components/ui/table-primitives.tsx +160 -33
  195. package/.framework/src/components/ui/table.tsx +161 -9
  196. package/.framework/src/components/ui/tabs.tsx +113 -6
  197. package/.framework/src/components/ui/textarea.tsx +49 -2
  198. package/.framework/src/components/ui/toggle-group.tsx +81 -4
  199. package/.framework/src/components/ui/toggle.tsx +65 -3
  200. package/.framework/src/components/ui/tooltip.tsx +97 -5
  201. package/.framework/src/contexts/AppContext.tsx +129 -45
  202. package/.framework/src/contexts/AuthContext.tsx +187 -144
  203. package/.framework/src/hooks/use-mobile.ts +48 -2
  204. package/.framework/src/hooks/useApi.ts +208 -159
  205. package/.framework/src/hooks/useAppPath.ts +32 -23
  206. package/.framework/src/hooks/useApps.ts +51 -20
  207. package/.framework/src/hooks/useEntityList.ts +32 -78
  208. package/.framework/src/hooks/useEntityRecord.ts +35 -96
  209. package/.framework/src/hooks/useForm.ts +32 -92
  210. package/.framework/src/hooks/useListSchema.ts +49 -78
  211. package/.framework/src/hooks/useSchemaRecord.ts +114 -105
  212. package/.framework/src/lib/api.ts +195 -116
  213. package/.framework/src/lib/supabase.ts +98 -64
  214. package/.framework/src/lib/utils.ts +287 -151
  215. package/.framework/src/main.tsx +49 -3
  216. package/.framework/src/pages/DashboardPage.tsx +52 -29
  217. package/.framework/src/pages/NotFoundPage.tsx +32 -10
  218. package/.framework/src/pages/SetupPage.tsx +32 -12
  219. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
  220. package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
  221. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
  222. package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
  223. package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
  224. package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
  225. package/.framework/src/pages/admin/AppsPage.tsx +49 -2
  226. package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
  227. package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
  228. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
  229. package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
  230. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
  231. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
  232. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
  233. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
  234. package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
  235. package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
  236. package/.framework/src/pages/admin/LogsPage.tsx +422 -75
  237. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
  238. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
  239. package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
  240. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
  241. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
  242. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
  243. package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
  244. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
  245. package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
  246. package/.framework/src/pages/admin/RolesPage.tsx +171 -18
  247. package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
  248. package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
  249. package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
  250. package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
  251. package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
  252. package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
  253. package/.framework/src/pages/admin/TimersPage.tsx +48 -20
  254. package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
  255. package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
  256. package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
  257. package/.framework/src/pages/admin/TypesPage.tsx +48 -20
  258. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
  259. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
  260. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
  261. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
  262. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
  263. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
  264. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
  265. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
  266. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
  267. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  268. package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
  269. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
  270. package/.framework/src/pages/auth/LoginPage.tsx +50 -23
  271. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
  272. package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
  273. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
  274. package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
  275. package/.framework/src/types/auth.ts +128 -71
  276. package/.framework/src/types/types.ts +373 -157
  277. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
  278. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
  279. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
  280. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
  281. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
  282. package/docs/README.md +9 -130
  283. package/netlify.toml +5 -2
  284. package/package.json +13 -25
  285. package/scripts/kb-ingest-docs.ts +203 -0
  286. package/spine.config.json +65 -4
  287. package/.framework/migrations/001_schema.sql +0 -425
  288. package/.framework/migrations/002_rls_and_functions.sql +0 -763
  289. package/.framework/migrations/004_enhancements.sql +0 -43
  290. package/.framework/migrations/005_auth_user_trigger.sql +0 -105
  291. package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
  292. package/.framework/migrations/016_invites.sql +0 -27
  293. package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
  294. package/.framework/migrations/018_apps_required_roles.sql +0 -17
  295. package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
  296. package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
  297. package/.framework/migrations/021_app_domains.sql +0 -112
  298. package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
  299. package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
  300. package/.framework/migrations/024_messages_account_id.sql +0 -9
  301. package/.framework/migrations/025_retype_threads_messages.sql +0 -240
  302. package/.framework/migrations/026_fix_rls_policies.sql +0 -47
  303. package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
  304. package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
  305. package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
  306. package/.framework/migrations/030_messages_updated_by.sql +0 -6
  307. package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
  308. package/docs/APPS.md +0 -232
  309. package/docs/ARCHITECTURE.md +0 -246
  310. package/docs/INSTALL.md +0 -155
  311. package/docs/design-schema-spec.md +0 -1837
  312. package/docs/dev-guides/01-create-an-app.md +0 -183
  313. package/docs/dev-guides/02-create-a-function.md +0 -178
  314. package/docs/dev-guides/03-create-a-component.md +0 -178
  315. package/docs/dev-guides/04-webhook-handlers.md +0 -129
  316. package/docs/dev-guides/05-testing.md +0 -168
  317. package/docs/dev-guides/README.md +0 -40
  318. package/docs/npm-packages-plan.md +0 -288
  319. package/docs/spine-core--api-reference.md +0 -822
@@ -1,3 +1,20 @@
1
+
2
+
3
+ // CIL[BEGIN chunk_id="DataListPage_module_header_1783929048" type="module_header" identity="imports" parent="none"]
4
+ // CIL[DOC-MACRO purpose="Import dependencies for entity list page component"]
5
+ // CIL[DOC-RESPONSIBILITY responsibility="Manage imports for hooks and components"]
6
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
7
+ // CIL[DOC-CONTRACT inputs="none" outputs="imports" errors="none" side_effects="none"]
8
+ // CIL[DOC-MICRO logic_summary="Imports routing, hooks, and runtime components" notable_decisions="[]"]
9
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
10
+ // CIL[DOC-STABILITY stability="stable"]
11
+ // CIL[DOC-AUDIENCE audience="developer"]
12
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
13
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
14
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
15
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
16
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
17
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
1
18
  import { useParams } from 'react-router-dom'
2
19
  import { useListSchema } from '../../hooks/useListSchema'
3
20
  import { useEntityList } from '../../hooks/useEntityList'
@@ -5,17 +22,76 @@ import { DataHeader } from './DataHeader'
5
22
  import { DataStats } from './DataStats'
6
23
  import { DataFilters } from './DataFilters'
7
24
  import { DataTable } from './DataTable'
25
+ import { PageInstructions } from '../admin/PageInstructions'
8
26
  import { Card, CardContent } from '../ui/card'
9
27
  import { Skeleton } from '../ui/skeleton'
10
-
28
+ // CIL[END chunk_id="DataListPage_module_header_1783929048"]
29
+ // CIL[BEGIN chunk_id="DataListPage_datalistpage_1783929048" type="function" identity="DataListPage" parent="none"]
30
+ // CIL[DOC-MACRO purpose="Render main list page with all components"]
31
+ // CIL[DOC-RESPONSIBILITY responsibility="Display complete entity management interface"]
32
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/components/ui/table-primitives.tsx\"]"]
33
+ // CIL[DOC-CONTRACT inputs="none" outputs="JSX list page" errors="none" side_effects="none"]
34
+ // CIL[DOC-MICRO logic_summary="Render header, stats, filters, and table with config data" notable_decisions="[]"]
35
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
36
+ // CIL[DOC-STABILITY stability="stable"]
37
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/src/components/ui/table-primitives.tsx."]
38
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
39
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
40
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
41
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
42
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
11
43
  export function DataListPage() {
44
+ // CIL[BEGIN chunk_id="DataListPage_params_1783929048" type="variable_declaration" identity="params" parent="DataListPage_datalistpage_1783929048"]
45
+ // CIL[DOC-MACRO purpose="Extract URL parameters for entity and type"]
46
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle params"]
47
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
48
+ // CIL[DOC-CONTRACT inputs="none" outputs="entity:string,typeSlug?:string" errors="none" side_effects="none"]
49
+ // CIL[DOC-MICRO logic_summary="Extract entity and optional typeSlug from React Router params" notable_decisions="[]"]
50
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
51
+ // CIL[DOC-STABILITY stability="stable"]
52
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/migrations/025_retype_threads_messages.sql, .framework/functions/_shared/schema-utils.ts, \."]
53
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
54
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
55
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
56
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
57
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
12
58
  const { entity, typeSlug } = useParams<{ entity: string; typeSlug?: string }>()
59
+ // CIL[END chunk_id="DataListPage_params_1783929048"]
13
60
 
61
+ // CIL[BEGIN chunk_id="DataListPage_schema_1783929048" type="variable_declaration" identity="schema" parent="DataListPage_datalistpage_1783929048"]
62
+ // CIL[DOC-MACRO purpose="Fetch entity schema and view configuration"]
63
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle schema"]
64
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
65
+ // CIL[DOC-CONTRACT inputs="none" outputs="schema,view,loading,error" errors="none" side_effects="API call"]
66
+ // CIL[DOC-MICRO logic_summary="Call useListSchema hook to get entity schema and view config" notable_decisions="[]"]
67
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
68
+ // CIL[DOC-STABILITY stability="stable"]
69
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 2. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
70
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 3."]
71
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
72
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
73
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
74
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
14
75
  const { schema, view, loading: schemaLoading, error: schemaError } = useListSchema({
15
76
  entity: entity || '',
16
77
  viewSlug: 'default_list'
17
78
  })
79
+ // CIL[END chunk_id="DataListPage_schema_1783929048"]
18
80
 
81
+ // CIL[BEGIN chunk_id="DataListPage_config_1783929048" type="variable_declaration" identity="config" parent="DataListPage_datalistpage_1783929048"]
82
+ // CIL[DOC-MACRO purpose="Build configuration object from schema and view"]
83
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle config"]
84
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
85
+ // CIL[DOC-CONTRACT inputs="none" outputs="config:object|null" errors="none" side_effects="none"]
86
+ // CIL[DOC-MICRO logic_summary="Merge schema and view data into config for list components" notable_decisions="[]"]
87
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
88
+ // CIL[DOC-STABILITY stability="stable"]
89
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
90
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
91
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
92
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
93
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
94
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
19
95
  const config = view && schema ? {
20
96
  entity: entity || '',
21
97
  typeSlug: typeSlug || undefined,
@@ -36,7 +112,22 @@ export function DataListPage() {
36
112
  }))
37
113
  }
38
114
  } : null
115
+ // CIL[END chunk_id="DataListPage_config_1783929048"]
39
116
 
117
+ // CIL[BEGIN chunk_id="DataListPage_entitylist_1783929048" type="variable_declaration" identity="entityList" parent="DataListPage_datalistpage_1783929048"]
118
+ // CIL[DOC-MACRO purpose="Fetch entity data and list management functions"]
119
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle entityList"]
120
+ // CIL[DOC-CONTEXT module="entityList" layer="unknown" related_files="[]"]
121
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
122
+ // CIL[DOC-MICRO logic_summary="Implements entityList" notable_decisions="[]"]
123
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
124
+ // CIL[DOC-STABILITY stability="stable"]
125
+ // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
126
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
127
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
128
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
129
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
130
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
40
131
  const {
41
132
  data,
42
133
  loading,
@@ -47,7 +138,22 @@ export function DataListPage() {
47
138
  sort,
48
139
  setSort
49
140
  } = useEntityList(entity!, config)
141
+ // CIL[END chunk_id="DataListPage_entitylist_1783929048"]
50
142
 
143
+ // CIL[BEGIN chunk_id="DataListPage_loadingstate_1783929048" type="render_block" identity="loadingState" parent="DataListPage_datalistpage_1783929048"]
144
+ // CIL[DOC-MACRO purpose="Render loading skeleton for schema fetching"]
145
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle loadingState"]
146
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[]"]
147
+ // CIL[DOC-CONTRACT inputs="none" outputs="JSX loading skeleton" errors="none" side_effects="none"]
148
+ // CIL[DOC-MICRO logic_summary="Show skeleton placeholders for header, stats, and table" notable_decisions="[]"]
149
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
150
+ // CIL[DOC-STABILITY stability="stable"]
151
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
152
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
153
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
154
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
155
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
156
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
51
157
  if (schemaLoading) {
52
158
  return (
53
159
  <div className="space-y-6">
@@ -73,7 +179,22 @@ export function DataListPage() {
73
179
  </div>
74
180
  )
75
181
  }
182
+ // CIL[END chunk_id="DataListPage_loadingstate_1783929048"]
76
183
 
184
+ // CIL[BEGIN chunk_id="DataListPage_errorstate_1783929048" type="render_block" identity="errorState" parent="DataListPage_datalistpage_1783929048"]
185
+ // CIL[DOC-MACRO purpose="Render error state for schema loading failures"]
186
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle errorState"]
187
+ // CIL[DOC-CONTEXT module="errorState" layer="unknown" related_files="[\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\"]"]
188
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
189
+ // CIL[DOC-MICRO logic_summary="Implements errorState" 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: unknown. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts."]
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."]
196
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
197
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
77
198
  if (schemaError || !config) {
78
199
  return (
79
200
  <Card>
@@ -84,7 +205,22 @@ export function DataListPage() {
84
205
  </Card>
85
206
  )
86
207
  }
208
+ // CIL[END chunk_id="DataListPage_errorstate_1783929048"]
87
209
 
210
+ // CIL[BEGIN chunk_id="DataListPage_mainrender_1783929048" type="render_block" identity="mainRender" parent="DataListPage_datalistpage_1783929048"]
211
+ // CIL[DOC-MACRO purpose="Render main list page with all components"]
212
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle mainRender"]
213
+ // CIL[DOC-CONTEXT module="mainRender" layer="unknown" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/components/ui/table-primitives.tsx\"]"]
214
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
215
+ // CIL[DOC-MICRO logic_summary="Implements mainRender" notable_decisions="[]"]
216
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
217
+ // CIL[DOC-STABILITY stability="stable"]
218
+ // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/src/components/ui/table-primitives.tsx."]
219
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
220
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
221
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
222
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
223
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
88
224
  return (
89
225
  <div className="space-y-6">
90
226
  <DataHeader
@@ -93,7 +229,28 @@ export function DataListPage() {
93
229
  description={`Manage ${config.entity}`}
94
230
  newButtonHref={`/spine-framework/admin/runtime/${entity}/new`}
95
231
  />
96
-
232
+
233
+ <PageInstructions
234
+ sections={[
235
+ {
236
+ title: 'What this page is for',
237
+ content: `This page is a schema-driven list for ${config.entity} records. It displays the records stored in the system, their field values, and current status based on the type definition.`,
238
+ },
239
+ {
240
+ title: 'How to find records',
241
+ content: `Use the filters above the table to narrow results. Click any column header to sort ascending or descending. The available columns and filters are defined by the type schema.`,
242
+ },
243
+ {
244
+ title: 'How to create, view, and edit records',
245
+ content: `Click the New button in the top-right to create a new ${config.entity}. Click any row to open its detail view. From the detail view you can edit field values or delete the record. Some records may have restricted permissions based on your role.`,
246
+ },
247
+ {
248
+ title: 'Understanding the stats',
249
+ content: `The cards above the table show summary counts and key metrics for this record type. Use them to quickly assess volume and status before drilling into the list.`,
250
+ },
251
+ ]}
252
+ />
253
+
97
254
  <DataStats
98
255
  stats={config.list.stats}
99
256
  data={data}
@@ -121,4 +278,6 @@ export function DataListPage() {
121
278
  />
122
279
  </div>
123
280
  )
281
+ // CIL[END chunk_id="DataListPage_mainrender_1783929048"]
124
282
  }
283
+ // CIL[END chunk_id="DataListPage_datalistpage_1783929048"]
@@ -1,3 +1,20 @@
1
+
2
+
3
+ // CIL[BEGIN chunk_id="DataStats_module_header_1783929048" type="module_header" identity="imports_and_types" parent="none"]
4
+ // CIL[DOC-MACRO purpose="Import dependencies and define types for stats component"]
5
+ // CIL[DOC-RESPONSIBILITY responsibility="Manage imports, interfaces, and color constants"]
6
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-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/schema-utils.ts\",\"\\\"]"]
7
+ // CIL[DOC-CONTRACT inputs="none" outputs="types_and_constants" errors="none" side_effects="none"]
8
+ // CIL[DOC-MICRO logic_summary="Imports EntityStat type, UI components, and defines color mapping" notable_decisions="[]"]
9
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
10
+ // CIL[DOC-STABILITY stability="stable"]
11
+ // CIL[DOC-AUDIENCE audience="developer"]
12
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-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/schema-utils.ts, \."]
13
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
14
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
15
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
16
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
17
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
1
18
  import { EntityStat } from '../../types/types'
2
19
  import { Card, CardContent } from '../ui/card'
3
20
  import * as Icons from 'lucide-react'
@@ -16,8 +33,36 @@ const colorMap: Record<string, string> = {
16
33
  purple: 'bg-purple-500/10 text-purple-500',
17
34
  gray: 'bg-muted text-muted-foreground'
18
35
  }
19
-
36
+ // CIL[END chunk_id="DataStats_module_header_1783929048"]
37
+ // CIL[BEGIN chunk_id="DataStats_datastats_1783929048" type="function" identity="DataStats" parent="none"]
38
+ // CIL[DOC-MACRO purpose="Calculate statistic value based on type and data"]
39
+ // CIL[DOC-RESPONSIBILITY responsibility="Compute count or filter-based statistics"]
40
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
41
+ // CIL[DOC-CONTRACT inputs="none" outputs="number" errors="none" side_effects="none"]
42
+ // CIL[DOC-MICRO logic_summary="Switch on stat type, handle count vs filter_count with nested object access" notable_decisions="[]"]
43
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
44
+ // CIL[DOC-STABILITY stability="stable"]
45
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/migrations/025_retype_threads_messages.sql, .framework/src/pages/admin/IntegrationsPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
46
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
47
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
48
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
49
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
50
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
20
51
  export function DataStats({ stats, data, loading }: DataStatsProps) {
52
+ // CIL[BEGIN chunk_id="DataStats_calculatestat_1783929048" type="function" identity="calculateStat" parent="DataStats_datastats_1783929048"]
53
+ // CIL[DOC-MACRO purpose="Calculate statistic value based on type and data"]
54
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle calculateStat"]
55
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
56
+ // CIL[DOC-CONTRACT inputs="none" outputs="number" errors="none" side_effects="none"]
57
+ // CIL[DOC-MICRO logic_summary="Switch on stat type, handle count vs filter_count with nested object access" notable_decisions="[]"]
58
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
59
+ // CIL[DOC-STABILITY stability="stable"]
60
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 1. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/migrations/025_retype_threads_messages.sql, .framework/src/pages/admin/IntegrationsPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
61
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
62
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
63
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
64
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
65
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
21
66
  const calculateStat = (stat: EntityStat): number => {
22
67
  if (!data) return 0
23
68
 
@@ -38,6 +83,7 @@ export function DataStats({ stats, data, loading }: DataStatsProps) {
38
83
  return 0
39
84
  }
40
85
  }
86
+ // CIL[END chunk_id="DataStats_calculatestat_1783929048"]
41
87
 
42
88
  return (
43
89
  <div className="grid grid-cols-1 gap-5 sm:grid-cols-2 lg:grid-cols-4">
@@ -68,3 +114,4 @@ export function DataStats({ stats, data, loading }: DataStatsProps) {
68
114
  </div>
69
115
  )
70
116
  }
117
+ // CIL[END chunk_id="DataStats_datastats_1783929048"]
@@ -1,3 +1,20 @@
1
+
2
+
3
+ // CIL[BEGIN chunk_id="DataTable_module_header_1783929048" type="module_header" identity="imports_and_types" parent="none"]
4
+ // CIL[DOC-MACRO purpose="Import dependencies and define table component types"]
5
+ // CIL[DOC-RESPONSIBILITY responsibility="Manage imports, interfaces for data table"]
6
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
7
+ // CIL[DOC-CONTRACT inputs="none" outputs="types_and_constants" errors="none" side_effects="none"]
8
+ // CIL[DOC-MICRO logic_summary="Imports React, routing, types, UI components for table" notable_decisions="[]"]
9
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
10
+ // CIL[DOC-STABILITY stability="stable"]
11
+ // CIL[DOC-AUDIENCE audience="developer"]
12
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
13
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
14
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
15
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
16
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
17
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
1
18
  import React from 'react'
2
19
  import { useNavigate } from 'react-router-dom'
3
20
  import { EntityColumn } from '../../types/types'
@@ -28,7 +45,21 @@ interface DataTableProps {
28
45
  emptyMessage: string
29
46
  emptyIcon: string
30
47
  }
31
-
48
+ // CIL[END chunk_id="DataTable_module_header_1783929048"]
49
+ // CIL[BEGIN chunk_id="DataTable_datatable_1783929048" type="function" identity="DataTable" parent="none"]
50
+ // CIL[DOC-MACRO purpose="Render main table with sortable headers and clickable rows"]
51
+ // CIL[DOC-RESPONSIBILITY responsibility="Display data table with full functionality"]
52
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\"]"]
53
+ // CIL[DOC-CONTRACT inputs="none" outputs="JSX table component" errors="none" side_effects="none"]
54
+ // CIL[DOC-MICRO logic_summary="Render table header with sort icons, data rows with click handlers" notable_decisions="[]"]
55
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
56
+ // CIL[DOC-STABILITY stability="stable"]
57
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts."]
58
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
59
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
60
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
61
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
62
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
32
63
  export function DataTable({
33
64
  columns,
34
65
  data,
@@ -44,6 +75,20 @@ export function DataTable({
44
75
  const navigate = useNavigate()
45
76
  const EmptyIconComponent = (Icons as Record<string, React.ComponentType<{ className?: string }>>)[emptyIcon] || Icons.Box
46
77
 
78
+ // CIL[BEGIN chunk_id="DataTable_handlesort_1783929048" type="function" identity="handleSort" parent="DataTable_datatable_1783929048"]
79
+ // CIL[DOC-MACRO purpose="Handle column sorting with toggle direction"]
80
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle handleSort"]
81
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
82
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="calls onSort"]
83
+ // CIL[DOC-MICRO logic_summary="Toggle sort direction or set new field with asc default" notable_decisions="[]"]
84
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
85
+ // CIL[DOC-STABILITY stability="stable"]
86
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
87
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
88
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
89
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
90
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
91
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
47
92
  const handleSort = (key: string) => {
48
93
  if (sort.field === key) {
49
94
  onSort({
@@ -54,7 +99,22 @@ export function DataTable({
54
99
  onSort({ field: key, direction: 'asc' })
55
100
  }
56
101
  }
102
+ // CIL[END chunk_id="DataTable_handlesort_1783929048"]
57
103
 
104
+ // CIL[BEGIN chunk_id="DataTable_getsorticon_1783929048" type="function" identity="getSortIcon" parent="DataTable_datatable_1783929048"]
105
+ // CIL[DOC-MACRO purpose="Return appropriate sort icon for column state"]
106
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle getSortIcon"]
107
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
108
+ // CIL[DOC-CONTRACT inputs="none" outputs="JSX icon" errors="none" side_effects="none"]
109
+ // CIL[DOC-MICRO logic_summary="Return up/down arrow or neutral based on current sort" notable_decisions="[]"]
110
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
111
+ // CIL[DOC-STABILITY stability="stable"]
112
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 2. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, \."]
113
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 2."]
114
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
115
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
116
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
117
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
58
118
  const getSortIcon = (key: string) => {
59
119
  if (sort.field !== key) {
60
120
  return <Icons.ArrowUpDown className="h-4 w-4 text-muted-foreground" />
@@ -63,7 +123,22 @@ export function DataTable({
63
123
  ? <Icons.ArrowUp className="h-4 w-4 text-primary" />
64
124
  : <Icons.ArrowDown className="h-4 w-4 text-primary" />
65
125
  }
126
+ // CIL[END chunk_id="DataTable_getsorticon_1783929048"]
66
127
 
128
+ // CIL[BEGIN chunk_id="DataTable_rendercell_1783929048" type="function" identity="renderCell" parent="DataTable_datatable_1783929048"]
129
+ // CIL[DOC-MACRO purpose="Format and render table cell based on column type"]
130
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle renderCell"]
131
+ // CIL[DOC-CONTEXT module="renderCell" layer="unknown" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
132
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
133
+ // CIL[DOC-MICRO logic_summary="Implements renderCell" notable_decisions="[]"]
134
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
135
+ // CIL[DOC-STABILITY stability="stable"]
136
+ // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 2. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/migrations/025_retype_threads_messages.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, \."]
137
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 2."]
138
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
139
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
140
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
141
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
67
142
  const renderCell = (column: EntityColumn, row: any) => {
68
143
  const value = column.key.includes('.')
69
144
  ? column.key.split('.').reduce((obj, k) => obj?.[k], row)
@@ -88,11 +163,41 @@ export function DataTable({
88
163
 
89
164
  return value?.toString() || '-'
90
165
  }
166
+ // CIL[END chunk_id="DataTable_rendercell_1783929048"]
91
167
 
168
+ // CIL[BEGIN chunk_id="DataTable_handlerowclick_1783929048" type="function" identity="handleRowClick" parent="DataTable_datatable_1783929048"]
169
+ // CIL[DOC-MACRO purpose="Navigate to detail page when row is clicked"]
170
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle handleRowClick"]
171
+ // CIL[DOC-CONTEXT module="handleRowClick" layer="unknown" related_files="[]"]
172
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
173
+ // CIL[DOC-MICRO logic_summary="Implements handleRowClick" notable_decisions="[]"]
174
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
175
+ // CIL[DOC-STABILITY stability="stable"]
176
+ // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
177
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
178
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
179
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
180
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
181
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
92
182
  const handleRowClick = (row: any) => {
93
183
  navigate(`/spine-framework/admin/runtime/${entity}/${row.id}`)
94
184
  }
185
+ // CIL[END chunk_id="DataTable_handlerowclick_1783929048"]
95
186
 
187
+ // CIL[BEGIN chunk_id="DataTable_loadingstate_1783929048" type="render_block" identity="loadingState" parent="DataTable_datatable_1783929048"]
188
+ // CIL[DOC-MACRO purpose="Render loading skeleton state for table"]
189
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle loadingState"]
190
+ // CIL[DOC-CONTEXT module="loadingState" layer="unknown" related_files="[]"]
191
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
192
+ // CIL[DOC-MICRO logic_summary="Implements loadingState" notable_decisions="[]"]
193
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
194
+ // CIL[DOC-STABILITY stability="stable"]
195
+ // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
196
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
197
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
198
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
199
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
200
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
96
201
  if (loading) {
97
202
  return (
98
203
  <Card>
@@ -104,7 +209,22 @@ export function DataTable({
104
209
  </Card>
105
210
  )
106
211
  }
212
+ // CIL[END chunk_id="DataTable_loadingstate_1783929048"]
107
213
 
214
+ // CIL[BEGIN chunk_id="DataTable_errorstate_1783929048" type="render_block" identity="errorState" parent="DataTable_datatable_1783929048"]
215
+ // CIL[DOC-MACRO purpose="Render error state with retry option"]
216
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle errorState"]
217
+ // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[]"]
218
+ // CIL[DOC-CONTRACT inputs="none" outputs="JSX error display" errors="none" side_effects="calls onRetry"]
219
+ // CIL[DOC-MICRO logic_summary="Show error message centered in card with optional retry" notable_decisions="[]"]
220
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
221
+ // CIL[DOC-STABILITY stability="stable"]
222
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
223
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
224
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
225
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
226
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
227
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
108
228
  if (error) {
109
229
  return (
110
230
  <Card>
@@ -119,7 +239,22 @@ export function DataTable({
119
239
  </Card>
120
240
  )
121
241
  }
242
+ // CIL[END chunk_id="DataTable_errorstate_1783929048"]
122
243
 
244
+ // CIL[BEGIN chunk_id="DataTable_emptystate_1783929048" type="render_block" identity="emptyState" parent="DataTable_datatable_1783929048"]
245
+ // CIL[DOC-MACRO purpose="Render empty state with icon and message"]
246
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle emptyState"]
247
+ // CIL[DOC-CONTEXT module="emptyState" layer="unknown" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
248
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
249
+ // CIL[DOC-MICRO logic_summary="Implements emptyState" notable_decisions="[]"]
250
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
251
+ // CIL[DOC-STABILITY stability="stable"]
252
+ // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/migrations/025_retype_threads_messages.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
253
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
254
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
255
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
256
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
257
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
123
258
  if (!data || data.length === 0) {
124
259
  return (
125
260
  <Card>
@@ -133,7 +268,22 @@ export function DataTable({
133
268
  </Card>
134
269
  )
135
270
  }
271
+ // CIL[END chunk_id="DataTable_emptystate_1783929048"]
136
272
 
273
+ // CIL[BEGIN chunk_id="DataTable_maintable_1783929048" type="render_block" identity="mainTable" parent="DataTable_datatable_1783929048"]
274
+ // CIL[DOC-MACRO purpose="Render main table with sortable headers and clickable rows"]
275
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle mainTable"]
276
+ // CIL[DOC-CONTEXT module="mainTable" layer="unknown" related_files="[]"]
277
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
278
+ // CIL[DOC-MICRO logic_summary="Implements mainTable" notable_decisions="[]"]
279
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
280
+ // CIL[DOC-STABILITY stability="stable"]
281
+ // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
282
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
283
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
284
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
285
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
286
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
137
287
  return (
138
288
  <Card>
139
289
  <Table>
@@ -171,4 +321,6 @@ export function DataTable({
171
321
  </Table>
172
322
  </Card>
173
323
  )
324
+ // CIL[END chunk_id="DataTable_maintable_1783929048"]
174
325
  }
326
+ // CIL[END chunk_id="DataTable_datatable_1783929048"]