spine-framework 0.3.145 → 0.4.1
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 +5067 -1026
- package/.framework/functions/_shared/app-manifest.ts +214 -94
- package/.framework/functions/_shared/ast.ts +214 -0
- package/.framework/functions/_shared/audit.ts +91 -55
- package/.framework/functions/_shared/cil.ts +368 -127
- package/.framework/functions/_shared/db.ts +337 -68
- package/.framework/functions/_shared/funnel.ts +228 -0
- package/.framework/functions/_shared/geo.ts +105 -0
- package/.framework/functions/_shared/hash-api-key.ts +94 -17
- package/.framework/functions/_shared/index.ts +22 -224
- package/.framework/functions/_shared/kb.ts +832 -58
- package/.framework/functions/_shared/llm.ts +118 -18
- package/.framework/functions/_shared/logging.ts +317 -19
- package/.framework/functions/_shared/middleware.ts +701 -131
- package/.framework/functions/_shared/notify.ts +70 -0
- package/.framework/functions/_shared/outcomes.ts +34 -19
- package/.framework/functions/_shared/permissions.ts +501 -315
- package/.framework/functions/_shared/pipeline-runner.ts +704 -155
- package/.framework/functions/_shared/principal.ts +436 -263
- package/.framework/functions/_shared/rate-limit.ts +233 -0
- package/.framework/functions/_shared/resolve-credentials.ts +86 -19
- package/.framework/functions/_shared/resolve-ids.ts +203 -139
- package/.framework/functions/_shared/retry-deliveries.ts +51 -16
- package/.framework/functions/_shared/schema-utils.ts +602 -521
- package/.framework/functions/_shared/security.ts +345 -0
- package/.framework/functions/_shared/testing.ts +197 -172
- package/.framework/functions/_shared/tracing.ts +351 -21
- package/.framework/functions/_shared/trigger-engine.ts +425 -136
- package/.framework/functions/_shared/webhook-registration.ts +71 -70
- package/.framework/functions/_shared/webhook-registry.ts +126 -83
- package/.framework/functions/account-nodes.ts +30 -30
- package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
- package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
- package/.framework/functions/adapters/openai-outbound.ts +15 -16
- package/.framework/functions/admin-data.ts +596 -173
- package/.framework/functions/admin-funnel.ts +64 -60
- package/.framework/functions/admin-install-funnel.ts +84 -66
- package/.framework/functions/admin-signals.ts +69 -51
- package/.framework/functions/ai-agents.ts +431 -106
- package/.framework/functions/ai-interactions.ts +186 -112
- package/.framework/functions/api-keys.ts +107 -107
- package/.framework/functions/apps.ts +154 -136
- package/.framework/functions/auth.ts +83 -65
- package/.framework/functions/cil-agent-ingest.ts +189 -232
- package/.framework/functions/cil-agent.ts +433 -177
- package/.framework/functions/cil-callmap.ts +642 -430
- package/.framework/functions/cil-config.ts +139 -135
- package/.framework/functions/cil-context.ts +214 -127
- package/.framework/functions/cil-doc.ts +587 -458
- package/.framework/functions/cil-embeddings.ts +453 -364
- package/.framework/functions/cil-graph.ts +427 -142
- package/.framework/functions/cil-ingest.ts +1418 -1154
- package/.framework/functions/cil-pipeline.ts +276 -21
- package/.framework/functions/cil-project.ts +659 -132
- package/.framework/functions/cil-validate.ts +198 -164
- package/.framework/functions/debug-auth.ts +57 -55
- package/.framework/functions/deliveries.ts +80 -21
- package/.framework/functions/embeddings.ts +1023 -318
- package/.framework/functions/eval-harness.ts +146 -108
- package/.framework/functions/integration-outbound.ts +205 -75
- package/.framework/functions/integration-routes.ts +128 -23
- package/.framework/functions/integrations.ts +125 -100
- package/.framework/functions/invites.ts +1095 -460
- package/.framework/functions/item-progress.ts +158 -102
- package/.framework/functions/kb.ts +34 -10
- package/.framework/functions/logs.ts +133 -133
- package/.framework/functions/observability.ts +152 -122
- package/.framework/functions/pipeline-executions.ts +147 -132
- package/.framework/functions/pipelines.ts +134 -119
- package/.framework/functions/prompt-configs.ts +96 -80
- package/.framework/functions/roles.ts +112 -82
- package/.framework/functions/security.ts +450 -0
- package/.framework/functions/system-cron.ts +117 -80
- package/.framework/functions/system.ts +158 -98
- package/.framework/functions/tests.ts +29 -29
- package/.framework/functions/timers.ts +94 -95
- package/.framework/functions/trigger-scheduler.ts +10 -0
- package/.framework/functions/triggers.ts +179 -149
- package/.framework/functions/types.ts +137 -125
- package/.framework/mcp/index.ts +133 -0
- package/.framework/mcp/load-env.ts +60 -0
- package/.framework/mcp/shared/app-manifest.ts +275 -0
- package/.framework/mcp/shared/db.ts +477 -0
- package/.framework/mcp/shared/kb.ts +118 -0
- package/.framework/mcp/tools/architect.ts +431 -0
- package/.framework/mcp/tools/cil/context.ts +345 -0
- package/.framework/mcp/tools/cil/graph.ts +242 -0
- package/.framework/mcp/tools/cil/ingest.ts +1217 -0
- package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
- package/.framework/mcp/tools/cil/pipeline.ts +767 -0
- package/.framework/mcp/tools/cil/project.ts +791 -0
- package/.framework/mcp/tools/cil/retrieval.ts +336 -0
- package/.framework/mcp/tools/cil/search-core.ts +454 -0
- package/.framework/mcp/tools/cil/search.ts +97 -0
- package/.framework/mcp/tools/cil/suggest.ts +186 -0
- package/.framework/mcp/tools/cil/validate.ts +1369 -0
- package/.framework/mcp/tools/kb/delete.ts +139 -0
- package/.framework/mcp/tools/kb/index.ts +52 -0
- package/.framework/mcp/tools/kb/ingest.ts +84 -0
- package/.framework/mcp/tools/kb/list-types.ts +102 -0
- package/.framework/mcp/tools/kb/publish.ts +100 -0
- package/.framework/mcp/tools/kb/reindex.ts +86 -0
- package/.framework/mcp/tools/kb/revoke.ts +85 -0
- package/.framework/mcp/tools/kb/search.ts +101 -0
- package/.framework/mcp/tools/kb/upsert.ts +125 -0
- package/.framework/mcp/tools/observability.ts +510 -0
- package/.framework/migrations/001_core_schema.sql +15 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
- package/.framework/migrations/003_core_system_data.sql +16 -1
- package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
- package/.framework/migrations/005_core_observability.sql +17 -1
- package/.framework/migrations/006_security_hardening_rls.sql +15 -0
- package/.framework/migrations/007_kb_article_list.sql +17 -1
- package/.framework/migrations/008_items_target.sql +15 -0
- package/.framework/migrations/009_roles_slug_unique.sql +15 -0
- package/.framework/migrations/010_auth_user_trigger.sql +15 -0
- package/.framework/migrations/011_spine_system_account.sql +16 -0
- package/.framework/migrations/012_service_role_grants.sql +16 -0
- package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
- package/.framework/migrations/014_apps_required_roles.sql +16 -0
- package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
- package/.framework/migrations/016_cil_types.sql +281 -0
- package/.framework/migrations/017_cil_stable_ids.sql +37 -0
- package/.framework/migrations/018_runtime_tables.sql +129 -0
- package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
- package/.framework/migrations/020_schema_reconciliation.sql +67 -0
- package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
- package/.framework/migrations/032_cil_status_migration.sql +73 -0
- package/.framework/migrations/033_cil_versioning.sql +73 -0
- package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
- package/.framework/migrations/035_rate_limits.sql +55 -0
- package/.framework/migrations/036_demo_record_flags.sql +72 -0
- package/.framework/migrations/037_kb_types_canonical.sql +244 -0
- package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
- package/.framework/migrations/042_registration_hierarchy.sql +309 -0
- package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
- package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
- package/.framework/migrations/045_security_critical_rls.sql +139 -0
- package/.framework/migrations/046_security_missing_rls.sql +79 -0
- package/.framework/migrations/047_people_updated_by.sql +27 -0
- package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
- package/.framework/migrations/049_security_blocklist.sql +148 -0
- package/.framework/migrations/050_notifications.sql +49 -0
- package/.framework/migrations/051_message_agent_fields.sql +74 -0
- package/.framework/migrations/052_registration_security.sql +421 -0
- package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
- package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
- package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
- package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
- package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
- package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
- package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
- package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
- package/.framework/migrations/061_fk_dedup.sql +32 -0
- package/.framework/public/spine-logo.svg +10 -3
- package/.framework/scripts/app-install-cli.ts +190 -93
- package/.framework/scripts/assemble-frontend.sh +127 -44
- package/.framework/scripts/assemble-functions.sh +128 -30
- package/.framework/scripts/boundary-check.sh +6 -2
- package/.framework/scripts/build-manifest.sh +24 -68
- package/.framework/scripts/check-core-integrity.sh +15 -76
- package/.framework/scripts/checksum-manifest.mts +343 -0
- package/.framework/scripts/cil-migrate-markers.ts +403 -0
- package/.framework/scripts/fix-cil-markers.mjs +176 -0
- package/.framework/scripts/verify-integrity.sh +21 -57
- package/.framework/scripts/verify-manifest.mts +305 -0
- package/.framework/seeds/types/funnel_signal_use.json +74 -21
- package/.framework/seeds/types/spine_instance.json +73 -21
- package/.framework/src/App.tsx +118 -72
- package/.framework/src/apps/admin/index.tsx +855 -58
- package/.framework/src/components/AppWrapper.tsx +43 -45
- package/.framework/src/components/CustomAppLoader.tsx +160 -116
- package/.framework/src/components/admin/AdminListPage.tsx +46 -44
- package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
- package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
- package/.framework/src/components/admin/PageInstructions.tsx +98 -2
- package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
- package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
- package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
- package/.framework/src/components/app-sidebar.tsx +42 -45
- package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
- package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
- package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
- package/.framework/src/components/kb/KBArticleList.tsx +251 -10
- package/.framework/src/components/layout/AppShell.tsx +51 -45
- package/.framework/src/components/layout/Header.tsx +42 -43
- package/.framework/src/components/layout/Layout.tsx +46 -46
- package/.framework/src/components/layout/Sidebar.tsx +196 -96
- package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
- package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
- package/.framework/src/components/runtime/DataFilters.tsx +49 -74
- package/.framework/src/components/runtime/DataHeader.tsx +53 -32
- package/.framework/src/components/runtime/DataListPage.tsx +51 -155
- package/.framework/src/components/runtime/DataStats.tsx +66 -44
- package/.framework/src/components/runtime/DataTable.tsx +49 -149
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
- package/.framework/src/components/runtime/index.ts +119 -16
- package/.framework/src/components/search-form.tsx +46 -29
- package/.framework/src/components/shared/AgentView.tsx +65 -48
- package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
- package/.framework/src/components/shared/InviteManager.tsx +207 -97
- package/.framework/src/components/shared/MemberList.tsx +97 -0
- package/.framework/src/components/shared/SchemaFields.tsx +107 -86
- package/.framework/src/components/ui/DataTable.tsx +80 -68
- package/.framework/src/components/ui/Form.tsx +157 -146
- package/.framework/src/components/ui/ItemCard.tsx +74 -67
- package/.framework/src/components/ui/ItemListView.tsx +73 -68
- package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
- package/.framework/src/components/ui/Modal.tsx +78 -68
- package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
- package/.framework/src/components/ui/accordion.tsx +85 -86
- package/.framework/src/components/ui/alert-dialog.tsx +197 -184
- package/.framework/src/components/ui/alert.tsx +105 -94
- package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
- package/.framework/src/components/ui/avatar.tsx +122 -107
- package/.framework/src/components/ui/badge.tsx +60 -55
- package/.framework/src/components/ui/breadcrumb.tsx +127 -128
- package/.framework/src/components/ui/button-group.tsx +86 -72
- package/.framework/src/components/ui/button.tsx +71 -50
- package/.framework/src/components/ui/calendar.tsx +72 -57
- package/.framework/src/components/ui/card.tsx +136 -129
- package/.framework/src/components/ui/carousel.tsx +226 -107
- package/.framework/src/components/ui/chart.tsx +252 -147
- package/.framework/src/components/ui/checkbox.tsx +43 -44
- package/.framework/src/components/ui/collapsible.tsx +86 -71
- package/.framework/src/components/ui/combobox.tsx +282 -249
- package/.framework/src/components/ui/command.tsx +158 -146
- package/.framework/src/components/ui/context-menu.tsx +239 -240
- package/.framework/src/components/ui/dialog.tsx +174 -157
- package/.framework/src/components/ui/direction.tsx +72 -56
- package/.framework/src/components/ui/drawer.tsx +168 -169
- package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
- package/.framework/src/components/ui/empty.tsx +131 -120
- package/.framework/src/components/ui/field.tsx +205 -173
- package/.framework/src/components/ui/hover-card.tsx +71 -72
- package/.framework/src/components/ui/input-group.tsx +148 -133
- package/.framework/src/components/ui/input-otp.tsx +99 -86
- package/.framework/src/components/ui/input.tsx +43 -41
- package/.framework/src/components/ui/item.tsx +207 -185
- package/.framework/src/components/ui/kbd.tsx +57 -56
- package/.framework/src/components/ui/label.tsx +45 -41
- package/.framework/src/components/ui/menubar.tsx +268 -236
- package/.framework/src/components/ui/native-select.tsx +85 -86
- package/.framework/src/components/ui/navigation-menu.tsx +166 -156
- package/.framework/src/components/ui/pagination.tsx +131 -141
- package/.framework/src/components/ui/popover.tsx +125 -128
- package/.framework/src/components/ui/progress.tsx +47 -44
- package/.framework/src/components/ui/radio-group.tsx +60 -55
- package/.framework/src/components/ui/resizable.tsx +85 -72
- package/.framework/src/components/ui/scroll-area.tsx +57 -58
- package/.framework/src/components/ui/select.tsx +182 -169
- package/.framework/src/components/ui/separator.tsx +42 -43
- package/.framework/src/components/ui/sheet.tsx +170 -159
- package/.framework/src/components/ui/sidebar.tsx +395 -398
- package/.framework/src/components/ui/skeleton.tsx +42 -43
- package/.framework/src/components/ui/slider.tsx +61 -44
- package/.framework/src/components/ui/sonner.tsx +44 -44
- package/.framework/src/components/ui/spinner.tsx +47 -42
- package/.framework/src/components/ui/switch.tsx +56 -42
- package/.framework/src/components/ui/table-primitives.tsx +272 -132
- package/.framework/src/components/ui/table.tsx +140 -142
- package/.framework/src/components/ui/tabs.tsx +110 -93
- package/.framework/src/components/ui/textarea.tsx +43 -44
- package/.framework/src/components/ui/toggle-group.tsx +87 -71
- package/.framework/src/components/ui/toggle.tsx +56 -56
- package/.framework/src/components/ui/tooltip.tsx +99 -85
- package/.framework/src/contexts/AppContext.tsx +166 -114
- package/.framework/src/contexts/AuthContext.tsx +232 -137
- package/.framework/src/hooks/use-mobile.ts +43 -44
- package/.framework/src/hooks/useApi.ts +185 -172
- package/.framework/src/hooks/useAppPath.ts +31 -29
- package/.framework/src/hooks/useApps.ts +77 -42
- package/.framework/src/hooks/useEntityList.ts +66 -29
- package/.framework/src/hooks/useEntityRecord.ts +76 -32
- package/.framework/src/hooks/useForm.ts +62 -30
- package/.framework/src/hooks/useListSchema.ts +60 -43
- package/.framework/src/hooks/useSchemaRecord.ts +115 -95
- package/.framework/src/lib/api.ts +258 -134
- package/.framework/src/lib/registration.ts +181 -0
- package/.framework/src/lib/supabase.ts +118 -81
- package/.framework/src/lib/utils.ts +266 -266
- package/.framework/src/main.tsx +43 -44
- package/.framework/src/pages/DashboardPage.tsx +44 -43
- package/.framework/src/pages/NoAppPage.tsx +50 -0
- package/.framework/src/pages/NotFoundPage.tsx +32 -29
- package/.framework/src/pages/SetupPage.tsx +34 -33
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
- package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
- package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
- package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
- package/.framework/src/pages/admin/AppsPage.tsx +45 -42
- package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
- package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
- package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
- package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
- package/.framework/src/pages/admin/LogsPage.tsx +87 -137
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
- package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
- package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
- package/.framework/src/pages/admin/RolesPage.tsx +47 -164
- package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
- package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
- package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
- package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
- package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
- package/.framework/src/pages/admin/TimersPage.tsx +44 -42
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
- package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
- package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
- package/.framework/src/pages/admin/TypesPage.tsx +45 -42
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
- package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
- package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
- package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
- package/.framework/src/pages/auth/LoginPage.tsx +38 -32
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
- package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
- package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
- package/.framework/src/types/auth.ts +101 -93
- package/.framework/src/types/types.ts +283 -262
- package/.framework/templates/project.json +87 -0
- package/.framework/templates/spine.config.neutral.json +7 -0
- package/.framework/tests/api/api-surface.test.ts +381 -0
- package/.framework/tests/fixtures/seed.ts +427 -0
- package/.framework/tests/fixtures/teardown.ts +228 -0
- package/.framework/tests/reporter.ts +351 -0
- package/.framework/tests/setup.ts +135 -0
- package/.framework/tests/ui/ui-sweep.ts +278 -0
- package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
- package/.framework/tests/unit/agent-runner.test.ts +2389 -0
- package/.framework/tests/unit/ai-interactions.test.ts +81 -0
- package/.framework/tests/unit/app-manifest.test.ts +359 -0
- package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
- package/.framework/tests/unit/cil-determinism.test.ts +85 -0
- package/.framework/tests/unit/core-isolation.test.ts +153 -0
- package/.framework/tests/unit/funnel-signals.test.ts +135 -0
- package/.framework/tests/unit/install-app.test.ts +1759 -0
- package/.framework/tests/unit/invites-security.test.ts +572 -0
- package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
- package/.framework/tests/unit/kb-search.test.ts +119 -0
- package/.framework/tests/unit/migrate.test.ts +509 -0
- package/.framework/tests/unit/notify.test.ts +136 -0
- package/.framework/tests/unit/permissions.test.ts +269 -0
- package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
- package/.framework/tests/unit/principal-cache.test.ts +138 -0
- package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
- package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
- package/.framework/tests/unit/schema-utils.test.ts +225 -0
- package/.framework/tests/unit/trigger-engine.test.ts +513 -0
- package/.framework/tests/unit/validate-app.test.ts +527 -0
- package/README.md +34 -3
- package/bin/spine-framework.cjs +1 -0
- package/config/tailwind.config.cjs +7 -0
- package/config/tsconfig.functions.json +42 -0
- package/config/tsconfig.json +37 -9
- package/config/vite.config.ts +31 -2
- package/netlify.toml +31 -3
- package/package.json +46 -29
- package/scripts/assemble-frontend.sh +127 -44
- package/scripts/assemble-functions.sh +127 -29
- package/scripts/boundary-check.sh +6 -2
- package/scripts/build-manifest.sh +24 -68
- package/scripts/checksum-manifest.mts +345 -0
- package/scripts/dev-clean.sh +86 -0
- package/scripts/dev-netlify.sh +49 -0
- package/scripts/netlify-dev-wrapper.sh +2 -0
- package/scripts/verify-install.ts +358 -0
- package/scripts/verify-integrity.sh +21 -57
- package/scripts/verify-manifest.mts +305 -0
- package/templates/project/gitignore +45 -0
- package/{config → templates/project}/package-lock.json +22335 -9366
- package/vitest.config.ts +46 -0
- package/.framework/public/spine.config.json +0 -91
- package/config/deno.lock +0 -108
- package/config/tsconfig.node.tsbuildinfo +0 -1
- package/config/tsconfig.tsbuildinfo +0 -1
- package/config/vite.config.d.ts +0 -2
- package/custom/.devin/AGENT.md +0 -357
- package/custom/.devin/skills/install-app/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
- package/custom/.devin/workflows/app-install.yaml +0 -83
- package/custom/README.md +0 -79
- package/docs/README.md +0 -15
- package/scripts/app-install-cli.ts +0 -286
- package/scripts/check-core-integrity.sh +0 -82
- package/scripts/ingest-chunks.cjs +0 -202
- package/scripts/kb-chunk-parser.cjs +0 -312
- package/scripts/kb-chunk-parser.ts +0 -330
- package/scripts/kb-ingest-docs.ts +0 -203
- package/scripts/load-test-app-install.ts +0 -484
- package/scripts/test-login.js +0 -33
- package/spine.config.json +0 -91
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/functions/eval-harness.ts"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Eval harness module imports and entry re-export"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Import dependencies and expose the main eval handler for serverless function routing"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none at module level" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Declares the shared imports and main handler re-export for the evaluation harness" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
1
10
|
|
|
2
11
|
|
|
3
12
|
|
|
@@ -19,21 +28,6 @@
|
|
|
19
28
|
|
|
20
29
|
|
|
21
30
|
|
|
22
|
-
// CIL[BEGIN chunk_id="eval-harness_moduleheader_1783969696" type="module_header" identity="imports" parent="none"]
|
|
23
|
-
// CIL[DOC-MACRO purpose="Import dependencies for eval harness module"]
|
|
24
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Import middleware, database, utilities, and audit functions"]
|
|
25
|
-
// CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
26
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="imported_modules" errors="none" side_effects="none"]
|
|
27
|
-
// CIL[DOC-MICRO logic_summary="Import required dependencies for evaluation test harness" notable_decisions="[]"]
|
|
28
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
29
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
30
|
-
// CIL[DOC-AUDIENCE audience="developer"]
|
|
31
|
-
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
|
|
32
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
33
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
34
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
35
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
36
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
37
31
|
|
|
38
32
|
import { createHandler } from './_shared/middleware'
|
|
39
33
|
import { adminDb } from './_shared/db'
|
|
@@ -41,44 +35,74 @@ import { resolveTypeId } from './_shared/resolve-ids'
|
|
|
41
35
|
import { create } from './admin-data'
|
|
42
36
|
import { emitLog } from './_shared/audit'
|
|
43
37
|
import { callOpenAIEmbeddings } from './_shared/llm'
|
|
44
|
-
// CIL[
|
|
45
|
-
// CIL[
|
|
46
|
-
// CIL[DOC-
|
|
47
|
-
// CIL[DOC-
|
|
48
|
-
// CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
49
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="constants" errors="none" side_effects="none"]
|
|
50
|
-
// CIL[DOC-MICRO logic_summary="Define test categories and confidence score ranges for evaluation" notable_decisions="[]"]
|
|
51
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
52
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
53
|
-
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
|
|
54
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
55
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
56
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
38
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Eval harness module imports and entry re-export'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
|
|
39
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
40
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
41
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
57
42
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
58
43
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
44
|
+
// CIL[END stable_id="~/.framework/functions/eval-harness.ts:module_header:module_header"]
|
|
45
|
+
// CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:TEST_TYPES:constant" type="constant" identity="TEST_TYPES" parent="~/.framework/functions/eval-harness.ts"]
|
|
46
|
+
// CIL[DOC-MACRO purpose="Enumeration of supported evaluation test categories"]
|
|
47
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the canonical list of test_type values used in eval test cases and coverage"]
|
|
48
|
+
// CIL[DOC-STABILITY stability="internal"]
|
|
49
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
50
|
+
// CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
|
|
51
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="readonly array of test type strings" errors="none" side_effects="none"]
|
|
52
|
+
// CIL[DOC-MICRO logic_summary="Static const array of eval test categories" notable_decisions="[]"]
|
|
59
53
|
const TEST_TYPES = ['easy', 'medium', 'hard', 'security', 'hallucination', 'stale', 'account_gating'] as const
|
|
54
|
+
// CIL[END stable_id="~/.framework/functions/eval-harness.ts:TEST_TYPES:constant"]
|
|
55
|
+
// CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:TestType:type" type="type" identity="TestType" parent="~/.framework/functions/eval-harness.ts"]
|
|
56
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Enumeration of supported evaluation test categories'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
|
|
57
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
58
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
59
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
60
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
61
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
62
|
+
// CIL[DOC-MACRO purpose="Type union derived from the TEST_TYPES array"]
|
|
63
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Constrain test_type fields to the supported categories"]
|
|
64
|
+
// CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
|
|
65
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="TestType union type" errors="none" side_effects="none"]
|
|
66
|
+
// CIL[DOC-MICRO logic_summary="Type alias derived from TEST_TYPES" notable_decisions="[]"]
|
|
67
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
68
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
60
69
|
type TestType = typeof TEST_TYPES[number]
|
|
61
|
-
|
|
70
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type union derived from the TEST_TYPES array'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
|
|
71
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
72
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
73
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
74
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
75
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
76
|
+
// CIL[END stable_id="~/.framework/functions/eval-harness.ts:TestType:type"]
|
|
77
|
+
|
|
78
|
+
// CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:CONFIDENCE_TIERS:constant" type="constant" identity="CONFIDENCE_TIERS" parent="~/.framework/functions/eval-harness.ts"]
|
|
79
|
+
// CIL[DOC-MACRO purpose="Threshold map for categorizing confidence scores"]
|
|
80
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define min and max score boundaries for high, medium and low tiers"]
|
|
81
|
+
// CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
|
|
82
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="constant tier threshold object" errors="none" side_effects="none"]
|
|
83
|
+
// CIL[DOC-MICRO logic_summary="Object mapping tier names to min and max similarity score ranges" notable_decisions="[]"]
|
|
84
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
85
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
62
86
|
const CONFIDENCE_TIERS = {
|
|
63
87
|
high: { min: 0.85, max: 1.00 },
|
|
64
88
|
medium: { min: 0.60, max: 0.849 },
|
|
65
89
|
low: { min: 0.00, max: 0.599 },
|
|
66
90
|
}
|
|
67
|
-
// CIL[
|
|
68
|
-
// CIL[
|
|
69
|
-
// CIL[DOC-
|
|
70
|
-
// CIL[DOC-
|
|
71
|
-
// CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
72
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="created_test_case" errors="validation_errors,db_errors" side_effects="db_write"]
|
|
73
|
-
// CIL[DOC-MICRO logic_summary="Validate input, resolve type ID, create test case item" notable_decisions="[]"]
|
|
74
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
75
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
76
|
-
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 1. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
|
|
77
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 2."]
|
|
78
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
79
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
91
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Threshold map for categorizing confidence scores'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
|
|
92
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
93
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
94
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
80
95
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
81
96
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
97
|
+
// CIL[END stable_id="~/.framework/functions/eval-harness.ts:CONFIDENCE_TIERS:constant"]
|
|
98
|
+
// CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:createTestCase:constant" type="constant" identity="createTestCase" parent="~/.framework/functions/eval-harness.ts"]
|
|
99
|
+
// CIL[DOC-MACRO purpose="Create a new eval test case record"]
|
|
100
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Validate input, resolve the eval_test_case type, and persist the test case item"]
|
|
101
|
+
// CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
|
|
102
|
+
// CIL[DOC-CONTRACT inputs="question, expected_tier, expected_escalate, expected_source_ids, excluded_source_ids, test_type" outputs="created item record" errors="throws if question missing or eval_test_case type not found" side_effects="inserts a new active item into the items table"]
|
|
103
|
+
// CIL[DOC-MICRO logic_summary="Resolves the eval_test_case type and inserts an item with the provided test parameters" notable_decisions="[]"]
|
|
104
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
105
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
82
106
|
export const createTestCase = createHandler(async (ctx, body) => {
|
|
83
107
|
const {
|
|
84
108
|
question, expected_tier = 'medium', expected_escalate = false,
|
|
@@ -107,21 +131,21 @@ export const createTestCase = createHandler(async (ctx, body) => {
|
|
|
107
131
|
},
|
|
108
132
|
})
|
|
109
133
|
})
|
|
110
|
-
// CIL[
|
|
111
|
-
// CIL[
|
|
112
|
-
// CIL[DOC-
|
|
113
|
-
// CIL[DOC-
|
|
114
|
-
// CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[\"\\\"]"]
|
|
115
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="test_cases" errors="db_errors" side_effects="none"]
|
|
116
|
-
// CIL[DOC-MICRO logic_summary="Query test cases by type and test type, return paginated results" notable_decisions="[]"]
|
|
117
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
118
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
119
|
-
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: \."]
|
|
120
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
121
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
122
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
134
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Create a new eval test case record'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
|
|
135
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
136
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
137
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
123
138
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
124
139
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
140
|
+
// CIL[END stable_id="~/.framework/functions/eval-harness.ts:createTestCase:constant"]
|
|
141
|
+
// CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:listTestCases:constant" type="constant" identity="listTestCases" parent="~/.framework/functions/eval-harness.ts"]
|
|
142
|
+
// CIL[DOC-MACRO purpose="List active eval test case records"]
|
|
143
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Query active items for the eval_test_case type with optional test_type filter"]
|
|
144
|
+
// CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
|
|
145
|
+
// CIL[DOC-CONTRACT inputs="query: test_type, limit, offset" outputs="array of test case records" errors="throws on database error" side_effects="none"]
|
|
146
|
+
// CIL[DOC-MICRO logic_summary="Builds a query against items filtered by status, type and optional test_type" notable_decisions="[]"]
|
|
147
|
+
// CIL[DOC-STABILITY stability="internal"]
|
|
148
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
125
149
|
export const listTestCases = createHandler(async (ctx, _body) => {
|
|
126
150
|
const { test_type, limit = '200', offset = '0' } = ctx.query || {}
|
|
127
151
|
|
|
@@ -142,21 +166,21 @@ export const listTestCases = createHandler(async (ctx, _body) => {
|
|
|
142
166
|
if (error) throw error
|
|
143
167
|
return data || []
|
|
144
168
|
})
|
|
145
|
-
// CIL[END
|
|
146
|
-
// CIL[
|
|
147
|
-
// CIL[DOC-
|
|
148
|
-
// CIL[DOC-
|
|
149
|
-
// CIL[DOC-
|
|
150
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="eval_results" errors="api_errors,db_errors" side_effects="api_calls,db_write,audit_log"]
|
|
151
|
-
// CIL[DOC-MICRO logic_summary="Run embeddings search, evaluate recall and boundary violations, store results" notable_decisions="[]"]
|
|
152
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="complex_logic,external_api"]
|
|
153
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
154
|
-
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: \."]
|
|
155
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
156
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
157
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
169
|
+
// CIL[END stable_id="~/.framework/functions/eval-harness.ts:listTestCases:constant"]
|
|
170
|
+
// CIL[DOC-VECTOR type="context" content="purpose='List active eval test case records'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
|
|
171
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
172
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
173
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
158
174
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
159
175
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
176
|
+
// CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:runEval:constant" type="constant" identity="runEval" parent="~/.framework/functions/eval-harness.ts"]
|
|
177
|
+
// CIL[DOC-MACRO purpose="Run an evaluation pass over active test cases and store results"]
|
|
178
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Embed questions, retrieve similar documents, score recall, boundaries, tier correctness and record the execution"]
|
|
179
|
+
// CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
|
|
180
|
+
// CIL[DOC-CONTRACT inputs="body: test_type, similarity_threshold, match_count; requires account context" outputs="run summary and per-case results" errors="throws if account missing or database errors; skips cases on embed failure" side_effects="inserts a pipeline_executions row and emits an audit log"]
|
|
181
|
+
// CIL[DOC-MICRO logic_summary="For each test case, computes embeddings, calls match_embeddings, checks recall, boundaries, tier correctness, and writes the execution result" notable_decisions="[]"]
|
|
182
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
183
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
160
184
|
export const runEval = createHandler(async (ctx, body) => {
|
|
161
185
|
const { test_type, similarity_threshold = 0.15, match_count = 8 } = body || {}
|
|
162
186
|
if (!ctx.accountId) throw new Error('Account context required')
|
|
@@ -182,6 +206,14 @@ export const runEval = createHandler(async (ctx, body) => {
|
|
|
182
206
|
let passed = 0; let failed = 0; let skipped = 0
|
|
183
207
|
|
|
184
208
|
for (const tc of testCases) {
|
|
209
|
+
// Cases created from a live ticket carry observed (diagnostic) sources but
|
|
210
|
+
// no human-approved expected_source_ids yet — exclude them from scoring
|
|
211
|
+
// until review promotes them to golden cases.
|
|
212
|
+
if (tc.data?.needs_source_review) {
|
|
213
|
+
skipped++
|
|
214
|
+
results.push({ id: tc.id, status: 'skipped', reason: 'needs_source_review' })
|
|
215
|
+
continue
|
|
216
|
+
}
|
|
185
217
|
const question = tc.data?.question || tc.title
|
|
186
218
|
const expectedSrcs = tc.data?.expected_source_ids || []
|
|
187
219
|
const excludedSrcs = tc.data?.excluded_source_ids || []
|
|
@@ -285,21 +317,21 @@ export const runEval = createHandler(async (ctx, body) => {
|
|
|
285
317
|
|
|
286
318
|
return { run_id: execRow?.id || null, summary, results }
|
|
287
319
|
})
|
|
288
|
-
// CIL[END
|
|
289
|
-
// CIL[BEGIN
|
|
290
|
-
// CIL[DOC-MACRO purpose="
|
|
291
|
-
// CIL[DOC-
|
|
292
|
-
// CIL[DOC-
|
|
293
|
-
// CIL[DOC-
|
|
294
|
-
// CIL[DOC-
|
|
295
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
296
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
297
|
-
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
298
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
299
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
300
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
320
|
+
// CIL[END stable_id="~/.framework/functions/eval-harness.ts:runEval:constant"]
|
|
321
|
+
// CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:getResults:constant" type="constant" identity="getResults" parent="~/.framework/functions/eval-harness.ts"]
|
|
322
|
+
// CIL[DOC-MACRO purpose="Fetch recent eval run results"]
|
|
323
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Run an evaluation pass over active test cases and store results'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
|
|
324
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
325
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
326
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
301
327
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
302
328
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
329
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return the latest pipeline_executions rows triggered by eval runs for the current account"]
|
|
330
|
+
// CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
|
|
331
|
+
// CIL[DOC-CONTRACT inputs="query limit" outputs="array of execution records" errors="throws on db error" side_effects="none"]
|
|
332
|
+
// CIL[DOC-MICRO logic_summary="Queries pipeline_executions for eval_run trigger data and returns recent records" notable_decisions="[]"]
|
|
333
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
334
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
303
335
|
export const getResults = createHandler(async (ctx, _body) => {
|
|
304
336
|
if (!ctx.accountId) throw new Error('Account context required')
|
|
305
337
|
|
|
@@ -316,21 +348,21 @@ export const getResults = createHandler(async (ctx, _body) => {
|
|
|
316
348
|
if (error) throw error
|
|
317
349
|
return data || []
|
|
318
350
|
})
|
|
319
|
-
// CIL[
|
|
320
|
-
// CIL[
|
|
321
|
-
// CIL[DOC-
|
|
322
|
-
// CIL[DOC-
|
|
323
|
-
// CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[]"]
|
|
324
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="coverage_report" errors="db_errors" side_effects="none"]
|
|
325
|
-
// CIL[DOC-MICRO logic_summary="Count test cases by type, identify coverage gaps" notable_decisions="[]"]
|
|
326
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
327
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
328
|
-
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
329
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
330
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
331
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
351
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Fetch recent eval run results'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
|
|
352
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
353
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
354
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
332
355
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
333
356
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
357
|
+
// CIL[END stable_id="~/.framework/functions/eval-harness.ts:getResults:constant"]
|
|
358
|
+
// CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:getCoverage:constant" type="constant" identity="getCoverage" parent="~/.framework/functions/eval-harness.ts"]
|
|
359
|
+
// CIL[DOC-MACRO purpose="Report how many test cases exist per test category"]
|
|
360
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Count active eval test cases by test_type and list missing categories"]
|
|
361
|
+
// CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
|
|
362
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="coverage summary and recommendations" errors="throws on db error" side_effects="none"]
|
|
363
|
+
// CIL[DOC-MICRO logic_summary="Counts cases per TEST_TYPES and returns totals and recommendations" notable_decisions="[]"]
|
|
364
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
365
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
334
366
|
export const getCoverage = createHandler(async (ctx, _body) => {
|
|
335
367
|
const { data: typeRow } = await adminDb
|
|
336
368
|
.from('types').select('id').eq('slug', 'eval_test_case').eq('kind', 'item').maybeSingle()
|
|
@@ -361,21 +393,21 @@ export const getCoverage = createHandler(async (ctx, _body) => {
|
|
|
361
393
|
recommendation: coverage.filter(c => !c.has_cases).map(c => c.test_type),
|
|
362
394
|
}
|
|
363
395
|
})
|
|
364
|
-
// CIL[
|
|
365
|
-
// CIL[
|
|
366
|
-
// CIL[DOC-
|
|
367
|
-
// CIL[DOC-
|
|
368
|
-
// CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[]"]
|
|
369
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="function_responses" errors="method_errors" side_effects="none"]
|
|
370
|
-
// CIL[DOC-MICRO logic_summary="Route based on action and method to specific eval functions" notable_decisions="[]"]
|
|
371
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
372
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
373
|
-
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
374
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
375
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
376
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
396
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Report how many test cases exist per test category'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
|
|
397
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
398
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
399
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
377
400
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
378
401
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
402
|
+
// CIL[END stable_id="~/.framework/functions/eval-harness.ts:getCoverage:constant"]
|
|
403
|
+
// CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:handler:constant" type="constant" identity="handler" parent="~/.framework/functions/eval-harness.ts"]
|
|
404
|
+
// CIL[DOC-MACRO purpose="Route incoming eval harness requests to the correct action"]
|
|
405
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Dispatch based on action and method to create, list, run, or get eval operations"]
|
|
406
|
+
// CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
|
|
407
|
+
// CIL[DOC-CONTRACT inputs="ctx.query.action and method; body for POST actions" outputs="result of the chosen action or throws" errors="throws Invalid action or method for unsupported combinations" side_effects="none"]
|
|
408
|
+
// CIL[DOC-MICRO logic_summary="Switch on action, guard by method, and dispatch to internal handlers" notable_decisions="[]"]
|
|
409
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
410
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
379
411
|
export const handler = createHandler(async (ctx, body) => {
|
|
380
412
|
const { action } = ctx.query || {}
|
|
381
413
|
const method = ctx.query?.method || 'GET'
|
|
@@ -402,4 +434,10 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
402
434
|
|
|
403
435
|
throw new Error('Invalid action or method')
|
|
404
436
|
})
|
|
405
|
-
// CIL[
|
|
437
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Route incoming eval harness requests to the correct action'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
|
|
438
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
439
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
440
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
441
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
442
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
443
|
+
// CIL[END stable_id="~/.framework/functions/eval-harness.ts:handler:constant"]
|