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,18 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
// CIL[
|
|
3
|
-
// CIL[DOC-
|
|
4
|
-
// CIL[DOC-
|
|
5
|
-
// CIL[DOC-
|
|
6
|
-
// CIL[DOC-
|
|
7
|
-
// CIL[DOC-
|
|
1
|
+
|
|
2
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
|
|
3
|
+
// CIL[DOC-MACRO purpose="Provide the CIL graph visualization page for exploring file and chunk call graphs."]
|
|
4
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render an interactive React Flow graph, switch view modes, and display node details."]
|
|
5
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts"]
|
|
6
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="rendered admin page" errors="none" side_effects="fetches graph data from API, updates browser UI state"]
|
|
7
|
+
// CIL[DOC-MICRO logic_summary="Imports dependencies and PageInstructions component for the admin CIL graph page." notable_decisions="[]"]
|
|
8
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
9
|
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
-
// CIL[DOC-AUDIENCE audience="
|
|
10
|
-
|
|
11
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
12
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
13
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
14
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
15
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
10
|
+
// CIL[DOC-AUDIENCE audience="admin-ui-developers"]
|
|
11
|
+
|
|
16
12
|
import { useEffect, useState, useCallback } from 'react'
|
|
17
13
|
import { useParams } from 'react-router-dom'
|
|
18
14
|
import {
|
|
@@ -47,103 +43,110 @@ import { RefreshCw, ChevronRight, ZoomIn, Layers } from 'lucide-react'
|
|
|
47
43
|
|
|
48
44
|
|
|
49
45
|
import { PageInstructions } from '../../../components/admin/PageInstructions'
|
|
50
|
-
// CIL[
|
|
51
|
-
// CIL[
|
|
52
|
-
// CIL[DOC-
|
|
53
|
-
// CIL[DOC-
|
|
54
|
-
// CIL[DOC-CONTEXT module="cortex:cil-graph" layer="presentation" related_files="[\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
55
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="NODE_WIDTH number" errors="none" side_effects="none"]
|
|
56
|
-
// CIL[DOC-MICRO logic_summary="Declares a fixed width of 180 pixels for chunk nodes." notable_decisions="[]"]
|
|
57
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
58
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
59
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
60
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
61
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
62
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
46
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Provide the CIL graph visualization page for exploring file and chunk call graphs.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
47
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
48
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
49
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
63
50
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
64
51
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
65
|
-
|
|
66
|
-
// CIL[
|
|
67
|
-
// CIL[
|
|
68
|
-
// CIL[DOC-
|
|
69
|
-
// CIL[DOC-
|
|
70
|
-
// CIL[DOC-
|
|
71
|
-
// CIL[DOC-
|
|
72
|
-
// CIL[DOC-
|
|
73
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
52
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:module_header:module_header"]
|
|
53
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:node_width:constant" type="constant" identity="NODE_WIDTH" parent="none"]
|
|
54
|
+
// CIL[DOC-MACRO purpose="Define the default width for graph nodes."]
|
|
55
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a constant node width used by layout and rendering."]
|
|
56
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
57
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="NODE_WIDTH numeric constant" errors="none" side_effects="none"]
|
|
58
|
+
// CIL[DOC-MICRO logic_summary="Declares the NODE_WIDTH constant value." notable_decisions="[]"]
|
|
59
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
74
60
|
// CIL[DOC-STABILITY stability="stable"]
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
// CIL[DOC-VECTOR type="
|
|
78
|
-
// CIL[DOC-VECTOR type="
|
|
61
|
+
|
|
62
|
+
const NODE_WIDTH = 180
|
|
63
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the default width for graph nodes.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
64
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
65
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
66
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
79
67
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
80
68
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
81
|
-
|
|
82
|
-
// CIL[
|
|
83
|
-
// CIL[
|
|
84
|
-
// CIL[DOC-
|
|
85
|
-
// CIL[DOC-
|
|
86
|
-
// CIL[DOC-
|
|
87
|
-
// CIL[DOC-
|
|
88
|
-
// CIL[DOC-
|
|
89
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
69
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:node_width:constant"]
|
|
70
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:node_height:constant" type="constant" identity="NODE_HEIGHT" parent="none"]
|
|
71
|
+
// CIL[DOC-MACRO purpose="Define the default height for graph nodes."]
|
|
72
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a constant node height used by layout and rendering."]
|
|
73
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
74
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="NODE_HEIGHT numeric constant" errors="none" side_effects="none"]
|
|
75
|
+
// CIL[DOC-MICRO logic_summary="Declares the NODE_HEIGHT constant value." notable_decisions="[]"]
|
|
76
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
90
77
|
// CIL[DOC-STABILITY stability="stable"]
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
// CIL[DOC-VECTOR type="
|
|
94
|
-
// CIL[DOC-VECTOR type="
|
|
78
|
+
|
|
79
|
+
const NODE_HEIGHT = 60
|
|
80
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the default height for graph nodes.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
81
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
82
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
83
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
95
84
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
96
85
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
97
|
-
|
|
98
|
-
// CIL[
|
|
99
|
-
// CIL[
|
|
100
|
-
// CIL[DOC-
|
|
101
|
-
// CIL[DOC-
|
|
102
|
-
// CIL[DOC-
|
|
103
|
-
// CIL[DOC-
|
|
104
|
-
// CIL[DOC-
|
|
105
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
86
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:node_height:constant"]
|
|
87
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:file_width:constant" type="constant" identity="FILE_WIDTH" parent="none"]
|
|
88
|
+
// CIL[DOC-MACRO purpose="Define the default width for file nodes in the graph."]
|
|
89
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a constant file node width used by layout and rendering."]
|
|
90
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
91
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="FILE_WIDTH numeric constant" errors="none" side_effects="none"]
|
|
92
|
+
// CIL[DOC-MICRO logic_summary="Declares the FILE_WIDTH constant value." notable_decisions="[]"]
|
|
93
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
106
94
|
// CIL[DOC-STABILITY stability="stable"]
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
// CIL[DOC-VECTOR type="
|
|
110
|
-
// CIL[DOC-VECTOR type="
|
|
95
|
+
|
|
96
|
+
const FILE_WIDTH = 200
|
|
97
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the default width for file nodes in the graph.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
98
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
99
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
100
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
111
101
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
112
102
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
103
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:file_width:constant"]
|
|
104
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:file_height:constant" type="constant" identity="FILE_HEIGHT" parent="none"]
|
|
105
|
+
// CIL[DOC-MACRO purpose="Define the default height for file nodes in the graph."]
|
|
106
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a constant file node height used by layout and rendering."]
|
|
107
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
108
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="FILE_HEIGHT numeric constant" errors="none" side_effects="none"]
|
|
109
|
+
// CIL[DOC-MICRO logic_summary="Declares the FILE_HEIGHT constant value." notable_decisions="[]"]
|
|
110
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
111
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
112
|
+
|
|
113
113
|
const FILE_HEIGHT = 40
|
|
114
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the default height for file nodes in the graph.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
115
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
116
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
117
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
118
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
119
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
120
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:file_height:constant"]
|
|
114
121
|
|
|
115
|
-
// CIL[
|
|
116
|
-
// CIL[
|
|
117
|
-
// CIL[DOC-
|
|
118
|
-
// CIL[DOC-
|
|
119
|
-
// CIL[DOC-CONTEXT module="cortex:cil-graph" layer="presentation" related_files="[]"]
|
|
122
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:viewmode:type" type="type" identity="ViewMode" parent="none"]
|
|
123
|
+
// CIL[DOC-MACRO purpose="Define the allowed graph view modes."]
|
|
124
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Constrain the viewMode state to files, chunks, or mixed display."]
|
|
125
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
120
126
|
// CIL[DOC-CONTRACT inputs="none" outputs="ViewMode union type" errors="none" side_effects="none"]
|
|
121
|
-
// CIL[DOC-MICRO logic_summary="
|
|
122
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.
|
|
127
|
+
// CIL[DOC-MICRO logic_summary="Declares a union type of three possible view modes." notable_decisions="[]"]
|
|
128
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
123
129
|
// CIL[DOC-STABILITY stability="stable"]
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
// CIL[DOC-VECTOR type="
|
|
127
|
-
// CIL[DOC-VECTOR type="
|
|
130
|
+
|
|
131
|
+
type ViewMode = 'files' | 'chunks' | 'mixed'
|
|
132
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the allowed graph view modes.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
133
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
134
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
135
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
128
136
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
129
137
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
130
|
-
|
|
138
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:viewmode:type"]
|
|
131
139
|
|
|
132
|
-
|
|
133
|
-
// CIL[BEGIN
|
|
134
|
-
// CIL[DOC-MACRO purpose="
|
|
135
|
-
// CIL[DOC-RESPONSIBILITY responsibility="
|
|
136
|
-
// CIL[DOC-CONTEXT module="
|
|
137
|
-
// CIL[DOC-CONTRACT inputs="
|
|
138
|
-
// CIL[DOC-MICRO logic_summary="Builds a dagre graph, sets
|
|
139
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.
|
|
140
|
+
|
|
141
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:layoutgraph:function" type="function" identity="layoutGraph" parent="none"]
|
|
142
|
+
// CIL[DOC-MACRO purpose="Apply a directed graph layout to React Flow nodes and edges."]
|
|
143
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Compute x/y positions for nodes using dagre and return positioned nodes with unchanged edges."]
|
|
144
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
145
|
+
// CIL[DOC-CONTRACT inputs="nodes: Node[], edges: Edge[]" outputs="{ nodes: Node[], edges: Edge[] }" errors="none" side_effects="none"]
|
|
146
|
+
// CIL[DOC-MICRO logic_summary="Builds a dagre graph, sets node sizes, runs the layout, and maps each node to a centered position." notable_decisions="[]"]
|
|
147
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
140
148
|
// CIL[DOC-STABILITY stability="stable"]
|
|
141
|
-
|
|
142
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
143
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
144
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
145
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
146
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
149
|
+
|
|
147
150
|
function layoutGraph(nodes: Node[], edges: Edge[]): { nodes: Node[]; edges: Edge[] } {
|
|
148
151
|
const g = new dagre.graphlib.Graph()
|
|
149
152
|
g.setDefaultEdgeLabel(() => ({}))
|
|
@@ -167,24 +170,27 @@ function layoutGraph(nodes: Node[], edges: Edge[]): { nodes: Node[]; edges: Edge
|
|
|
167
170
|
|
|
168
171
|
return { nodes: positionedNodes, edges }
|
|
169
172
|
}
|
|
173
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Apply a directed graph layout to React Flow nodes and edges.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
174
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
175
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
176
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
177
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
178
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
179
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:layoutgraph:function"]
|
|
180
|
+
|
|
181
|
+
|
|
170
182
|
|
|
171
183
|
|
|
172
184
|
|
|
173
|
-
// CIL[
|
|
174
|
-
// CIL[
|
|
175
|
-
// CIL[DOC-
|
|
176
|
-
// CIL[DOC-
|
|
177
|
-
// CIL[DOC-
|
|
178
|
-
// CIL[DOC-
|
|
179
|
-
// CIL[DOC-
|
|
180
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
185
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:chunk_type_colors:constant" type="constant" identity="CHUNK_TYPE_COLORS" parent="none"]
|
|
186
|
+
// CIL[DOC-MACRO purpose="Map chunk types to display colors for the graph legend and nodes."]
|
|
187
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a color palette used by nodeColor and the graph legend."]
|
|
188
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
189
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="Record<string, string> of chunk type colors" errors="none" side_effects="none"]
|
|
190
|
+
// CIL[DOC-MICRO logic_summary="Declares a lookup table of chunk type to hex color values." notable_decisions="[]"]
|
|
191
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
181
192
|
// CIL[DOC-STABILITY stability="stable"]
|
|
182
|
-
|
|
183
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
184
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
185
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
186
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
187
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
193
|
+
|
|
188
194
|
const CHUNK_TYPE_COLORS: Record<string, string> = {
|
|
189
195
|
function: '#6366F1',
|
|
190
196
|
class: '#8B5CF6',
|
|
@@ -195,45 +201,51 @@ const CHUNK_TYPE_COLORS: Record<string, string> = {
|
|
|
195
201
|
route: '#EF4444',
|
|
196
202
|
config: '#64748B',
|
|
197
203
|
}
|
|
198
|
-
|
|
199
|
-
// CIL[
|
|
200
|
-
// CIL[
|
|
201
|
-
// CIL[DOC-
|
|
202
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Return the appropriate color based on file, dead-code, or chunk type"]
|
|
203
|
-
// CIL[DOC-CONTEXT module="cortex:cil-graph" layer="presentation" related_files="[]"]
|
|
204
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="hex color string" errors="none" side_effects="none"]
|
|
205
|
-
// CIL[DOC-MICRO logic_summary="Returns slate for file nodes, gray for dead code, or CHUNK_TYPE_COLORS lookup with an indigo fallback." notable_decisions="['Falls back to indigo when chunk type has no mapped color']"]
|
|
206
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
207
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
208
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
209
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
210
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
211
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
204
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Map chunk types to display colors for the graph legend and nodes.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
205
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
206
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
207
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
212
208
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
213
209
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
210
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:chunk_type_colors:constant"]
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:nodecolor:function" type="function" identity="nodeColor" parent="none"]
|
|
216
|
+
// CIL[DOC-MACRO purpose="Resolve the display color for a graph node based on its data."]
|
|
217
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return a color string for React Flow nodes and the MiniMap."]
|
|
218
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
219
|
+
// CIL[DOC-CONTRACT inputs="node: Node" outputs="hex color string" errors="none" side_effects="none"]
|
|
220
|
+
// CIL[DOC-MICRO logic_summary="Chooses a dark slate color for files, a muted gray for dead code, or the chunk type color lookup." notable_decisions="[]"]
|
|
221
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
222
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
223
|
+
|
|
214
224
|
function nodeColor(node: Node): string {
|
|
215
225
|
if (node.data?.isFile) return '#1E293B'
|
|
216
226
|
if (node.data?.is_dead_code) return '#94A3B8'
|
|
217
227
|
return CHUNK_TYPE_COLORS[node.data?.chunk_type as string] || '#6366F1'
|
|
218
228
|
}
|
|
229
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Resolve the display color for a graph node based on its data.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
230
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
231
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
232
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
233
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
234
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
235
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:nodecolor:function"]
|
|
219
236
|
|
|
220
237
|
|
|
221
238
|
|
|
222
|
-
|
|
223
|
-
// CIL[BEGIN
|
|
224
|
-
// CIL[DOC-MACRO purpose="Describe the shape of the project graph
|
|
225
|
-
// CIL[DOC-RESPONSIBILITY responsibility="
|
|
226
|
-
// CIL[DOC-CONTEXT module="
|
|
227
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="ProjectGraph interface" errors="none" side_effects="none"]
|
|
228
|
-
// CIL[DOC-MICRO logic_summary="
|
|
229
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.
|
|
239
|
+
|
|
240
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:projectgraph:interface" type="interface" identity="ProjectGraph" parent="none"]
|
|
241
|
+
// CIL[DOC-MACRO purpose="Describe the shape of the CIL project graph payload."]
|
|
242
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Type the file and chunk nodes plus import and call edges returned by the graph API."]
|
|
243
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
244
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="ProjectGraph interface definition" errors="none" side_effects="none"]
|
|
245
|
+
// CIL[DOC-MICRO logic_summary="Defines nested file and chunk node arrays and import/call edge arrays with optional metadata." notable_decisions="[]"]
|
|
246
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
230
247
|
// CIL[DOC-STABILITY stability="stable"]
|
|
231
|
-
|
|
232
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
233
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
234
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
235
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
236
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
248
|
+
|
|
237
249
|
interface ProjectGraph {
|
|
238
250
|
nodes: {
|
|
239
251
|
files: any[]
|
|
@@ -244,22 +256,24 @@ interface ProjectGraph {
|
|
|
244
256
|
calls: { source_id: string; target_id: string; metadata?: any }[]
|
|
245
257
|
}
|
|
246
258
|
}
|
|
247
|
-
|
|
248
|
-
// CIL[
|
|
249
|
-
// CIL[
|
|
250
|
-
// CIL[DOC-
|
|
251
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Transform ProjectGraph into React Flow elements per view mode"]
|
|
252
|
-
// CIL[DOC-CONTEXT module="cortex:cil-graph" layer="presentation" related_files="[]"]
|
|
253
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="{nodes: Node[]; edges: Edge[]}" errors="none" side_effects="none"]
|
|
254
|
-
// CIL[DOC-MICRO logic_summary="Constructs file and chunk nodes with styling, adds import and call edges, and applies layoutGraph to position the flow graph." notable_decisions="['Dashed edges for imports','Separate branching for files/chunks/mixed views','Labels call edges with callee_name']"]
|
|
255
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
256
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
257
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
258
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
259
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
260
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
259
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Describe the shape of the CIL project graph payload.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
260
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
261
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
262
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
261
263
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
262
264
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
265
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:projectgraph:interface"]
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:buildflowgraph:function" type="function" identity="buildFlowGraph" parent="none"]
|
|
269
|
+
// CIL[DOC-MACRO purpose="Build React Flow nodes and edges from a CIL project graph."]
|
|
270
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Convert project graph files, chunks, imports, and calls into React Flow elements."]
|
|
271
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
272
|
+
// CIL[DOC-CONTRACT inputs="graph: ProjectGraph, viewMode: ViewMode" outputs="{ nodes: Node[], edges: Edge[] }" errors="none" side_effects="none"]
|
|
273
|
+
// CIL[DOC-MICRO logic_summary="Creates file and chunk nodes with styles and adds import/call edges for the selected view mode, then runs layoutGraph." notable_decisions="[]"]
|
|
274
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
275
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
276
|
+
|
|
263
277
|
function buildFlowGraph(graph: ProjectGraph, viewMode: ViewMode): { nodes: Node[]; edges: Edge[] } {
|
|
264
278
|
const nodes: Node[] = []
|
|
265
279
|
const edges: Edge[] = []
|
|
@@ -352,24 +366,26 @@ function buildFlowGraph(graph: ProjectGraph, viewMode: ViewMode): { nodes: Node[
|
|
|
352
366
|
|
|
353
367
|
return layoutGraph(nodes, edges)
|
|
354
368
|
}
|
|
369
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Build React Flow nodes and edges from a CIL project graph.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
370
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
371
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
372
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
373
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
374
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
375
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:buildflowgraph:function"]
|
|
355
376
|
|
|
356
377
|
|
|
357
378
|
|
|
358
|
-
|
|
359
|
-
// CIL[BEGIN
|
|
360
|
-
// CIL[DOC-MACRO purpose="Render
|
|
361
|
-
// CIL[DOC-RESPONSIBILITY responsibility="
|
|
362
|
-
// CIL[DOC-CONTEXT module="
|
|
363
|
-
// CIL[DOC-CONTRACT inputs="
|
|
364
|
-
// CIL[DOC-MICRO logic_summary="
|
|
365
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.
|
|
379
|
+
|
|
380
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:nodedetailpanel:function" type="function" identity="NodeDetailPanel" parent="none"]
|
|
381
|
+
// CIL[DOC-MACRO purpose="Render the inspector panel for a selected graph node."]
|
|
382
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Show file or chunk metadata and provide a link to the chunk contract view."]
|
|
383
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
384
|
+
// CIL[DOC-CONTRACT inputs="node: Node | null, projectId: string" outputs="JSX detail panel" errors="none" side_effects="none"]
|
|
385
|
+
// CIL[DOC-MICRO logic_summary="Displays placeholder text when no node is selected, or file/chunk details including badges and an Open Contract link." notable_decisions="[]"]
|
|
386
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
366
387
|
// CIL[DOC-STABILITY stability="stable"]
|
|
367
|
-
|
|
368
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
369
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
370
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
371
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
372
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
388
|
+
|
|
373
389
|
function NodeDetailPanel({
|
|
374
390
|
node,
|
|
375
391
|
projectId,
|
|
@@ -418,24 +434,25 @@ function NodeDetailPanel({
|
|
|
418
434
|
</div>
|
|
419
435
|
)
|
|
420
436
|
}
|
|
437
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render the inspector panel for a selected graph node.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
438
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
439
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
440
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
441
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
442
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
443
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:nodedetailpanel:function"]
|
|
421
444
|
|
|
422
445
|
|
|
423
446
|
|
|
424
|
-
// CIL[
|
|
425
|
-
// CIL[
|
|
426
|
-
// CIL[DOC-
|
|
427
|
-
// CIL[DOC-
|
|
428
|
-
// CIL[DOC-
|
|
429
|
-
// CIL[DOC-
|
|
430
|
-
// CIL[DOC-
|
|
431
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
447
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:cilgraphpage:function" type="function" identity="CILGraphPage" parent="none"]
|
|
448
|
+
// CIL[DOC-MACRO purpose="Render the main CIL graph exploration page for a selected project."]
|
|
449
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Fetch and display the project call graph, manage view mode, selection, and loading state."]
|
|
450
|
+
// CIL[DOC-CONTEXT module="admin-cil-graph" layer="ui" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILGraphPage.tsx"]
|
|
451
|
+
// CIL[DOC-CONTRACT inputs="none (uses useParams project id and component state)" outputs="JSX page with React Flow canvas, controls, and inspector" errors="none" side_effects="fetches graph and project data from API, updates React state"]
|
|
452
|
+
// CIL[DOC-MICRO logic_summary="Loads graph data, builds React Flow elements, renders view mode selector and inspector, and handles node selection." notable_decisions="[]"]
|
|
453
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
432
454
|
// CIL[DOC-STABILITY stability="stable"]
|
|
433
|
-
|
|
434
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
435
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
436
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
437
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
438
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
455
|
+
|
|
439
456
|
export default function CILGraphPage() {
|
|
440
457
|
const { id: projectId } = useParams<{ id: string }>()
|
|
441
458
|
const appPath = (path: string) => '/spine-framework/admin' + (path.startsWith('/') ? path : '/' + path)
|
|
@@ -612,5 +629,10 @@ export default function CILGraphPage() {
|
|
|
612
629
|
</div>
|
|
613
630
|
)
|
|
614
631
|
}
|
|
615
|
-
|
|
616
|
-
// CIL[
|
|
632
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render the main CIL graph exploration page for a selected project.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/button.tsx,.framework/src/components/ui/badge.tsx"]
|
|
633
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
634
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
635
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
636
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
637
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
638
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILGraphPage.tsx:cilgraphpage:function"]
|