spine-framework 0.3.145 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +76 -0
- package/.framework/.spine-manifest.json +19 -0
- package/.framework/cli/commands/agents.ts +61 -33
- package/.framework/cli/commands/auth.ts +60 -28
- package/.framework/cli/commands/create-app.ts +212 -80
- package/.framework/cli/commands/dev.ts +184 -68
- package/.framework/cli/commands/doctor.ts +324 -152
- package/.framework/cli/commands/generate.ts +119 -68
- package/.framework/cli/commands/init.ts +141 -242
- package/.framework/cli/commands/install-app.ts +1336 -314
- package/.framework/cli/commands/items.ts +31 -29
- package/.framework/cli/commands/migrate.ts +299 -156
- package/.framework/cli/commands/migrations.ts +62 -30
- package/.framework/cli/commands/pipelines.ts +31 -29
- package/.framework/cli/commands/status.ts +105 -45
- package/.framework/cli/commands/system.ts +47 -42
- package/.framework/cli/commands/test.ts +161 -102
- package/.framework/cli/commands/upgrade.ts +260 -0
- package/.framework/cli/commands/validate-app.ts +517 -161
- package/.framework/cli/context.ts +117 -85
- package/.framework/cli/env-loader.ts +74 -43
- package/.framework/cli/index.ts +70 -46
- package/.framework/cli/lib/project-files.ts +404 -0
- package/.framework/docs/guides/testing-guide.md +1 -1
- package/.framework/docs/runtime-types.md +72 -72
- package/.framework/functions/_shared/access.ts +84 -0
- package/.framework/functions/_shared/agent-runner.ts +5051 -1026
- package/.framework/functions/_shared/app-manifest.ts +214 -94
- package/.framework/functions/_shared/ast.ts +214 -0
- package/.framework/functions/_shared/audit.ts +91 -55
- package/.framework/functions/_shared/cil.ts +368 -127
- package/.framework/functions/_shared/db.ts +337 -68
- package/.framework/functions/_shared/funnel.ts +228 -0
- package/.framework/functions/_shared/geo.ts +105 -0
- package/.framework/functions/_shared/hash-api-key.ts +94 -17
- package/.framework/functions/_shared/index.ts +22 -224
- package/.framework/functions/_shared/kb.ts +832 -58
- package/.framework/functions/_shared/llm.ts +118 -18
- package/.framework/functions/_shared/logging.ts +317 -19
- package/.framework/functions/_shared/middleware.ts +701 -131
- package/.framework/functions/_shared/notify.ts +70 -0
- package/.framework/functions/_shared/outcomes.ts +34 -19
- package/.framework/functions/_shared/permissions.ts +501 -315
- package/.framework/functions/_shared/pipeline-runner.ts +704 -155
- package/.framework/functions/_shared/principal.ts +436 -263
- package/.framework/functions/_shared/rate-limit.ts +233 -0
- package/.framework/functions/_shared/resolve-credentials.ts +86 -19
- package/.framework/functions/_shared/resolve-ids.ts +203 -139
- package/.framework/functions/_shared/retry-deliveries.ts +51 -16
- package/.framework/functions/_shared/schema-utils.ts +602 -521
- package/.framework/functions/_shared/security.ts +345 -0
- package/.framework/functions/_shared/testing.ts +197 -172
- package/.framework/functions/_shared/tracing.ts +351 -21
- package/.framework/functions/_shared/trigger-engine.ts +425 -136
- package/.framework/functions/_shared/webhook-registration.ts +71 -70
- package/.framework/functions/_shared/webhook-registry.ts +126 -83
- package/.framework/functions/account-nodes.ts +30 -30
- package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
- package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
- package/.framework/functions/adapters/openai-outbound.ts +15 -16
- package/.framework/functions/admin-data.ts +596 -173
- package/.framework/functions/admin-funnel.ts +64 -60
- package/.framework/functions/admin-install-funnel.ts +84 -66
- package/.framework/functions/admin-signals.ts +69 -51
- package/.framework/functions/ai-agents.ts +431 -106
- package/.framework/functions/ai-interactions.ts +186 -112
- package/.framework/functions/api-keys.ts +107 -107
- package/.framework/functions/apps.ts +154 -136
- package/.framework/functions/auth.ts +83 -65
- package/.framework/functions/cil-agent-ingest.ts +189 -232
- package/.framework/functions/cil-agent.ts +433 -177
- package/.framework/functions/cil-callmap.ts +642 -430
- package/.framework/functions/cil-config.ts +139 -135
- package/.framework/functions/cil-context.ts +214 -127
- package/.framework/functions/cil-doc.ts +587 -458
- package/.framework/functions/cil-embeddings.ts +453 -364
- package/.framework/functions/cil-graph.ts +427 -142
- package/.framework/functions/cil-ingest.ts +1418 -1154
- package/.framework/functions/cil-pipeline.ts +276 -21
- package/.framework/functions/cil-project.ts +659 -132
- package/.framework/functions/cil-validate.ts +198 -164
- package/.framework/functions/debug-auth.ts +57 -55
- package/.framework/functions/deliveries.ts +80 -21
- package/.framework/functions/embeddings.ts +1023 -318
- package/.framework/functions/eval-harness.ts +146 -108
- package/.framework/functions/integration-outbound.ts +205 -75
- package/.framework/functions/integration-routes.ts +128 -23
- package/.framework/functions/integrations.ts +125 -100
- package/.framework/functions/invites.ts +1095 -460
- package/.framework/functions/item-progress.ts +158 -102
- package/.framework/functions/kb.ts +34 -10
- package/.framework/functions/logs.ts +133 -133
- package/.framework/functions/observability.ts +152 -122
- package/.framework/functions/pipeline-executions.ts +147 -132
- package/.framework/functions/pipelines.ts +134 -119
- package/.framework/functions/prompt-configs.ts +96 -80
- package/.framework/functions/roles.ts +112 -82
- package/.framework/functions/security.ts +450 -0
- package/.framework/functions/system-cron.ts +117 -80
- package/.framework/functions/system.ts +158 -98
- package/.framework/functions/tests.ts +29 -29
- package/.framework/functions/timers.ts +94 -95
- package/.framework/functions/trigger-scheduler.ts +10 -0
- package/.framework/functions/triggers.ts +179 -149
- package/.framework/functions/types.ts +137 -125
- package/.framework/mcp/index.ts +133 -0
- package/.framework/mcp/load-env.ts +60 -0
- package/.framework/mcp/shared/app-manifest.ts +275 -0
- package/.framework/mcp/shared/db.ts +477 -0
- package/.framework/mcp/shared/kb.ts +118 -0
- package/.framework/mcp/tools/architect.ts +431 -0
- package/.framework/mcp/tools/cil/context.ts +345 -0
- package/.framework/mcp/tools/cil/graph.ts +242 -0
- package/.framework/mcp/tools/cil/ingest.ts +1217 -0
- package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
- package/.framework/mcp/tools/cil/pipeline.ts +767 -0
- package/.framework/mcp/tools/cil/project.ts +791 -0
- package/.framework/mcp/tools/cil/retrieval.ts +336 -0
- package/.framework/mcp/tools/cil/search-core.ts +454 -0
- package/.framework/mcp/tools/cil/search.ts +97 -0
- package/.framework/mcp/tools/cil/suggest.ts +186 -0
- package/.framework/mcp/tools/cil/validate.ts +1369 -0
- package/.framework/mcp/tools/kb/delete.ts +139 -0
- package/.framework/mcp/tools/kb/index.ts +52 -0
- package/.framework/mcp/tools/kb/ingest.ts +84 -0
- package/.framework/mcp/tools/kb/list-types.ts +102 -0
- package/.framework/mcp/tools/kb/publish.ts +100 -0
- package/.framework/mcp/tools/kb/reindex.ts +86 -0
- package/.framework/mcp/tools/kb/revoke.ts +85 -0
- package/.framework/mcp/tools/kb/search.ts +101 -0
- package/.framework/mcp/tools/kb/upsert.ts +125 -0
- package/.framework/mcp/tools/observability.ts +510 -0
- package/.framework/migrations/001_core_schema.sql +15 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
- package/.framework/migrations/003_core_system_data.sql +16 -1
- package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
- package/.framework/migrations/005_core_observability.sql +17 -1
- package/.framework/migrations/006_security_hardening_rls.sql +15 -0
- package/.framework/migrations/007_kb_article_list.sql +17 -1
- package/.framework/migrations/008_items_target.sql +15 -0
- package/.framework/migrations/009_roles_slug_unique.sql +15 -0
- package/.framework/migrations/010_auth_user_trigger.sql +15 -0
- package/.framework/migrations/011_spine_system_account.sql +16 -0
- package/.framework/migrations/012_service_role_grants.sql +16 -0
- package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
- package/.framework/migrations/014_apps_required_roles.sql +16 -0
- package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
- package/.framework/migrations/016_cil_types.sql +281 -0
- package/.framework/migrations/017_cil_stable_ids.sql +37 -0
- package/.framework/migrations/018_runtime_tables.sql +129 -0
- package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
- package/.framework/migrations/020_schema_reconciliation.sql +67 -0
- package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
- package/.framework/migrations/032_cil_status_migration.sql +73 -0
- package/.framework/migrations/033_cil_versioning.sql +73 -0
- package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
- package/.framework/migrations/035_rate_limits.sql +55 -0
- package/.framework/migrations/036_demo_record_flags.sql +72 -0
- package/.framework/migrations/037_kb_types_canonical.sql +244 -0
- package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
- package/.framework/migrations/042_registration_hierarchy.sql +309 -0
- package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
- package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
- package/.framework/migrations/045_security_critical_rls.sql +139 -0
- package/.framework/migrations/046_security_missing_rls.sql +79 -0
- package/.framework/migrations/047_people_updated_by.sql +27 -0
- package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
- package/.framework/migrations/049_security_blocklist.sql +148 -0
- package/.framework/migrations/050_notifications.sql +49 -0
- package/.framework/migrations/051_message_agent_fields.sql +74 -0
- package/.framework/migrations/052_registration_security.sql +421 -0
- package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
- package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
- package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
- package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
- package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
- package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
- package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
- package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
- package/.framework/migrations/061_fk_dedup.sql +32 -0
- package/.framework/public/spine-logo.svg +10 -3
- package/.framework/scripts/app-install-cli.ts +190 -93
- package/.framework/scripts/assemble-frontend.sh +127 -44
- package/.framework/scripts/assemble-functions.sh +128 -30
- package/.framework/scripts/boundary-check.sh +6 -2
- package/.framework/scripts/build-manifest.sh +24 -68
- package/.framework/scripts/check-core-integrity.sh +15 -76
- package/.framework/scripts/checksum-manifest.mts +343 -0
- package/.framework/scripts/cil-migrate-markers.ts +403 -0
- package/.framework/scripts/fix-cil-markers.mjs +176 -0
- package/.framework/scripts/verify-integrity.sh +21 -57
- package/.framework/scripts/verify-manifest.mts +305 -0
- package/.framework/seeds/types/funnel_signal_use.json +74 -21
- package/.framework/seeds/types/spine_instance.json +73 -21
- package/.framework/src/App.tsx +118 -72
- package/.framework/src/apps/admin/index.tsx +855 -58
- package/.framework/src/components/AppWrapper.tsx +43 -45
- package/.framework/src/components/CustomAppLoader.tsx +160 -116
- package/.framework/src/components/admin/AdminListPage.tsx +46 -44
- package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
- package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
- package/.framework/src/components/admin/PageInstructions.tsx +98 -2
- package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
- package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
- package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
- package/.framework/src/components/app-sidebar.tsx +42 -45
- package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
- package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
- package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
- package/.framework/src/components/kb/KBArticleList.tsx +251 -10
- package/.framework/src/components/layout/AppShell.tsx +51 -45
- package/.framework/src/components/layout/Header.tsx +42 -43
- package/.framework/src/components/layout/Layout.tsx +46 -46
- package/.framework/src/components/layout/Sidebar.tsx +196 -96
- package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
- package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
- package/.framework/src/components/runtime/DataFilters.tsx +49 -74
- package/.framework/src/components/runtime/DataHeader.tsx +53 -32
- package/.framework/src/components/runtime/DataListPage.tsx +51 -155
- package/.framework/src/components/runtime/DataStats.tsx +66 -44
- package/.framework/src/components/runtime/DataTable.tsx +49 -149
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
- package/.framework/src/components/runtime/index.ts +119 -16
- package/.framework/src/components/search-form.tsx +46 -29
- package/.framework/src/components/shared/AgentView.tsx +65 -48
- package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
- package/.framework/src/components/shared/InviteManager.tsx +207 -97
- package/.framework/src/components/shared/MemberList.tsx +97 -0
- package/.framework/src/components/shared/SchemaFields.tsx +107 -86
- package/.framework/src/components/ui/DataTable.tsx +80 -68
- package/.framework/src/components/ui/Form.tsx +157 -146
- package/.framework/src/components/ui/ItemCard.tsx +74 -67
- package/.framework/src/components/ui/ItemListView.tsx +73 -68
- package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
- package/.framework/src/components/ui/Modal.tsx +78 -68
- package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
- package/.framework/src/components/ui/accordion.tsx +85 -86
- package/.framework/src/components/ui/alert-dialog.tsx +197 -184
- package/.framework/src/components/ui/alert.tsx +105 -94
- package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
- package/.framework/src/components/ui/avatar.tsx +122 -107
- package/.framework/src/components/ui/badge.tsx +60 -55
- package/.framework/src/components/ui/breadcrumb.tsx +127 -128
- package/.framework/src/components/ui/button-group.tsx +86 -72
- package/.framework/src/components/ui/button.tsx +71 -50
- package/.framework/src/components/ui/calendar.tsx +72 -57
- package/.framework/src/components/ui/card.tsx +136 -129
- package/.framework/src/components/ui/carousel.tsx +226 -107
- package/.framework/src/components/ui/chart.tsx +252 -147
- package/.framework/src/components/ui/checkbox.tsx +43 -44
- package/.framework/src/components/ui/collapsible.tsx +86 -71
- package/.framework/src/components/ui/combobox.tsx +282 -249
- package/.framework/src/components/ui/command.tsx +158 -146
- package/.framework/src/components/ui/context-menu.tsx +239 -240
- package/.framework/src/components/ui/dialog.tsx +174 -157
- package/.framework/src/components/ui/direction.tsx +72 -56
- package/.framework/src/components/ui/drawer.tsx +168 -169
- package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
- package/.framework/src/components/ui/empty.tsx +131 -120
- package/.framework/src/components/ui/field.tsx +205 -173
- package/.framework/src/components/ui/hover-card.tsx +71 -72
- package/.framework/src/components/ui/input-group.tsx +148 -133
- package/.framework/src/components/ui/input-otp.tsx +99 -86
- package/.framework/src/components/ui/input.tsx +43 -41
- package/.framework/src/components/ui/item.tsx +207 -185
- package/.framework/src/components/ui/kbd.tsx +57 -56
- package/.framework/src/components/ui/label.tsx +45 -41
- package/.framework/src/components/ui/menubar.tsx +268 -236
- package/.framework/src/components/ui/native-select.tsx +85 -86
- package/.framework/src/components/ui/navigation-menu.tsx +166 -156
- package/.framework/src/components/ui/pagination.tsx +131 -141
- package/.framework/src/components/ui/popover.tsx +125 -128
- package/.framework/src/components/ui/progress.tsx +47 -44
- package/.framework/src/components/ui/radio-group.tsx +60 -55
- package/.framework/src/components/ui/resizable.tsx +85 -72
- package/.framework/src/components/ui/scroll-area.tsx +57 -58
- package/.framework/src/components/ui/select.tsx +182 -169
- package/.framework/src/components/ui/separator.tsx +42 -43
- package/.framework/src/components/ui/sheet.tsx +170 -159
- package/.framework/src/components/ui/sidebar.tsx +395 -398
- package/.framework/src/components/ui/skeleton.tsx +42 -43
- package/.framework/src/components/ui/slider.tsx +61 -44
- package/.framework/src/components/ui/sonner.tsx +44 -44
- package/.framework/src/components/ui/spinner.tsx +47 -42
- package/.framework/src/components/ui/switch.tsx +56 -42
- package/.framework/src/components/ui/table-primitives.tsx +272 -132
- package/.framework/src/components/ui/table.tsx +140 -142
- package/.framework/src/components/ui/tabs.tsx +110 -93
- package/.framework/src/components/ui/textarea.tsx +43 -44
- package/.framework/src/components/ui/toggle-group.tsx +87 -71
- package/.framework/src/components/ui/toggle.tsx +56 -56
- package/.framework/src/components/ui/tooltip.tsx +99 -85
- package/.framework/src/contexts/AppContext.tsx +166 -114
- package/.framework/src/contexts/AuthContext.tsx +232 -137
- package/.framework/src/hooks/use-mobile.ts +43 -44
- package/.framework/src/hooks/useApi.ts +185 -172
- package/.framework/src/hooks/useAppPath.ts +31 -29
- package/.framework/src/hooks/useApps.ts +77 -42
- package/.framework/src/hooks/useEntityList.ts +66 -29
- package/.framework/src/hooks/useEntityRecord.ts +76 -32
- package/.framework/src/hooks/useForm.ts +62 -30
- package/.framework/src/hooks/useListSchema.ts +60 -43
- package/.framework/src/hooks/useSchemaRecord.ts +115 -95
- package/.framework/src/lib/api.ts +258 -134
- package/.framework/src/lib/registration.ts +181 -0
- package/.framework/src/lib/supabase.ts +118 -81
- package/.framework/src/lib/utils.ts +266 -266
- package/.framework/src/main.tsx +43 -44
- package/.framework/src/pages/DashboardPage.tsx +44 -43
- package/.framework/src/pages/NoAppPage.tsx +50 -0
- package/.framework/src/pages/NotFoundPage.tsx +32 -29
- package/.framework/src/pages/SetupPage.tsx +34 -33
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
- package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
- package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
- package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
- package/.framework/src/pages/admin/AppsPage.tsx +45 -42
- package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
- package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
- package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
- package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
- package/.framework/src/pages/admin/LogsPage.tsx +87 -137
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
- package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
- package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
- package/.framework/src/pages/admin/RolesPage.tsx +47 -164
- package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
- package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
- package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
- package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
- package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
- package/.framework/src/pages/admin/TimersPage.tsx +44 -42
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
- package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
- package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
- package/.framework/src/pages/admin/TypesPage.tsx +45 -42
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
- package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
- package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
- package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
- package/.framework/src/pages/auth/LoginPage.tsx +38 -32
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
- package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
- package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
- package/.framework/src/types/auth.ts +101 -93
- package/.framework/src/types/types.ts +283 -262
- package/.framework/templates/project.json +87 -0
- package/.framework/templates/spine.config.neutral.json +7 -0
- package/.framework/tests/api/api-surface.test.ts +381 -0
- package/.framework/tests/fixtures/seed.ts +427 -0
- package/.framework/tests/fixtures/teardown.ts +228 -0
- package/.framework/tests/reporter.ts +351 -0
- package/.framework/tests/setup.ts +135 -0
- package/.framework/tests/ui/ui-sweep.ts +278 -0
- package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
- package/.framework/tests/unit/agent-runner.test.ts +2389 -0
- package/.framework/tests/unit/ai-interactions.test.ts +81 -0
- package/.framework/tests/unit/app-manifest.test.ts +359 -0
- package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
- package/.framework/tests/unit/cil-determinism.test.ts +85 -0
- package/.framework/tests/unit/core-isolation.test.ts +153 -0
- package/.framework/tests/unit/funnel-signals.test.ts +135 -0
- package/.framework/tests/unit/install-app.test.ts +1759 -0
- package/.framework/tests/unit/invites-security.test.ts +572 -0
- package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
- package/.framework/tests/unit/kb-search.test.ts +119 -0
- package/.framework/tests/unit/migrate.test.ts +509 -0
- package/.framework/tests/unit/notify.test.ts +136 -0
- package/.framework/tests/unit/permissions.test.ts +269 -0
- package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
- package/.framework/tests/unit/principal-cache.test.ts +138 -0
- package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
- package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
- package/.framework/tests/unit/schema-utils.test.ts +225 -0
- package/.framework/tests/unit/trigger-engine.test.ts +513 -0
- package/.framework/tests/unit/validate-app.test.ts +527 -0
- package/README.md +34 -3
- package/bin/spine-framework.cjs +1 -0
- package/config/tailwind.config.cjs +7 -0
- package/config/tsconfig.functions.json +42 -0
- package/config/tsconfig.json +37 -9
- package/config/vite.config.ts +31 -2
- package/netlify.toml +31 -3
- package/package.json +46 -29
- package/scripts/assemble-frontend.sh +127 -44
- package/scripts/assemble-functions.sh +127 -29
- package/scripts/boundary-check.sh +6 -2
- package/scripts/build-manifest.sh +24 -68
- package/scripts/checksum-manifest.mts +345 -0
- package/scripts/dev-clean.sh +86 -0
- package/scripts/dev-netlify.sh +49 -0
- package/scripts/netlify-dev-wrapper.sh +2 -0
- package/scripts/verify-install.ts +358 -0
- package/scripts/verify-integrity.sh +21 -57
- package/scripts/verify-manifest.mts +305 -0
- package/templates/project/gitignore +45 -0
- package/{config → templates/project}/package-lock.json +22335 -9366
- package/vitest.config.ts +46 -0
- package/.framework/public/spine.config.json +0 -91
- package/config/deno.lock +0 -108
- package/config/tsconfig.node.tsbuildinfo +0 -1
- package/config/tsconfig.tsbuildinfo +0 -1
- package/config/vite.config.d.ts +0 -2
- package/custom/.devin/AGENT.md +0 -357
- package/custom/.devin/skills/install-app/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
- package/custom/.devin/workflows/app-install.yaml +0 -83
- package/custom/README.md +0 -79
- package/docs/README.md +0 -15
- package/scripts/app-install-cli.ts +0 -286
- package/scripts/check-core-integrity.sh +0 -82
- package/scripts/ingest-chunks.cjs +0 -202
- package/scripts/kb-chunk-parser.cjs +0 -312
- package/scripts/kb-chunk-parser.ts +0 -330
- package/scripts/kb-ingest-docs.ts +0 -203
- package/scripts/load-test-app-install.ts +0 -484
- package/scripts/test-login.js +0 -33
- package/spine.config.json +0 -91
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Sidebar layout module entry point"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Import dependencies and export Sidebar components and navigation constants"]
|
|
4
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="module exports, imports, and navigation constants" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Sets up the sidebar module and declares navigation arrays" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="engineers"]
|
|
10
|
+
|
|
1
11
|
|
|
2
12
|
|
|
3
13
|
|
|
@@ -5,21 +15,6 @@
|
|
|
5
15
|
|
|
6
16
|
|
|
7
17
|
|
|
8
|
-
// CIL[BEGIN chunk_id="sidebar_moduleheader_1783929861" type="module_header" identity="imports" parent="none"]
|
|
9
|
-
// CIL[DOC-MACRO purpose="Import React hooks, router, auth, UI components and navigation icons"]
|
|
10
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide all dependencies for sidebar navigation system"]
|
|
11
|
-
// CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
12
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="React hooks, router, auth, UI components, icons" errors="none" side_effects="none"]
|
|
13
|
-
// CIL[DOC-MICRO logic_summary="Imports useState, Link, useLocation, useAuth, Popover components and 20+ Lucide icons" notable_decisions="[]"]
|
|
14
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
15
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
16
|
-
// CIL[DOC-AUDIENCE audience="developer"]
|
|
17
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
18
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
19
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
20
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
21
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
22
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
23
18
|
import { useState } from 'react'
|
|
24
19
|
import { Link, useLocation } from 'react-router-dom'
|
|
25
20
|
import { useAuth } from '../../contexts/AuthContext'
|
|
@@ -51,44 +46,66 @@ import {
|
|
|
51
46
|
Cpu,
|
|
52
47
|
BookOpen
|
|
53
48
|
} from 'lucide-react'
|
|
54
|
-
// CIL[
|
|
55
|
-
// CIL[
|
|
56
|
-
// CIL[DOC-
|
|
57
|
-
// CIL[DOC-
|
|
58
|
-
// CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
59
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="SidebarProps interface" errors="none" side_effects="none"]
|
|
60
|
-
// CIL[DOC-MICRO logic_summary="Interface with open state and close callback for mobile sidebar" notable_decisions="[]"]
|
|
61
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
62
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
63
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
64
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
65
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
66
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
49
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Sidebar layout module entry point'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
50
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
51
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
52
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
67
53
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
68
54
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
55
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
56
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarprops:interface" type="interface" identity="sidebarprops" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
57
|
+
// CIL[DOC-MACRO purpose="Define Sidebar component props"]
|
|
58
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Type-safe contract for Sidebar open state and close callback"]
|
|
59
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
60
|
+
// CIL[DOC-CONTRACT inputs="open boolean and onClose callback" outputs="SidebarProps interface" errors="none" side_effects="none"]
|
|
61
|
+
// CIL[DOC-MICRO logic_summary="Declares open and onClose fields for the Sidebar shell" notable_decisions="[]"]
|
|
62
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
63
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
69
64
|
interface SidebarProps {
|
|
70
65
|
open: boolean
|
|
71
66
|
onClose: () => void
|
|
72
67
|
}
|
|
73
|
-
// CIL[
|
|
74
|
-
// CIL[
|
|
75
|
-
// CIL[DOC-
|
|
76
|
-
// CIL[DOC-
|
|
77
|
-
// CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
78
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="navigation constants arrays" errors="none" side_effects="none"]
|
|
79
|
-
// CIL[DOC-MICRO logic_summary="Main nav, configs, observability, and runtime entity navigation arrays with icons" notable_decisions="[]"]
|
|
80
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
81
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
82
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
83
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
84
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
85
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
68
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define Sidebar component props'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
69
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
70
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
71
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
86
72
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
87
73
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
74
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarprops:interface"]
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:navigation:constant" type="constant" identity="navigation" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
79
|
+
// CIL[DOC-MACRO purpose="Primary navigation links for the sidebar"]
|
|
80
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide top-level navigation item data"]
|
|
81
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
82
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="array of navigation entries" errors="none" side_effects="none"]
|
|
83
|
+
// CIL[DOC-MICRO logic_summary="Static constant array of top-level navigation objects with name, href, and icon" notable_decisions="[]"]
|
|
84
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
85
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
88
86
|
const navigation = [
|
|
89
87
|
{ name: 'Dashboard', href: '/spine-framework/admin/configs/types', icon: Home },
|
|
90
88
|
]
|
|
89
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Primary navigation links for the sidebar'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
90
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
91
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
92
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
93
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
94
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
95
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:navigation:constant"]
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
91
99
|
|
|
100
|
+
|
|
101
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:configsnavigation:constant" type="constant" identity="configsnavigation" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
102
|
+
// CIL[DOC-MACRO purpose="Configuration section navigation links"]
|
|
103
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide navigation data for the admin configuration section"]
|
|
104
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
105
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="array of config navigation entries" errors="none" side_effects="none"]
|
|
106
|
+
// CIL[DOC-MICRO logic_summary="Static array of config navigation items with dividers and icons" notable_decisions="[]"]
|
|
107
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
108
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
92
109
|
const configsNavigation = [
|
|
93
110
|
{ name: 'Item Types', href: '/spine-framework/admin/configs/types', icon: Box },
|
|
94
111
|
{ divider: true },
|
|
@@ -106,58 +123,131 @@ const configsNavigation = [
|
|
|
106
123
|
{ name: 'API Keys', href: '/spine-framework/admin/configs/api-keys', icon: Key },
|
|
107
124
|
{ name: 'Deliveries', href: '/spine-framework/admin/configs/deliveries', icon: Truck },
|
|
108
125
|
] as const
|
|
126
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Configuration section navigation links'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
127
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
128
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
129
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
130
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
131
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
132
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:configsnavigation:constant"]
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
109
137
|
|
|
138
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:observabilitynavigation:constant" type="constant" identity="observabilitynavigation" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
139
|
+
// CIL[DOC-MACRO purpose="Observability section navigation links"]
|
|
140
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide navigation data for the observability section"]
|
|
141
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
142
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="array of observability navigation entries" errors="none" side_effects="none"]
|
|
143
|
+
// CIL[DOC-MICRO logic_summary="Static array of observability navigation items with icons" notable_decisions="[]"]
|
|
144
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
145
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
110
146
|
const observabilityNavigation = [
|
|
111
147
|
{ name: 'Dashboard', href: '/spine-framework/admin/observability', icon: BarChart3 },
|
|
112
148
|
{ name: 'Alerts', href: '/spine-framework/admin/observability/alerts', icon: Bell },
|
|
113
149
|
{ name: 'Executions', href: '/spine-framework/admin/observability/executions', icon: FlaskConical },
|
|
114
150
|
{ name: 'Logs', href: '/spine-framework/admin/observability/logs', icon: FileText },
|
|
115
151
|
]
|
|
152
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Observability section navigation links'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
153
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
154
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
155
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
156
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
157
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
158
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:observabilitynavigation:constant"]
|
|
159
|
+
|
|
116
160
|
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:runtimeentities:constant" type="constant" identity="runtimeentities" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
165
|
+
// CIL[DOC-MACRO purpose="Runtime entity navigation links"]
|
|
166
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide navigation data for runtime entities section"]
|
|
167
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
168
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="array of runtime entity navigation entries" errors="none" side_effects="none"]
|
|
169
|
+
// CIL[DOC-MICRO logic_summary="Static array of runtime entity navigation items with icons" notable_decisions="[]"]
|
|
170
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
171
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
117
172
|
const runtimeEntities = [
|
|
118
173
|
{ name: 'Items', href: '/spine-framework/admin/runtime/items', icon: Box },
|
|
119
174
|
{ name: 'Accounts', href: '/spine-framework/admin/runtime/accounts', icon: Building2 },
|
|
120
175
|
{ name: 'People', href: '/spine-framework/admin/runtime/people', icon: User },
|
|
121
176
|
{ name: 'Person Types', href: '/spine-framework/admin/runtime/person-types', icon: Users },
|
|
122
177
|
]
|
|
178
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Runtime entity navigation links'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
179
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
180
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
181
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
182
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
183
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
184
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:runtimeentities:constant"]
|
|
185
|
+
|
|
186
|
+
|
|
123
187
|
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:kbenginenavigation:constant" type="constant" identity="kbenginenavigation" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
191
|
+
// CIL[DOC-MACRO purpose="Knowledge base engine navigation links"]
|
|
192
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide navigation data for the KB engine section"]
|
|
193
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
194
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="array of KB engine navigation entries" errors="none" side_effects="none"]
|
|
195
|
+
// CIL[DOC-MICRO logic_summary="Static array of KB engine navigation items with icons" notable_decisions="[]"]
|
|
196
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
197
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
124
198
|
const kbEngineNavigation = [
|
|
125
199
|
{ name: 'Knowledge Base', href: '/spine-framework/admin/kb/kb-spine-public', icon: BookOpen },
|
|
126
200
|
{ name: 'Embeddings', href: '/spine-framework/admin/kb/embeddings', icon: Cpu },
|
|
127
201
|
]
|
|
128
|
-
// CIL[
|
|
129
|
-
// CIL[
|
|
130
|
-
// CIL[DOC-
|
|
131
|
-
// CIL[DOC-
|
|
132
|
-
// CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/migrations/025_retype_threads_messages.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
133
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="concatenated class string" errors="none" side_effects="none"]
|
|
134
|
-
// CIL[DOC-MICRO logic_summary="Filters Boolean values and joins with spaces for Tailwind CSS" notable_decisions="[]"]
|
|
135
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
136
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
137
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 2. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/migrations/025_retype_threads_messages.sql, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
138
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 2."]
|
|
139
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
140
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
202
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Knowledge base engine navigation links'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
203
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
204
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
205
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
141
206
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
142
207
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
208
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:kbenginenavigation:constant"]
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:classnames:function" type="function" identity="classnames" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
212
|
+
// CIL[DOC-MACRO purpose="Conditionally combine CSS class strings"]
|
|
213
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Filter falsy class values and join remaining classes"]
|
|
214
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
215
|
+
// CIL[DOC-CONTRACT inputs="classes: (string | false | undefined)[]" outputs="space-delimited className string" errors="none" side_effects="none"]
|
|
216
|
+
// CIL[DOC-MICRO logic_summary="Filters truthy values from the input array and joins them with spaces" notable_decisions="[]"]
|
|
217
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
218
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
219
|
+
// CIL[DOC-NOTE type="param" content="classes: (string | false | undefined)[] - class values to combine"]
|
|
143
220
|
function classNames(...classes: (string | false | undefined)[]) {
|
|
144
221
|
return classes.filter(Boolean).join(' ')
|
|
145
222
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
// CIL[DOC-
|
|
152
|
-
// CIL[DOC-
|
|
153
|
-
// CIL[DOC-
|
|
154
|
-
// CIL[DOC-
|
|
155
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, \."]
|
|
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."]
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Conditionally combine CSS class strings'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
229
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
230
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
231
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
159
232
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
160
233
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
234
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:classnames:function"]
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebar:function" type="function" identity="sidebar" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
242
|
+
// CIL[DOC-MACRO purpose="Render responsive sidebar shell"]
|
|
243
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Display a mobile-friendly sidebar overlay with close controls"]
|
|
244
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
245
|
+
// CIL[DOC-CONTRACT inputs="open: boolean, onClose: () => void" outputs="JSX sidebar overlay" errors="none" side_effects="renders DOM elements and attaches click handlers"]
|
|
246
|
+
// CIL[DOC-MICRO logic_summary="Renders a fixed overlay and panel when open is true, delegating content to SidebarContent" notable_decisions="[]"]
|
|
247
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
248
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
249
|
+
// CIL[DOC-NOTE type="param" content="open: boolean - whether the sidebar is open"]
|
|
250
|
+
// CIL[DOC-NOTE type="param" content="onClose: () => void - callback to close the sidebar"]
|
|
161
251
|
export function Sidebar({ open, onClose }: SidebarProps) {
|
|
162
252
|
return (
|
|
163
253
|
<>
|
|
@@ -180,8 +270,9 @@ export function Sidebar({ open, onClose }: SidebarProps) {
|
|
|
180
270
|
</button>
|
|
181
271
|
</div>
|
|
182
272
|
<div className="h-0 flex-1 overflow-y-auto pt-5">
|
|
183
|
-
<div className="flex flex-shrink-0 items-center px-4">
|
|
184
|
-
<
|
|
273
|
+
<div className="flex flex-shrink-0 items-center gap-2 px-4">
|
|
274
|
+
<img src="/spine-logo.svg" alt="Spine Framework" className="h-8 w-auto" />
|
|
275
|
+
<span className="text-xl font-bold text-sidebar-foreground whitespace-nowrap">Spine Framework</span>
|
|
185
276
|
</div>
|
|
186
277
|
<SidebarContent onNavClick={onClose} />
|
|
187
278
|
</div>
|
|
@@ -192,39 +283,42 @@ export function Sidebar({ open, onClose }: SidebarProps) {
|
|
|
192
283
|
</>
|
|
193
284
|
)
|
|
194
285
|
}
|
|
195
|
-
// CIL[
|
|
196
|
-
// CIL[
|
|
197
|
-
// CIL[DOC-
|
|
198
|
-
// CIL[DOC-
|
|
199
|
-
// CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[]"]
|
|
200
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="SidebarContentProps interface" errors="none" side_effects="none"]
|
|
201
|
-
// CIL[DOC-MICRO logic_summary="Interface with optional navigation click callback" notable_decisions="[]"]
|
|
202
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
203
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
204
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
205
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
206
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
207
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
286
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render responsive sidebar shell'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
287
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
288
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
289
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
208
290
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
209
291
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
292
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebar:function"]
|
|
293
|
+
|
|
294
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarcontentprops:interface" type="interface" identity="sidebarcontentprops" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
295
|
+
// CIL[DOC-MACRO purpose="Define SidebarContent component props"]
|
|
296
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Type-safe contract for optional navigation click handler"]
|
|
297
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
298
|
+
// CIL[DOC-CONTRACT inputs="optional onNavClick callback" outputs="SidebarContentProps interface" errors="none" side_effects="none"]
|
|
299
|
+
// CIL[DOC-MICRO logic_summary="Declares an optional onNavClick callback for navigation items" notable_decisions="[]"]
|
|
300
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
301
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
210
302
|
interface SidebarContentProps {
|
|
211
303
|
onNavClick?: () => void
|
|
212
304
|
}
|
|
213
|
-
// CIL[
|
|
214
|
-
// CIL[
|
|
215
|
-
// CIL[DOC-
|
|
216
|
-
// CIL[DOC-
|
|
217
|
-
// CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[]"]
|
|
218
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="JSX navigation with collapsible sections" errors="none" side_effects="Manages section state, calls logout, triggers navigation"]
|
|
219
|
-
// CIL[DOC-MICRO logic_summary="Collapsible admin sections (configs, data, observability) with role-based access and user popover" notable_decisions="[]"]
|
|
220
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
221
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
222
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
223
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
224
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
225
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
305
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define SidebarContent component props'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
306
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
307
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
308
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
226
309
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
227
310
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
311
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarcontentprops:interface"]
|
|
312
|
+
|
|
313
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarcontent:function" type="function" identity="sidebarcontent" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
|
|
314
|
+
// CIL[DOC-MACRO purpose="Render sidebar navigation content"]
|
|
315
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Display navigation sections, user info, and logout action"]
|
|
316
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
|
|
317
|
+
// CIL[DOC-CONTRACT inputs="onNavClick?: () => void" outputs="JSX sidebar navigation content" errors="none" side_effects="renders DOM elements, uses React hooks and auth context"]
|
|
318
|
+
// CIL[DOC-MICRO logic_summary="Builds navigation groups with collapsible sections and a user popover; uses useLocation, useAuth, and useState" notable_decisions="[]"]
|
|
319
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
320
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
321
|
+
// CIL[DOC-NOTE type="param" content="onNavClick?: () => void - optional click handler for navigation links"]
|
|
228
322
|
export function SidebarContent({ onNavClick }: SidebarContentProps) {
|
|
229
323
|
const location = useLocation()
|
|
230
324
|
const { user, logout } = useAuth()
|
|
@@ -477,4 +571,10 @@ export function SidebarContent({ onNavClick }: SidebarContentProps) {
|
|
|
477
571
|
</nav>
|
|
478
572
|
)
|
|
479
573
|
}
|
|
480
|
-
// CIL[
|
|
574
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render sidebar navigation content'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
|
|
575
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
576
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
577
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
578
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
579
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
580
|
+
// CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarcontent:function"]
|
|
@@ -1,24 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// CIL[
|
|
4
|
-
// CIL[DOC-
|
|
5
|
-
// CIL[DOC-
|
|
6
|
-
// CIL[DOC-
|
|
7
|
-
// CIL[DOC-
|
|
8
|
-
// CIL[DOC-MICRO logic_summary="Imports React, UI components, defines DataDetailHeaderProps" notable_decisions="[]"]
|
|
9
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/runtime/DataDetailHeader.tsx"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="React component module for the data detail header"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Defines the DataDetailHeaderProps interface and the DataDetailHeader presentational component"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="runtime" layer="presentation" related_files=".framework/src/components/ui/button.tsx"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="N/A" outputs="DataDetailHeaderProps and DataDetailHeader exports" errors="N/A" side_effects="N/A"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Imports dependencies, declares the props interface, and exports the detail header component" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
10
8
|
// CIL[DOC-STABILITY stability="stable"]
|
|
11
|
-
// CIL[DOC-AUDIENCE audience="
|
|
12
|
-
|
|
13
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
14
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
15
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
16
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
17
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="runtime-ui"]
|
|
10
|
+
|
|
18
11
|
import React from 'react'
|
|
19
12
|
import { Button } from '../ui/button'
|
|
20
13
|
import * as Icons from 'lucide-react'
|
|
21
14
|
|
|
15
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React component module for the data detail header'; No verified external callers; imports: .framework/src/components/ui/button.tsx"]
|
|
16
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
17
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
18
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
19
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
20
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
21
|
+
// CIL[END stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:module_header:module_header"]
|
|
22
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:datadetailheaderprops:interface" type="interface" identity="DataDetailHeaderProps" parent="~/.framework/src/components/runtime/DataDetailHeader.tsx"]
|
|
23
|
+
// CIL[DOC-MACRO purpose="Defines the prop contract for the DataDetailHeader component"]
|
|
24
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Specifies all data and callback properties required to render and control the detail header"]
|
|
25
|
+
// CIL[DOC-CONTEXT module="runtime" layer="type" related_files=".framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/ui/button.tsx"]
|
|
26
|
+
// CIL[DOC-CONTRACT inputs="N/A" outputs="DataDetailHeaderProps TypeScript interface" errors="N/A" side_effects="N/A"]
|
|
27
|
+
// CIL[DOC-MICRO logic_summary="Interface with entity, icon, title, editing flags, and action handler props" notable_decisions="[]"]
|
|
28
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
29
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
22
30
|
interface DataDetailHeaderProps {
|
|
23
31
|
entity: string
|
|
24
32
|
icon: string
|
|
@@ -32,21 +40,32 @@ interface DataDetailHeaderProps {
|
|
|
32
40
|
saving?: boolean
|
|
33
41
|
deleting?: boolean
|
|
34
42
|
}
|
|
35
|
-
// CIL[
|
|
36
|
-
// CIL[
|
|
37
|
-
// CIL[DOC-
|
|
38
|
-
// CIL[DOC-
|
|
39
|
-
// CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/components/ui/table-primitives.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
40
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="JSX header" errors="none" side_effects="calls callbacks"]
|
|
41
|
-
// CIL[DOC-MICRO logic_summary="Renders icon, title, and conditional edit/save/delete buttons" notable_decisions="[]"]
|
|
42
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
43
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
44
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/table-primitives.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
45
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
46
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
47
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
43
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Defines the prop contract for the DataDetailHeader component'; No verified external callers; imports: .framework/src/components/ui/button.tsx"]
|
|
44
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
45
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
46
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
48
47
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
49
48
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
49
|
+
// CIL[END stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:datadetailheaderprops:interface"]
|
|
50
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:datadetailheader:function" type="function" identity="DataDetailHeader" parent="~/.framework/src/components/runtime/DataDetailHeader.tsx"]
|
|
51
|
+
// CIL[DOC-MACRO purpose="Render a detail view header with icon, title, entity label, and action buttons"]
|
|
52
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Display the entity header and dispatch user actions to the provided callback props"]
|
|
53
|
+
// CIL[DOC-CONTEXT module="runtime" layer="presentation" related_files=".framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/ui/button.tsx"]
|
|
54
|
+
// CIL[DOC-CONTRACT inputs="entity, icon, title, isEditing, isCreating, onEdit, onSave, onCancel, onDelete?, saving?, deleting?" outputs="JSX.Element" errors="N/A" side_effects="Invokes onEdit, onSave, onCancel, and onDelete callbacks when buttons are clicked"]
|
|
55
|
+
// CIL[DOC-MICRO logic_summary="Resolves the lucide icon, renders title and entity, conditionally shows save/cancel or edit/delete controls" notable_decisions="[]"]
|
|
56
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
57
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
58
|
+
// CIL[DOC-NOTE type="param" content="entity: string - entity collection or label shown in the header">
|
|
59
|
+
// CIL[DOC-NOTE type="param" content="icon: string - lucide-react icon key to display">
|
|
60
|
+
// CIL[DOC-NOTE type="param" content="title: string - page title rendered in the header">
|
|
61
|
+
// CIL[DOC-NOTE type="param" content="isEditing: boolean - whether the detail form is in editing mode">
|
|
62
|
+
// CIL[DOC-NOTE type="param" content="isCreating: boolean - whether a new record is being created">
|
|
63
|
+
// CIL[DOC-NOTE type="param" content="onEdit: () => void - callback to enter edit mode">
|
|
64
|
+
// CIL[DOC-NOTE type="param" content="onSave: () => void - callback to save the current record">
|
|
65
|
+
// CIL[DOC-NOTE type="param" content="onCancel: () => void - callback to cancel editing">
|
|
66
|
+
// CIL[DOC-NOTE type="param" content="onDelete?: () => void - optional callback to delete the record">
|
|
67
|
+
// CIL[DOC-NOTE type="param" content="saving?: boolean - optional flag indicating a save is in progress">
|
|
68
|
+
// CIL[DOC-NOTE type="param" content="deleting?: boolean - optional flag indicating a delete is in progress">
|
|
50
69
|
export function DataDetailHeader({
|
|
51
70
|
entity,
|
|
52
71
|
icon,
|
|
@@ -106,4 +125,10 @@ export function DataDetailHeader({
|
|
|
106
125
|
</div>
|
|
107
126
|
)
|
|
108
127
|
}
|
|
109
|
-
// CIL[
|
|
128
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render a detail view header with icon, title, entity label, and action buttons'; No verified external callers; imports: .framework/src/components/ui/button.tsx"]
|
|
129
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
130
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
131
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
132
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
133
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
134
|
+
// CIL[END stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:datadetailheader:function"]
|