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.
- package/.framework/cli/commands/agents.ts +35 -37
- package/.framework/cli/commands/auth.ts +35 -34
- package/.framework/cli/commands/create-app.ts +104 -40
- package/.framework/cli/commands/dev.ts +104 -69
- package/.framework/cli/commands/doctor.ts +179 -69
- package/.framework/cli/commands/generate.ts +83 -143
- package/.framework/cli/commands/init.ts +72 -34
- package/.framework/cli/commands/install-app.ts +260 -125
- package/.framework/cli/commands/items.ts +33 -44
- package/.framework/cli/commands/migrate.ts +122 -40
- package/.framework/cli/commands/migrations.ts +33 -40
- package/.framework/cli/commands/pipelines.ts +31 -39
- package/.framework/cli/commands/status.ts +47 -23
- package/.framework/cli/commands/system.ts +47 -37
- package/.framework/cli/commands/test.ts +112 -68
- package/.framework/cli/commands/validate-app.ts +215 -121
- package/.framework/cli/context.ts +112 -130
- package/.framework/cli/env-loader.ts +47 -18
- package/.framework/cli/index.ts +81 -42
- package/.framework/docs/runtime-types.md +1024 -0
- package/.framework/functions/_shared/agent-runner.ts +1296 -961
- package/.framework/functions/_shared/app-manifest.ts +82 -68
- package/.framework/functions/_shared/audit.ts +135 -83
- package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
- package/.framework/functions/_shared/db.ts +80 -126
- package/.framework/functions/_shared/hash-api-key.ts +63 -0
- package/.framework/functions/_shared/index.ts +224 -335
- package/.framework/functions/_shared/kb.ts +319 -0
- package/.framework/functions/_shared/llm.ts +92 -0
- package/.framework/functions/_shared/logging.ts +288 -0
- package/.framework/functions/_shared/middleware.ts +329 -365
- package/.framework/functions/_shared/outcomes.ts +36 -0
- package/.framework/functions/_shared/permissions.ts +359 -643
- package/.framework/functions/_shared/pipeline-runner.ts +243 -316
- package/.framework/functions/_shared/principal.ts +376 -468
- package/.framework/functions/_shared/resolve-credentials.ts +102 -0
- package/.framework/functions/_shared/resolve-ids.ts +188 -16
- package/.framework/functions/_shared/retry-deliveries.ts +104 -0
- package/.framework/functions/_shared/schema-utils.ts +611 -373
- package/.framework/functions/_shared/testing.ts +207 -137
- package/.framework/functions/_shared/tracing.ts +276 -0
- package/.framework/functions/_shared/trigger-engine.ts +159 -211
- package/.framework/functions/_shared/webhook-registration.ts +95 -81
- package/.framework/functions/_shared/webhook-registry.ts +153 -75
- package/.framework/functions/account-nodes.ts +31 -53
- package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
- package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
- package/.framework/functions/adapters/openai-outbound.ts +40 -0
- package/.framework/functions/admin-data.ts +685 -537
- package/.framework/functions/admin-funnel.ts +31 -20
- package/.framework/functions/admin-install-funnel.ts +47 -28
- package/.framework/functions/admin-signals.ts +47 -29
- package/.framework/functions/ai-agents.ts +122 -147
- package/.framework/functions/ai-interactions.ts +180 -90
- package/.framework/functions/api-keys.ts +250 -192
- package/.framework/functions/apps.ts +203 -197
- package/.framework/functions/auth.ts +98 -91
- package/.framework/functions/cil-agent-ingest.ts +773 -0
- package/.framework/functions/cil-agent.ts +592 -0
- package/.framework/functions/cil-callmap.ts +1227 -0
- package/.framework/functions/cil-config.ts +583 -0
- package/.framework/functions/cil-context.ts +445 -0
- package/.framework/functions/cil-doc.ts +1752 -0
- package/.framework/functions/cil-embeddings.ts +1202 -0
- package/.framework/functions/cil-graph.ts +585 -0
- package/.framework/functions/cil-ingest.ts +2416 -0
- package/.framework/functions/cil-pipeline.ts +318 -0
- package/.framework/functions/cil-project.ts +499 -0
- package/.framework/functions/cil-validate.ts +469 -0
- package/.framework/functions/debug-auth.ts +73 -53
- package/.framework/functions/deliveries.ts +117 -0
- package/.framework/functions/embeddings.ts +528 -516
- package/.framework/functions/eval-harness.ts +158 -106
- package/.framework/functions/integration-outbound.ts +311 -0
- package/.framework/functions/integration-routes.ts +240 -466
- package/.framework/functions/integrations.ts +132 -140
- package/.framework/functions/invites.ts +401 -201
- package/.framework/functions/item-progress.ts +113 -53
- package/.framework/functions/kb.ts +28 -0
- package/.framework/functions/logs.ts +239 -222
- package/.framework/functions/observability.ts +308 -259
- package/.framework/functions/pipeline-executions.ts +179 -235
- package/.framework/functions/pipelines.ts +163 -205
- package/.framework/functions/prompt-configs.ts +109 -156
- package/.framework/functions/roles.ts +97 -147
- package/.framework/functions/system-cron.ts +132 -218
- package/.framework/functions/system.ts +112 -52
- package/.framework/functions/tests.ts +32 -28
- package/.framework/functions/timers.ts +162 -210
- package/.framework/functions/triggers.ts +282 -346
- package/.framework/functions/types.ts +283 -400
- package/.framework/migrations/001_core_schema.sql +630 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
- package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
- package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
- package/.framework/migrations/005_core_observability.sql +598 -0
- package/.framework/migrations/006_security_hardening_rls.sql +97 -0
- package/.framework/migrations/007_kb_article_list.sql +237 -0
- package/.framework/migrations/008_items_target.sql +8 -0
- package/.framework/migrations/009_roles_slug_unique.sql +11 -0
- package/.framework/public/spine.config.json +91 -0
- package/.framework/scripts/app-install-cli.ts +112 -98
- package/.framework/src/App.tsx +67 -20
- package/.framework/src/apps/admin/index.tsx +97 -27
- package/.framework/src/components/AppWrapper.tsx +50 -11
- package/.framework/src/components/CustomAppLoader.tsx +131 -22
- package/.framework/src/components/admin/AdminListPage.tsx +75 -8
- package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
- package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
- package/.framework/src/components/admin/PageInstructions.tsx +49 -0
- package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
- package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
- package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
- package/.framework/src/components/app-sidebar.tsx +50 -3
- package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
- package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
- package/.framework/src/components/kb/KBArticleList.tsx +557 -0
- package/.framework/src/components/layout/AppShell.tsx +54 -16
- package/.framework/src/components/layout/Header.tsx +50 -38
- package/.framework/src/components/layout/Layout.tsx +48 -32
- package/.framework/src/components/layout/Sidebar.tsx +167 -16
- package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
- package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
- package/.framework/src/components/runtime/DataFilters.tsx +78 -1
- package/.framework/src/components/runtime/DataHeader.tsx +32 -29
- package/.framework/src/components/runtime/DataListPage.tsx +161 -2
- package/.framework/src/components/runtime/DataStats.tsx +48 -1
- package/.framework/src/components/runtime/DataTable.tsx +153 -1
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
- package/.framework/src/components/runtime/index.ts +16 -9
- package/.framework/src/components/search-form.tsx +33 -1
- package/.framework/src/components/shared/AgentView.tsx +48 -51
- package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
- package/.framework/src/components/shared/InviteManager.tsx +113 -52
- package/.framework/src/components/shared/MemberList.tsx +182 -0
- package/.framework/src/components/shared/SchemaFields.tsx +96 -78
- package/.framework/src/components/ui/DataTable.tsx +86 -56
- package/.framework/src/components/ui/Form.tsx +188 -109
- package/.framework/src/components/ui/ItemCard.tsx +86 -58
- package/.framework/src/components/ui/ItemListView.tsx +88 -61
- package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
- package/.framework/src/components/ui/Modal.tsx +81 -4
- package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
- package/.framework/src/components/ui/accordion.tsx +97 -5
- package/.framework/src/components/ui/alert-dialog.tsx +225 -13
- package/.framework/src/components/ui/alert.tsx +113 -6
- package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
- package/.framework/src/components/ui/avatar.tsx +129 -7
- package/.framework/src/components/ui/badge.tsx +65 -3
- package/.framework/src/components/ui/breadcrumb.tsx +145 -8
- package/.framework/src/components/ui/button-group.tsx +81 -4
- package/.framework/src/components/ui/button.tsx +49 -2
- package/.framework/src/components/ui/calendar.tsx +65 -3
- package/.framework/src/components/ui/card.tsx +145 -8
- package/.framework/src/components/ui/carousel.tsx +129 -7
- package/.framework/src/components/ui/chart.tsx +161 -10
- package/.framework/src/components/ui/checkbox.tsx +49 -2
- package/.framework/src/components/ui/collapsible.tsx +81 -5
- package/.framework/src/components/ui/combobox.tsx +305 -20
- package/.framework/src/components/ui/command.tsx +177 -11
- package/.framework/src/components/ui/context-menu.tsx +273 -17
- package/.framework/src/components/ui/dialog.tsx +209 -27
- package/.framework/src/components/ui/direction.tsx +64 -4
- package/.framework/src/components/ui/drawer.tsx +193 -12
- package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
- package/.framework/src/components/ui/empty.tsx +145 -9
- package/.framework/src/components/ui/field.tsx +209 -14
- package/.framework/src/components/ui/hover-card.tsx +81 -4
- package/.framework/src/components/ui/input-group.tsx +162 -10
- package/.framework/src/components/ui/input-otp.tsx +98 -5
- package/.framework/src/components/ui/input.tsx +49 -2
- package/.framework/src/components/ui/item.tsx +225 -13
- package/.framework/src/components/ui/kbd.tsx +65 -3
- package/.framework/src/components/ui/label.tsx +49 -2
- package/.framework/src/components/ui/menubar.tsx +289 -17
- package/.framework/src/components/ui/native-select.tsx +97 -5
- package/.framework/src/components/ui/navigation-menu.tsx +177 -10
- package/.framework/src/components/ui/pagination.tsx +161 -9
- package/.framework/src/components/ui/popover.tsx +145 -8
- package/.framework/src/components/ui/progress.tsx +49 -2
- package/.framework/src/components/ui/radio-group.tsx +65 -3
- package/.framework/src/components/ui/resizable.tsx +82 -4
- package/.framework/src/components/ui/scroll-area.tsx +65 -3
- package/.framework/src/components/ui/select.tsx +193 -11
- package/.framework/src/components/ui/separator.tsx +49 -2
- package/.framework/src/components/ui/sheet.tsx +193 -11
- package/.framework/src/components/ui/sidebar.tsx +481 -38
- package/.framework/src/components/ui/skeleton.tsx +49 -2
- package/.framework/src/components/ui/slider.tsx +49 -2
- package/.framework/src/components/ui/sonner.tsx +49 -2
- package/.framework/src/components/ui/spinner.tsx +49 -2
- package/.framework/src/components/ui/switch.tsx +49 -2
- package/.framework/src/components/ui/table-primitives.tsx +160 -33
- package/.framework/src/components/ui/table.tsx +161 -9
- package/.framework/src/components/ui/tabs.tsx +113 -6
- package/.framework/src/components/ui/textarea.tsx +49 -2
- package/.framework/src/components/ui/toggle-group.tsx +81 -4
- package/.framework/src/components/ui/toggle.tsx +65 -3
- package/.framework/src/components/ui/tooltip.tsx +97 -5
- package/.framework/src/contexts/AppContext.tsx +129 -45
- package/.framework/src/contexts/AuthContext.tsx +187 -144
- package/.framework/src/hooks/use-mobile.ts +48 -2
- package/.framework/src/hooks/useApi.ts +208 -159
- package/.framework/src/hooks/useAppPath.ts +32 -23
- package/.framework/src/hooks/useApps.ts +51 -20
- package/.framework/src/hooks/useEntityList.ts +32 -78
- package/.framework/src/hooks/useEntityRecord.ts +35 -96
- package/.framework/src/hooks/useForm.ts +32 -92
- package/.framework/src/hooks/useListSchema.ts +49 -78
- package/.framework/src/hooks/useSchemaRecord.ts +114 -105
- package/.framework/src/lib/api.ts +195 -116
- package/.framework/src/lib/supabase.ts +98 -64
- package/.framework/src/lib/utils.ts +287 -151
- package/.framework/src/main.tsx +49 -3
- package/.framework/src/pages/DashboardPage.tsx +52 -29
- package/.framework/src/pages/NotFoundPage.tsx +32 -10
- package/.framework/src/pages/SetupPage.tsx +32 -12
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
- package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
- package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
- package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
- package/.framework/src/pages/admin/AppsPage.tsx +49 -2
- package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
- package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
- package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
- package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
- package/.framework/src/pages/admin/LogsPage.tsx +422 -75
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
- package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
- package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
- package/.framework/src/pages/admin/RolesPage.tsx +171 -18
- package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
- package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
- package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
- package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
- package/.framework/src/pages/admin/TimersPage.tsx +48 -20
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
- package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
- package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
- package/.framework/src/pages/admin/TypesPage.tsx +48 -20
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
- package/.framework/src/pages/auth/LoginPage.tsx +50 -23
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
- package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
- package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
- package/.framework/src/types/auth.ts +128 -71
- package/.framework/src/types/types.ts +373 -157
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
- package/docs/README.md +9 -130
- package/netlify.toml +5 -2
- package/package.json +13 -25
- package/scripts/kb-ingest-docs.ts +203 -0
- package/spine.config.json +65 -4
- package/.framework/migrations/001_schema.sql +0 -425
- package/.framework/migrations/002_rls_and_functions.sql +0 -763
- package/.framework/migrations/004_enhancements.sql +0 -43
- package/.framework/migrations/005_auth_user_trigger.sql +0 -105
- package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
- package/.framework/migrations/016_invites.sql +0 -27
- package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
- package/.framework/migrations/018_apps_required_roles.sql +0 -17
- package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
- package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
- package/.framework/migrations/021_app_domains.sql +0 -112
- package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
- package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
- package/.framework/migrations/024_messages_account_id.sql +0 -9
- package/.framework/migrations/025_retype_threads_messages.sql +0 -240
- package/.framework/migrations/026_fix_rls_policies.sql +0 -47
- package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
- package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
- package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
- package/.framework/migrations/030_messages_updated_by.sql +0 -6
- package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
- package/docs/APPS.md +0 -232
- package/docs/ARCHITECTURE.md +0 -246
- package/docs/INSTALL.md +0 -155
- package/docs/design-schema-spec.md +0 -1837
- package/docs/dev-guides/01-create-an-app.md +0 -183
- package/docs/dev-guides/02-create-a-function.md +0 -178
- package/docs/dev-guides/03-create-a-component.md +0 -178
- package/docs/dev-guides/04-webhook-handlers.md +0 -129
- package/docs/dev-guides/05-testing.md +0 -168
- package/docs/dev-guides/README.md +0 -40
- package/docs/npm-packages-plan.md +0 -288
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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"]
|