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,44 +1,38 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/**
|
|
3
|
-
* @module cli/commands/doctor
|
|
4
|
-
* @audience installer
|
|
5
|
-
* @layer cli
|
|
6
|
-
* @stability stable
|
|
7
|
-
*
|
|
8
|
-
* `spine doctor` command — comprehensive system validation for agentic IDE setup.
|
|
9
|
-
* Checks environment, database, migrations, integrity, and custom code.
|
|
10
|
-
*
|
|
11
|
-
* **Commands:**
|
|
12
|
-
* | Subcommand | Description |
|
|
13
|
-
* |-------------------|-------------------------------------------------------|
|
|
14
|
-
* | `doctor` | Run all checks and report status |
|
|
15
|
-
* | `doctor --json` | Output structured JSON for agent consumption |
|
|
16
|
-
* | `doctor --fix` | Attempt automatic remediation where possible |
|
|
17
|
-
*
|
|
18
|
-
* **Checks performed:**
|
|
19
|
-
* 1. Environment variables (SUPABASE_URL, SERVICE_ROLE_KEY)
|
|
20
|
-
* 2. Database connectivity and latency
|
|
21
|
-
* 3. Migration status (local vs applied)
|
|
22
|
-
* 4. Core integrity (manifest hash verification)
|
|
23
|
-
* 5. Custom code TypeScript compilation
|
|
24
|
-
* 6. Test suite status (last run results)
|
|
25
|
-
*
|
|
26
|
-
* **Exit codes:**
|
|
27
|
-
* - 0: All checks passed (healthy)
|
|
28
|
-
* - 1: One or more checks failed
|
|
29
|
-
* - 2: Check passed but warnings present (degraded)
|
|
30
|
-
*
|
|
31
|
-
* **Usage:**
|
|
32
|
-
* ```bash
|
|
33
|
-
* spine doctor
|
|
34
|
-
* spine doctor --json
|
|
35
|
-
* spine doctor --fix
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
|
-
* @seeAlso cli/context.ts (buildCliContext)
|
|
39
|
-
* @seeAlso functions/system.ts (health endpoint)
|
|
40
|
-
*/
|
|
41
1
|
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
// CIL[BEGIN chunk_id="doctor_module_header_1784071456" type="module_header" identity="module_header" parent="none"]
|
|
22
|
+
// CIL[DOC-MACRO purpose="Import dependencies for doctor CLI commands"]
|
|
23
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide imports and utilities for health checks"]
|
|
24
|
+
// CIL[DOC-CONTEXT module="doctor-cli" layer="cli" 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\",\"\\\"]"]
|
|
25
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="imports" errors="none" side_effects="none"]
|
|
26
|
+
// CIL[DOC-MICRO logic_summary="Imports Command type, context, database, and file system modules" notable_decisions="[]"]
|
|
27
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
28
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
29
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
30
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. 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, \."]
|
|
31
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
32
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
33
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
34
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
35
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
42
36
|
import type { Command } from 'commander'
|
|
43
37
|
import { buildCliContext, handleError } from '../context.ts'
|
|
44
38
|
import { adminDb } from '../../functions/_shared/index.ts'
|
|
@@ -48,9 +42,21 @@ import { fileURLToPath } from 'url'
|
|
|
48
42
|
|
|
49
43
|
const __filename = fileURLToPath(import.meta.url)
|
|
50
44
|
const __dirname = dirname(__filename)
|
|
51
|
-
|
|
52
|
-
//
|
|
53
|
-
|
|
45
|
+
// CIL[END chunk_id="doctor_module_header_1784071456"]
|
|
46
|
+
// CIL[BEGIN chunk_id="doctor_checkresult_1784071456" type="interface" identity="CheckResult" parent="none"]
|
|
47
|
+
// CIL[DOC-MACRO purpose="Define structure for health check results"]
|
|
48
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide standardized check result format"]
|
|
49
|
+
// CIL[DOC-CONTEXT module="doctor-cli" layer="cli" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
50
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
51
|
+
// CIL[DOC-MICRO logic_summary="Defines check result with status, message, and optional details" notable_decisions="[]"]
|
|
52
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
53
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
54
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
55
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
56
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
57
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
58
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
59
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
54
60
|
interface CheckResult {
|
|
55
61
|
name: string
|
|
56
62
|
status: 'pass' | 'fail' | 'warn'
|
|
@@ -58,7 +64,21 @@ interface CheckResult {
|
|
|
58
64
|
details?: Record<string, any>
|
|
59
65
|
fixable?: boolean
|
|
60
66
|
}
|
|
61
|
-
|
|
67
|
+
// CIL[END chunk_id="doctor_checkresult_1784071456"]
|
|
68
|
+
// CIL[BEGIN chunk_id="doctor_doctorreport_1784071456" type="interface" identity="DoctorReport" parent="none"]
|
|
69
|
+
// CIL[DOC-MACRO purpose="Define structure for comprehensive doctor report"]
|
|
70
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide complete health check summary format"]
|
|
71
|
+
// CIL[DOC-CONTEXT module="doctor-cli" layer="cli" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
72
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
73
|
+
// CIL[DOC-MICRO logic_summary="Defines report with overall status and check summaries" 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: cli. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
77
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
78
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
79
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
80
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
81
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
62
82
|
interface DoctorReport {
|
|
63
83
|
overall: 'healthy' | 'degraded' | 'unhealthy'
|
|
64
84
|
checks: CheckResult[]
|
|
@@ -69,9 +89,21 @@ interface DoctorReport {
|
|
|
69
89
|
fixable: number
|
|
70
90
|
}
|
|
71
91
|
}
|
|
72
|
-
|
|
73
|
-
//
|
|
74
|
-
|
|
92
|
+
// CIL[END chunk_id="doctor_doctorreport_1784071456"]
|
|
93
|
+
// CIL[BEGIN chunk_id="doctor_checkenvironment_1784071456" type="function" identity="checkEnvironment" parent="none"]
|
|
94
|
+
// CIL[DOC-MACRO purpose="Check required environment variables"]
|
|
95
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Validate Supabase environment configuration"]
|
|
96
|
+
// CIL[DOC-CONTEXT module="doctor-cli" layer="cli" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
97
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="CheckResult" errors="none" side_effects="reads environment variables"]
|
|
98
|
+
// CIL[DOC-MICRO logic_summary="Validates required env vars and checks for .xenv file" notable_decisions="[]"]
|
|
99
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
100
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
101
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
102
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
103
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
104
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
105
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
106
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
75
107
|
async function checkEnvironment(): Promise<CheckResult> {
|
|
76
108
|
const required = ['SUPABASE_URL', 'SUPABASE_SERVICE_ROLE_KEY']
|
|
77
109
|
const missing = required.filter(v => !process.env[v])
|
|
@@ -86,7 +118,7 @@ async function checkEnvironment(): Promise<CheckResult> {
|
|
|
86
118
|
}
|
|
87
119
|
}
|
|
88
120
|
|
|
89
|
-
|
|
121
|
+
|
|
90
122
|
const xenvPath = resolve(__dirname, '../../.xenv')
|
|
91
123
|
const hasXenv = existsSync(xenvPath)
|
|
92
124
|
|
|
@@ -97,7 +129,21 @@ async function checkEnvironment(): Promise<CheckResult> {
|
|
|
97
129
|
details: { has_xenv: hasXenv, vars_present: required.length }
|
|
98
130
|
}
|
|
99
131
|
}
|
|
100
|
-
|
|
132
|
+
// CIL[END chunk_id="doctor_checkenvironment_1784071456"]
|
|
133
|
+
// CIL[BEGIN chunk_id="doctor_checkdatabase_1784071456" type="function" identity="checkDatabase" parent="none"]
|
|
134
|
+
// CIL[DOC-MACRO purpose="Check database connectivity and performance"]
|
|
135
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Validate database connection and measure latency"]
|
|
136
|
+
// CIL[DOC-CONTEXT module="doctor-cli" layer="cli" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
137
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="CheckResult" errors="database connection errors" side_effects="queries database"]
|
|
138
|
+
// CIL[DOC-MICRO logic_summary="Tests database connection with simple query and measures latency" notable_decisions="[]"]
|
|
139
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="external_symbols_unknown"]
|
|
140
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
141
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. 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/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
|
|
142
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
143
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
144
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
145
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
146
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
101
147
|
async function checkDatabase(): Promise<CheckResult> {
|
|
102
148
|
const start = Date.now()
|
|
103
149
|
try {
|
|
@@ -129,7 +175,21 @@ async function checkDatabase(): Promise<CheckResult> {
|
|
|
129
175
|
}
|
|
130
176
|
}
|
|
131
177
|
}
|
|
132
|
-
|
|
178
|
+
// CIL[END chunk_id="doctor_checkdatabase_1784071456"]
|
|
179
|
+
// CIL[BEGIN chunk_id="doctor_checkmigrations_1784071456" type="function" identity="checkMigrations" parent="none"]
|
|
180
|
+
// CIL[DOC-MACRO purpose="Check migration status and pending migrations"]
|
|
181
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Compare local migration files with applied migrations"]
|
|
182
|
+
// CIL[DOC-CONTEXT module="doctor-cli" layer="cli" related_files="[]"]
|
|
183
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="CheckResult" errors="database query errors" side_effects="queries database, reads filesystem"]
|
|
184
|
+
// CIL[DOC-MICRO logic_summary="Compares local SQL files with database migration records" notable_decisions="[]"]
|
|
185
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="external_symbols_unknown"]
|
|
186
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
187
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
188
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
189
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
190
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
191
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
192
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
133
193
|
async function checkMigrations(): Promise<CheckResult> {
|
|
134
194
|
const migrationsDir = resolve(__dirname, '../../migrations_dayzero')
|
|
135
195
|
|
|
@@ -191,7 +251,21 @@ async function checkMigrations(): Promise<CheckResult> {
|
|
|
191
251
|
}
|
|
192
252
|
}
|
|
193
253
|
}
|
|
194
|
-
|
|
254
|
+
// CIL[END chunk_id="doctor_checkmigrations_1784071456"]
|
|
255
|
+
// CIL[BEGIN chunk_id="doctor_checkintegrity_1784071456" type="function" identity="checkIntegrity" parent="none"]
|
|
256
|
+
// CIL[DOC-MACRO purpose="Check core integrity manifest"]
|
|
257
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Validate spine manifest and integrity hash"]
|
|
258
|
+
// CIL[DOC-CONTEXT module="doctor-cli" layer="cli" related_files="[]"]
|
|
259
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="CheckResult" errors="file system errors" side_effects="reads manifest file"]
|
|
260
|
+
// CIL[DOC-MICRO logic_summary="Checks for manifest file and validates integrity hash presence" notable_decisions="[]"]
|
|
261
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
262
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
263
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
264
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
265
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
266
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
267
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
268
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
195
269
|
async function checkIntegrity(): Promise<CheckResult> {
|
|
196
270
|
const manifestPath = resolve(__dirname, '../../.spine-manifest.json')
|
|
197
271
|
|
|
@@ -218,9 +292,7 @@ async function checkIntegrity(): Promise<CheckResult> {
|
|
|
218
292
|
}
|
|
219
293
|
}
|
|
220
294
|
|
|
221
|
-
|
|
222
|
-
// computing SHA256 of all core files, which is slow. We just check
|
|
223
|
-
// that a manifest exists and looks valid.
|
|
295
|
+
|
|
224
296
|
return {
|
|
225
297
|
name: 'integrity',
|
|
226
298
|
status: 'pass',
|
|
@@ -236,7 +308,21 @@ async function checkIntegrity(): Promise<CheckResult> {
|
|
|
236
308
|
}
|
|
237
309
|
}
|
|
238
310
|
}
|
|
239
|
-
|
|
311
|
+
// CIL[END chunk_id="doctor_checkintegrity_1784071456"]
|
|
312
|
+
// CIL[BEGIN chunk_id="doctor_checktestruns_1784071456" type="function" identity="checkTestRuns" parent="none"]
|
|
313
|
+
// CIL[DOC-MACRO purpose="Check recent test run status"]
|
|
314
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Query latest test run and report status"]
|
|
315
|
+
// CIL[DOC-CONTEXT module="doctor-cli" layer="cli" related_files="[]"]
|
|
316
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="CheckResult" errors="database query errors" side_effects="queries test_runs table"]
|
|
317
|
+
// CIL[DOC-MICRO logic_summary="Retrieves most recent test run and reports its status" notable_decisions="[]"]
|
|
318
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="external_symbols_unknown"]
|
|
319
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
320
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
321
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
322
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
323
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
324
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
325
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
240
326
|
async function checkTestRuns(): Promise<CheckResult> {
|
|
241
327
|
try {
|
|
242
328
|
const { data, error } = await adminDb
|
|
@@ -281,9 +367,21 @@ async function checkTestRuns(): Promise<CheckResult> {
|
|
|
281
367
|
}
|
|
282
368
|
}
|
|
283
369
|
}
|
|
284
|
-
|
|
285
|
-
//
|
|
286
|
-
|
|
370
|
+
// CIL[END chunk_id="doctor_checktestruns_1784071456"]
|
|
371
|
+
// CIL[BEGIN chunk_id="doctor_tryfix_1784071456" type="function" identity="tryFix" parent="none"]
|
|
372
|
+
// CIL[DOC-MACRO purpose="Provide fix suggestions for failed checks"]
|
|
373
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Generate remediation instructions for common issues"]
|
|
374
|
+
// CIL[DOC-CONTEXT module="doctor-cli" layer="cli" related_files="[]"]
|
|
375
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="string" errors="none" side_effects="none"]
|
|
376
|
+
// CIL[DOC-MICRO logic_summary="Maps check names to specific fix commands and instructions" notable_decisions="[]"]
|
|
377
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
378
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
379
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
380
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
381
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
382
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
383
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
384
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
287
385
|
async function tryFix(check: CheckResult): Promise<string> {
|
|
288
386
|
switch (check.name) {
|
|
289
387
|
case 'environment':
|
|
@@ -302,9 +400,21 @@ async function tryFix(check: CheckResult): Promise<string> {
|
|
|
302
400
|
return 'No automatic fix available'
|
|
303
401
|
}
|
|
304
402
|
}
|
|
305
|
-
|
|
306
|
-
//
|
|
307
|
-
|
|
403
|
+
// CIL[END chunk_id="doctor_tryfix_1784071456"]
|
|
404
|
+
// CIL[BEGIN chunk_id="doctor_registerdoctorcommands_1784071456" type="function" identity="registerDoctorCommands" parent="none"]
|
|
405
|
+
// CIL[DOC-MACRO purpose="Register doctor command with CLI framework"]
|
|
406
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Orchestrate all health checks and generate report"]
|
|
407
|
+
// CIL[DOC-CONTEXT module="doctor-cli" layer="cli" related_files="[]"]
|
|
408
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="doctor command registration" errors="CLI context errors" side_effects="outputs health report"]
|
|
409
|
+
// CIL[DOC-MICRO logic_summary="Runs all checks in dependency order and formats results" notable_decisions="[]"]
|
|
410
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="external_symbols_unknown"]
|
|
411
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
412
|
+
// CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
413
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
414
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
415
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
416
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
417
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
308
418
|
export function registerDoctorCommands(program: Command) {
|
|
309
419
|
program
|
|
310
420
|
.command('doctor')
|
|
@@ -313,8 +423,7 @@ export function registerDoctorCommands(program: Command) {
|
|
|
313
423
|
.option('--fix', 'Show fix instructions for failed checks')
|
|
314
424
|
.action(async (opts) => {
|
|
315
425
|
try {
|
|
316
|
-
|
|
317
|
-
// even when env vars are missing
|
|
426
|
+
|
|
318
427
|
let ctx
|
|
319
428
|
try {
|
|
320
429
|
ctx = await buildCliContext()
|
|
@@ -322,16 +431,16 @@ export function registerDoctorCommands(program: Command) {
|
|
|
322
431
|
ctx = null
|
|
323
432
|
}
|
|
324
433
|
|
|
325
|
-
|
|
434
|
+
|
|
326
435
|
const checks: CheckResult[] = []
|
|
327
436
|
|
|
328
437
|
checks.push(await checkEnvironment())
|
|
329
438
|
|
|
330
|
-
|
|
439
|
+
|
|
331
440
|
if (checks[0].status === 'pass') {
|
|
332
441
|
checks.push(await checkDatabase())
|
|
333
442
|
|
|
334
|
-
|
|
443
|
+
|
|
335
444
|
if (checks[1].status === 'pass') {
|
|
336
445
|
checks.push(await checkMigrations())
|
|
337
446
|
checks.push(await checkTestRuns())
|
|
@@ -372,7 +481,7 @@ export function registerDoctorCommands(program: Command) {
|
|
|
372
481
|
|
|
373
482
|
checks.push(await checkIntegrity())
|
|
374
483
|
|
|
375
|
-
|
|
484
|
+
|
|
376
485
|
const failed = checks.filter(c => c.status === 'fail').length
|
|
377
486
|
const warnings = checks.filter(c => c.status === 'warn').length
|
|
378
487
|
const fixable = checks.filter(c => c.fixable).length
|
|
@@ -397,7 +506,7 @@ export function registerDoctorCommands(program: Command) {
|
|
|
397
506
|
}
|
|
398
507
|
}
|
|
399
508
|
|
|
400
|
-
|
|
509
|
+
|
|
401
510
|
if (opts.json) {
|
|
402
511
|
console.log(JSON.stringify(report, null, 2))
|
|
403
512
|
} else {
|
|
@@ -426,7 +535,7 @@ export function registerDoctorCommands(program: Command) {
|
|
|
426
535
|
console.log()
|
|
427
536
|
}
|
|
428
537
|
|
|
429
|
-
|
|
538
|
+
|
|
430
539
|
if (overall === 'unhealthy') {
|
|
431
540
|
process.exit(1)
|
|
432
541
|
} else if (overall === 'degraded') {
|
|
@@ -440,3 +549,4 @@ export function registerDoctorCommands(program: Command) {
|
|
|
440
549
|
}
|
|
441
550
|
})
|
|
442
551
|
}
|
|
552
|
+
// CIL[END chunk_id="doctor_registerdoctorcommands_1784071456"]
|