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,18 +1,22 @@
1
- /**
2
- * @module src/pages/admin/RolesPage
3
- * @audience installer
4
- * @layer frontend-page
5
- * @stability stable
6
- *
7
- * Admin list page for roles. Fetches all roles via `/api/roles?action=list`,
8
- * applies client-side search and sort, and renders inside `AdminListPage`
9
- * with stat cards and a sortable table. Row clicks navigate to
10
- * `/spine-framework/admin/configs/roles/:id`.
11
- *
12
- * @seeAlso src/components/admin/AdminListPage.tsx
13
- * @seeAlso src/pages/admin/RoleDetailPage.tsx
14
- */
15
1
 
2
+
3
+
4
+
5
+ // CIL[BEGIN chunk_id="rolespage_module_header_1783665503" type="module_header" identity="module_header" parent="none"]
6
+ // CIL[DOC-MACRO purpose="Import dependencies and define Role interface for admin roles management"]
7
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide React imports, UI components, and Role type definition"]
8
+ // CIL[DOC-CONTEXT module="RolesPage" layer="frontend-page" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
9
+ // CIL[DOC-CONTRACT inputs="none" outputs="React components and Role interface" errors="none" side_effects="none"]
10
+ // CIL[DOC-MICRO logic_summary="Imports React hooks, UI components, and defines Role data structure" notable_decisions="[]"]
11
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
12
+ // CIL[DOC-STABILITY stability="stable"]
13
+ // CIL[DOC-AUDIENCE audience="developer"]
14
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
15
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
16
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
17
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
18
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
19
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
16
20
  import React, { useState } from 'react'
17
21
  import { Plus, ShieldCheck, CheckCircle, XCircle, Settings, FileText, Cog } from 'lucide-react';
18
22
  import { LoadingSpinner } from '../../components/ui/LoadingSpinner'
@@ -36,7 +40,21 @@ interface Role {
36
40
  created_at: string
37
41
  updated_at: string
38
42
  }
39
-
43
+ // CIL[END chunk_id="rolespage_module_header_1783665503"]
44
+ // CIL[BEGIN chunk_id="rolespage_rolespage_1783665503" type="function" identity="RolesPage" parent="none"]
45
+ // CIL[DOC-MACRO purpose="Render the complete roles management page UI"]
46
+ // CIL[DOC-RESPONSIBILITY responsibility="Display roles list with search, filters, stats, and table"]
47
+ // CIL[DOC-CONTEXT module="RolesPage" layer="frontend-page" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/portal/pages/CoursesPage.tsx\"]"]
48
+ // CIL[DOC-CONTRACT inputs="none" outputs="AdminListPage JSX" errors="none" side_effects="none"]
49
+ // CIL[DOC-MICRO logic_summary="Renders AdminListPage with roles data, empty states, and table" 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-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/portal/pages/CoursesPage.tsx."]
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"]
40
58
  export function RolesPage() {
41
59
  const [searchTerm, setSearchTerm] = useState('')
42
60
  const [selectedStatus, setSelectedStatus] = useState('all')
@@ -44,7 +62,7 @@ export function RolesPage() {
44
62
  const [sortKey, setSortKey] = useState('name')
45
63
  const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc')
46
64
 
47
- // Fetch roles from API
65
+
48
66
  const { data: roles, loading, error, refetch } = useApi<Role[]>(
49
67
  async () => {
50
68
  const response = await apiFetch('/api/roles?action=list')
@@ -68,7 +86,21 @@ export function RolesPage() {
68
86
  return matchesSearch && matchesStatus && matchesType
69
87
  })
70
88
 
71
- // Helper functions
89
+
90
+ // CIL[BEGIN chunk_id="rolespage_getstatusbadge_1783665503" type="function" identity="getStatusBadge" parent="rolespage_rolespage_1783665503"]
91
+ // CIL[DOC-MACRO purpose="Generate status badge component based on role properties"]
92
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle getStatusBadge"]
93
+ // CIL[DOC-CONTEXT module="RolesPage" layer="frontend-page" related_files="[\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/portal/pages/CoursesPage.tsx\",\"\\\"]"]
94
+ // CIL[DOC-CONTRACT inputs="none" outputs="JSX badge element" errors="none" side_effects="none"]
95
+ // CIL[DOC-MICRO logic_summary="Checks is_active and is_system flags to determine badge styling" notable_decisions="[]"]
96
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
97
+ // CIL[DOC-STABILITY stability="stable"]
98
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 4. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, .framework/src/components/layout/Sidebar.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/portal/pages/CoursesPage.tsx, \."]
99
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 4. Total affected: 4."]
100
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
101
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
102
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
103
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
72
104
  const getStatusBadge = (role: Role) => {
73
105
  if (!role.is_active) {
74
106
  return <span className="inline-flex px-2 py-0.5 text-xs font-medium rounded-md bg-slate-100 text-slate-600">Inactive</span>
@@ -78,7 +110,22 @@ export function RolesPage() {
78
110
  }
79
111
  return <span className="inline-flex px-2 py-0.5 text-xs font-medium rounded-md bg-blue-100 text-blue-700">Custom</span>
80
112
  }
113
+ // CIL[END chunk_id="rolespage_getstatusbadge_1783665503"]
81
114
 
115
+ // CIL[BEGIN chunk_id="rolespage_handlesort_1783665503" type="function" identity="handleSort" parent="rolespage_rolespage_1783665503"]
116
+ // CIL[DOC-MACRO purpose="Handle table column sorting with direction toggle"]
117
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle handleSort"]
118
+ // CIL[DOC-CONTEXT module="RolesPage" layer="frontend-page" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
119
+ // CIL[DOC-CONTRACT inputs="none" outputs="state updates" errors="none" side_effects="Updates component state"]
120
+ // CIL[DOC-MICRO logic_summary="Toggles direction if same key, sets new key and asc direction otherwise" notable_decisions="[]"]
121
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
122
+ // CIL[DOC-STABILITY stability="stable"]
123
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
124
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
125
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
126
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
127
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
128
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
82
129
  const handleSort = (key: string) => {
83
130
  if (sortKey === key) {
84
131
  setSortDirection(sortDirection === 'asc' ? 'desc' : 'asc')
@@ -87,12 +134,41 @@ export function RolesPage() {
87
134
  setSortDirection('asc')
88
135
  }
89
136
  }
137
+ // CIL[END chunk_id="rolespage_handlesort_1783665503"]
90
138
 
139
+ // CIL[BEGIN chunk_id="rolespage_handlerowclick_1783665503" type="function" identity="handleRowClick" parent="rolespage_rolespage_1783665503"]
140
+ // CIL[DOC-MACRO purpose="Navigate to role detail page when table row is clicked"]
141
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle handleRowClick"]
142
+ // CIL[DOC-CONTEXT module="handleRowClick" layer="unknown" related_files="[]"]
143
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
144
+ // CIL[DOC-MICRO logic_summary="Implements handleRowClick" notable_decisions="[]"]
145
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
146
+ // CIL[DOC-STABILITY stability="stable"]
147
+ // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
148
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
149
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
150
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
151
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
152
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
91
153
  const handleRowClick = (role: Role) => {
92
154
  window.location.href = `/spine-framework/admin/configs/roles/${role.id}`
93
155
  }
156
+ // CIL[END chunk_id="rolespage_handlerowclick_1783665503"]
94
157
 
95
- // Sort roles
158
+ // CIL[BEGIN chunk_id="rolespage_sortedroles_1783665503" type="variable" identity="sortedRoles" parent="rolespage_rolespage_1783665503"]
159
+ // CIL[DOC-MACRO purpose="Sort filtered roles based on current sort key and direction"]
160
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle sortedRoles"]
161
+ // CIL[DOC-CONTEXT module="RolesPage" layer="frontend-page" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/portal/pages/CoursesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
162
+ // CIL[DOC-CONTRACT inputs="none" outputs="sorted array" errors="none" side_effects="none"]
163
+ // CIL[DOC-MICRO logic_summary="Handles string and boolean sorting with localeCompare" notable_decisions="[]"]
164
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
165
+ // CIL[DOC-STABILITY stability="stable"]
166
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/portal/pages/CoursesPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
167
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
168
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
169
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
170
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
171
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
96
172
  const sortedRoles = [...(filteredRoles || [])].sort((a, b) => {
97
173
  let aValue: any = a[sortKey as keyof Role]
98
174
  let bValue: any = b[sortKey as keyof Role]
@@ -109,7 +185,22 @@ export function RolesPage() {
109
185
 
110
186
  return 0
111
187
  })
188
+ // CIL[END chunk_id="rolespage_sortedroles_1783665503"]
112
189
 
190
+ // CIL[BEGIN chunk_id="rolespage_statcards_1783665503" type="variable" identity="statsCards" parent="rolespage_rolespage_1783665503"]
191
+ // CIL[DOC-MACRO purpose="Generate statistics cards for roles dashboard"]
192
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle statsCards"]
193
+ // CIL[DOC-CONTEXT module="RolesPage" layer="frontend-page" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
194
+ // CIL[DOC-CONTRACT inputs="none" outputs="stats cards array" errors="none" side_effects="none"]
195
+ // CIL[DOC-MICRO logic_summary="Calculates total, active, system, and custom role counts" notable_decisions="[]"]
196
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
197
+ // CIL[DOC-STABILITY stability="stable"]
198
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
199
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
200
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
201
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
202
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
203
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
113
204
  const statsCards = [
114
205
  {
115
206
  title: 'Total Roles',
@@ -136,19 +227,64 @@ export function RolesPage() {
136
227
  iconColor: 'text-orange-500'
137
228
  }
138
229
  ]
230
+ // CIL[END chunk_id="rolespage_statcards_1783665503"]
139
231
 
232
+ // CIL[BEGIN chunk_id="rolespage_statusoptions_1783665503" type="variable" identity="statusOptions" parent="rolespage_rolespage_1783665503"]
233
+ // CIL[DOC-MACRO purpose="Define filter options for role status dropdown"]
234
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle statusOptions"]
235
+ // CIL[DOC-CONTEXT module="RolesPage" layer="frontend-page" related_files="[\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
236
+ // CIL[DOC-CONTRACT inputs="none" outputs="status options array" errors="none" side_effects="none"]
237
+ // CIL[DOC-MICRO logic_summary="Static array of status filter options" notable_decisions="[]"]
238
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
239
+ // CIL[DOC-STABILITY stability="stable"]
240
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/principal.ts, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
241
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
242
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
243
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
244
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
245
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
140
246
  const statusOptions = [
141
247
  { value: 'all', label: 'All Status' },
142
248
  { value: 'active', label: 'Active' },
143
249
  { value: 'inactive', label: 'Inactive' }
144
250
  ]
251
+ // CIL[END chunk_id="rolespage_statusoptions_1783665503"]
145
252
 
253
+ // CIL[BEGIN chunk_id="rolespage_typeoptions_1783665503" type="variable" identity="typeOptions" parent="rolespage_rolespage_1783665503"]
254
+ // CIL[DOC-MACRO purpose="Define filter options for role type dropdown"]
255
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle typeOptions"]
256
+ // CIL[DOC-CONTEXT module="RolesPage" layer="frontend-page" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
257
+ // CIL[DOC-CONTRACT inputs="none" outputs="type options array" errors="none" side_effects="none"]
258
+ // CIL[DOC-MICRO logic_summary="Static array of role type filter options" notable_decisions="[]"]
259
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
260
+ // CIL[DOC-STABILITY stability="stable"]
261
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/schema-utils.ts, \."]
262
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
263
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
264
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
265
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
266
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
146
267
  const typeOptions = [
147
268
  { value: 'all', label: 'All Types' },
148
269
  { value: 'system', label: 'System' },
149
270
  { value: 'custom', label: 'Custom' }
150
271
  ]
272
+ // CIL[END chunk_id="rolespage_typeoptions_1783665503"]
151
273
 
274
+ // CIL[BEGIN chunk_id="rolespage_filters_1783665503" type="variable" identity="filters" parent="rolespage_rolespage_1783665503"]
275
+ // CIL[DOC-MACRO purpose="Combine status and type filters for AdminListPage component"]
276
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle filters"]
277
+ // CIL[DOC-CONTEXT module="RolesPage" layer="frontend-page" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\"\\\"]"]
278
+ // CIL[DOC-CONTRACT inputs="none" outputs="filters array" errors="none" side_effects="none"]
279
+ // CIL[DOC-MICRO logic_summary="Maps filter options to AdminListPage filter format" notable_decisions="[]"]
280
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
281
+ // CIL[DOC-STABILITY stability="stable"]
282
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/layout/Sidebar.tsx, \."]
283
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
284
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
285
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
286
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
287
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
152
288
  const filters = [
153
289
  {
154
290
  label: 'Status',
@@ -163,7 +299,22 @@ export function RolesPage() {
163
299
  onChange: setSelectedType
164
300
  }
165
301
  ]
302
+ // CIL[END chunk_id="rolespage_filters_1783665503"]
166
303
 
304
+ // CIL[BEGIN chunk_id="rolespage_return_1783665503" type="jsx" identity="return" parent="rolespage_rolespage_1783665503"]
305
+ // CIL[DOC-MACRO purpose="Render the complete roles management page UI"]
306
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle return"]
307
+ // CIL[DOC-CONTEXT module="return" layer="unknown" related_files="[]"]
308
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
309
+ // CIL[DOC-MICRO logic_summary="Implements return" notable_decisions="[]"]
310
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
311
+ // CIL[DOC-STABILITY stability="stable"]
312
+ // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
313
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
314
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
315
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
316
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
317
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
167
318
  return (
168
319
  <AdminListPage
169
320
  title="Roles"
@@ -289,4 +440,6 @@ export function RolesPage() {
289
440
  )}
290
441
  </AdminListPage>
291
442
  )
443
+ // CIL[END chunk_id="rolespage_return_1783665503"]
292
444
  }
445
+ // CIL[END chunk_id="rolespage_rolespage_1783665503"]
@@ -1,12 +1,22 @@
1
- /**
2
- * @module src/pages/admin/SelectTestPage
3
- * @audience installer
4
- * @layer frontend-page
5
- * @stability testing
6
- *
7
- * Test page to isolate Select component issues.
8
- */
9
1
 
2
+
3
+
4
+
5
+ // CIL[BEGIN chunk_id="selecttestpage_module_header_1783665503" type="module_header" identity="module_header" parent="none"]
6
+ // CIL[DOC-MACRO purpose="Import React hooks and UI components for Select test page"]
7
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide React state and shadcn UI components"]
8
+ // CIL[DOC-CONTEXT module="SelectTestPage" layer="frontend-page" 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\",\"\\\"]"]
9
+ // CIL[DOC-CONTRACT inputs="none" outputs="React hooks and UI components" errors="none" side_effects="none"]
10
+ // CIL[DOC-MICRO logic_summary="Imports useState and shadcn Select components" notable_decisions="[]"]
11
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
12
+ // CIL[DOC-STABILITY stability="stable"]
13
+ // CIL[DOC-AUDIENCE audience="developer"]
14
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. 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, \."]
15
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
16
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
17
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
18
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
19
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
10
20
  import { useState } from 'react'
11
21
  import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../../components/ui/card'
12
22
  import {
@@ -17,7 +27,21 @@ import {
17
27
  SelectValue,
18
28
  } from '../../components/ui/select'
19
29
  import { Label } from '../../components/ui/label'
20
-
30
+ // CIL[END chunk_id="selecttestpage_module_header_1783665503"]
31
+ // CIL[BEGIN chunk_id="selecttestpage_selecttestpage_1783665503" type="function" identity="SelectTestPage" parent="none"]
32
+ // CIL[DOC-MACRO purpose="Test page for shadcn Select component functionality"]
33
+ // CIL[DOC-RESPONSIBILITY responsibility="Demonstrate Select component with state management"]
34
+ // CIL[DOC-CONTEXT module="SelectTestPage" layer="frontend-page" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
35
+ // CIL[DOC-CONTRACT inputs="none" outputs="Select component demo UI" errors="none" side_effects="Updates component state"]
36
+ // CIL[DOC-MICRO logic_summary="Manages selected value state and renders Select component" notable_decisions="[]"]
37
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
38
+ // CIL[DOC-STABILITY stability="stable"]
39
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
40
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
41
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
42
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
43
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
44
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
21
45
  export function SelectTestPage() {
22
46
  const [selected, setSelected] = useState('')
23
47
 
@@ -59,3 +83,4 @@ export function SelectTestPage() {
59
83
  </div>
60
84
  )
61
85
  }
86
+ // CIL[END chunk_id="selecttestpage_selecttestpage_1783665503"]
@@ -1,13 +1,22 @@
1
- /**
2
- * @module src/pages/admin/ShadcnTestPage
3
- * @audience installer
4
- * @layer frontend-page
5
- * @stability testing
6
- *
7
- * Test page showcasing all shadcn/ui components with b1a0RuGWG preset.
8
- * Used to verify shadcn installation and theming is working correctly.
9
- */
10
1
 
2
+
3
+
4
+
5
+ // CIL[BEGIN chunk_id="shadcntestpage_module_header_1783665503" type="module_header" identity="module_header" parent="none"]
6
+ // CIL[DOC-MACRO purpose="Import React hooks and comprehensive shadcn UI components"]
7
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide all necessary UI components for testing shadcn library"]
8
+ // CIL[DOC-CONTEXT module="ShadcnTestPage" layer="frontend-page" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
9
+ // CIL[DOC-CONTRACT inputs="none" outputs="React hooks and 54+ UI components" errors="none" side_effects="none"]
10
+ // CIL[DOC-MICRO logic_summary="Imports useState and extensive shadcn component library" notable_decisions="[]"]
11
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
12
+ // CIL[DOC-STABILITY stability="stable"]
13
+ // CIL[DOC-AUDIENCE audience="developer"]
14
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. 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/src/pages/admin/RolesPage.tsx, \."]
15
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
16
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
17
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
18
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
19
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
11
20
  import { useState } from 'react'
12
21
  import {
13
22
  Card,
@@ -110,18 +119,45 @@ import {
110
119
  Info
111
120
  } from 'lucide-react'
112
121
  import { cn } from '../../lib/utils'
113
-
122
+ // CIL[END chunk_id="shadcntestpage_module_header_1783665503"]
123
+ // CIL[BEGIN chunk_id="shadcntestpage_shadcntestpage_1783665503" type="function" identity="ShadcnTestPage" parent="none"]
124
+ // CIL[DOC-MACRO purpose="Render comprehensive shadcn component showcase with all UI elements"]
125
+ // CIL[DOC-RESPONSIBILITY responsibility="Display 54+ components in organized sections with interactions"]
126
+ // CIL[DOC-CONTEXT module="ShadcnTestPage" layer="frontend-page" related_files="[\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
127
+ // CIL[DOC-CONTRACT inputs="none" outputs="Complete component showcase UI" errors="none" side_effects="none"]
128
+ // CIL[DOC-MICRO logic_summary="Renders cards, forms, interactive elements, and layout components" notable_decisions="[]"]
129
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
130
+ // CIL[DOC-STABILITY stability="stable"]
131
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
132
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
133
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
134
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
135
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
136
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
114
137
  export function ShadcnTestPage() {
115
138
  const [date, setDate] = useState<Date>()
116
139
  const [progress, setProgress] = useState(68)
117
140
  const [sliderValue, setSliderValue] = useState([50])
118
141
 
119
- // Simple date formatter since date-fns is not available
120
142
  const formatDate = (date: Date | undefined) => {
121
143
  if (!date) return 'Pick a date'
122
144
  return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })
123
145
  }
124
146
 
147
+ // CIL[BEGIN chunk_id="shadcntestpage_return_1783665503" type="jsx" identity="return" parent="shadcntestpage_shadcntestpage_1783665503"]
148
+ // CIL[DOC-MACRO purpose="Render comprehensive shadcn component showcase with all UI elements"]
149
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle return"]
150
+ // CIL[DOC-CONTEXT module="ShadcnTestPage" layer="frontend-page" related_files="[\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
151
+ // CIL[DOC-CONTRACT inputs="none" outputs="Complete component showcase UI" errors="none" side_effects="none"]
152
+ // CIL[DOC-MICRO logic_summary="Renders cards, forms, interactive elements, and layout components" notable_decisions="[]"]
153
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
154
+ // CIL[DOC-STABILITY stability="stable"]
155
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
156
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
157
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
158
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
159
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
160
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
125
161
  return (
126
162
  <TooltipProvider>
127
163
  <div className="flex-1 space-y-6 p-8 pt-6">
@@ -585,4 +621,6 @@ export function ShadcnTestPage() {
585
621
  </div>
586
622
  </TooltipProvider>
587
623
  )
624
+ // CIL[END chunk_id="shadcntestpage_return_1783665503"]
588
625
  }
626
+ // CIL[END chunk_id="shadcntestpage_shadcntestpage_1783665503"]
@@ -1,13 +1,22 @@
1
- /**
2
- * @module src/pages/admin/SimpleDashboard
3
- * @audience installer
4
- * @layer frontend-page
5
- * @stability testing
6
- *
7
- * A simple dashboard that works within the existing admin layout.
8
- * No layout conflicts - just content.
9
- */
10
1
 
2
+
3
+
4
+
5
+ // CIL[BEGIN chunk_id="simpledashboard_module_header_1783665503" type="module_header" identity="module_header" parent="none"]
6
+ // CIL[DOC-MACRO purpose="Import React hooks and UI components for simple dashboard"]
7
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide React state and dashboard UI components"]
8
+ // CIL[DOC-CONTEXT module="SimpleDashboard" layer="frontend-page" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
9
+ // CIL[DOC-CONTRACT inputs="none" outputs="React hooks and UI components" errors="none" side_effects="none"]
10
+ // CIL[DOC-MICRO logic_summary="Imports useState and dashboard UI components" notable_decisions="[]"]
11
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
12
+ // CIL[DOC-STABILITY stability="stable"]
13
+ // CIL[DOC-AUDIENCE audience="developer"]
14
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, \."]
15
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
16
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
17
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
18
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
19
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
11
20
  import { useState } from 'react'
12
21
  import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../../components/ui/card'
13
22
  import { Button } from '../../components/ui/button'
@@ -46,12 +55,40 @@ import {
46
55
  Activity,
47
56
  Settings
48
57
  } from 'lucide-react'
49
-
58
+ // CIL[END chunk_id="simpledashboard_module_header_1783665503"]
59
+ // CIL[BEGIN chunk_id="simpledashboard_simpledashboard_1783665503" type="function" identity="SimpleDashboard" parent="none"]
60
+ // CIL[DOC-MACRO purpose="Render simple dashboard with stats cards, search, and tabbed content"]
61
+ // CIL[DOC-RESPONSIBILITY responsibility="Display metrics, search bar, and tabbed dashboard sections"]
62
+ // CIL[DOC-CONTEXT module="SimpleDashboard" layer="frontend-page" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
63
+ // CIL[DOC-CONTRACT inputs="none" outputs="Complete dashboard UI" errors="none" side_effects="none"]
64
+ // CIL[DOC-MICRO logic_summary="Renders stats cards, search bar, and tabbed content sections" notable_decisions="[]"]
65
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
66
+ // CIL[DOC-STABILITY stability="stable"]
67
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. 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/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, \."]
68
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
69
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
70
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
71
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
72
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
50
73
  export function SimpleDashboard() {
51
74
  const [selectedTab, setSelectedTab] = useState('overview')
52
75
  const [searchQuery, setSearchQuery] = useState('')
53
76
  const [notifications, setNotifications] = useState(true)
54
77
 
78
+ // CIL[BEGIN chunk_id="simpledashboard_return_1783665503" type="jsx" identity="return" parent="simpledashboard_simpledashboard_1783665503"]
79
+ // CIL[DOC-MACRO purpose="Render simple dashboard with stats cards, search, and tabbed content"]
80
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle return"]
81
+ // CIL[DOC-CONTEXT module="SimpleDashboard" layer="frontend-page" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
82
+ // CIL[DOC-CONTRACT inputs="none" outputs="Complete dashboard UI" errors="none" side_effects="none"]
83
+ // CIL[DOC-MICRO logic_summary="Renders stats cards, search bar, and tabbed content sections" 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-page. 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/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, \."]
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"]
55
92
  return (
56
93
  <div className="space-y-6">
57
94
  {/* Page Header */}
@@ -384,4 +421,6 @@ export function SimpleDashboard() {
384
421
  </Tabs>
385
422
  </div>
386
423
  )
424
+ // CIL[END chunk_id="simpledashboard_return_1783665503"]
387
425
  }
426
+ // CIL[END chunk_id="simpledashboard_simpledashboard_1783665503"]
@@ -1,6 +1,21 @@
1
- /**
2
- * @module src/pages/admin/TestRunDetailPage
3
- */
1
+
2
+
3
+
4
+ // CIL[BEGIN chunk_id="testrundetailpage_module_header_1783665503" type="module_header" identity="module_header" parent="none"]
5
+ // CIL[DOC-MACRO purpose="Import React hooks, router, UI components and define TestRun interface"]
6
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide React hooks, UI components, and test run data types"]
7
+ // CIL[DOC-CONTEXT module="TestRunDetailPage" layer="frontend-page" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
8
+ // CIL[DOC-CONTRACT inputs="none" outputs="React hooks, UI components, and TestRun interface" errors="none" side_effects="none"]
9
+ // CIL[DOC-MICRO logic_summary="Imports React hooks, UI components, and defines TestRun interface with constants" notable_decisions="[]"]
10
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
11
+ // CIL[DOC-STABILITY stability="stable"]
12
+ // CIL[DOC-AUDIENCE audience="developer"]
13
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
14
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
15
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
16
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
17
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
18
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
4
19
  import { useState, useEffect } from 'react'
5
20
  import { useParams, useNavigate } from 'react-router-dom'
6
21
  import { apiFetch } from '../../lib/api'
@@ -47,7 +62,21 @@ const STATUSES = [
47
62
  { value: 'failed', label: 'Failed' },
48
63
  { value: 'skipped', label: 'Skipped' }
49
64
  ]
50
-
65
+ // CIL[END chunk_id="testrundetailpage_module_header_1783665503"]
66
+ // CIL[BEGIN chunk_id="testrundetailpage_testrundetailpage_1783665503" type="function" identity="TestRunDetailPage" parent="none"]
67
+ // CIL[DOC-MACRO purpose="Render test run detail page with form and results table"]
68
+ // CIL[DOC-RESPONSIBILITY responsibility="Display test configuration form and results with edit capabilities"]
69
+ // CIL[DOC-CONTEXT module="TestRunDetailPage" layer="frontend-page" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
70
+ // CIL[DOC-CONTRACT inputs="none" outputs="Complete detail page UI" errors="none" side_effects="none"]
71
+ // CIL[DOC-MICRO logic_summary="Renders header, configuration form, execution info, and results table" notable_decisions="[]"]
72
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
73
+ // CIL[DOC-STABILITY stability="stable"]
74
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
75
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
76
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
77
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
78
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
79
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
51
80
  export function TestRunDetailPage() {
52
81
  const { id } = useParams<{ id: string }>()
53
82
  const navigate = useNavigate()
@@ -121,6 +150,20 @@ export function TestRunDetailPage() {
121
150
  { key: 'message' as keyof any, title: 'Message' }
122
151
  ]
123
152
 
153
+ // CIL[BEGIN chunk_id="testrundetailpage_return_1783665503" type="jsx" identity="return" parent="testrundetailpage_testrundetailpage_1783665503"]
154
+ // CIL[DOC-MACRO purpose="Render test run detail page with form and results table"]
155
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle return"]
156
+ // CIL[DOC-CONTEXT module="TestRunDetailPage" layer="frontend-page" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
157
+ // CIL[DOC-CONTRACT inputs="none" outputs="Complete detail page UI" errors="none" side_effects="none"]
158
+ // CIL[DOC-MICRO logic_summary="Renders header, configuration form, execution info, and results table" notable_decisions="[]"]
159
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
160
+ // CIL[DOC-STABILITY stability="stable"]
161
+ // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
162
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
163
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
164
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
165
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
166
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
124
167
  return (
125
168
  <div className="space-y-6">
126
169
  <div className="flex items-center justify-between">
@@ -169,4 +212,6 @@ export function TestRunDetailPage() {
169
212
  )}
170
213
  </div>
171
214
  )
215
+ // CIL[END chunk_id="testrundetailpage_return_1783665503"]
172
216
  }
217
+ // CIL[END chunk_id="testrundetailpage_testrundetailpage_1783665503"]