spine-framework 0.3.124 → 0.3.126
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/.framework/cli/commands/agents.ts +35 -37
- package/.framework/cli/commands/auth.ts +35 -34
- package/.framework/cli/commands/create-app.ts +104 -40
- package/.framework/cli/commands/dev.ts +104 -69
- package/.framework/cli/commands/doctor.ts +179 -69
- package/.framework/cli/commands/generate.ts +83 -143
- package/.framework/cli/commands/init.ts +72 -34
- package/.framework/cli/commands/install-app.ts +260 -125
- package/.framework/cli/commands/items.ts +33 -44
- package/.framework/cli/commands/migrate.ts +122 -40
- package/.framework/cli/commands/migrations.ts +33 -40
- package/.framework/cli/commands/pipelines.ts +31 -39
- package/.framework/cli/commands/status.ts +47 -23
- package/.framework/cli/commands/system.ts +47 -37
- package/.framework/cli/commands/test.ts +112 -68
- package/.framework/cli/commands/validate-app.ts +215 -121
- package/.framework/cli/context.ts +112 -130
- package/.framework/cli/env-loader.ts +47 -18
- package/.framework/cli/index.ts +81 -42
- package/.framework/docs/runtime-types.md +1024 -0
- package/.framework/functions/_shared/agent-runner.ts +1296 -961
- package/.framework/functions/_shared/app-manifest.ts +82 -68
- package/.framework/functions/_shared/audit.ts +135 -83
- package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
- package/.framework/functions/_shared/db.ts +80 -126
- package/.framework/functions/_shared/hash-api-key.ts +63 -0
- package/.framework/functions/_shared/index.ts +224 -335
- package/.framework/functions/_shared/kb.ts +319 -0
- package/.framework/functions/_shared/llm.ts +92 -0
- package/.framework/functions/_shared/logging.ts +288 -0
- package/.framework/functions/_shared/middleware.ts +329 -365
- package/.framework/functions/_shared/outcomes.ts +36 -0
- package/.framework/functions/_shared/permissions.ts +359 -643
- package/.framework/functions/_shared/pipeline-runner.ts +243 -316
- package/.framework/functions/_shared/principal.ts +376 -468
- package/.framework/functions/_shared/resolve-credentials.ts +102 -0
- package/.framework/functions/_shared/resolve-ids.ts +188 -16
- package/.framework/functions/_shared/retry-deliveries.ts +104 -0
- package/.framework/functions/_shared/schema-utils.ts +611 -373
- package/.framework/functions/_shared/testing.ts +207 -137
- package/.framework/functions/_shared/tracing.ts +276 -0
- package/.framework/functions/_shared/trigger-engine.ts +159 -211
- package/.framework/functions/_shared/webhook-registration.ts +95 -81
- package/.framework/functions/_shared/webhook-registry.ts +153 -75
- package/.framework/functions/account-nodes.ts +31 -53
- package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
- package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
- package/.framework/functions/adapters/openai-outbound.ts +40 -0
- package/.framework/functions/admin-data.ts +685 -537
- package/.framework/functions/admin-funnel.ts +31 -20
- package/.framework/functions/admin-install-funnel.ts +47 -28
- package/.framework/functions/admin-signals.ts +47 -29
- package/.framework/functions/ai-agents.ts +122 -147
- package/.framework/functions/ai-interactions.ts +180 -90
- package/.framework/functions/api-keys.ts +250 -192
- package/.framework/functions/apps.ts +203 -197
- package/.framework/functions/auth.ts +98 -91
- package/.framework/functions/cil-agent-ingest.ts +773 -0
- package/.framework/functions/cil-agent.ts +592 -0
- package/.framework/functions/cil-callmap.ts +1227 -0
- package/.framework/functions/cil-config.ts +583 -0
- package/.framework/functions/cil-context.ts +445 -0
- package/.framework/functions/cil-doc.ts +1752 -0
- package/.framework/functions/cil-embeddings.ts +1202 -0
- package/.framework/functions/cil-graph.ts +585 -0
- package/.framework/functions/cil-ingest.ts +2416 -0
- package/.framework/functions/cil-pipeline.ts +318 -0
- package/.framework/functions/cil-project.ts +499 -0
- package/.framework/functions/cil-validate.ts +469 -0
- package/.framework/functions/debug-auth.ts +73 -53
- package/.framework/functions/deliveries.ts +117 -0
- package/.framework/functions/embeddings.ts +528 -516
- package/.framework/functions/eval-harness.ts +158 -106
- package/.framework/functions/integration-outbound.ts +311 -0
- package/.framework/functions/integration-routes.ts +240 -466
- package/.framework/functions/integrations.ts +132 -140
- package/.framework/functions/invites.ts +401 -201
- package/.framework/functions/item-progress.ts +113 -53
- package/.framework/functions/kb.ts +28 -0
- package/.framework/functions/logs.ts +239 -222
- package/.framework/functions/observability.ts +308 -259
- package/.framework/functions/pipeline-executions.ts +179 -235
- package/.framework/functions/pipelines.ts +163 -205
- package/.framework/functions/prompt-configs.ts +109 -156
- package/.framework/functions/roles.ts +97 -147
- package/.framework/functions/system-cron.ts +132 -218
- package/.framework/functions/system.ts +112 -52
- package/.framework/functions/tests.ts +32 -28
- package/.framework/functions/timers.ts +162 -210
- package/.framework/functions/triggers.ts +282 -346
- package/.framework/functions/types.ts +283 -400
- package/.framework/migrations/001_core_schema.sql +630 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
- package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
- package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
- package/.framework/migrations/005_core_observability.sql +598 -0
- package/.framework/migrations/006_security_hardening_rls.sql +97 -0
- package/.framework/migrations/007_kb_article_list.sql +237 -0
- package/.framework/migrations/008_items_target.sql +8 -0
- package/.framework/migrations/009_roles_slug_unique.sql +11 -0
- package/.framework/public/spine.config.json +91 -0
- package/.framework/scripts/app-install-cli.ts +112 -98
- package/.framework/src/App.tsx +67 -20
- package/.framework/src/apps/admin/index.tsx +97 -27
- package/.framework/src/components/AppWrapper.tsx +50 -11
- package/.framework/src/components/CustomAppLoader.tsx +131 -22
- package/.framework/src/components/admin/AdminListPage.tsx +75 -8
- package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
- package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
- package/.framework/src/components/admin/PageInstructions.tsx +49 -0
- package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
- package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
- package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
- package/.framework/src/components/app-sidebar.tsx +50 -3
- package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
- package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
- package/.framework/src/components/kb/KBArticleList.tsx +557 -0
- package/.framework/src/components/layout/AppShell.tsx +54 -16
- package/.framework/src/components/layout/Header.tsx +50 -38
- package/.framework/src/components/layout/Layout.tsx +48 -32
- package/.framework/src/components/layout/Sidebar.tsx +167 -16
- package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
- package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
- package/.framework/src/components/runtime/DataFilters.tsx +78 -1
- package/.framework/src/components/runtime/DataHeader.tsx +32 -29
- package/.framework/src/components/runtime/DataListPage.tsx +161 -2
- package/.framework/src/components/runtime/DataStats.tsx +48 -1
- package/.framework/src/components/runtime/DataTable.tsx +153 -1
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
- package/.framework/src/components/runtime/index.ts +16 -9
- package/.framework/src/components/search-form.tsx +33 -1
- package/.framework/src/components/shared/AgentView.tsx +48 -51
- package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
- package/.framework/src/components/shared/InviteManager.tsx +113 -52
- package/.framework/src/components/shared/MemberList.tsx +182 -0
- package/.framework/src/components/shared/SchemaFields.tsx +96 -78
- package/.framework/src/components/ui/DataTable.tsx +86 -56
- package/.framework/src/components/ui/Form.tsx +188 -109
- package/.framework/src/components/ui/ItemCard.tsx +86 -58
- package/.framework/src/components/ui/ItemListView.tsx +88 -61
- package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
- package/.framework/src/components/ui/Modal.tsx +81 -4
- package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
- package/.framework/src/components/ui/accordion.tsx +97 -5
- package/.framework/src/components/ui/alert-dialog.tsx +225 -13
- package/.framework/src/components/ui/alert.tsx +113 -6
- package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
- package/.framework/src/components/ui/avatar.tsx +129 -7
- package/.framework/src/components/ui/badge.tsx +65 -3
- package/.framework/src/components/ui/breadcrumb.tsx +145 -8
- package/.framework/src/components/ui/button-group.tsx +81 -4
- package/.framework/src/components/ui/button.tsx +49 -2
- package/.framework/src/components/ui/calendar.tsx +65 -3
- package/.framework/src/components/ui/card.tsx +145 -8
- package/.framework/src/components/ui/carousel.tsx +129 -7
- package/.framework/src/components/ui/chart.tsx +161 -10
- package/.framework/src/components/ui/checkbox.tsx +49 -2
- package/.framework/src/components/ui/collapsible.tsx +81 -5
- package/.framework/src/components/ui/combobox.tsx +305 -20
- package/.framework/src/components/ui/command.tsx +177 -11
- package/.framework/src/components/ui/context-menu.tsx +273 -17
- package/.framework/src/components/ui/dialog.tsx +209 -27
- package/.framework/src/components/ui/direction.tsx +64 -4
- package/.framework/src/components/ui/drawer.tsx +193 -12
- package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
- package/.framework/src/components/ui/empty.tsx +145 -9
- package/.framework/src/components/ui/field.tsx +209 -14
- package/.framework/src/components/ui/hover-card.tsx +81 -4
- package/.framework/src/components/ui/input-group.tsx +162 -10
- package/.framework/src/components/ui/input-otp.tsx +98 -5
- package/.framework/src/components/ui/input.tsx +49 -2
- package/.framework/src/components/ui/item.tsx +225 -13
- package/.framework/src/components/ui/kbd.tsx +65 -3
- package/.framework/src/components/ui/label.tsx +49 -2
- package/.framework/src/components/ui/menubar.tsx +289 -17
- package/.framework/src/components/ui/native-select.tsx +97 -5
- package/.framework/src/components/ui/navigation-menu.tsx +177 -10
- package/.framework/src/components/ui/pagination.tsx +161 -9
- package/.framework/src/components/ui/popover.tsx +145 -8
- package/.framework/src/components/ui/progress.tsx +49 -2
- package/.framework/src/components/ui/radio-group.tsx +65 -3
- package/.framework/src/components/ui/resizable.tsx +82 -4
- package/.framework/src/components/ui/scroll-area.tsx +65 -3
- package/.framework/src/components/ui/select.tsx +193 -11
- package/.framework/src/components/ui/separator.tsx +49 -2
- package/.framework/src/components/ui/sheet.tsx +193 -11
- package/.framework/src/components/ui/sidebar.tsx +481 -38
- package/.framework/src/components/ui/skeleton.tsx +49 -2
- package/.framework/src/components/ui/slider.tsx +49 -2
- package/.framework/src/components/ui/sonner.tsx +49 -2
- package/.framework/src/components/ui/spinner.tsx +49 -2
- package/.framework/src/components/ui/switch.tsx +49 -2
- package/.framework/src/components/ui/table-primitives.tsx +160 -33
- package/.framework/src/components/ui/table.tsx +161 -9
- package/.framework/src/components/ui/tabs.tsx +113 -6
- package/.framework/src/components/ui/textarea.tsx +49 -2
- package/.framework/src/components/ui/toggle-group.tsx +81 -4
- package/.framework/src/components/ui/toggle.tsx +65 -3
- package/.framework/src/components/ui/tooltip.tsx +97 -5
- package/.framework/src/contexts/AppContext.tsx +129 -45
- package/.framework/src/contexts/AuthContext.tsx +187 -144
- package/.framework/src/hooks/use-mobile.ts +48 -2
- package/.framework/src/hooks/useApi.ts +208 -159
- package/.framework/src/hooks/useAppPath.ts +32 -23
- package/.framework/src/hooks/useApps.ts +51 -20
- package/.framework/src/hooks/useEntityList.ts +32 -78
- package/.framework/src/hooks/useEntityRecord.ts +35 -96
- package/.framework/src/hooks/useForm.ts +32 -92
- package/.framework/src/hooks/useListSchema.ts +49 -78
- package/.framework/src/hooks/useSchemaRecord.ts +114 -105
- package/.framework/src/lib/api.ts +195 -116
- package/.framework/src/lib/supabase.ts +98 -64
- package/.framework/src/lib/utils.ts +287 -151
- package/.framework/src/main.tsx +49 -3
- package/.framework/src/pages/DashboardPage.tsx +52 -29
- package/.framework/src/pages/NotFoundPage.tsx +32 -10
- package/.framework/src/pages/SetupPage.tsx +32 -12
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
- package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
- package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
- package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
- package/.framework/src/pages/admin/AppsPage.tsx +49 -2
- package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
- package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
- package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
- package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
- package/.framework/src/pages/admin/LogsPage.tsx +422 -75
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
- package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
- package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
- package/.framework/src/pages/admin/RolesPage.tsx +171 -18
- package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
- package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
- package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
- package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
- package/.framework/src/pages/admin/TimersPage.tsx +48 -20
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
- package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
- package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
- package/.framework/src/pages/admin/TypesPage.tsx +48 -20
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
- package/.framework/src/pages/auth/LoginPage.tsx +50 -23
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
- package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
- package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
- package/.framework/src/types/auth.ts +128 -71
- package/.framework/src/types/types.ts +373 -157
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
- package/docs/README.md +9 -130
- package/netlify.toml +5 -2
- package/package.json +13 -25
- package/scripts/kb-ingest-docs.ts +203 -0
- package/spine.config.json +65 -4
- package/.framework/migrations/001_schema.sql +0 -425
- package/.framework/migrations/002_rls_and_functions.sql +0 -763
- package/.framework/migrations/004_enhancements.sql +0 -43
- package/.framework/migrations/005_auth_user_trigger.sql +0 -105
- package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
- package/.framework/migrations/016_invites.sql +0 -27
- package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
- package/.framework/migrations/018_apps_required_roles.sql +0 -17
- package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
- package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
- package/.framework/migrations/021_app_domains.sql +0 -112
- package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
- package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
- package/.framework/migrations/024_messages_account_id.sql +0 -9
- package/.framework/migrations/025_retype_threads_messages.sql +0 -240
- package/.framework/migrations/026_fix_rls_policies.sql +0 -47
- package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
- package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
- package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
- package/.framework/migrations/030_messages_updated_by.sql +0 -6
- package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
- package/docs/APPS.md +0 -232
- package/docs/ARCHITECTURE.md +0 -246
- package/docs/INSTALL.md +0 -155
- package/docs/design-schema-spec.md +0 -1837
- package/docs/dev-guides/01-create-an-app.md +0 -183
- package/docs/dev-guides/02-create-a-function.md +0 -178
- package/docs/dev-guides/03-create-a-component.md +0 -178
- package/docs/dev-guides/04-webhook-handlers.md +0 -129
- package/docs/dev-guides/05-testing.md +0 -168
- package/docs/dev-guides/README.md +0 -40
- package/docs/npm-packages-plan.md +0 -288
- package/docs/spine-core--api-reference.md +0 -822
|
@@ -1,38 +1,44 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module system
|
|
3
|
-
* @audience both
|
|
4
|
-
* @layer api-handler
|
|
5
|
-
* @stability stable
|
|
6
|
-
*
|
|
7
|
-
* System discovery and health endpoints for agentic IDE integration.
|
|
8
|
-
* Provides machine-readable descriptions of the Spine instance,
|
|
9
|
-
* runtime health checks, and OpenAPI spec generation.
|
|
10
|
-
*
|
|
11
|
-
* **Routed by:** `GET /.netlify/functions/system`
|
|
12
|
-
*
|
|
13
|
-
* **Dispatch table:**
|
|
14
|
-
* | ?action | Description |
|
|
15
|
-
* |---------|-------------|
|
|
16
|
-
* | manifest | Returns system manifest (version, functions, integrity) |
|
|
17
|
-
* | health | Returns health check status of all components |
|
|
18
|
-
* | openapi | Returns OpenAPI 3.1 spec for all endpoints |
|
|
19
|
-
*
|
|
20
|
-
* **Authorization:**
|
|
21
|
-
* - `manifest`: No auth required (public endpoint)
|
|
22
|
-
* - `health`: No auth required (public endpoint)
|
|
23
|
-
* - `openapi`: No auth required (public endpoint)
|
|
24
|
-
*
|
|
25
|
-
* @seeAlso .spine-manifest.json (integrity hashes)
|
|
26
|
-
* @seeAlso cli/index.ts (CLI consumer of these endpoints)
|
|
27
|
-
*/
|
|
28
1
|
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
// CIL[BEGIN chunk_id="system_module_header_1783931956" type="module_header" identity="module_header" parent="none"]
|
|
9
|
+
// CIL[DOC-MACRO purpose="Import dependencies for system discovery endpoints"]
|
|
10
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide middleware, database, and file system utilities"]
|
|
11
|
+
// CIL[DOC-CONTEXT module="system" layer="api-handler" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
12
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="imported modules" errors="none" side_effects="none"]
|
|
13
|
+
// CIL[DOC-MICRO logic_summary="Imports handler, database, and file system modules for system operations" notable_decisions="[]"]
|
|
14
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
15
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
16
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
17
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
18
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
19
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
20
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
21
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
22
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
29
23
|
import { createHandler } from './_shared/middleware'
|
|
30
24
|
import { adminDb } from './_shared/db'
|
|
31
25
|
import { readFileSync, existsSync, readdirSync } from 'fs'
|
|
32
26
|
import { resolve } from 'path'
|
|
33
|
-
|
|
34
|
-
//
|
|
35
|
-
|
|
27
|
+
// CIL[END chunk_id="system_module_header_1783931956"]
|
|
28
|
+
// CIL[BEGIN chunk_id="system_types_1783931956" type="interface" identity="types" parent="none"]
|
|
29
|
+
// CIL[DOC-MACRO purpose="Define type interfaces for system endpoints"]
|
|
30
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide type definitions for system data structures"]
|
|
31
|
+
// CIL[DOC-CONTEXT module="system" layer="api-handler" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
|
|
32
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definitions" errors="none" side_effects="none"]
|
|
33
|
+
// CIL[DOC-MICRO logic_summary="Defines FunctionInfo, SystemManifest, and HealthCheck interfaces" notable_decisions="[]"]
|
|
34
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
35
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
36
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 9. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
|
|
37
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 9. Total affected: 9."]
|
|
38
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
39
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
40
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
41
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
36
42
|
interface FunctionInfo {
|
|
37
43
|
name: string
|
|
38
44
|
methods: string[]
|
|
@@ -64,11 +70,21 @@ interface HealthCheck {
|
|
|
64
70
|
test_runs?: { last_suite: string; last_status: string; last_at: string }
|
|
65
71
|
}
|
|
66
72
|
}
|
|
67
|
-
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
//
|
|
71
|
-
//
|
|
73
|
+
// CIL[END chunk_id="system_types_1783931956"]
|
|
74
|
+
// CIL[BEGIN chunk_id="system_helpers_1783931956" type="helpers" identity="helpers" parent="none"]
|
|
75
|
+
// CIL[DOC-MACRO purpose="Provide helper functions for system operations"]
|
|
76
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Handle manifest loading and function discovery"]
|
|
77
|
+
// CIL[DOC-CONTEXT module="system" layer="api-handler" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
78
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="helper functions" errors="none" side_effects="file system access"]
|
|
79
|
+
// CIL[DOC-MICRO logic_summary="Loads manifest from disk, discovers available functions in filesystem" notable_decisions="[]"]
|
|
80
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
81
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
82
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
83
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
84
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
85
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
86
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
87
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
72
88
|
const PROJECT_ROOT = resolve(process.cwd(), '.')
|
|
73
89
|
|
|
74
90
|
function loadManifest(): { version: string; integrity: { core_hash: string | null; verified: boolean } } {
|
|
@@ -103,7 +119,6 @@ async function discoverFunctions(): Promise<FunctionInfo[]> {
|
|
|
103
119
|
|
|
104
120
|
return files.map(f => {
|
|
105
121
|
const name = f.replace('.ts', '')
|
|
106
|
-
// Infer methods from common patterns
|
|
107
122
|
const methods = ['GET']
|
|
108
123
|
if (!['logs', 'tests', 'system-cron', 'debug-auth'].includes(name)) {
|
|
109
124
|
methods.push('POST')
|
|
@@ -123,13 +138,24 @@ async function discoverFunctions(): Promise<FunctionInfo[]> {
|
|
|
123
138
|
}
|
|
124
139
|
})
|
|
125
140
|
}
|
|
126
|
-
|
|
127
|
-
//
|
|
128
|
-
|
|
141
|
+
// CIL[END chunk_id="system_helpers_1783931956"]
|
|
142
|
+
// CIL[BEGIN chunk_id="system_getmanifest_1783931956" type="function" identity="getManifest" parent="none"]
|
|
143
|
+
// CIL[DOC-MACRO purpose="Generate system manifest with version and migration status"]
|
|
144
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide complete system status information"]
|
|
145
|
+
// CIL[DOC-CONTEXT module="system" layer="api-handler" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
146
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="SystemManifest data" errors="none" side_effects="database and file system queries"]
|
|
147
|
+
// CIL[DOC-MICRO logic_summary="Compares local migrations with applied migrations, discovers functions" notable_decisions="[]"]
|
|
148
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
149
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
150
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 1. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
151
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
|
|
152
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
153
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
154
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
155
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
129
156
|
async function getManifest(): Promise<{ data: SystemManifest }> {
|
|
130
157
|
const manifest = loadManifest()
|
|
131
158
|
|
|
132
|
-
// Get migration status
|
|
133
159
|
const migrationsDir = resolve(PROJECT_ROOT, 'v2-core/migrations_dayzero')
|
|
134
160
|
let localMigrations: string[] = []
|
|
135
161
|
if (existsSync(migrationsDir)) {
|
|
@@ -147,7 +173,6 @@ async function getManifest(): Promise<{ data: SystemManifest }> {
|
|
|
147
173
|
.order('version', { ascending: true })
|
|
148
174
|
appliedMigrations = (data || []).map((r: any) => r.version)
|
|
149
175
|
} catch {
|
|
150
|
-
// Schema migrations table may not exist yet
|
|
151
176
|
}
|
|
152
177
|
|
|
153
178
|
const appliedSet = new Set(appliedMigrations)
|
|
@@ -169,7 +194,21 @@ async function getManifest(): Promise<{ data: SystemManifest }> {
|
|
|
169
194
|
}
|
|
170
195
|
}
|
|
171
196
|
}
|
|
172
|
-
|
|
197
|
+
// CIL[END chunk_id="system_getmanifest_1783931956"]
|
|
198
|
+
// CIL[BEGIN chunk_id="system_gethealth_1783931956" type="function" identity="getHealth" parent="none"]
|
|
199
|
+
// CIL[DOC-MACRO purpose="Perform system health checks across components"]
|
|
200
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Check database, migrations, and integrity status"]
|
|
201
|
+
// CIL[DOC-CONTEXT module="system" layer="api-handler" related_files="[\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
202
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="HealthCheck data" errors="none" side_effects="database queries"]
|
|
203
|
+
// CIL[DOC-MICRO logic_summary="Tests database connectivity, compares migration status, checks integrity" notable_decisions="[]"]
|
|
204
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
205
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
206
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 1. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
207
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
|
|
208
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
209
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
210
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
211
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
173
212
|
async function getHealth(): Promise<{ data: HealthCheck }> {
|
|
174
213
|
const checks: HealthCheck['checks'] = {
|
|
175
214
|
database: { connected: false, latency_ms: 0 },
|
|
@@ -177,7 +216,6 @@ async function getHealth(): Promise<{ data: HealthCheck }> {
|
|
|
177
216
|
integrity: { verified: false }
|
|
178
217
|
}
|
|
179
218
|
|
|
180
|
-
// Database check
|
|
181
219
|
const dbStart = Date.now()
|
|
182
220
|
try {
|
|
183
221
|
const { error } = await adminDb.from('accounts').select('id').limit(1)
|
|
@@ -187,7 +225,6 @@ async function getHealth(): Promise<{ data: HealthCheck }> {
|
|
|
187
225
|
checks.database.connected = false
|
|
188
226
|
}
|
|
189
227
|
|
|
190
|
-
// Migration check
|
|
191
228
|
const migrationsDir = resolve(PROJECT_ROOT, 'v2-core/migrations_dayzero')
|
|
192
229
|
let localMigrations: string[] = []
|
|
193
230
|
if (existsSync(migrationsDir)) {
|
|
@@ -211,11 +248,9 @@ async function getHealth(): Promise<{ data: HealthCheck }> {
|
|
|
211
248
|
checks.migrations.current = false
|
|
212
249
|
}
|
|
213
250
|
|
|
214
|
-
// Integrity check
|
|
215
251
|
const manifest = loadManifest()
|
|
216
252
|
checks.integrity.verified = manifest.integrity.verified
|
|
217
253
|
|
|
218
|
-
// Test run check (optional)
|
|
219
254
|
try {
|
|
220
255
|
const { data } = await adminDb
|
|
221
256
|
.from('test_runs')
|
|
@@ -231,10 +266,8 @@ async function getHealth(): Promise<{ data: HealthCheck }> {
|
|
|
231
266
|
}
|
|
232
267
|
}
|
|
233
268
|
} catch {
|
|
234
|
-
// test_runs table may not exist
|
|
235
269
|
}
|
|
236
270
|
|
|
237
|
-
// Determine overall status
|
|
238
271
|
let status: HealthCheck['status'] = 'healthy'
|
|
239
272
|
if (!checks.database.connected) {
|
|
240
273
|
status = 'unhealthy'
|
|
@@ -244,7 +277,21 @@ async function getHealth(): Promise<{ data: HealthCheck }> {
|
|
|
244
277
|
|
|
245
278
|
return { data: { status, checks } }
|
|
246
279
|
}
|
|
247
|
-
|
|
280
|
+
// CIL[END chunk_id="system_gethealth_1783931956"]
|
|
281
|
+
// CIL[BEGIN chunk_id="system_getopenapi_1783931956" type="function" identity="getOpenApi" parent="none"]
|
|
282
|
+
// CIL[DOC-MACRO purpose="Generate OpenAPI 3.1 specification for all endpoints"]
|
|
283
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Create machine-readable API documentation"]
|
|
284
|
+
// CIL[DOC-CONTEXT module="system" layer="api-handler" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
285
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="OpenAPI spec object" errors="none" side_effects="none"]
|
|
286
|
+
// CIL[DOC-MICRO logic_summary="Builds OpenAPI paths and operations from discovered function metadata" notable_decisions="[]"]
|
|
287
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
288
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
289
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 1. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
290
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
|
|
291
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
292
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
293
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
294
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
248
295
|
async function getOpenApi(): Promise<{ data: any }> {
|
|
249
296
|
const functions = await discoverFunctions()
|
|
250
297
|
const manifest = loadManifest()
|
|
@@ -297,9 +344,21 @@ async function getOpenApi(): Promise<{ data: any }> {
|
|
|
297
344
|
}
|
|
298
345
|
}
|
|
299
346
|
}
|
|
300
|
-
|
|
301
|
-
//
|
|
302
|
-
|
|
347
|
+
// CIL[END chunk_id="system_getopenapi_1783931956"]
|
|
348
|
+
// CIL[BEGIN chunk_id="system_handler_1783931956" type="function" identity="handler" parent="none"]
|
|
349
|
+
// CIL[DOC-MACRO purpose="Route system API requests to appropriate handlers"]
|
|
350
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Dispatch system endpoint actions based on query parameters"]
|
|
351
|
+
// CIL[DOC-CONTEXT module="system" layer="api-handler" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\"\\\"]"]
|
|
352
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="system data responses" errors="400" side_effects="calls helper functions"]
|
|
353
|
+
// CIL[DOC-MICRO logic_summary="Routes to manifest, health, or openapi based on action parameter" notable_decisions="[]"]
|
|
354
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
355
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
356
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/table-primitives.tsx, \."]
|
|
357
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
358
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
359
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
360
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
361
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
303
362
|
export const handler = createHandler(async (ctx) => {
|
|
304
363
|
const q = (ctx as any).query || {}
|
|
305
364
|
const action = q.action || 'manifest'
|
|
@@ -321,3 +380,4 @@ export const handler = createHandler(async (ctx) => {
|
|
|
321
380
|
}
|
|
322
381
|
}
|
|
323
382
|
})
|
|
383
|
+
// CIL[END chunk_id="system_handler_1783931956"]
|
|
@@ -1,33 +1,37 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module tests
|
|
3
|
-
* @audience both
|
|
4
|
-
* @layer api-handler
|
|
5
|
-
* @stability stable
|
|
6
|
-
*
|
|
7
|
-
* Read-only API for the admin Testing dashboard. Exposes test run history
|
|
8
|
-
* and per-case results stored in public.test_runs / public.test_results.
|
|
9
|
-
*
|
|
10
|
-
* **Routed by:** `GET /.netlify/functions/tests`
|
|
11
|
-
*
|
|
12
|
-
* **Dispatch table:**
|
|
13
|
-
* | ?action | ?id | Description |
|
|
14
|
-
* |---------|-----|-------------|
|
|
15
|
-
* | list | — | Returns 20 most recent test_runs (summary, no individual results) |
|
|
16
|
-
* | get | uuid | Returns one test_run + all its test_results |
|
|
17
|
-
* | stats | — | Returns pass/fail counts grouped by suite for last 30 days |
|
|
18
|
-
*
|
|
19
|
-
* **Authorization:** system_admin only (machine principals with *:* also allowed).
|
|
20
|
-
*
|
|
21
|
-
* INVARIANT: no writes. This endpoint is purely for reading stored test run data.
|
|
22
|
-
*
|
|
23
|
-
* @seeAlso migrations_dayzero/008_test_runs.sql
|
|
24
|
-
* @seeAlso tests/reporter.ts (writes the data this endpoint reads)
|
|
25
|
-
* @seeAlso src/pages/admin/TestingDashboard.tsx (primary consumer)
|
|
26
|
-
*/
|
|
27
1
|
|
|
2
|
+
|
|
3
|
+
// CIL[BEGIN chunk_id="tests_module_header_1783931956" type="module_header" identity="module_header" parent="none"]
|
|
4
|
+
// CIL[DOC-MACRO purpose="Import dependencies for test API handler"]
|
|
5
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide middleware and database access"]
|
|
6
|
+
// CIL[DOC-CONTEXT module="tests" layer="api-handler" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
7
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="imported modules" errors="none" side_effects="none"]
|
|
8
|
+
// CIL[DOC-MICRO logic_summary="Imports createHandler middleware and adminDb for database access" notable_decisions="[]"]
|
|
9
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
10
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
11
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
12
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
13
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
14
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
15
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
16
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
17
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
28
18
|
import { createHandler, requireSystemContextWithAudit } from './_shared/middleware'
|
|
29
19
|
import { adminDb } from './_shared/db'
|
|
30
|
-
|
|
20
|
+
// CIL[END chunk_id="tests_module_header_1783931956"]
|
|
21
|
+
// CIL[BEGIN chunk_id="tests_handler_1783931956" type="function" identity="handler" parent="none"]
|
|
22
|
+
// CIL[DOC-MACRO purpose="Handle test API requests with multiple actions"]
|
|
23
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Process test list, get, and stats endpoints"]
|
|
24
|
+
// CIL[DOC-CONTEXT module="tests" layer="api-handler" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/components/ui/table-primitives.tsx\",\"\\\"]"]
|
|
25
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="test data or error responses" errors="400/404/500" side_effects="database queries"]
|
|
26
|
+
// CIL[DOC-MICRO logic_summary="Routes requests by action parameter, queries test_runs and test_results tables" notable_decisions="[]"]
|
|
27
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
28
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
29
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/components/ui/table-primitives.tsx, \."]
|
|
30
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
31
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
32
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
33
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
34
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
31
35
|
export const handler = createHandler(async (ctx) => {
|
|
32
36
|
const authErr = requireSystemContextWithAudit(ctx)
|
|
33
37
|
if (authErr) return authErr
|
|
@@ -97,7 +101,6 @@ export const handler = createHandler(async (ctx) => {
|
|
|
97
101
|
return { data: stats, error: null }
|
|
98
102
|
}
|
|
99
103
|
|
|
100
|
-
// action === 'list'
|
|
101
104
|
const limit = Math.min(parseInt(q.limit || '20', 10), 100)
|
|
102
105
|
const suite = q.suite || null
|
|
103
106
|
|
|
@@ -117,3 +120,4 @@ export const handler = createHandler(async (ctx) => {
|
|
|
117
120
|
|
|
118
121
|
return { data: data ?? [], error: null }
|
|
119
122
|
})
|
|
123
|
+
// CIL[END chunk_id="tests_handler_1783931956"]
|