spine-framework 0.3.144 → 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 +20 -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,19 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
// CIL[
|
|
3
|
-
// CIL[DOC-
|
|
4
|
-
// CIL[DOC-
|
|
5
|
-
// CIL[DOC-
|
|
6
|
-
// CIL[DOC-
|
|
7
|
-
// CIL[DOC-
|
|
8
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="React admin page for visualizing and controlling the CIL flexible pipeline for a project."]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Import dependencies, set up the admin page module, and render the root page instructions."]
|
|
4
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="default page export and side-effecting imports" errors="none" side_effects="imports modules for page assembly"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Imports React hooks, router, API client, UI primitives, icons, and the PageInstructions component used in this page." notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
9
8
|
// CIL[DOC-STABILITY stability="stable"]
|
|
10
|
-
// CIL[DOC-AUDIENCE audience="
|
|
11
|
-
|
|
12
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
13
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
14
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
15
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
16
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="maintainers"]
|
|
10
|
+
|
|
17
11
|
import { useEffect, useState, useCallback } from 'react'
|
|
18
12
|
import { useParams } from 'react-router-dom'
|
|
19
13
|
import { apiFetch } from '@core/lib/api'
|
|
@@ -42,23 +36,23 @@ import {
|
|
|
42
36
|
FileCode2,
|
|
43
37
|
} from 'lucide-react'
|
|
44
38
|
|
|
45
|
-
|
|
46
39
|
import { PageInstructions } from '../../../components/admin/PageInstructions'
|
|
47
|
-
// CIL[
|
|
48
|
-
// CIL[
|
|
49
|
-
// CIL[DOC-
|
|
50
|
-
// CIL[DOC-
|
|
51
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
52
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="FilePipelineState type definition" errors="none" side_effects="none"]
|
|
53
|
-
// CIL[DOC-MICRO logic_summary="Declares file path, status, completed/ready/blocked steps, and progress percentage" notable_decisions="[]"]
|
|
54
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
55
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
56
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
57
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
58
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
59
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
40
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React admin page for visualizing and controlling the CIL flexible pipeline for a project.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
41
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
42
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
43
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
60
44
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
61
45
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
46
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:module_header:module_header"]
|
|
47
|
+
|
|
48
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filepipelinestate:interface" type="interface" identity="FilePipelineState" parent="none"]
|
|
49
|
+
// CIL[DOC-MACRO purpose="TypeScript interface describing the shape of FilePipelineState."]
|
|
50
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for FilePipelineState."]
|
|
51
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
52
|
+
// CIL[DOC-CONTRACT inputs="none (type definition)" outputs="typed contract for consumers" errors="none" side_effects="none"]
|
|
53
|
+
// CIL[DOC-MICRO logic_summary="Describes the per-file state including path, current status, completed/ready/blocked steps, and progress percentage." notable_decisions="[]"]
|
|
54
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
55
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
62
56
|
interface FilePipelineState {
|
|
63
57
|
file_path: string
|
|
64
58
|
current_status: string
|
|
@@ -67,44 +61,44 @@ interface FilePipelineState {
|
|
|
67
61
|
blocked_by: number[]
|
|
68
62
|
progress_percentage: number
|
|
69
63
|
}
|
|
70
|
-
|
|
71
|
-
// CIL[
|
|
72
|
-
// CIL[
|
|
73
|
-
// CIL[DOC-
|
|
74
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide a TypeScript type contract for overall pipeline status"]
|
|
75
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
76
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="PipelineStatus type definition" errors="none" side_effects="none"]
|
|
77
|
-
// CIL[DOC-MICRO logic_summary="Declares project id, files array, step summary, and overall progress" notable_decisions="[]"]
|
|
78
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
79
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
80
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
81
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
82
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
83
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
64
|
+
// CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of FilePipelineState.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
65
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
66
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
67
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
84
68
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
85
69
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
70
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filepipelinestate:interface"]
|
|
71
|
+
|
|
72
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:pipelinestatus:interface" type="interface" identity="PipelineStatus" parent="none"]
|
|
73
|
+
// CIL[DOC-MACRO purpose="TypeScript interface describing the shape of PipelineStatus."]
|
|
74
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for PipelineStatus."]
|
|
75
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
76
|
+
// CIL[DOC-CONTRACT inputs="none (type definition)" outputs="typed contract for consumers" errors="none" side_effects="none"]
|
|
77
|
+
// CIL[DOC-MICRO logic_summary="Describes the overall pipeline status for a project, including all files and a step summary." notable_decisions="[]"]
|
|
78
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
79
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
86
80
|
interface PipelineStatus {
|
|
87
81
|
project_id: string
|
|
88
82
|
files: FilePipelineState[]
|
|
89
83
|
step_summary: Record<number, { completed: number; pending: number; in_progress: number }>
|
|
90
84
|
overall_progress: number
|
|
91
85
|
}
|
|
92
|
-
|
|
93
|
-
// CIL[
|
|
94
|
-
// CIL[
|
|
95
|
-
// CIL[DOC-
|
|
96
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide a TypeScript type contract for step-ready files"]
|
|
97
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
98
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="FilesReadyForStep type definition" errors="none" side_effects="none"]
|
|
99
|
-
// CIL[DOC-MICRO logic_summary="Declares step metadata and an array of file readiness records" notable_decisions="[]"]
|
|
100
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
101
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
102
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
103
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
104
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
105
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
86
|
+
// CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of PipelineStatus.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
87
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
88
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
89
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
106
90
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
107
91
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
92
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:pipelinestatus:interface"]
|
|
93
|
+
|
|
94
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filesreadyforstep:interface" type="interface" identity="FilesReadyForStep" parent="none"]
|
|
95
|
+
// CIL[DOC-MACRO purpose="TypeScript interface describing the shape of FilesReadyForStep."]
|
|
96
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for FilesReadyForStep."]
|
|
97
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
98
|
+
// CIL[DOC-CONTRACT inputs="none (type definition)" outputs="typed contract for consumers" errors="none" side_effects="none"]
|
|
99
|
+
// CIL[DOC-MICRO logic_summary="Describes the response for files that are ready to be processed for a specific step, including blocking info." notable_decisions="[]"]
|
|
100
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
101
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
108
102
|
interface FilesReadyForStep {
|
|
109
103
|
ok: boolean
|
|
110
104
|
project_id: string
|
|
@@ -124,22 +118,22 @@ interface FilesReadyForStep {
|
|
|
124
118
|
blocking_reasons: string[]
|
|
125
119
|
}>
|
|
126
120
|
}
|
|
127
|
-
|
|
128
|
-
// CIL[
|
|
129
|
-
// CIL[
|
|
130
|
-
// CIL[DOC-
|
|
131
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide a TypeScript type contract for bottleneck analysis"]
|
|
132
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
133
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="BottleneckAnalysis type definition" errors="none" side_effects="none"]
|
|
134
|
-
// CIL[DOC-MICRO logic_summary="Declares bottlenecks, recommendations, optimal processing order, and summary" 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: presentation. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
138
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
139
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
140
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
121
|
+
// CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of FilesReadyForStep.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
122
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
123
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
124
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
141
125
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
142
126
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
127
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filesreadyforstep:interface"]
|
|
128
|
+
|
|
129
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckanalysis:interface" type="interface" identity="BottleneckAnalysis" parent="none"]
|
|
130
|
+
// CIL[DOC-MACRO purpose="TypeScript interface describing the shape of BottleneckAnalysis."]
|
|
131
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for BottleneckAnalysis."]
|
|
132
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
133
|
+
// CIL[DOC-CONTRACT inputs="none (type definition)" outputs="typed contract for consumers" errors="none" side_effects="none"]
|
|
134
|
+
// CIL[DOC-MICRO logic_summary="Describes the bottleneck analysis result with bottlenecks, recommendations, and optimal processing order." notable_decisions="[]"]
|
|
135
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
136
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
143
137
|
interface BottleneckAnalysis {
|
|
144
138
|
project_id: string
|
|
145
139
|
bottlenecks: Array<{
|
|
@@ -164,89 +158,97 @@ interface BottleneckAnalysis {
|
|
|
164
158
|
ready_for_processing: number
|
|
165
159
|
}
|
|
166
160
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
// CIL[
|
|
170
|
-
// CIL[
|
|
171
|
-
// CIL[DOC-MACRO purpose="Map pipeline step numbers to labels"]
|
|
172
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide human-readable labels for pipeline steps"]
|
|
173
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[]"]
|
|
174
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Record<number,string> step labels" errors="none" side_effects="none"]
|
|
175
|
-
// CIL[DOC-MICRO logic_summary="Defines a constant mapping step numbers to display labels" notable_decisions="[]"]
|
|
176
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
177
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
178
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
179
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
180
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
181
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
161
|
+
// CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of BottleneckAnalysis.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
162
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
163
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
164
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
182
165
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
183
166
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
167
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckanalysis:interface"]
|
|
168
|
+
|
|
169
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_labels:constant" type="constant" identity="STEP_LABELS" parent="none"]
|
|
170
|
+
// CIL[DOC-MACRO purpose="Named constant mapping used across the pipeline UI."]
|
|
171
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a lookup table for STEP_LABELS."]
|
|
172
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
173
|
+
// CIL[DOC-CONTRACT inputs="none (static map)" outputs="named lookup record" errors="none" side_effects="none"]
|
|
174
|
+
// CIL[DOC-MICRO logic_summary="Maps each pipeline step index to a human-readable label." notable_decisions="[]"]
|
|
175
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
176
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
184
177
|
const STEP_LABELS: Record<number, string> = {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
178
|
+
0: 'Discover Files',
|
|
179
|
+
1: 'Select Files',
|
|
180
|
+
2: 'Chunk',
|
|
181
|
+
3: 'First-Pass Docs',
|
|
182
|
+
4: 'Validate Chunks',
|
|
183
|
+
5: 'Validate Docs',
|
|
184
|
+
6: 'Enrich',
|
|
185
|
+
7: 'Embed & Map',
|
|
186
|
+
8: 'Publish',
|
|
189
187
|
}
|
|
190
|
-
|
|
191
|
-
// CIL[
|
|
192
|
-
// CIL[
|
|
193
|
-
// CIL[DOC-
|
|
194
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide Tailwind color classes for pipeline steps"]
|
|
195
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[]"]
|
|
196
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Record<number,string> Tailwind classes" errors="none" side_effects="none"]
|
|
197
|
-
// CIL[DOC-MICRO logic_summary="Defines a constant mapping step numbers to Tailwind color classes" notable_decisions="[]"]
|
|
198
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
199
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
200
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
201
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
202
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
203
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
188
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Named constant mapping used across the pipeline UI.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
189
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
190
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
191
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
204
192
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
205
193
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
194
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_labels:constant"]
|
|
195
|
+
|
|
196
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_colors:constant" type="constant" identity="STEP_COLORS" parent="none"]
|
|
197
|
+
// CIL[DOC-MACRO purpose="Named constant mapping used across the pipeline UI."]
|
|
198
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a lookup table for STEP_COLORS."]
|
|
199
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
200
|
+
// CIL[DOC-CONTRACT inputs="none (static map)" outputs="named lookup record" errors="none" side_effects="none"]
|
|
201
|
+
// CIL[DOC-MICRO logic_summary="Maps each pipeline step index to a Tailwind color class string for badges and progress." notable_decisions="[]"]
|
|
202
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
203
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
206
204
|
const STEP_COLORS: Record<number, string> = {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
205
|
+
0: 'bg-slate-100 text-slate-700',
|
|
206
|
+
1: 'bg-gray-100 text-gray-700',
|
|
207
|
+
2: 'bg-blue-100 text-blue-700',
|
|
208
|
+
3: 'bg-purple-100 text-purple-700',
|
|
209
|
+
4: 'bg-green-100 text-green-700',
|
|
210
|
+
5: 'bg-amber-100 text-amber-700',
|
|
211
|
+
6: 'bg-pink-100 text-pink-700',
|
|
212
|
+
7: 'bg-indigo-100 text-indigo-700',
|
|
210
213
|
8: 'bg-violet-100 text-violet-700',
|
|
211
214
|
}
|
|
212
|
-
|
|
213
|
-
// CIL[
|
|
214
|
-
// CIL[
|
|
215
|
-
// CIL[DOC-
|
|
216
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide Tailwind color classes for priority levels"]
|
|
217
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[]"]
|
|
218
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Record<string,string> Tailwind classes" errors="none" side_effects="none"]
|
|
219
|
-
// CIL[DOC-MICRO logic_summary="Defines a constant mapping priority levels to Tailwind color classes" 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: presentation. 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."]
|
|
215
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Named constant mapping used across the pipeline UI.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
216
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
217
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
218
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
226
219
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
227
220
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
221
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_colors:constant"]
|
|
222
|
+
|
|
223
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:priority_colors:constant" type="constant" identity="PRIORITY_COLORS" parent="none"]
|
|
224
|
+
// CIL[DOC-MACRO purpose="Named constant mapping used across the pipeline UI."]
|
|
225
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a lookup table for PRIORITY_COLORS."]
|
|
226
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
227
|
+
// CIL[DOC-CONTRACT inputs="none (static map)" outputs="named lookup record" errors="none" side_effects="none"]
|
|
228
|
+
// CIL[DOC-MICRO logic_summary="Maps priority levels to Tailwind color class strings." notable_decisions="[]"]
|
|
229
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
230
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
228
231
|
const PRIORITY_COLORS: Record<string, string> = {
|
|
229
232
|
high: 'bg-red-100 text-red-700',
|
|
230
233
|
medium: 'bg-yellow-100 text-yellow-700',
|
|
231
234
|
low: 'bg-gray-100 text-gray-700',
|
|
232
235
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
// CIL[
|
|
236
|
-
// CIL[
|
|
237
|
-
// CIL[DOC-MACRO purpose="Render a file progress card"]
|
|
238
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Display file status, progress, and the next actionable step"]
|
|
239
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[]"]
|
|
240
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="calls onProcess callback when user clicks process"]
|
|
241
|
-
// CIL[DOC-MICRO logic_summary="Renders file badges, a progress bar, and a process button for the next step" notable_decisions="[]"]
|
|
242
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
243
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
244
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
245
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
246
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
247
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
236
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Named constant mapping used across the pipeline UI.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
237
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
238
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
239
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
248
240
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
249
241
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
242
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:priority_colors:constant"]
|
|
243
|
+
|
|
244
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:fileprogresscard:function" type="function" identity="FileProgressCard" parent="none"]
|
|
245
|
+
// CIL[DOC-MACRO purpose="React/TypeScript function for rendering FileProgressCard."]
|
|
246
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render the FileProgressCard UI and handle user interactions."]
|
|
247
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
248
|
+
// CIL[DOC-CONTRACT inputs="file, onProcess" outputs="JSX element or fragment" errors="none" side_effects="emits callback to parent on user action"]
|
|
249
|
+
// CIL[DOC-MICRO logic_summary="Shows a single file's progress, completed/ready/blocked steps, and a button to process the next available step." notable_decisions="[]"]
|
|
250
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
251
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
250
252
|
function FileProgressCard({ file, onProcess }: {
|
|
251
253
|
file: FilePipelineState
|
|
252
254
|
onProcess: (filePath: string, step: number) => void
|
|
@@ -300,22 +302,22 @@ function FileProgressCard({ file, onProcess }: {
|
|
|
300
302
|
</Card>
|
|
301
303
|
)
|
|
302
304
|
}
|
|
303
|
-
|
|
304
|
-
// CIL[
|
|
305
|
-
// CIL[
|
|
306
|
-
// CIL[DOC-
|
|
307
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Display step completion metrics and a batch process button"]
|
|
308
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[]"]
|
|
309
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="calls onProcess callback when user clicks process"]
|
|
310
|
-
// CIL[DOC-MICRO logic_summary="Renders step icon, label, progress bar, and a button to process pending files" notable_decisions="[]"]
|
|
311
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
312
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
313
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
314
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
315
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
316
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
305
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering FileProgressCard.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.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"]
|
|
317
309
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
318
310
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
311
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:fileprogresscard:function"]
|
|
312
|
+
|
|
313
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:stepsummarycard:function" type="function" identity="StepSummaryCard" parent="none"]
|
|
314
|
+
// CIL[DOC-MACRO purpose="React/TypeScript function for rendering StepSummaryCard."]
|
|
315
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render the StepSummaryCard UI and handle user interactions."]
|
|
316
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
317
|
+
// CIL[DOC-CONTRACT inputs="step, summary, onProcess" outputs="JSX element or fragment" errors="none" side_effects="emits callback to parent on user action"]
|
|
318
|
+
// CIL[DOC-MICRO logic_summary="Renders a step summary with completion stats, a progress bar, and a button to process all ready files in that step." notable_decisions="[]"]
|
|
319
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
320
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
319
321
|
function StepSummaryCard({ step, summary, onProcess }: {
|
|
320
322
|
step: number
|
|
321
323
|
summary: { completed: number; pending: number; in_progress: number }
|
|
@@ -361,22 +363,22 @@ function StepSummaryCard({ step, summary, onProcess }: {
|
|
|
361
363
|
</Card>
|
|
362
364
|
)
|
|
363
365
|
}
|
|
364
|
-
|
|
365
|
-
// CIL[
|
|
366
|
-
// CIL[
|
|
367
|
-
// CIL[DOC-
|
|
368
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Display a bottleneck with blocking reasons and priority"]
|
|
369
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[]"]
|
|
370
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="none"]
|
|
371
|
-
// CIL[DOC-MICRO logic_summary="Renders an alert with step name, ready/blocked counts, blocking reasons, and a high-priority badge" notable_decisions="[]"]
|
|
372
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
373
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
374
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
375
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
376
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
377
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
366
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering StepSummaryCard.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
367
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
368
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
369
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
378
370
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
379
371
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
372
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:stepsummarycard:function"]
|
|
373
|
+
|
|
374
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckalert:function" type="function" identity="BottleneckAlert" parent="none"]
|
|
375
|
+
// CIL[DOC-MACRO purpose="React/TypeScript function for rendering BottleneckAlert."]
|
|
376
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render the BottleneckAlert UI and handle user interactions."]
|
|
377
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
378
|
+
// CIL[DOC-CONTRACT inputs="bottleneck" outputs="JSX element or fragment" errors="none" side_effects="emits callback to parent on user action"]
|
|
379
|
+
// CIL[DOC-MICRO logic_summary="Displays a bottleneck step with ready/blocked counts and a list of blocking reasons." notable_decisions="[]"]
|
|
380
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
381
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
380
382
|
function BottleneckAlert({ bottleneck }: { bottleneck: BottleneckAnalysis['bottlenecks'][0] }) {
|
|
381
383
|
return (
|
|
382
384
|
<Alert className="mb-3">
|
|
@@ -407,22 +409,22 @@ function BottleneckAlert({ bottleneck }: { bottleneck: BottleneckAnalysis['bottl
|
|
|
407
409
|
</Alert>
|
|
408
410
|
)
|
|
409
411
|
}
|
|
410
|
-
|
|
411
|
-
// CIL[
|
|
412
|
-
// CIL[
|
|
413
|
-
// CIL[DOC-
|
|
414
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Display a pipeline recommendation with its priority"]
|
|
415
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[]"]
|
|
416
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="none"]
|
|
417
|
-
// CIL[DOC-MICRO logic_summary="Renders a recommendation with step, action text, and a priority badge" notable_decisions="[]"]
|
|
418
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
419
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
420
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
421
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
422
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
423
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
412
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering BottleneckAlert.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
413
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
414
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
415
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
424
416
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
425
417
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
418
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckalert:function"]
|
|
419
|
+
|
|
420
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:recommendationcard:function" type="function" identity="RecommendationCard" parent="none"]
|
|
421
|
+
// CIL[DOC-MACRO purpose="React/TypeScript function for rendering RecommendationCard."]
|
|
422
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render the RecommendationCard UI and handle user interactions."]
|
|
423
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
424
|
+
// CIL[DOC-CONTRACT inputs="recommendation" outputs="JSX element or fragment" errors="none" side_effects="emits callback to parent on user action"]
|
|
425
|
+
// CIL[DOC-MICRO logic_summary="Renders a single recommendation with a priority badge." notable_decisions="[]"]
|
|
426
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
427
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
426
428
|
function RecommendationCard({ recommendation }: { recommendation: BottleneckAnalysis['recommendations'][0] }) {
|
|
427
429
|
return (
|
|
428
430
|
<Card className="mb-2">
|
|
@@ -441,23 +443,22 @@ function RecommendationCard({ recommendation }: { recommendation: BottleneckAnal
|
|
|
441
443
|
</Card>
|
|
442
444
|
)
|
|
443
445
|
}
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
// CIL[
|
|
447
|
-
// CIL[
|
|
448
|
-
// CIL[DOC-MACRO purpose="Render the flexible pipeline dashboard"]
|
|
449
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Load pipeline status, ready files, and bottlenecks; render tabbed UI"]
|
|
450
|
-
// CIL[DOC-CONTEXT module="cortex.pages.cil" layer="presentation" related_files="[]"]
|
|
451
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="fetches data via apiFetch, registers React effects, logs API errors"]
|
|
452
|
-
// CIL[DOC-MICRO logic_summary="Loads pipeline status, per-step ready files, and bottlenecks; renders overview, files, steps, and bottlenecks tabs" notable_decisions="[]"]
|
|
453
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
454
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
455
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
456
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
457
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
458
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
446
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering RecommendationCard.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
447
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
448
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
449
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
459
450
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
460
451
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
452
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:recommendationcard:function"]
|
|
453
|
+
|
|
454
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:flexiblepipelinepage:function" type="function" identity="FlexiblePipelinePage" parent="none"]
|
|
455
|
+
// CIL[DOC-MACRO purpose="React/TypeScript function for rendering FlexiblePipelinePage."]
|
|
456
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render the FlexiblePipelinePage UI and handle user interactions."]
|
|
457
|
+
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
458
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element or fragment" errors="none" side_effects="calls apiFetch and sets React state"]
|
|
459
|
+
// CIL[DOC-MICRO logic_summary="Fetches pipeline status, files ready per step, and bottleneck analysis; renders tabbed dashboard with overview, files, steps, and bottlenecks." notable_decisions="[]"]
|
|
460
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
461
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
461
462
|
export default function FlexiblePipelinePage() {
|
|
462
463
|
const { id: projectId } = useParams<{ id: string }>()
|
|
463
464
|
|
|
@@ -475,8 +476,8 @@ export default function FlexiblePipelinePage() {
|
|
|
475
476
|
method: 'POST',
|
|
476
477
|
body: JSON.stringify({ project_id: projectId })
|
|
477
478
|
})
|
|
478
|
-
const
|
|
479
|
-
setPipelineStatus(data)
|
|
479
|
+
const result = await response.json()
|
|
480
|
+
setPipelineStatus(result.data ?? result)
|
|
480
481
|
} catch (error) {
|
|
481
482
|
console.error('Failed to load pipeline status:', error)
|
|
482
483
|
}
|
|
@@ -485,7 +486,7 @@ export default function FlexiblePipelinePage() {
|
|
|
485
486
|
const loadReadyFiles = useCallback(async () => {
|
|
486
487
|
if (!projectId) return
|
|
487
488
|
|
|
488
|
-
const steps = [4, 5, 6, 8]
|
|
489
|
+
const steps = [0, 1, 2, 3, 4, 5, 6, 7, 8]
|
|
489
490
|
const results: Record<number, FilesReadyForStep> = {}
|
|
490
491
|
|
|
491
492
|
for (const step of steps) {
|
|
@@ -494,8 +495,8 @@ export default function FlexiblePipelinePage() {
|
|
|
494
495
|
method: 'POST',
|
|
495
496
|
body: JSON.stringify({ project_id: projectId, step, include_blocking_info: true })
|
|
496
497
|
})
|
|
497
|
-
const
|
|
498
|
-
results[step] = data
|
|
498
|
+
const result = await response.json()
|
|
499
|
+
results[step] = result.data ?? result
|
|
499
500
|
} catch (error) {
|
|
500
501
|
console.error(`Failed to load ready files for step ${step}:`, error)
|
|
501
502
|
}
|
|
@@ -512,8 +513,8 @@ export default function FlexiblePipelinePage() {
|
|
|
512
513
|
method: 'POST',
|
|
513
514
|
body: JSON.stringify({ project_id: projectId })
|
|
514
515
|
})
|
|
515
|
-
const
|
|
516
|
-
setBottlenecks(data)
|
|
516
|
+
const result = await response.json()
|
|
517
|
+
setBottlenecks(result.data ?? result)
|
|
517
518
|
} catch (error) {
|
|
518
519
|
console.error('Failed to load bottlenecks:', error)
|
|
519
520
|
}
|
|
@@ -536,7 +537,6 @@ export default function FlexiblePipelinePage() {
|
|
|
536
537
|
const handleProcessFile = useCallback(async (filePath: string, step: number) => {
|
|
537
538
|
console.log(`Processing ${filePath} for step ${step}`)
|
|
538
539
|
|
|
539
|
-
|
|
540
540
|
}, [])
|
|
541
541
|
|
|
542
542
|
const handleProcessStep = useCallback(async (step: number) => {
|
|
@@ -567,6 +567,10 @@ export default function FlexiblePipelinePage() {
|
|
|
567
567
|
)
|
|
568
568
|
}
|
|
569
569
|
|
|
570
|
+
const files = pipelineStatus.files || []
|
|
571
|
+
const stepSummary = pipelineStatus.step_summary || {}
|
|
572
|
+
const overallProgress = pipelineStatus.overall_progress ?? 0
|
|
573
|
+
|
|
570
574
|
return (
|
|
571
575
|
<div className="space-y-6">
|
|
572
576
|
<div className="flex items-center justify-between">
|
|
@@ -592,7 +596,6 @@ export default function FlexiblePipelinePage() {
|
|
|
592
596
|
]}
|
|
593
597
|
/>
|
|
594
598
|
|
|
595
|
-
|
|
596
599
|
<Card>
|
|
597
600
|
<CardHeader>
|
|
598
601
|
<CardTitle className="flex items-center gap-2">
|
|
@@ -605,16 +608,16 @@ export default function FlexiblePipelinePage() {
|
|
|
605
608
|
<div className="flex items-center justify-between">
|
|
606
609
|
<span className="text-sm font-medium">Pipeline Completion</span>
|
|
607
610
|
<Badge className="bg-green-100 text-green-700">
|
|
608
|
-
{Math.round(
|
|
611
|
+
{Math.round(overallProgress)}%
|
|
609
612
|
</Badge>
|
|
610
613
|
</div>
|
|
611
|
-
<Progress value={
|
|
614
|
+
<Progress value={overallProgress} className="h-3" />
|
|
612
615
|
<div className="flex items-center gap-4 text-sm text-muted-foreground">
|
|
613
|
-
<span>{
|
|
616
|
+
<span>{files.length} files total</span>
|
|
614
617
|
<span>•</span>
|
|
615
|
-
<span>{
|
|
618
|
+
<span>{files.filter(f => f.progress_percentage === 100).length} complete</span>
|
|
616
619
|
<span>•</span>
|
|
617
|
-
<span>{
|
|
620
|
+
<span>{files.filter(f => f.progress_percentage < 100).length} in progress</span>
|
|
618
621
|
</div>
|
|
619
622
|
</div>
|
|
620
623
|
</CardContent>
|
|
@@ -628,10 +631,9 @@ export default function FlexiblePipelinePage() {
|
|
|
628
631
|
<TabsTrigger value="bottlenecks">Bottlenecks</TabsTrigger>
|
|
629
632
|
</TabsList>
|
|
630
633
|
|
|
631
|
-
|
|
632
634
|
<TabsContent value="overview" className="space-y-4">
|
|
633
635
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
634
|
-
{Object.entries(
|
|
636
|
+
{Object.entries(stepSummary).map(([step, summary]) => (
|
|
635
637
|
<StepSummaryCard
|
|
636
638
|
key={step}
|
|
637
639
|
step={parseInt(step)}
|
|
@@ -642,10 +644,9 @@ export default function FlexiblePipelinePage() {
|
|
|
642
644
|
</div>
|
|
643
645
|
</TabsContent>
|
|
644
646
|
|
|
645
|
-
|
|
646
647
|
<TabsContent value="files" className="space-y-4">
|
|
647
648
|
<div className="space-y-2">
|
|
648
|
-
{
|
|
649
|
+
{files.map((file) => (
|
|
649
650
|
<FileProgressCard
|
|
650
651
|
key={file.file_path}
|
|
651
652
|
file={file}
|
|
@@ -655,7 +656,6 @@ export default function FlexiblePipelinePage() {
|
|
|
655
656
|
</div>
|
|
656
657
|
</TabsContent>
|
|
657
658
|
|
|
658
|
-
|
|
659
659
|
<TabsContent value="steps" className="space-y-4">
|
|
660
660
|
{Object.entries(readyFiles).map(([step, data]) => (
|
|
661
661
|
<Card key={step}>
|
|
@@ -700,7 +700,6 @@ export default function FlexiblePipelinePage() {
|
|
|
700
700
|
))}
|
|
701
701
|
</TabsContent>
|
|
702
702
|
|
|
703
|
-
|
|
704
703
|
<TabsContent value="bottlenecks" className="space-y-4">
|
|
705
704
|
{bottlenecks?.bottlenecks.map((bottleneck) => (
|
|
706
705
|
<BottleneckAlert key={bottleneck.step} bottleneck={bottleneck} />
|
|
@@ -728,4 +727,10 @@ export default function FlexiblePipelinePage() {
|
|
|
728
727
|
</div>
|
|
729
728
|
)
|
|
730
729
|
}
|
|
731
|
-
// CIL[
|
|
730
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering FlexiblePipelinePage.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
731
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
732
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
733
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
734
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
735
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
736
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:flexiblepipelinepage:function"]
|