spine-framework 0.4.3 → 0.5.0-rc.4
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 +13 -3
- package/.framework/cli/commands/bootstrap.ts +392 -0
- package/.framework/cli/commands/dev.ts +91 -218
- package/.framework/cli/commands/doctor.ts +132 -26
- package/.framework/cli/commands/generate.ts +38 -298
- package/.framework/cli/commands/init.ts +20 -1
- package/.framework/cli/commands/migrate.ts +36 -30
- package/.framework/cli/commands/migrations.ts +16 -56
- package/.framework/cli/commands/upgrade.ts +35 -0
- package/.framework/cli/commands/validate-schema.ts +147 -0
- package/.framework/cli/context.ts +223 -110
- package/.framework/cli/index.ts +6 -0
- package/.framework/cli/lib/project-files.ts +241 -1
- package/.framework/functions/_shared/agent-runner.ts +1000 -81
- package/.framework/functions/_shared/cil.ts +2 -1
- package/.framework/functions/_shared/db.ts +3 -6
- package/.framework/functions/_shared/hash-api-key.ts +183 -79
- package/.framework/functions/_shared/kb.ts +61 -7
- package/.framework/functions/_shared/logging.ts +562 -224
- package/.framework/functions/_shared/message-sequence.ts +53 -0
- package/.framework/functions/_shared/middleware.ts +47 -44
- package/.framework/functions/_shared/pipeline-runner.ts +150 -37
- package/.framework/functions/_shared/principal.ts +9 -6
- package/.framework/functions/_shared/trigger-engine.ts +149 -40
- package/.framework/functions/admin-data.ts +48 -31
- package/.framework/functions/ai-agents.ts +103 -33
- package/.framework/functions/api-keys.ts +301 -122
- package/.framework/functions/apps.ts +43 -26
- package/.framework/functions/cil-ingest.ts +48 -15
- package/.framework/functions/debug-auth.ts +14 -8
- package/.framework/functions/deliveries.ts +39 -12
- package/.framework/functions/embeddings.ts +145 -76
- package/.framework/functions/integration-outbound.ts +67 -27
- package/.framework/functions/integrations.ts +254 -127
- package/.framework/functions/logs.ts +273 -133
- package/.framework/functions/observability.ts +277 -147
- package/.framework/functions/pipeline-executions.ts +1 -1
- package/.framework/functions/pipeline-runner-background.ts +120 -0
- package/.framework/functions/pipelines.ts +14 -9
- package/.framework/functions/prompt-configs.ts +7 -4
- package/.framework/functions/roles.ts +8 -5
- package/.framework/functions/security.ts +30 -17
- package/.framework/functions/system-cron.ts +250 -128
- package/.framework/functions/tests.ts +7 -6
- package/.framework/functions/timers.ts +310 -107
- package/.framework/functions/trigger-scheduler.ts +65 -5
- package/.framework/functions/triggers.ts +28 -13
- package/.framework/functions/types.ts +13 -10
- package/.framework/migrations/064_episode_leases.sql +196 -0
- package/.framework/migrations/065_execution_tables_updated_at.sql +20 -0
- package/.framework/migrations/066_episode_steal_thread_merge.sql +148 -0
- package/.framework/migrations/067_episode_lease_stale_steal.sql +93 -0
- package/.framework/migrations/068_cron_schedule_timer_rpcs.sql +251 -0
- package/.framework/migrations/069_log_stats_window.sql +54 -0
- package/.framework/migrations/070_app_type_schema_rpcs.sql +166 -0
- package/.framework/migrations/071_timer_interval_keys.sql +96 -0
- package/.framework/migrations/072_slug_autofill.sql +77 -0
- package/.framework/migrations/073_seed_member_roles.sql +26 -0
- package/.framework/schemas/spine.config.schema.json +62 -0
- package/.framework/src/App.tsx +3 -1
- package/.framework/src/apps/admin/index.tsx +1141 -775
- package/.framework/src/components/ErrorBoundary.tsx +136 -0
- package/.framework/src/components/admin/AdminListPage.tsx +81 -73
- package/.framework/src/components/admin/AdminSidebar.tsx +92 -81
- package/.framework/src/components/admin/EntitySelect.tsx +181 -0
- package/.framework/src/components/admin/PageInstructions.tsx +86 -127
- package/.framework/src/components/app-shell/GenericAppShell.tsx +3 -1
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +37 -13
- package/.framework/src/components/app-shell/GenericListPage.tsx +28 -32
- package/.framework/src/components/auth/TurnstileWidget.tsx +9 -6
- package/.framework/src/components/kb/KBArticleEditor.tsx +49 -6
- package/.framework/src/components/layout/Layout.tsx +4 -2
- package/.framework/src/components/layout/Sidebar.tsx +304 -179
- package/.framework/src/components/runtime/DataDetailPage.tsx +67 -35
- package/.framework/src/components/runtime/DataHeader.tsx +96 -48
- package/.framework/src/components/runtime/DataListPage.tsx +3 -26
- package/.framework/src/components/runtime/DataStats.tsx +10 -10
- package/.framework/src/components/runtime/DataTable.tsx +12 -10
- package/.framework/src/components/ui/sheet.tsx +24 -26
- package/.framework/src/components/ui/textarea.tsx +74 -48
- package/.framework/src/hooks/useBranding.ts +47 -0
- package/.framework/src/hooks/useEntityList.ts +12 -9
- package/.framework/src/hooks/useListSchema.ts +108 -58
- package/.framework/src/instructions/README.md +57 -0
- package/.framework/src/instructions/ai-agents.md +69 -0
- package/.framework/src/instructions/alerts.md +80 -0
- package/.framework/src/instructions/api-keys.md +87 -0
- package/.framework/src/instructions/apps.md +77 -0
- package/.framework/src/instructions/concepts/ai-and-prompts.md +150 -0
- package/.framework/src/instructions/concepts/apps-and-renderers.md +162 -0
- package/.framework/src/instructions/concepts/auth-and-api-keys.md +133 -0
- package/.framework/src/instructions/concepts/automation.md +186 -0
- package/.framework/src/instructions/concepts/concurrency-and-idempotency.md +125 -0
- package/.framework/src/instructions/concepts/core-vs-custom.md +124 -0
- package/.framework/src/instructions/concepts/design-schema.md +152 -0
- package/.framework/src/instructions/concepts/integrations-and-webhooks.md +127 -0
- package/.framework/src/instructions/concepts/observability.md +116 -0
- package/.framework/src/instructions/concepts/permissions.md +150 -0
- package/.framework/src/instructions/concepts/runtime-records.md +111 -0
- package/.framework/src/instructions/concepts/scope-and-accounts.md +112 -0
- package/.framework/src/instructions/concepts/spine-way.md +172 -0
- package/.framework/src/instructions/deliveries.md +59 -0
- package/.framework/src/instructions/guide/00-orientation.md +106 -0
- package/.framework/src/instructions/guide/01-install-and-first-run.md +253 -0
- package/.framework/src/instructions/guide/02-project-map.md +147 -0
- package/.framework/src/instructions/guide/03-domain-model.md +223 -0
- package/.framework/src/instructions/guide/04-first-app.md +227 -0
- package/.framework/src/instructions/guide/05-glossary.md +183 -0
- package/.framework/src/instructions/integrations.md +96 -0
- package/.framework/src/instructions/internal/cil-markers.md +83 -0
- package/.framework/src/instructions/invites.md +60 -0
- package/.framework/src/instructions/kb.md +80 -0
- package/.framework/src/instructions/logs.md +77 -0
- package/.framework/src/instructions/observability.md +61 -0
- package/.framework/src/instructions/operations/deployment.md +115 -0
- package/.framework/src/instructions/operations/migrations.md +125 -0
- package/.framework/src/instructions/operations/security-checklist.md +148 -0
- package/.framework/src/instructions/operations/troubleshooting.md +170 -0
- package/.framework/src/instructions/operations/upgrade.md +116 -0
- package/.framework/src/instructions/pipeline-executions.md +62 -0
- package/.framework/src/instructions/pipelines.md +78 -0
- package/.framework/src/instructions/prompts.md +95 -0
- package/.framework/src/instructions/reference/api/admin-data.md +162 -0
- package/.framework/src/instructions/reference/api/auth.md +113 -0
- package/.framework/src/instructions/reference/api/errors-and-envelopes.md +113 -0
- package/.framework/src/instructions/reference/app-manifest.md +150 -0
- package/.framework/src/instructions/reference/cli.md +124 -0
- package/.framework/src/instructions/reference/database.md +132 -0
- package/.framework/src/instructions/reference/design-schema.md +280 -0
- package/.framework/src/instructions/reference/env-vars.md +133 -0
- package/.framework/src/instructions/reference/functions/account-nodes.md +75 -0
- package/.framework/src/instructions/reference/functions/admin-data.md +195 -0
- package/.framework/src/instructions/reference/functions/admin-funnel.md +90 -0
- package/.framework/src/instructions/reference/functions/admin-install-funnel.md +107 -0
- package/.framework/src/instructions/reference/functions/admin-signals.md +102 -0
- package/.framework/src/instructions/reference/functions/ai-agents.md +148 -0
- package/.framework/src/instructions/reference/functions/ai-interactions.md +156 -0
- package/.framework/src/instructions/reference/functions/api-keys.md +130 -0
- package/.framework/src/instructions/reference/functions/apps.md +140 -0
- package/.framework/src/instructions/reference/functions/auth.md +99 -0
- package/.framework/src/instructions/reference/functions/debug-auth.md +91 -0
- package/.framework/src/instructions/reference/functions/deliveries.md +110 -0
- package/.framework/src/instructions/reference/functions/embeddings.md +166 -0
- package/.framework/src/instructions/reference/functions/eval-harness.md +149 -0
- package/.framework/src/instructions/reference/functions/index.md +103 -0
- package/.framework/src/instructions/reference/functions/integration-outbound.md +200 -0
- package/.framework/src/instructions/reference/functions/integration-routes.md +151 -0
- package/.framework/src/instructions/reference/functions/integrations.md +130 -0
- package/.framework/src/instructions/reference/functions/invites.md +182 -0
- package/.framework/src/instructions/reference/functions/item-progress.md +107 -0
- package/.framework/src/instructions/reference/functions/kb.md +166 -0
- package/.framework/src/instructions/reference/functions/logs.md +141 -0
- package/.framework/src/instructions/reference/functions/observability.md +105 -0
- package/.framework/src/instructions/reference/functions/pipeline-executions.md +132 -0
- package/.framework/src/instructions/reference/functions/pipeline-runner-background.md +121 -0
- package/.framework/src/instructions/reference/functions/pipelines.md +136 -0
- package/.framework/src/instructions/reference/functions/prompt-configs.md +121 -0
- package/.framework/src/instructions/reference/functions/roles.md +121 -0
- package/.framework/src/instructions/reference/functions/security.md +140 -0
- package/.framework/src/instructions/reference/functions/system-cron.md +136 -0
- package/.framework/src/instructions/reference/functions/system.md +106 -0
- package/.framework/src/instructions/reference/functions/tests.md +97 -0
- package/.framework/src/instructions/reference/functions/timers.md +117 -0
- package/.framework/src/instructions/reference/functions/trigger-scheduler.md +102 -0
- package/.framework/src/instructions/reference/functions/triggers.md +140 -0
- package/.framework/src/instructions/reference/functions/types.md +146 -0
- package/.framework/src/instructions/reference/seeds.md +126 -0
- package/.framework/src/instructions/reference/shared-modules.md +127 -0
- package/.framework/src/instructions/reference/spine-config.md +114 -0
- package/.framework/src/instructions/roles.md +80 -0
- package/.framework/src/instructions/runtime-detail.md +70 -0
- package/.framework/src/instructions/runtime-list.md +77 -0
- package/.framework/src/instructions/security.md +67 -0
- package/.framework/src/instructions/tasks/add-a-pipeline.md +110 -0
- package/.framework/src/instructions/tasks/add-a-role.md +96 -0
- package/.framework/src/instructions/tasks/add-a-timer.md +114 -0
- package/.framework/src/instructions/tasks/add-a-trigger.md +106 -0
- package/.framework/src/instructions/tasks/add-a-type.md +151 -0
- package/.framework/src/instructions/tasks/add-a-webhook.md +108 -0
- package/.framework/src/instructions/tasks/add-an-ai-agent.md +108 -0
- package/.framework/src/instructions/tasks/add-an-integration.md +124 -0
- package/.framework/src/instructions/tasks/build-a-custom-page.md +118 -0
- package/.framework/src/instructions/tasks/package-and-install-an-app.md +127 -0
- package/.framework/src/instructions/tasks/test-your-code.md +108 -0
- package/.framework/src/instructions/tasks/write-a-function.md +132 -0
- package/.framework/src/instructions/tasks/write-a-migration.md +110 -0
- package/.framework/src/instructions/testing.md +59 -0
- package/.framework/src/instructions/timers.md +82 -0
- package/.framework/src/instructions/triggers.md +69 -0
- package/.framework/src/instructions/types.md +93 -0
- package/.framework/src/lib/branding.ts +128 -0
- package/.framework/src/pages/NoAppPage.tsx +3 -1
- package/.framework/src/pages/NotFoundPage.tsx +62 -31
- package/.framework/src/pages/SetupPage.tsx +5 -2
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +117 -106
- package/.framework/src/pages/admin/AIAgentsPage.tsx +86 -48
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +153 -152
- package/.framework/src/pages/admin/APIKeysPage.tsx +91 -90
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +29 -18
- package/.framework/src/pages/admin/AppDetailPage.tsx +6 -60
- package/.framework/src/pages/admin/AppsPage.tsx +104 -66
- package/.framework/src/pages/admin/DeliveriesPage.tsx +5 -5
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +5 -23
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +5 -26
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +7 -7
- package/.framework/src/pages/admin/IntegrationsPage.tsx +85 -43
- package/.framework/src/pages/admin/LogsPage.tsx +144 -76
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +223 -140
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +134 -113
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +108 -45
- package/.framework/src/pages/admin/PipelinesPage.tsx +160 -115
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +96 -98
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +101 -59
- package/.framework/src/pages/admin/RoleDetailPage.tsx +90 -79
- package/.framework/src/pages/admin/RolesPage.tsx +86 -43
- package/.framework/src/pages/admin/SecurityPage.tsx +1 -1
- package/.framework/src/pages/admin/TestingDashboard.tsx +16 -28
- package/.framework/src/pages/admin/TimerDetailPage.tsx +117 -100
- package/.framework/src/pages/admin/TimersPage.tsx +90 -62
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +90 -83
- package/.framework/src/pages/admin/TriggersPage.tsx +124 -99
- package/.framework/src/pages/admin/TypeDetailPage.tsx +152 -138
- package/.framework/src/pages/admin/TypesPage.tsx +90 -48
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +17 -25
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +17 -27
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +72 -40
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +321 -129
- package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +18 -29
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +26 -38
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +34 -46
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +189 -103
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +246 -136
- package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +11 -22
- package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +9 -20
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +26 -38
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +7 -26
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +3 -1
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +3 -1
- package/.framework/src/pages/auth/LoginPage.tsx +4 -2
- package/.framework/src/pages/auth/RegisterPage.tsx +3 -1
- package/.framework/templates/agent/AGENTS.md +150 -0
- package/.framework/templates/agent/skills/spine-add-ai-agent/SKILL.md +58 -0
- package/.framework/templates/agent/skills/spine-add-automation/SKILL.md +62 -0
- package/.framework/templates/agent/skills/spine-add-integration/SKILL.md +63 -0
- package/.framework/templates/agent/skills/spine-architect/SKILL.md +86 -0
- package/.framework/templates/agent/skills/spine-install-app/SKILL.md +72 -0
- package/.framework/templates/agent/skills/spine-migration/SKILL.md +75 -0
- package/.framework/templates/agent/skills/spine-new-app/SKILL.md +67 -0
- package/.framework/templates/agent/skills/spine-new-function/SKILL.md +65 -0
- package/.framework/templates/agent/skills/spine-new-type/SKILL.md +65 -0
- package/.framework/templates/agent/skills/spine-schema/SKILL.md +77 -0
- package/.framework/templates/agent/skills/spine-test/SKILL.md +67 -0
- package/.framework/templates/agent/skills/spine-troubleshoot/SKILL.md +74 -0
- package/.framework/templates/agent/skills/spine-upgrade/SKILL.md +69 -0
- package/.framework/templates/project.json +5 -1
- package/.framework/tests/unit/account-scoping-gates.test.ts +392 -0
- package/.framework/tests/unit/agent-files.test.ts +355 -0
- package/.framework/tests/unit/agent-runner.test.ts +496 -47
- package/.framework/tests/unit/api-keys-create-scope-gate.test.ts +160 -0
- package/.framework/tests/unit/api-keys-omit-secret-fields.test.ts +38 -0
- package/.framework/tests/unit/bootstrap.test.ts +242 -0
- package/.framework/tests/unit/cli-context-api-key.test.ts +114 -0
- package/.framework/tests/unit/debug-auth.test.ts +38 -0
- package/.framework/tests/unit/deliveries-account-scoping.test.ts +185 -0
- package/.framework/tests/unit/episode-lease.test.ts +695 -0
- package/.framework/tests/unit/integration-outbound-credentials.test.ts +167 -0
- package/.framework/tests/unit/integrations-audit-redaction.test.ts +130 -0
- package/.framework/tests/unit/kb-ingest-lease.test.ts +19 -0
- package/.framework/tests/unit/logging-app-id.test.ts +75 -0
- package/.framework/tests/unit/pipeline-runner-background.test.ts +120 -0
- package/.framework/tests/unit/pipeline-runner.test.ts +153 -1
- package/.framework/tests/unit/principal-cache.test.ts +15 -0
- package/.framework/tests/unit/system-context-denial.test.ts +145 -0
- package/.framework/tests/unit/system-cron.test.ts +240 -0
- package/.framework/tests/unit/timers.test.ts +159 -0
- package/.framework/tests/unit/trigger-engine.test.ts +278 -91
- package/.framework/tests/unit/trigger-scheduler.test.ts +78 -0
- package/README.md +125 -166
- package/config/tsconfig.cli.json +2 -2
- package/netlify.toml +5 -0
- package/package.json +15 -4
- package/templates/project/package-lock.json +2 -2
- package/.framework/docs/admin-routes.md +0 -76
- package/.framework/docs/api-docs-progress.md +0 -38
- package/.framework/docs/api-governance.md +0 -146
- package/.framework/docs/api-testing-results.md +0 -212
- package/.framework/docs/assembly-launch-guide.md +0 -138
- package/.framework/docs/audit-results.md +0 -590
- package/.framework/docs/db-api-inventory.md +0 -95
- package/.framework/docs/gap-remediation-backlog.md +0 -103
- package/.framework/docs/ui-adoption-verification.md +0 -111
- package/.framework/docs/ui-api-coverage.md +0 -84
- package/.framework/docs/v2-compatibility-audit.md +0 -228
- package/.framework/mcp/index.ts +0 -133
- package/.framework/mcp/load-env.ts +0 -60
- package/.framework/mcp/shared/app-manifest.ts +0 -275
- package/.framework/mcp/shared/db.ts +0 -477
- package/.framework/mcp/shared/kb.ts +0 -118
- package/.framework/mcp/tools/architect.ts +0 -431
- package/.framework/mcp/tools/cil/context.ts +0 -345
- package/.framework/mcp/tools/cil/graph.ts +0 -242
- package/.framework/mcp/tools/cil/ingest.ts +0 -1217
- package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +0 -693
- package/.framework/mcp/tools/cil/pipeline.ts +0 -767
- package/.framework/mcp/tools/cil/project.ts +0 -791
- package/.framework/mcp/tools/cil/retrieval.ts +0 -336
- package/.framework/mcp/tools/cil/search-core.ts +0 -454
- package/.framework/mcp/tools/cil/search.ts +0 -97
- package/.framework/mcp/tools/cil/suggest.ts +0 -186
- package/.framework/mcp/tools/cil/validate.ts +0 -1369
- package/.framework/mcp/tools/kb/delete.ts +0 -139
- package/.framework/mcp/tools/kb/index.ts +0 -52
- package/.framework/mcp/tools/kb/ingest.ts +0 -84
- package/.framework/mcp/tools/kb/list-types.ts +0 -102
- package/.framework/mcp/tools/kb/publish.ts +0 -100
- package/.framework/mcp/tools/kb/reindex.ts +0 -86
- package/.framework/mcp/tools/kb/revoke.ts +0 -85
- package/.framework/mcp/tools/kb/search.ts +0 -101
- package/.framework/mcp/tools/kb/upsert.ts +0 -125
- package/.framework/mcp/tools/observability.ts +0 -510
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
2
2
|
// CIL[DOC-MACRO purpose="Admin CIL project dashboard page root module: imports dependencies and composes the CILDashboardPage component."]
|
|
3
3
|
// CIL[DOC-RESPONSIBILITY responsibility="Bootstraps the admin CIL dashboard page and wires UI primitives, icons, and the local PageInstructions component."]
|
|
4
4
|
// CIL[DOC-CONTEXT module="admin/cil" layer="page" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts"]
|
|
@@ -17,6 +17,7 @@ import { Badge } from '@core/components/ui/badge'
|
|
|
17
17
|
import { Skeleton } from '@core/components/ui/skeleton'
|
|
18
18
|
import { Progress } from '@core/components/ui/progress'
|
|
19
19
|
import {
|
|
20
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:module_header:module_header"]
|
|
20
21
|
CheckCircle2,
|
|
21
22
|
XCircle,
|
|
22
23
|
AlertTriangle,
|
|
@@ -36,16 +37,13 @@ import {
|
|
|
36
37
|
Settings2,
|
|
37
38
|
} from 'lucide-react'
|
|
38
39
|
|
|
39
|
-
import { PageInstructions } from '../../../components/admin/PageInstructions'
|
|
40
40
|
// CIL[DOC-VECTOR type="context" content="purpose='Admin CIL project dashboard page root module: imports dependencies and composes the CILDashboardPage component.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
41
41
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
42
42
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
43
43
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
44
44
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
45
45
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
46
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:module_header:module_header"]
|
|
47
46
|
|
|
48
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:projectstats:interface" type="interface" identity="ProjectStats" parent="none"]
|
|
49
47
|
// CIL[DOC-MACRO purpose="Defines the shape of CIL project ingestion statistics."]
|
|
50
48
|
// CIL[DOC-RESPONSIBILITY responsibility="Provides a typed contract for project-level stats returned from the ingestion pipeline."]
|
|
51
49
|
// CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -53,6 +51,7 @@ import { PageInstructions } from '../../../components/admin/PageInstructions'
|
|
|
53
51
|
// CIL[DOC-MICRO logic_summary="Fields: file_count, chunk_count, proposal_count, approved_count, pending_review_count, total_ingestion_cost_usd, last_ingested_at." notable_decisions="[]"]
|
|
54
52
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
55
53
|
// CIL[DOC-STABILITY stability="stable"]
|
|
54
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:ProjectStats:interface" type="interface" identity="ProjectStats" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
56
55
|
interface ProjectStats {
|
|
57
56
|
file_count: number
|
|
58
57
|
chunk_count: number
|
|
@@ -62,15 +61,14 @@ interface ProjectStats {
|
|
|
62
61
|
total_ingestion_cost_usd: number
|
|
63
62
|
last_ingested_at: string | null
|
|
64
63
|
}
|
|
64
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:ProjectStats:interface"]
|
|
65
65
|
// CIL[DOC-VECTOR type="context" content="purpose='Defines the shape of CIL project ingestion statistics.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
66
66
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
67
67
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
68
68
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
69
69
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
70
70
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
71
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:projectstats:interface"]
|
|
72
71
|
|
|
73
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:embedstatus:interface" type="interface" identity="EmbedStatus" parent="none"]
|
|
74
72
|
// CIL[DOC-MACRO purpose="Defines the shape of CIL embedding coverage status."]
|
|
75
73
|
// CIL[DOC-RESPONSIBILITY responsibility="Types the embedding completeness counts for a project."]
|
|
76
74
|
// CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -78,21 +76,21 @@ interface ProjectStats {
|
|
|
78
76
|
// CIL[DOC-MICRO logic_summary="Fields: total_chunks, embedded_chunks, coverage_pct, unembedded_chunks." notable_decisions="[]"]
|
|
79
77
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
80
78
|
// CIL[DOC-STABILITY stability="stable"]
|
|
79
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:EmbedStatus:interface" type="interface" identity="EmbedStatus" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
81
80
|
interface EmbedStatus {
|
|
82
81
|
total_chunks: number
|
|
83
82
|
embedded_chunks: number
|
|
84
83
|
coverage_pct: number
|
|
85
84
|
unembedded_chunks: number
|
|
86
85
|
}
|
|
86
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:EmbedStatus:interface"]
|
|
87
87
|
// CIL[DOC-VECTOR type="context" content="purpose='Defines the shape of CIL embedding coverage status.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
88
88
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
89
89
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
90
90
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
91
91
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
92
92
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
93
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:embedstatus:interface"]
|
|
94
93
|
|
|
95
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:docstatus:interface" type="interface" identity="DocStatus" parent="none"]
|
|
96
94
|
// CIL[DOC-MACRO purpose="Defines the shape of CIL documentation coverage status."]
|
|
97
95
|
// CIL[DOC-RESPONSIBILITY responsibility="Types the documentation coverage counts for a project."]
|
|
98
96
|
// CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -100,6 +98,7 @@ interface EmbedStatus {
|
|
|
100
98
|
// CIL[DOC-MICRO logic_summary="Fields: total_chunks, documented_count, undocumented_count, ai_generated_count, human_verified_count, coverage_pct." notable_decisions="[]"]
|
|
101
99
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
102
100
|
// CIL[DOC-STABILITY stability="stable"]
|
|
101
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:DocStatus:interface" type="interface" identity="DocStatus" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
103
102
|
interface DocStatus {
|
|
104
103
|
total_chunks: number
|
|
105
104
|
documented_count: number
|
|
@@ -108,15 +107,14 @@ interface DocStatus {
|
|
|
108
107
|
human_verified_count: number
|
|
109
108
|
coverage_pct: number
|
|
110
109
|
}
|
|
110
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:DocStatus:interface"]
|
|
111
111
|
// CIL[DOC-VECTOR type="context" content="purpose='Defines the shape of CIL documentation coverage status.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
112
112
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
113
113
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
114
114
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
115
115
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
116
116
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
117
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:docstatus:interface"]
|
|
118
117
|
|
|
119
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:callmapstatus:interface" type="interface" identity="CallmapStatus" parent="none"]
|
|
120
118
|
// CIL[DOC-MACRO purpose="Defines the shape of CIL call-map link counts."]
|
|
121
119
|
// CIL[DOC-RESPONSIBILITY responsibility="Types the call-map and import link counts for a project."]
|
|
122
120
|
// CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -124,6 +122,7 @@ interface DocStatus {
|
|
|
124
122
|
// CIL[DOC-MICRO logic_summary="Fields: import_links, call_links, export_links, total_links, tested_by_links." notable_decisions="[]"]
|
|
125
123
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
126
124
|
// CIL[DOC-STABILITY stability="stable"]
|
|
125
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CallmapStatus:interface" type="interface" identity="CallmapStatus" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
127
126
|
interface CallmapStatus {
|
|
128
127
|
import_links: number
|
|
129
128
|
call_links: number
|
|
@@ -131,15 +130,14 @@ interface CallmapStatus {
|
|
|
131
130
|
total_links: number
|
|
132
131
|
tested_by_links?: number
|
|
133
132
|
}
|
|
133
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CallmapStatus:interface"]
|
|
134
134
|
// CIL[DOC-VECTOR type="context" content="purpose='Defines the shape of CIL call-map link counts.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
135
135
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
136
136
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
137
137
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
138
138
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
139
139
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
140
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:callmapstatus:interface"]
|
|
141
140
|
|
|
142
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:configstatus:interface" type="interface" identity="ConfigStatus" parent="none"]
|
|
143
141
|
// CIL[DOC-MACRO purpose="Defines the shape of CIL configuration graph status."]
|
|
144
142
|
// CIL[DOC-RESPONSIBILITY responsibility="Types the configuration graph item counts for a project."]
|
|
145
143
|
// CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -147,19 +145,19 @@ interface CallmapStatus {
|
|
|
147
145
|
// CIL[DOC-MICRO logic_summary="Fields: config_items, configures_links." notable_decisions="[]"]
|
|
148
146
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
149
147
|
// CIL[DOC-STABILITY stability="stable"]
|
|
148
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:ConfigStatus:interface" type="interface" identity="ConfigStatus" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
150
149
|
interface ConfigStatus {
|
|
151
150
|
config_items: number
|
|
152
151
|
configures_links: number
|
|
153
152
|
}
|
|
153
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:ConfigStatus:interface"]
|
|
154
154
|
// CIL[DOC-VECTOR type="context" content="purpose='Defines the shape of CIL configuration graph status.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
155
155
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
156
156
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
157
157
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
158
158
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
159
159
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
160
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:configstatus:interface"]
|
|
161
160
|
|
|
162
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:pipelineprogress:interface" type="interface" identity="PipelineProgress" parent="none"]
|
|
163
161
|
// CIL[DOC-MACRO purpose="Defines the shape of CIL pipeline progress aggregation."]
|
|
164
162
|
// CIL[DOC-RESPONSIBILITY responsibility="Types the pipeline progress counts and per-file status for a project."]
|
|
165
163
|
// CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -167,21 +165,21 @@ interface ConfigStatus {
|
|
|
167
165
|
// CIL[DOC-MICRO logic_summary="Fields: total_selected, total_chunks, by_status, file_statuses." notable_decisions="[]"]
|
|
168
166
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
169
167
|
// CIL[DOC-STABILITY stability="stable"]
|
|
168
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:PipelineProgress:interface" type="interface" identity="PipelineProgress" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
170
169
|
interface PipelineProgress {
|
|
171
170
|
total_selected: number
|
|
172
171
|
total_chunks: number
|
|
173
172
|
by_status: Record<string, number>
|
|
174
173
|
file_statuses: Record<string, string>
|
|
175
174
|
}
|
|
175
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:PipelineProgress:interface"]
|
|
176
176
|
// CIL[DOC-VECTOR type="context" content="purpose='Defines the shape of CIL pipeline progress aggregation.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
177
177
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
178
178
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
179
179
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
180
180
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
181
181
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
182
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:pipelineprogress:interface"]
|
|
183
182
|
|
|
184
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:dashboarddata:interface" type="interface" identity="DashboardData" parent="none"]
|
|
185
183
|
// CIL[DOC-MACRO purpose="Defines the aggregate dashboard data type used by CILDashboardPage."]
|
|
186
184
|
// CIL[DOC-RESPONSIBILITY responsibility="Types the unified dashboard data object fetched from multiple endpoints."]
|
|
187
185
|
// CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -189,6 +187,7 @@ interface PipelineProgress {
|
|
|
189
187
|
// CIL[DOC-MICRO logic_summary="Fields: project, embed, doc, callmap, config." notable_decisions="[]"]
|
|
190
188
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
191
189
|
// CIL[DOC-STABILITY stability="stable"]
|
|
190
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:DashboardData:interface" type="interface" identity="DashboardData" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
192
191
|
interface DashboardData {
|
|
193
192
|
project: { id: string; title: string; data: ProjectStats } | null
|
|
194
193
|
embed: EmbedStatus | null
|
|
@@ -196,15 +195,14 @@ interface DashboardData {
|
|
|
196
195
|
callmap: CallmapStatus | null
|
|
197
196
|
config: ConfigStatus | null
|
|
198
197
|
}
|
|
198
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:DashboardData:interface"]
|
|
199
199
|
// CIL[DOC-VECTOR type="context" content="purpose='Defines the aggregate dashboard data type used by CILDashboardPage.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
200
200
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
201
201
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
202
202
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
203
203
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
204
204
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
205
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:dashboarddata:interface"]
|
|
206
205
|
|
|
207
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:passcard:function" type="function" identity="PassCard" parent="none"]
|
|
208
206
|
// CIL[DOC-MACRO purpose="Renders a single pipeline pass card with status, icon, metric, and optional link."]
|
|
209
207
|
// CIL[DOC-RESPONSIBILITY responsibility="Visualizes the state of one CIL pipeline stage."]
|
|
210
208
|
// CIL[DOC-CONTEXT module="admin/cil" layer="component" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -212,6 +210,7 @@ interface DashboardData {
|
|
|
212
210
|
// CIL[DOC-MICRO logic_summary="Selects status color, background, and icon from statusConfig and renders a compact linked card." notable_decisions="[]"]
|
|
213
211
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
214
212
|
// CIL[DOC-STABILITY stability="stable"]
|
|
213
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:PassCard:component" type="component" identity="PassCard" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
215
214
|
function PassCard({
|
|
216
215
|
number,
|
|
217
216
|
label,
|
|
@@ -263,15 +262,14 @@ function PassCard({
|
|
|
263
262
|
</div>
|
|
264
263
|
)
|
|
265
264
|
}
|
|
265
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:PassCard:component"]
|
|
266
266
|
// CIL[DOC-VECTOR type="context" content="purpose='Renders a single pipeline pass card with status, icon, metric, and optional link.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
267
267
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
268
268
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
269
269
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
270
270
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
271
271
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
272
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:passcard:function"]
|
|
273
272
|
|
|
274
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:stattile:function" type="function" identity="StatTile" parent="none"]
|
|
275
273
|
// CIL[DOC-MACRO purpose="Renders a numeric stat tile with optional sub-label and accent styling."]
|
|
276
274
|
// CIL[DOC-RESPONSIBILITY responsibility="Displays a single dashboard metric."]
|
|
277
275
|
// CIL[DOC-CONTEXT module="admin/cil" layer="component" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -279,6 +277,7 @@ function PassCard({
|
|
|
279
277
|
// CIL[DOC-MICRO logic_summary="Renders a Card with value, label, optional sub, and an icon." notable_decisions="[]"]
|
|
280
278
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
281
279
|
// CIL[DOC-STABILITY stability="stable"]
|
|
280
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:StatTile:component" type="component" identity="StatTile" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
282
281
|
function StatTile({
|
|
283
282
|
label,
|
|
284
283
|
value,
|
|
@@ -307,15 +306,14 @@ function StatTile({
|
|
|
307
306
|
</Card>
|
|
308
307
|
)
|
|
309
308
|
}
|
|
309
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:StatTile:component"]
|
|
310
310
|
// CIL[DOC-VECTOR type="context" content="purpose='Renders a numeric stat tile with optional sub-label and accent styling.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
311
311
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
312
312
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
313
313
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
314
314
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
315
315
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
316
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:stattile:function"]
|
|
317
316
|
|
|
318
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:coveragebar:function" type="function" identity="CoverageBar" parent="none"]
|
|
319
317
|
// CIL[DOC-MACRO purpose="Renders a labeled progress bar showing a percentage."]
|
|
320
318
|
// CIL[DOC-RESPONSIBILITY responsibility="Visualizes embedding or documentation coverage as a progress bar."]
|
|
321
319
|
// CIL[DOC-CONTEXT module="admin/cil" layer="component" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -323,6 +321,7 @@ function StatTile({
|
|
|
323
321
|
// CIL[DOC-MICRO logic_summary="Shows a label, percentage, and Progress component." notable_decisions="[]"]
|
|
324
322
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
325
323
|
// CIL[DOC-STABILITY stability="stable"]
|
|
324
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CoverageBar:component" type="component" identity="CoverageBar" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
326
325
|
function CoverageBar({ label, pct, color = 'bg-indigo-500' }: { label: string; pct: number; color?: string }) {
|
|
327
326
|
return (
|
|
328
327
|
<div className="space-y-1">
|
|
@@ -334,15 +333,14 @@ function CoverageBar({ label, pct, color = 'bg-indigo-500' }: { label: string; p
|
|
|
334
333
|
</div>
|
|
335
334
|
)
|
|
336
335
|
}
|
|
336
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CoverageBar:component"]
|
|
337
337
|
// CIL[DOC-VECTOR type="context" content="purpose='Renders a labeled progress bar showing a percentage.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
338
338
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
339
339
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
340
340
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
341
341
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
342
342
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
343
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:coveragebar:function"]
|
|
344
343
|
|
|
345
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:step_details:constant" type="constant" identity="STEP_DETAILS" parent="none"]
|
|
346
344
|
// CIL[DOC-MACRO purpose="Maps CIL pipeline step slugs to labels, icons, descriptions, and skill tags."]
|
|
347
345
|
// CIL[DOC-RESPONSIBILITY responsibility="Provides the metadata that drives the PassCard rendering for each pipeline stage."]
|
|
348
346
|
// CIL[DOC-CONTEXT module="admin/cil" layer="data" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -350,6 +348,7 @@ function CoverageBar({ label, pct, color = 'bg-indigo-500' }: { label: string; p
|
|
|
350
348
|
// CIL[DOC-MICRO logic_summary="Record of step slugs to display metadata for the nine CIL pipeline stages." notable_decisions="[]"]
|
|
351
349
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
352
350
|
// CIL[DOC-STABILITY stability="stable"]
|
|
351
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:STEP_DETAILS:constant" type="constant" identity="STEP_DETAILS" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
353
352
|
const STEP_DETAILS: Record<string, { label: string; icon: React.ElementType; description: string; skill?: string }> = {
|
|
354
353
|
'0-discovered': { label: 'Discover Files', icon: FileCode2, description: 'Walk repo and register source files' },
|
|
355
354
|
'1-selected': { label: 'Select Files', icon: Search, description: 'Files matched by selected paths/globs' },
|
|
@@ -361,15 +360,14 @@ const STEP_DETAILS: Record<string, { label: string; icon: React.ElementType; des
|
|
|
361
360
|
'7-embedded-mapped': { label: 'Embed & Map', icon: Zap, description: 'Generate embeddings and import/call/test edges', skill: 'cil-8' },
|
|
362
361
|
'8-published': { label: 'Publish', icon: CheckCircle2, description: 'Final validation and currentness check' },
|
|
363
362
|
}
|
|
363
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:STEP_DETAILS:constant"]
|
|
364
364
|
// CIL[DOC-VECTOR type="context" content="purpose='Maps CIL pipeline step slugs to labels, icons, descriptions, and skill tags.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
365
365
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
366
366
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
367
367
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
368
368
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
369
369
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
370
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:step_details:constant"]
|
|
371
370
|
|
|
372
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:driftalertcard:function" type="function" identity="DriftAlertCard" parent="none"]
|
|
373
371
|
// CIL[DOC-MACRO purpose="Renders a card that detects and displays CIL chunk hash drift for a project."]
|
|
374
372
|
// CIL[DOC-RESPONSIBILITY responsibility="Fetches stored chunks, validates hashes, and surfaces drifted chunks with navigation links."]
|
|
375
373
|
// CIL[DOC-CONTEXT module="admin/cil" layer="component" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -377,6 +375,7 @@ const STEP_DETAILS: Record<string, { label: string; icon: React.ElementType; des
|
|
|
377
375
|
// CIL[DOC-MICRO logic_summary="Calls admin-data and cil-validate APIs, compares hash status, and lists up to 5 drifted chunks with a count." notable_decisions="[]"]
|
|
378
376
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
379
377
|
// CIL[DOC-STABILITY stability="stable"]
|
|
378
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:DriftAlertCard:component" type="component" identity="DriftAlertCard" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
380
379
|
function DriftAlertCard({ projectId, appPath }: { projectId: string; appPath: (p: string) => string }) {
|
|
381
380
|
const [driftChunks, setDriftChunks] = useState<any[] | null>(null)
|
|
382
381
|
const [checking, setChecking] = useState(false)
|
|
@@ -459,15 +458,14 @@ function DriftAlertCard({ projectId, appPath }: { projectId: string; appPath: (p
|
|
|
459
458
|
</Card>
|
|
460
459
|
)
|
|
461
460
|
}
|
|
461
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:DriftAlertCard:component"]
|
|
462
462
|
// CIL[DOC-VECTOR type="context" content="purpose='Renders a card that detects and displays CIL chunk hash drift for a project.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
463
463
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
464
464
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
465
465
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
466
466
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
467
467
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
468
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:driftalertcard:function"]
|
|
469
468
|
|
|
470
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:cildashboardpage:function" type="function" identity="CILDashboardPage" parent="none"]
|
|
471
469
|
// CIL[DOC-MACRO purpose="Main admin page for reviewing CIL project health, coverage, pipeline status, graph links, and drift."]
|
|
472
470
|
// CIL[DOC-RESPONSIBILITY responsibility="Fetches and aggregates project stats, coverage, pipeline progress, callmap, and config; renders the dashboard layout."]
|
|
473
471
|
// CIL[DOC-CONTEXT module="admin/cil" layer="page" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILDashboardPage.tsx"]
|
|
@@ -477,12 +475,15 @@ function DriftAlertCard({ projectId, appPath }: { projectId: string; appPath: (p
|
|
|
477
475
|
// CIL[DOC-STABILITY stability="stable"]
|
|
478
476
|
export default function CILDashboardPage() {
|
|
479
477
|
const { id: projectId } = useParams<{ id: string }>()
|
|
478
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:appPath:function" type="function" identity="appPath" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
480
479
|
const appPath = (path: string) => '/spine-framework/admin' + (path.startsWith('/') ? path : '/' + path)
|
|
480
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:appPath:function"]
|
|
481
481
|
const [data, setData] = useState<DashboardData>({ project: null, embed: null, doc: null, callmap: null, config: null })
|
|
482
482
|
const [pipelineProgress, setPipelineProgress] = useState<PipelineProgress | null>(null)
|
|
483
483
|
const [loading, setLoading] = useState(true)
|
|
484
484
|
const [discovering, setDiscovering] = useState(false)
|
|
485
485
|
|
|
486
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:load:constant" type="constant" identity="load" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
486
487
|
const load = useCallback(async () => {
|
|
487
488
|
if (!projectId) return
|
|
488
489
|
setLoading(true)
|
|
@@ -509,11 +510,15 @@ export default function CILDashboardPage() {
|
|
|
509
510
|
setLoading(false)
|
|
510
511
|
}
|
|
511
512
|
}, [projectId])
|
|
513
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:load:constant"]
|
|
512
514
|
|
|
513
515
|
useEffect(() => { load() }, [load])
|
|
514
516
|
|
|
517
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:project:constant" type="constant" identity="project" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
515
518
|
const project = data.project
|
|
519
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:project:constant"]
|
|
516
520
|
|
|
521
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:handleDiscover:constant" type="constant" identity="handleDiscover" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
517
522
|
const handleDiscover = useCallback(async () => {
|
|
518
523
|
if (!projectId) return
|
|
519
524
|
setDiscovering(true)
|
|
@@ -528,6 +533,7 @@ export default function CILDashboardPage() {
|
|
|
528
533
|
load()
|
|
529
534
|
}
|
|
530
535
|
}, [projectId, load])
|
|
536
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:handleDiscover:constant"]
|
|
531
537
|
|
|
532
538
|
|
|
533
539
|
|
|
@@ -541,28 +547,54 @@ export default function CILDashboardPage() {
|
|
|
541
547
|
)
|
|
542
548
|
}
|
|
543
549
|
|
|
550
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:stats:constant" type="constant" identity="stats" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
544
551
|
const stats: ProjectStats = project?.data || { file_count: 0, chunk_count: 0, proposal_count: 0, approved_count: 0, pending_review_count: 0, total_ingestion_cost_usd: 0, last_ingested_at: null }
|
|
552
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:stats:constant"]
|
|
553
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:embed:constant" type="constant" identity="embed" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
545
554
|
const embed = data.embed || { total_chunks: 0, embedded_chunks: 0, coverage_pct: 0, unembedded_chunks: 0 }
|
|
555
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:embed:constant"]
|
|
556
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:doc:constant" type="constant" identity="doc" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
546
557
|
const doc = data.doc || { total_chunks: 0, documented_count: 0, undocumented_count: 0, ai_generated_count: 0, human_verified_count: 0, coverage_pct: 0 }
|
|
558
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:doc:constant"]
|
|
559
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:callmap:constant" type="constant" identity="callmap" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
547
560
|
const callmap = data.callmap || { import_links: 0, call_links: 0, export_links: 0, total_links: 0, tested_by_links: 0 }
|
|
561
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:callmap:constant"]
|
|
562
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:config:constant" type="constant" identity="config" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
548
563
|
const config = data.config || { config_items: 0, configures_links: 0 }
|
|
564
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:config:constant"]
|
|
549
565
|
|
|
566
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:pp:constant" type="constant" identity="pp" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
550
567
|
const pp = pipelineProgress || { total_selected: 0, total_chunks: 0, by_status: {}, file_statuses: {} }
|
|
568
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:pp:constant"]
|
|
569
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:selectedFiles:constant" type="constant" identity="selectedFiles" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
551
570
|
const selectedFiles = pp.total_selected
|
|
571
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:selectedFiles:constant"]
|
|
572
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:selectedChunks:constant" type="constant" identity="selectedChunks" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
552
573
|
const selectedChunks = pp.total_chunks
|
|
574
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:selectedChunks:constant"]
|
|
575
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:totalTracked:constant" type="constant" identity="totalTracked" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
553
576
|
const totalTracked = Object.values(pp.by_status).reduce((a, b) => a + (b || 0), 0)
|
|
577
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:totalTracked:constant"]
|
|
554
578
|
|
|
579
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:PIPELINE_ORDER:constant" type="constant" identity="PIPELINE_ORDER" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
555
580
|
const PIPELINE_ORDER = [
|
|
556
581
|
'0-discovered', '1-selected', '2-chunked', '3-documented', '4-chunk-validated',
|
|
557
582
|
'5-doc-validated', '6-enriched', '7-embedded-mapped', '8-published',
|
|
558
583
|
]
|
|
584
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:PIPELINE_ORDER:constant"]
|
|
559
585
|
|
|
586
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:embedPct:constant" type="constant" identity="embedPct" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
560
587
|
const embedPct = selectedChunks > 0 ? Math.round((embed.embedded_chunks / selectedChunks) * 100) : 0
|
|
588
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:embedPct:constant"]
|
|
589
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:docPct:constant" type="constant" identity="docPct" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
561
590
|
const docPct = selectedChunks > 0 ? Math.round((doc.documented_count / selectedChunks) * 100) : 0
|
|
591
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:docPct:constant"]
|
|
562
592
|
|
|
593
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:lastIngested:constant" type="constant" identity="lastIngested" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
563
594
|
const lastIngested = stats.last_ingested_at
|
|
564
595
|
? new Date(stats.last_ingested_at).toLocaleDateString('en-US', { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' })
|
|
565
596
|
: 'Never'
|
|
597
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:lastIngested:constant"]
|
|
566
598
|
|
|
567
599
|
return (
|
|
568
600
|
<div className="p-6 space-y-6 max-w-5xl">
|
|
@@ -602,17 +634,6 @@ export default function CILDashboardPage() {
|
|
|
602
634
|
</Button>
|
|
603
635
|
</div>
|
|
604
636
|
</div>
|
|
605
|
-
|
|
606
|
-
<PageInstructions
|
|
607
|
-
description="Review CIL project health and ingestion coverage."
|
|
608
|
-
sections={[
|
|
609
|
-
{ title: 'What this page is for', content: 'This page is the project-level overview for a CIL project. It displays stats, coverage, pipeline status, graph links, and drift alerts.' },
|
|
610
|
-
{ title: 'How to read the cards', content: 'The top tiles show Files, Chunks, Pending Review, and cumulative LLM Cost. The Coverage card shows embedding and documentation coverage plus AI-generated, human-verified, and undocumented counts.' },
|
|
611
|
-
{ title: 'How to read the pipeline', content: 'Pass cards summarize Discover Files, Select Files, Chunk, Document, Validate Chunks, Validate Docs, Enrich, Embed & Map, and Publish. Each card shows status, counts, and a link to the relevant step.' },
|
|
612
|
-
{ title: 'Important notes', content: 'Use Refresh to reload the dashboard and Run Pipeline to start or continue ingestion. A drift alert appears when stored hashes differ from current code.' },
|
|
613
|
-
]}
|
|
614
|
-
/>
|
|
615
|
-
|
|
616
637
|
{}
|
|
617
638
|
<div className="grid grid-cols-2 sm:grid-cols-4 gap-4">
|
|
618
639
|
<StatTile label="Files" value={selectedFiles.toLocaleString()} sub={`${stats.file_count.toLocaleString()} discovered`} icon={FileCode2} />
|
|
@@ -660,26 +681,38 @@ export default function CILDashboardPage() {
|
|
|
660
681
|
<h2 className="text-sm font-medium text-muted-foreground uppercase tracking-wide mb-3">Pipeline Status</h2>
|
|
661
682
|
<div className="grid grid-cols-1 sm:grid-cols-2 gap-3">
|
|
662
683
|
{(() => {
|
|
684
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:outByIdx:constant" type="constant" identity="outByIdx" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
663
685
|
const outByIdx = PIPELINE_ORDER.map((_, i) =>
|
|
664
686
|
PIPELINE_ORDER.slice(i === 0 ? 1 : i).reduce((sum, s) => sum + (pp.by_status[s] || 0), 0)
|
|
665
687
|
)
|
|
688
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:outByIdx:constant"]
|
|
666
689
|
|
|
667
690
|
return PIPELINE_ORDER.map((status, idx) => {
|
|
668
691
|
|
|
692
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:detail:constant" type="constant" identity="detail" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
669
693
|
const detail = STEP_DETAILS[status]
|
|
694
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:detail:constant"]
|
|
670
695
|
|
|
696
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:inCount:constant" type="constant" identity="inCount" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
671
697
|
const inCount = idx === 0 ? totalTracked : outByIdx[idx - 1]
|
|
698
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:inCount:constant"]
|
|
699
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:outCount:constant" type="constant" identity="outCount" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
672
700
|
const outCount = outByIdx[idx]
|
|
701
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:outCount:constant"]
|
|
673
702
|
|
|
703
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:stageStatus:constant" type="constant" identity="stageStatus" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
674
704
|
const stageStatus = inCount === 0
|
|
675
705
|
? 'empty'
|
|
676
706
|
: inCount > 0 && outCount === inCount
|
|
677
707
|
? 'complete'
|
|
678
708
|
: 'partial'
|
|
709
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:stageStatus:constant"]
|
|
679
710
|
|
|
711
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:metric:constant" type="constant" identity="metric" parent="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:CILDashboardPage:component"]
|
|
680
712
|
const metric = selectedFiles > 0
|
|
681
713
|
? `${inCount.toLocaleString()} / ${outCount.toLocaleString()} files`
|
|
682
714
|
: 'No files selected'
|
|
715
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:metric:constant"]
|
|
683
716
|
|
|
684
717
|
return (
|
|
685
718
|
<PassCard
|
|
@@ -769,4 +802,3 @@ export default function CILDashboardPage() {
|
|
|
769
802
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
770
803
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
771
804
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
772
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/CILDashboardPage.tsx:cildashboardpage:function"]
|