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,18 +1,13 @@
|
|
|
1
|
-
// CIL[BEGIN
|
|
2
|
-
// CIL[DOC-MACRO purpose="
|
|
3
|
-
// CIL[DOC-RESPONSIBILITY responsibility="
|
|
4
|
-
// CIL[DOC-CONTEXT module="
|
|
5
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="
|
|
6
|
-
// CIL[DOC-MICRO logic_summary="Sets up
|
|
7
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Provides the React page for searching indexed CIL code chunks across projects with hybrid, semantic, or text modes."]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Import dependencies, define shared types and helper components, and export the default CILSearchPage component."]
|
|
4
|
+
// CIL[DOC-CONTEXT module="admin/cil" 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/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/lib/api.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="default export CILSearchPage React component" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Sets up the CIL search UI layout, search controls, result list and filters." notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
8
|
// 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"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="admin UI developers maintaining the CIL search interface"]
|
|
10
|
+
|
|
16
11
|
import { useState, useRef, useMemo } from 'react'
|
|
17
12
|
import { apiFetch } from '@core/lib/api'
|
|
18
13
|
import { Card, CardContent } from '@core/components/ui/card'
|
|
@@ -40,21 +35,23 @@ import {
|
|
|
40
35
|
|
|
41
36
|
|
|
42
37
|
import { PageInstructions } from '../../../components/admin/PageInstructions'
|
|
43
|
-
|
|
44
|
-
// CIL[
|
|
45
|
-
// CIL[DOC-
|
|
46
|
-
// CIL[DOC-
|
|
47
|
-
// CIL[DOC-
|
|
48
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="SearchResult type contract" errors="none" side_effects="none"]
|
|
49
|
-
// CIL[DOC-MICRO logic_summary="Describes id, chunk_name, file_path, macro, micro, chunk_type, doc_confidence, similarity, and match_type fields" notable_decisions="[]"]
|
|
50
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
51
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
52
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/schema-utils.ts, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
|
|
53
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
54
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
55
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
38
|
+
|
|
39
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Provides the React page for searching indexed CIL code chunks across projects with hybrid, semantic, or text modes.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
40
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
41
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
42
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
56
43
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
57
44
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
45
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:module_header:module_header"]
|
|
46
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:SearchResult:interface" type="interface" identity="SearchResult" parent="~/.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
47
|
+
// CIL[DOC-MACRO purpose="Defines the shape of a CIL search result returned by the code intelligence search API."]
|
|
48
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare the data contract for search result objects including metadata and similarity scores."]
|
|
49
|
+
// CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
50
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="SearchResult interface type" errors="none" side_effects="none"]
|
|
51
|
+
// CIL[DOC-MICRO logic_summary="Specifies fields: id, chunk_name, file_path, macro, micro, chunk_type, doc_confidence, similarity, match_type." notable_decisions="[]"]
|
|
52
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
53
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
54
|
+
|
|
58
55
|
interface SearchResult {
|
|
59
56
|
id: string
|
|
60
57
|
chunk_name: string
|
|
@@ -66,24 +63,29 @@ interface SearchResult {
|
|
|
66
63
|
similarity: number | null
|
|
67
64
|
match_type: 'semantic' | 'text'
|
|
68
65
|
}
|
|
66
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Defines the shape of a CIL search result returned by the code intelligence search API.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
67
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
68
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
69
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
70
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
71
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
72
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:SearchResult:interface"]
|
|
73
|
+
|
|
69
74
|
|
|
70
75
|
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// CIL[
|
|
76
|
-
// CIL[DOC-
|
|
77
|
-
// CIL[DOC-
|
|
78
|
-
// CIL[DOC-
|
|
79
|
-
// CIL[DOC-
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:CHUNK_TYPE_COLORS:constant" type="constant" identity="CHUNK_TYPE_COLORS" parent="~/.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
81
|
+
// CIL[DOC-MACRO purpose="Maps chunk type names to Tailwind CSS color class strings used in result badges."]
|
|
82
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide visual styling classes for chunk type badges in search results."]
|
|
83
|
+
// CIL[DOC-CONTEXT module="admin/cil" 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/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
84
|
+
// CIL[DOC-CONTRACT inputs="chunk_type: string" outputs="Tailwind class string" errors="unknown type falls back to config style" side_effects="none"]
|
|
85
|
+
// CIL[DOC-MICRO logic_summary="Record of style classes keyed by chunk type for consistent badge rendering." notable_decisions="[]"]
|
|
86
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
80
87
|
// CIL[DOC-STABILITY stability="stable"]
|
|
81
|
-
|
|
82
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
83
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
84
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
85
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
86
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
88
|
+
|
|
87
89
|
const CHUNK_TYPE_COLORS: Record<string, string> = {
|
|
88
90
|
function: 'bg-indigo-100 text-indigo-700 border-indigo-200',
|
|
89
91
|
class: 'bg-violet-100 text-violet-700 border-violet-200',
|
|
@@ -94,43 +96,58 @@ const CHUNK_TYPE_COLORS: Record<string, string> = {
|
|
|
94
96
|
route: 'bg-red-100 text-red-700 border-red-200',
|
|
95
97
|
config: 'bg-slate-100 text-slate-700 border-slate-200',
|
|
96
98
|
}
|
|
97
|
-
|
|
98
|
-
// CIL[
|
|
99
|
-
// CIL[
|
|
100
|
-
// CIL[DOC-
|
|
101
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Supplies badge label and color config for documentation confidence states"]
|
|
102
|
-
// CIL[DOC-CONTEXT module="cortex:cil-search" layer="presentation" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
|
|
103
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Record of label and className objects" errors="none" side_effects="none"]
|
|
104
|
-
// CIL[DOC-MICRO logic_summary="Maps human_verified, ai_generated, and unverified_legacy to display label and Tailwind className" notable_decisions="[]"]
|
|
105
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
106
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
107
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
|
|
108
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
109
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
110
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
99
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Maps chunk type names to Tailwind CSS color class strings used in result badges.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
100
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
101
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
102
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
111
103
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
112
104
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
105
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:CHUNK_TYPE_COLORS:constant"]
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:DOC_CONFIDENCE_LABEL:constant" type="constant" identity="DOC_CONFIDENCE_LABEL" parent="~/.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
116
|
+
// CIL[DOC-MACRO purpose="Maps documentation confidence levels to badge labels and Tailwind CSS classes."]
|
|
117
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render confidence badges in search result cards."]
|
|
118
|
+
// CIL[DOC-CONTEXT module="admin/cil" 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/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
119
|
+
// CIL[DOC-CONTRACT inputs="doc_confidence: string" outputs="{ label: string; className: string }" errors="unknown key falls back to unverified_legacy style" side_effects="none"]
|
|
120
|
+
// CIL[DOC-MICRO logic_summary="Record of display labels and styling classes for each documentation confidence tier." notable_decisions="[]"]
|
|
121
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
122
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
123
|
+
|
|
113
124
|
const DOC_CONFIDENCE_LABEL: Record<string, { label: string; className: string }> = {
|
|
114
125
|
human_verified: { label: 'Verified', className: 'bg-green-100 text-green-700 border-green-200' },
|
|
115
126
|
ai_generated: { label: 'AI Docs', className: 'bg-blue-100 text-blue-700 border-blue-200' },
|
|
116
127
|
unverified_legacy: { label: 'No Docs', className: 'bg-slate-100 text-slate-500 border-slate-200' },
|
|
117
128
|
}
|
|
118
|
-
|
|
119
|
-
// CIL[
|
|
120
|
-
// CIL[
|
|
121
|
-
// CIL[DOC-
|
|
122
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Display numeric similarity as a small indigo progress bar and percentage text"]
|
|
123
|
-
// CIL[DOC-CONTEXT module="cortex:cil-search" layer="presentation" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
124
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="JSX.Element | null" errors="none" side_effects="none"]
|
|
125
|
-
// CIL[DOC-MICRO logic_summary="Renders null for null scores, otherwise a rounded percentage with an indigo progress bar" notable_decisions="[]"]
|
|
126
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
127
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
128
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
129
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
130
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
131
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
129
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Maps documentation confidence levels to badge labels and Tailwind CSS classes.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
130
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
131
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
132
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
132
133
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
133
134
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
135
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:DOC_CONFIDENCE_LABEL:constant"]
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:SimilarityBar:component" type="component" identity="SimilarityBar" parent="~/.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
143
|
+
// CIL[DOC-MACRO purpose="Render a small progress bar showing the semantic search similarity score percentage."]
|
|
144
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Display a visual percentage bar for a single result score."]
|
|
145
|
+
// CIL[DOC-CONTEXT module="admin/cil" 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/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
146
|
+
// CIL[DOC-CONTRACT inputs="score: number | null" outputs="JSX progress bar or null" errors="none" side_effects="none"]
|
|
147
|
+
// CIL[DOC-MICRO logic_summary="Converts score to percentage and renders a fixed-width bar with an inline numeric label." notable_decisions="[]"]
|
|
148
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
149
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
150
|
+
|
|
134
151
|
function SimilarityBar({ score }: { score: number | null }) {
|
|
135
152
|
if (score === null) return null
|
|
136
153
|
const pct = Math.round(score * 100)
|
|
@@ -146,27 +163,40 @@ function SimilarityBar({ score }: { score: number | null }) {
|
|
|
146
163
|
</div>
|
|
147
164
|
)
|
|
148
165
|
}
|
|
149
|
-
|
|
150
|
-
// CIL[
|
|
151
|
-
// CIL[
|
|
152
|
-
// CIL[DOC-
|
|
153
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Display chunk name, type badge, doc confidence badge, file path, macro snippet, and similarity bar"]
|
|
154
|
-
// CIL[DOC-CONTEXT module="cortex:cil-search" layer="presentation" related_files="[]"]
|
|
155
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="JSX.Element" errors="none" side_effects="none"]
|
|
156
|
-
// CIL[DOC-MICRO logic_summary="Uses CHUNK_TYPE_COLORS and DOC_CONFIDENCE_LABEL to style badges, links to chunk detail via appPath, and renders SimilarityBar" notable_decisions="[]"]
|
|
157
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
158
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
159
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
160
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
161
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
162
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
166
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render a small progress bar showing the semantic search similarity score percentage.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
167
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
168
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
169
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
163
170
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
164
171
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
172
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:SimilarityBar:component"]
|
|
173
|
+
|
|
174
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:ResultCard:component" type="component" identity="ResultCard" parent="~/.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
175
|
+
// CIL[DOC-MACRO purpose="Display a single CIL search result as a clickable card with metadata and similarity score."]
|
|
176
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render chunk name, type, confidence, file path, macro preview, and link to chunk detail."]
|
|
177
|
+
// CIL[DOC-CONTEXT module="admin/cil" 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/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
178
|
+
// CIL[DOC-CONTRACT inputs="result: SearchResult, projectId: string" outputs="JSX clickable card" errors="none" side_effects="navigates on click to chunk detail"]
|
|
179
|
+
// CIL[DOC-MICRO logic_summary="Builds an app path, selects style classes, and returns a Card linking to the chunk detail view." notable_decisions="[]"]
|
|
180
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
181
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
182
|
+
|
|
165
183
|
function ResultCard({ result, projectId }: { result: SearchResult; projectId: string }) {
|
|
184
|
+
|
|
185
|
+
|
|
166
186
|
const appPath = (path: string) => '/spine-framework/admin' + (path.startsWith('/') ? path : '/' + path)
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
167
191
|
const typeClass = CHUNK_TYPE_COLORS[result.chunk_type] || CHUNK_TYPE_COLORS.config
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
168
197
|
const docCfg = DOC_CONFIDENCE_LABEL[result.doc_confidence] || DOC_CONFIDENCE_LABEL.unverified_legacy
|
|
169
198
|
|
|
199
|
+
|
|
170
200
|
return (
|
|
171
201
|
<a
|
|
172
202
|
href={appPath(`/cil/${projectId}/chunks/${result.id}`)}
|
|
@@ -208,73 +238,51 @@ function ResultCard({ result, projectId }: { result: SearchResult; projectId: st
|
|
|
208
238
|
</a>
|
|
209
239
|
)
|
|
210
240
|
}
|
|
241
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Display a single CIL search result as a clickable card with metadata and similarity score.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
242
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
243
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
244
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
245
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
246
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
247
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:ResultCard:component"]
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
211
251
|
|
|
212
252
|
|
|
213
253
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
// CIL[
|
|
218
|
-
// CIL[DOC-
|
|
219
|
-
// CIL[DOC-
|
|
220
|
-
// CIL[DOC-
|
|
221
|
-
// CIL[DOC-
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:SortBy:type" type="type" identity="SortBy" parent="~/.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
258
|
+
// CIL[DOC-MACRO purpose="Declare union types for search result sorting, type filtering, and documentation confidence filtering."]
|
|
259
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Constrain filter and sort state values to allowed string literals."]
|
|
260
|
+
// CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
261
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="SortBy, ChunkTypeFilter, DocConfidenceFilter type aliases" errors="none" side_effects="none"]
|
|
262
|
+
// CIL[DOC-MICRO logic_summary="Defines union type literals for sort keys, chunk type and documentation confidence filters." notable_decisions="[]"]
|
|
263
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
222
264
|
// CIL[DOC-STABILITY stability="stable"]
|
|
223
|
-
|
|
224
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
225
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
226
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
227
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
228
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
265
|
+
|
|
229
266
|
type SortBy = 'relevance' | 'name' | 'file' | 'doc_confidence'
|
|
230
|
-
// CIL[END chunk_id="cilsearchpage_sortby_1784193942"]
|
|
231
|
-
// CIL[BEGIN chunk_id="cilsearchpage_chunktypefilter_1784193942" type="type" identity="ChunkTypeFilter" parent="none"]
|
|
232
|
-
// CIL[DOC-MACRO purpose="Union type for chunk type filter values"]
|
|
233
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Defines the allowed chunk type filter options including 'all'"]
|
|
234
|
-
// CIL[DOC-CONTEXT module="cortex:cil-search" layer="presentation" related_files="[]"]
|
|
235
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="'all' | chunk type literals" errors="none" side_effects="none"]
|
|
236
|
-
// CIL[DOC-MICRO logic_summary="Constrains chunkTypeFilter state to 'all' or one of the supported chunk type strings" notable_decisions="[]"]
|
|
237
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
238
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
239
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
240
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
241
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
242
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
243
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
244
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
245
267
|
type ChunkTypeFilter = 'all' | 'function' | 'class' | 'interface' | 'type' | 'component' | 'hook' | 'route' | 'config'
|
|
246
|
-
// CIL[END chunk_id="cilsearchpage_chunktypefilter_1784193942"]
|
|
247
|
-
// CIL[BEGIN chunk_id="cilsearchpage_docconfidencefilter_1784193942" type="type" identity="DocConfidenceFilter" parent="none"]
|
|
248
|
-
// CIL[DOC-MACRO purpose="Union type for documentation confidence filter values"]
|
|
249
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Defines the allowed doc confidence filter options"]
|
|
250
|
-
// CIL[DOC-CONTEXT module="cortex:cil-search" layer="presentation" related_files="[]"]
|
|
251
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="'all' | 'human_verified' | 'ai_generated' | 'unverified_legacy'" errors="none" side_effects="none"]
|
|
252
|
-
// CIL[DOC-MICRO logic_summary="Constrains docConfidenceFilter state to 'all' or one of the confidence level strings" notable_decisions="[]"]
|
|
253
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
254
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
255
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
256
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
257
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
258
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
259
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
260
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
261
268
|
type DocConfidenceFilter = 'all' | 'human_verified' | 'ai_generated' | 'unverified_legacy'
|
|
262
|
-
|
|
263
|
-
// CIL[
|
|
264
|
-
// CIL[
|
|
265
|
-
// CIL[DOC-
|
|
266
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide a UI for query input, search mode/limit/project filters, result filtering/sorting, and rendering results"]
|
|
267
|
-
// CIL[DOC-CONTEXT module="cortex:cil-search" layer="presentation" related_files="[]"]
|
|
268
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="JSX.Element" errors="Displays error message string" side_effects="Calls apiFetch on search, sets React state"]
|
|
269
|
-
// CIL[DOC-MICRO logic_summary="Manages query, projectId, mode, limit, chunkTypeFilter, docConfidenceFilter, and sortBy state; calls /api/cil-graph search endpoint; filters and sorts displayResults; renders controls, error, empty state, and ResultCard list" notable_decisions="[]"]
|
|
270
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
271
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
272
|
-
// CIL[DOC-VECTOR type="context" content="Layer: presentation. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
273
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
274
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
275
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
269
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Declare union types for search result sorting, type filtering, and documentation confidence filtering.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
270
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
271
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
272
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
276
273
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
277
274
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
275
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:SortBy:type"]
|
|
276
|
+
|
|
277
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:CILSearchPage:component" type="component" identity="CILSearchPage" parent="~/.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
278
|
+
// CIL[DOC-MACRO purpose="Render the full CIL chunk search page with query controls, filters, and result list."]
|
|
279
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Manage search state, fetch results, apply client-side filters and sorting, and render the UI."]
|
|
280
|
+
// CIL[DOC-CONTEXT module="admin/cil" 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/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILSearchPage.tsx"]
|
|
281
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX search page" errors="Sets error state on API failure" side_effects="Calls /api/cil-graph search endpoint"]
|
|
282
|
+
// CIL[DOC-MICRO logic_summary="Maintains query, project, mode, filters and sort state; performs apiFetch to /api/cil-graph; filters and sorts results; renders suggestions and result cards." notable_decisions="[]"]
|
|
283
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
284
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
285
|
+
|
|
278
286
|
export default function CILSearchPage() {
|
|
279
287
|
const appPath = (path: string) => '/spine-framework/admin' + (path.startsWith('/') ? path : '/' + path)
|
|
280
288
|
const [query, setQuery] = useState('')
|
|
@@ -567,5 +575,10 @@ export default function CILSearchPage() {
|
|
|
567
575
|
</div>
|
|
568
576
|
)
|
|
569
577
|
}
|
|
570
|
-
|
|
571
|
-
// CIL[
|
|
578
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render the full CIL chunk search page with query controls, filters, and result list.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
579
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
580
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
581
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
582
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
583
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
584
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILSearchPage.tsx:CILSearchPage:component"]
|