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/FlexiblePipelinePage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
2
2
|
// CIL[DOC-MACRO purpose="React admin page for visualizing and controlling the CIL flexible pipeline for a project."]
|
|
3
3
|
// CIL[DOC-RESPONSIBILITY responsibility="Import dependencies, set up the admin page module, and render the root page instructions."]
|
|
4
4
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts"]
|
|
@@ -19,6 +19,7 @@ import { Progress } from '@core/components/ui/progress'
|
|
|
19
19
|
import { Alert, AlertDescription } from '@core/components/ui/alert'
|
|
20
20
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@core/components/ui/tabs'
|
|
21
21
|
import {
|
|
22
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:module_header:module_header"]
|
|
22
23
|
CheckCircle2,
|
|
23
24
|
RefreshCw,
|
|
24
25
|
Play,
|
|
@@ -36,16 +37,13 @@ import {
|
|
|
36
37
|
FileCode2,
|
|
37
38
|
} from 'lucide-react'
|
|
38
39
|
|
|
39
|
-
import { PageInstructions } from '../../../components/admin/PageInstructions'
|
|
40
40
|
// CIL[DOC-VECTOR type="context" content="purpose='React admin page for visualizing and controlling the CIL flexible pipeline 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"]
|
|
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/FlexiblePipelinePage.tsx:module_header:module_header"]
|
|
47
46
|
|
|
48
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filepipelinestate:interface" type="interface" identity="FilePipelineState" parent="none"]
|
|
49
47
|
// CIL[DOC-MACRO purpose="TypeScript interface describing the shape of FilePipelineState."]
|
|
50
48
|
// CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for FilePipelineState."]
|
|
51
49
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -53,6 +51,7 @@ import { PageInstructions } from '../../../components/admin/PageInstructions'
|
|
|
53
51
|
// CIL[DOC-MICRO logic_summary="Describes the per-file state including path, current status, completed/ready/blocked steps, and progress percentage." 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/FlexiblePipelinePage.tsx:FilePipelineState:interface" type="interface" identity="FilePipelineState" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
56
55
|
interface FilePipelineState {
|
|
57
56
|
file_path: string
|
|
58
57
|
current_status: string
|
|
@@ -61,15 +60,14 @@ interface FilePipelineState {
|
|
|
61
60
|
blocked_by: number[]
|
|
62
61
|
progress_percentage: number
|
|
63
62
|
}
|
|
63
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FilePipelineState:interface"]
|
|
64
64
|
// CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of FilePipelineState.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
65
65
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
66
66
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
67
67
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
68
68
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
69
69
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
70
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filepipelinestate:interface"]
|
|
71
70
|
|
|
72
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:pipelinestatus:interface" type="interface" identity="PipelineStatus" parent="none"]
|
|
73
71
|
// CIL[DOC-MACRO purpose="TypeScript interface describing the shape of PipelineStatus."]
|
|
74
72
|
// CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for PipelineStatus."]
|
|
75
73
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -77,21 +75,21 @@ interface FilePipelineState {
|
|
|
77
75
|
// CIL[DOC-MICRO logic_summary="Describes the overall pipeline status for a project, including all files and a step summary." notable_decisions="[]"]
|
|
78
76
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
79
77
|
// CIL[DOC-STABILITY stability="stable"]
|
|
78
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:PipelineStatus:interface" type="interface" identity="PipelineStatus" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
80
79
|
interface PipelineStatus {
|
|
81
80
|
project_id: string
|
|
82
81
|
files: FilePipelineState[]
|
|
83
82
|
step_summary: Record<number, { completed: number; pending: number; in_progress: number }>
|
|
84
83
|
overall_progress: number
|
|
85
84
|
}
|
|
85
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:PipelineStatus:interface"]
|
|
86
86
|
// CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of PipelineStatus.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
87
87
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
88
88
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
89
89
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
90
90
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
91
91
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
92
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:pipelinestatus:interface"]
|
|
93
92
|
|
|
94
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filesreadyforstep:interface" type="interface" identity="FilesReadyForStep" parent="none"]
|
|
95
93
|
// CIL[DOC-MACRO purpose="TypeScript interface describing the shape of FilesReadyForStep."]
|
|
96
94
|
// CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for FilesReadyForStep."]
|
|
97
95
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -99,6 +97,7 @@ interface PipelineStatus {
|
|
|
99
97
|
// CIL[DOC-MICRO logic_summary="Describes the response for files that are ready to be processed for a specific step, including blocking info." notable_decisions="[]"]
|
|
100
98
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
101
99
|
// CIL[DOC-STABILITY stability="stable"]
|
|
100
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FilesReadyForStep:interface" type="interface" identity="FilesReadyForStep" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
102
101
|
interface FilesReadyForStep {
|
|
103
102
|
ok: boolean
|
|
104
103
|
project_id: string
|
|
@@ -118,15 +117,14 @@ interface FilesReadyForStep {
|
|
|
118
117
|
blocking_reasons: string[]
|
|
119
118
|
}>
|
|
120
119
|
}
|
|
120
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FilesReadyForStep:interface"]
|
|
121
121
|
// CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of FilesReadyForStep.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
122
122
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
123
123
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
124
124
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
125
125
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
126
126
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
127
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filesreadyforstep:interface"]
|
|
128
127
|
|
|
129
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckanalysis:interface" type="interface" identity="BottleneckAnalysis" parent="none"]
|
|
130
128
|
// CIL[DOC-MACRO purpose="TypeScript interface describing the shape of BottleneckAnalysis."]
|
|
131
129
|
// CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for BottleneckAnalysis."]
|
|
132
130
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -134,6 +132,7 @@ interface FilesReadyForStep {
|
|
|
134
132
|
// CIL[DOC-MICRO logic_summary="Describes the bottleneck analysis result with bottlenecks, recommendations, and optimal processing order." notable_decisions="[]"]
|
|
135
133
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
136
134
|
// CIL[DOC-STABILITY stability="stable"]
|
|
135
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:BottleneckAnalysis:interface" type="interface" identity="BottleneckAnalysis" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
137
136
|
interface BottleneckAnalysis {
|
|
138
137
|
project_id: string
|
|
139
138
|
bottlenecks: Array<{
|
|
@@ -158,15 +157,14 @@ interface BottleneckAnalysis {
|
|
|
158
157
|
ready_for_processing: number
|
|
159
158
|
}
|
|
160
159
|
}
|
|
160
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:BottleneckAnalysis:interface"]
|
|
161
161
|
// CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of BottleneckAnalysis.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
162
162
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
163
163
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
164
164
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
165
165
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
166
166
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
167
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckanalysis:interface"]
|
|
168
167
|
|
|
169
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_labels:constant" type="constant" identity="STEP_LABELS" parent="none"]
|
|
170
168
|
// CIL[DOC-MACRO purpose="Named constant mapping used across the pipeline UI."]
|
|
171
169
|
// CIL[DOC-RESPONSIBILITY responsibility="Provide a lookup table for STEP_LABELS."]
|
|
172
170
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -174,6 +172,7 @@ interface BottleneckAnalysis {
|
|
|
174
172
|
// CIL[DOC-MICRO logic_summary="Maps each pipeline step index to a human-readable label." notable_decisions="[]"]
|
|
175
173
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
176
174
|
// CIL[DOC-STABILITY stability="stable"]
|
|
175
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:STEP_LABELS:constant" type="constant" identity="STEP_LABELS" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
177
176
|
const STEP_LABELS: Record<number, string> = {
|
|
178
177
|
0: 'Discover Files',
|
|
179
178
|
1: 'Select Files',
|
|
@@ -185,15 +184,14 @@ const STEP_LABELS: Record<number, string> = {
|
|
|
185
184
|
7: 'Embed & Map',
|
|
186
185
|
8: 'Publish',
|
|
187
186
|
}
|
|
187
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:STEP_LABELS:constant"]
|
|
188
188
|
// CIL[DOC-VECTOR type="context" content="purpose='Named constant mapping used across the pipeline UI.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
189
189
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
190
190
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
191
191
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
192
192
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
193
193
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
194
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_labels:constant"]
|
|
195
194
|
|
|
196
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_colors:constant" type="constant" identity="STEP_COLORS" parent="none"]
|
|
197
195
|
// CIL[DOC-MACRO purpose="Named constant mapping used across the pipeline UI."]
|
|
198
196
|
// CIL[DOC-RESPONSIBILITY responsibility="Provide a lookup table for STEP_COLORS."]
|
|
199
197
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -201,6 +199,7 @@ const STEP_LABELS: Record<number, string> = {
|
|
|
201
199
|
// CIL[DOC-MICRO logic_summary="Maps each pipeline step index to a Tailwind color class string for badges and progress." notable_decisions="[]"]
|
|
202
200
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
203
201
|
// CIL[DOC-STABILITY stability="stable"]
|
|
202
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:STEP_COLORS:constant" type="constant" identity="STEP_COLORS" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
204
203
|
const STEP_COLORS: Record<number, string> = {
|
|
205
204
|
0: 'bg-slate-100 text-slate-700',
|
|
206
205
|
1: 'bg-gray-100 text-gray-700',
|
|
@@ -212,15 +211,14 @@ const STEP_COLORS: Record<number, string> = {
|
|
|
212
211
|
7: 'bg-indigo-100 text-indigo-700',
|
|
213
212
|
8: 'bg-violet-100 text-violet-700',
|
|
214
213
|
}
|
|
214
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:STEP_COLORS:constant"]
|
|
215
215
|
// CIL[DOC-VECTOR type="context" content="purpose='Named constant mapping used across the pipeline UI.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
216
216
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
217
217
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
218
218
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
219
219
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
220
220
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
221
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_colors:constant"]
|
|
222
221
|
|
|
223
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:priority_colors:constant" type="constant" identity="PRIORITY_COLORS" parent="none"]
|
|
224
222
|
// CIL[DOC-MACRO purpose="Named constant mapping used across the pipeline UI."]
|
|
225
223
|
// CIL[DOC-RESPONSIBILITY responsibility="Provide a lookup table for PRIORITY_COLORS."]
|
|
226
224
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -228,20 +226,20 @@ const STEP_COLORS: Record<number, string> = {
|
|
|
228
226
|
// CIL[DOC-MICRO logic_summary="Maps priority levels to Tailwind color class strings." notable_decisions="[]"]
|
|
229
227
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
230
228
|
// CIL[DOC-STABILITY stability="stable"]
|
|
229
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:PRIORITY_COLORS:constant" type="constant" identity="PRIORITY_COLORS" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
231
230
|
const PRIORITY_COLORS: Record<string, string> = {
|
|
232
231
|
high: 'bg-red-100 text-red-700',
|
|
233
232
|
medium: 'bg-yellow-100 text-yellow-700',
|
|
234
233
|
low: 'bg-gray-100 text-gray-700',
|
|
235
234
|
}
|
|
235
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:PRIORITY_COLORS:constant"]
|
|
236
236
|
// CIL[DOC-VECTOR type="context" content="purpose='Named constant mapping used across the pipeline UI.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
237
237
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
238
238
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
239
239
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
240
240
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
241
241
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
242
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:priority_colors:constant"]
|
|
243
242
|
|
|
244
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:fileprogresscard:function" type="function" identity="FileProgressCard" parent="none"]
|
|
245
243
|
// CIL[DOC-MACRO purpose="React/TypeScript function for rendering FileProgressCard."]
|
|
246
244
|
// CIL[DOC-RESPONSIBILITY responsibility="Render the FileProgressCard UI and handle user interactions."]
|
|
247
245
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -249,6 +247,7 @@ const PRIORITY_COLORS: Record<string, string> = {
|
|
|
249
247
|
// CIL[DOC-MICRO logic_summary="Shows a single file's progress, completed/ready/blocked steps, and a button to process the next available step." notable_decisions="[]"]
|
|
250
248
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
251
249
|
// CIL[DOC-STABILITY stability="stable"]
|
|
250
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FileProgressCard:component" type="component" identity="FileProgressCard" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
252
251
|
function FileProgressCard({ file, onProcess }: {
|
|
253
252
|
file: FilePipelineState
|
|
254
253
|
onProcess: (filePath: string, step: number) => void
|
|
@@ -302,15 +301,14 @@ function FileProgressCard({ file, onProcess }: {
|
|
|
302
301
|
</Card>
|
|
303
302
|
)
|
|
304
303
|
}
|
|
304
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FileProgressCard:component"]
|
|
305
305
|
// CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering FileProgressCard.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
306
306
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
307
307
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
308
308
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
309
309
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
310
310
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
311
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:fileprogresscard:function"]
|
|
312
311
|
|
|
313
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:stepsummarycard:function" type="function" identity="StepSummaryCard" parent="none"]
|
|
314
312
|
// CIL[DOC-MACRO purpose="React/TypeScript function for rendering StepSummaryCard."]
|
|
315
313
|
// CIL[DOC-RESPONSIBILITY responsibility="Render the StepSummaryCard UI and handle user interactions."]
|
|
316
314
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -318,6 +316,7 @@ function FileProgressCard({ file, onProcess }: {
|
|
|
318
316
|
// CIL[DOC-MICRO logic_summary="Renders a step summary with completion stats, a progress bar, and a button to process all ready files in that step." notable_decisions="[]"]
|
|
319
317
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
320
318
|
// CIL[DOC-STABILITY stability="stable"]
|
|
319
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:StepSummaryCard:component" type="component" identity="StepSummaryCard" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
321
320
|
function StepSummaryCard({ step, summary, onProcess }: {
|
|
322
321
|
step: number
|
|
323
322
|
summary: { completed: number; pending: number; in_progress: number }
|
|
@@ -363,15 +362,14 @@ function StepSummaryCard({ step, summary, onProcess }: {
|
|
|
363
362
|
</Card>
|
|
364
363
|
)
|
|
365
364
|
}
|
|
365
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:StepSummaryCard:component"]
|
|
366
366
|
// CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering StepSummaryCard.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
367
367
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
368
368
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
369
369
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
370
370
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
371
371
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
372
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:stepsummarycard:function"]
|
|
373
372
|
|
|
374
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckalert:function" type="function" identity="BottleneckAlert" parent="none"]
|
|
375
373
|
// CIL[DOC-MACRO purpose="React/TypeScript function for rendering BottleneckAlert."]
|
|
376
374
|
// CIL[DOC-RESPONSIBILITY responsibility="Render the BottleneckAlert UI and handle user interactions."]
|
|
377
375
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -379,6 +377,7 @@ function StepSummaryCard({ step, summary, onProcess }: {
|
|
|
379
377
|
// CIL[DOC-MICRO logic_summary="Displays a bottleneck step with ready/blocked counts and a list of blocking reasons." notable_decisions="[]"]
|
|
380
378
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
381
379
|
// CIL[DOC-STABILITY stability="stable"]
|
|
380
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:BottleneckAlert:component" type="component" identity="BottleneckAlert" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
382
381
|
function BottleneckAlert({ bottleneck }: { bottleneck: BottleneckAnalysis['bottlenecks'][0] }) {
|
|
383
382
|
return (
|
|
384
383
|
<Alert className="mb-3">
|
|
@@ -409,15 +408,14 @@ function BottleneckAlert({ bottleneck }: { bottleneck: BottleneckAnalysis['bottl
|
|
|
409
408
|
</Alert>
|
|
410
409
|
)
|
|
411
410
|
}
|
|
411
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:BottleneckAlert:component"]
|
|
412
412
|
// CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering BottleneckAlert.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
413
413
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
414
414
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
415
415
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
416
416
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
417
417
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
418
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckalert:function"]
|
|
419
418
|
|
|
420
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:recommendationcard:function" type="function" identity="RecommendationCard" parent="none"]
|
|
421
419
|
// CIL[DOC-MACRO purpose="React/TypeScript function for rendering RecommendationCard."]
|
|
422
420
|
// CIL[DOC-RESPONSIBILITY responsibility="Render the RecommendationCard UI and handle user interactions."]
|
|
423
421
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -425,6 +423,7 @@ function BottleneckAlert({ bottleneck }: { bottleneck: BottleneckAnalysis['bottl
|
|
|
425
423
|
// CIL[DOC-MICRO logic_summary="Renders a single recommendation with a priority badge." notable_decisions="[]"]
|
|
426
424
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
427
425
|
// CIL[DOC-STABILITY stability="stable"]
|
|
426
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:RecommendationCard:component" type="component" identity="RecommendationCard" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
428
427
|
function RecommendationCard({ recommendation }: { recommendation: BottleneckAnalysis['recommendations'][0] }) {
|
|
429
428
|
return (
|
|
430
429
|
<Card className="mb-2">
|
|
@@ -443,15 +442,14 @@ function RecommendationCard({ recommendation }: { recommendation: BottleneckAnal
|
|
|
443
442
|
</Card>
|
|
444
443
|
)
|
|
445
444
|
}
|
|
445
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:RecommendationCard:component"]
|
|
446
446
|
// CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering RecommendationCard.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
447
447
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
448
448
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
449
449
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
450
450
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
451
451
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
452
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:recommendationcard:function"]
|
|
453
452
|
|
|
454
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:flexiblepipelinepage:function" type="function" identity="FlexiblePipelinePage" parent="none"]
|
|
455
453
|
// CIL[DOC-MACRO purpose="React/TypeScript function for rendering FlexiblePipelinePage."]
|
|
456
454
|
// CIL[DOC-RESPONSIBILITY responsibility="Render the FlexiblePipelinePage UI and handle user interactions."]
|
|
457
455
|
// CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.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/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
@@ -459,6 +457,7 @@ function RecommendationCard({ recommendation }: { recommendation: BottleneckAnal
|
|
|
459
457
|
// CIL[DOC-MICRO logic_summary="Fetches pipeline status, files ready per step, and bottleneck analysis; renders tabbed dashboard with overview, files, steps, and bottlenecks." notable_decisions="[]"]
|
|
460
458
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
461
459
|
// CIL[DOC-STABILITY stability="stable"]
|
|
460
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FlexiblePipelinePage:component" type="component" identity="FlexiblePipelinePage" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
|
|
462
461
|
export default function FlexiblePipelinePage() {
|
|
463
462
|
const { id: projectId } = useParams<{ id: string }>()
|
|
464
463
|
|
|
@@ -585,17 +584,6 @@ export default function FlexiblePipelinePage() {
|
|
|
585
584
|
Refresh
|
|
586
585
|
</Button>
|
|
587
586
|
</div>
|
|
588
|
-
|
|
589
|
-
<PageInstructions
|
|
590
|
-
description="View the flexible pipeline status and identify bottlenecks."
|
|
591
|
-
sections={[
|
|
592
|
-
{ title: 'What this page is for', content: 'This page shows the dependency-aware file processing pipeline for the selected CIL project, including overall progress and per-step status.' },
|
|
593
|
-
{ title: 'How to read this page', content: 'The Overall Progress card shows the completion percentage and counts for total, complete, and in-progress files. Tabs provide Overview, Files, Steps, and Bottlenecks views.' },
|
|
594
|
-
{ title: 'How to use this page', content: 'Switch tabs to inspect step summaries, individual file progress, and which files are ready for the next step. Use the Process buttons to advance selected files.' },
|
|
595
|
-
{ title: 'Important notes', content: 'Bottlenecks are files that cannot proceed until another step completes. Refresh the page to see live progress during ingestion.' },
|
|
596
|
-
]}
|
|
597
|
-
/>
|
|
598
|
-
|
|
599
587
|
<Card>
|
|
600
588
|
<CardHeader>
|
|
601
589
|
<CardTitle className="flex items-center gap-2">
|
|
@@ -727,10 +715,10 @@ export default function FlexiblePipelinePage() {
|
|
|
727
715
|
</div>
|
|
728
716
|
)
|
|
729
717
|
}
|
|
718
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FlexiblePipelinePage:component"]
|
|
730
719
|
// CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering FlexiblePipelinePage.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
|
|
731
720
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
732
721
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
733
722
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
734
723
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
735
724
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
736
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:flexiblepipelinepage:function"]
|
|
@@ -11,15 +11,13 @@
|
|
|
11
11
|
import { useParams, useNavigate } from 'react-router-dom'
|
|
12
12
|
import { KBArticleList } from '../../../components/kb/KBArticleList'
|
|
13
13
|
import { KBArticleEditor } from '../../../components/kb/KBArticleEditor'
|
|
14
|
-
|
|
14
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:module_header:module_header"]
|
|
15
15
|
// CIL[DOC-VECTOR type="context" content="purpose='Renders the admin knowledge base page with article list and editor.'; No verified external callers; imports: .framework/src/components/kb/KBArticleList.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/admin/PageInstructions.tsx"]
|
|
16
16
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
17
17
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
18
18
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
19
19
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
20
20
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
21
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:module_header:module_header"]
|
|
22
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:kb_type_slugs:constant" type="constant" identity="KB_TYPE_SLUGS" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
|
|
23
21
|
// CIL[DOC-MACRO purpose="Defines the allowed knowledge base type slugs."]
|
|
24
22
|
// CIL[DOC-RESPONSIBILITY responsibility="Enumerate valid KB categories used by the admin page and article list."]
|
|
25
23
|
// CIL[DOC-CONTEXT module="admin/kb" layer="data" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/kb/KBArticleList.tsx,.framework/src/pages/admin/kb/KBAdminPage.tsx"]
|
|
@@ -28,17 +26,17 @@ import { PageInstructions } from '../../../components/admin/PageInstructions'
|
|
|
28
26
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
29
27
|
// CIL[DOC-STABILITY stability="stable"]
|
|
30
28
|
|
|
29
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KB_TYPE_SLUGS:constant" type="constant" identity="KB_TYPE_SLUGS" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
|
|
31
30
|
const KB_TYPE_SLUGS = ['kb-spine-admin', 'kb-spine-internal', 'kb-spine-public', 'kb-account']
|
|
31
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KB_TYPE_SLUGS:constant"]
|
|
32
32
|
// CIL[DOC-VECTOR type="context" content="purpose='Defines the allowed knowledge base type slugs.'; No verified external callers; imports: .framework/src/components/kb/KBArticleList.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/admin/PageInstructions.tsx"]
|
|
33
33
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
34
34
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
35
35
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
36
36
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
37
37
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
38
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:kb_type_slugs:constant"]
|
|
39
38
|
|
|
40
39
|
|
|
41
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPageProps:interface" type="interface" identity="KBAdminPageProps" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
|
|
42
40
|
// CIL[DOC-MACRO purpose="Defines the props accepted by the KBAdminPage component."]
|
|
43
41
|
// CIL[DOC-RESPONSIBILITY responsibility="Declare the optional mode prop for view/edit/new state."]
|
|
44
42
|
// CIL[DOC-CONTEXT module="admin/kb" layer="interface" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/kb/KBArticleList.tsx,.framework/src/pages/admin/kb/KBAdminPage.tsx"]
|
|
@@ -46,19 +44,19 @@ const KB_TYPE_SLUGS = ['kb-spine-admin', 'kb-spine-internal', 'kb-spine-public',
|
|
|
46
44
|
// CIL[DOC-MICRO logic_summary="Optional mode union type supporting view, edit, and new modes." notable_decisions="[]"]
|
|
47
45
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
48
46
|
// CIL[DOC-STABILITY stability="stable"]
|
|
47
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPageProps:interface" type="interface" identity="KBAdminPageProps" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
|
|
49
48
|
interface KBAdminPageProps {
|
|
50
49
|
mode?: 'view' | 'edit' | 'new'
|
|
51
50
|
}
|
|
51
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPageProps:interface"]
|
|
52
52
|
// CIL[DOC-VECTOR type="context" content="purpose='Defines the props accepted by the KBAdminPage component.'; No verified external callers; imports: .framework/src/components/kb/KBArticleList.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/admin/PageInstructions.tsx"]
|
|
53
53
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
54
54
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
55
55
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
56
56
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
57
57
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
58
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPageProps:interface"]
|
|
59
58
|
|
|
60
59
|
|
|
61
|
-
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:kbadminpage:function" type="function" identity="KBAdminPage" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
|
|
62
60
|
// CIL[DOC-MACRO purpose="Displays the knowledge base article list or editor based on route mode and id."]
|
|
63
61
|
// CIL[DOC-RESPONSIBILITY responsibility="Render the admin KB page and route user actions to the appropriate editor/list views."]
|
|
64
62
|
// CIL[DOC-CONTEXT module="admin/kb" layer="page" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/kb/KBArticleList.tsx,.framework/src/pages/admin/kb/KBAdminPage.tsx"]
|
|
@@ -66,6 +64,7 @@ interface KBAdminPageProps {
|
|
|
66
64
|
// CIL[DOC-MICRO logic_summary="Determines list mode from the mode prop and absence of id, then renders list or editor with navigation callbacks." notable_decisions="[]"]
|
|
67
65
|
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
68
66
|
// CIL[DOC-STABILITY stability="stable"]
|
|
67
|
+
// CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPage:component" type="component" identity="KBAdminPage" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
|
|
69
68
|
export function KBAdminPage({ mode = 'view' }: KBAdminPageProps) {
|
|
70
69
|
const { typeSlug, id } = useParams<{ typeSlug: string; id: string }>()
|
|
71
70
|
const navigate = useNavigate()
|
|
@@ -75,15 +74,6 @@ export function KBAdminPage({ mode = 'view' }: KBAdminPageProps) {
|
|
|
75
74
|
if (isList) {
|
|
76
75
|
return (
|
|
77
76
|
<>
|
|
78
|
-
<PageInstructions
|
|
79
|
-
description="Manage knowledge base articles, categories, and their lifecycle."
|
|
80
|
-
sections={[
|
|
81
|
-
{ title: 'What this page is for', content: 'This page lists the articles and categories for the selected knowledge base type and provides the editor for creating or updating content.' },
|
|
82
|
-
{ title: 'How to read this page', content: 'In list mode you see existing records and can filter or select one. In edit or new mode the article editor shows the content fields and save controls for the selected type slug.' },
|
|
83
|
-
{ title: 'How to create / edit / delete', content: 'Click New to create an article, select an existing record to view it, click Edit to change it, and use the editor\'s delete action to remove it.' },
|
|
84
|
-
{ title: 'Important notes', content: 'Knowledge base records are typed by slug (kb-spine-admin, kb-spine-internal, kb-spine-public, kb-account). Make sure you are editing under the correct category.' },
|
|
85
|
-
]}
|
|
86
|
-
/>
|
|
87
77
|
<KBArticleList
|
|
88
78
|
typeSlugs={KB_TYPE_SLUGS}
|
|
89
79
|
typeName="Knowledge Base"
|
|
@@ -97,15 +87,6 @@ export function KBAdminPage({ mode = 'view' }: KBAdminPageProps) {
|
|
|
97
87
|
|
|
98
88
|
return (
|
|
99
89
|
<>
|
|
100
|
-
<PageInstructions
|
|
101
|
-
description="Manage knowledge base articles, categories, and their lifecycle."
|
|
102
|
-
sections={[
|
|
103
|
-
{ title: 'What this page is for', content: 'This page lists the articles and categories for the selected knowledge base type and provides the editor for creating or updating content.' },
|
|
104
|
-
{ title: 'How to read this page', content: 'In list mode you see existing records and can filter or select one. In edit or new mode the article editor shows the content fields and save controls for the selected type slug.' },
|
|
105
|
-
{ title: 'How to create / edit / delete', content: 'Click New to create an article, select an existing record to view it, click Edit to change it, and use the editor\'s delete action to remove it.' },
|
|
106
|
-
{ title: 'Important notes', content: 'Knowledge base records are typed by slug (kb-spine-admin, kb-spine-internal, kb-spine-public, kb-account). Make sure you are editing under the correct category.' },
|
|
107
|
-
]}
|
|
108
|
-
/>
|
|
109
90
|
<KBArticleEditor
|
|
110
91
|
typeSlug={typeSlug}
|
|
111
92
|
mode={mode}
|
|
@@ -119,10 +100,10 @@ export function KBAdminPage({ mode = 'view' }: KBAdminPageProps) {
|
|
|
119
100
|
</>
|
|
120
101
|
)
|
|
121
102
|
}
|
|
103
|
+
// CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPage:component"]
|
|
122
104
|
// CIL[DOC-VECTOR type="context" content="purpose='Displays the knowledge base article list or editor based on route mode and id.'; No verified external callers; imports: .framework/src/components/kb/KBArticleList.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/admin/PageInstructions.tsx"]
|
|
123
105
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
124
106
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
125
107
|
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
126
108
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
127
109
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
128
|
-
// CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:kbadminpage:function"]
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
finalizeRegistration,
|
|
18
18
|
readPendingRegistration,
|
|
19
19
|
} from '../../lib/registration'
|
|
20
|
+
import { useBranding } from '../../hooks/useBranding'
|
|
20
21
|
// CIL[DOC-VECTOR type="context" content="purpose='Defines the AuthConfirmPage React component for confirming email signup and password reset tokens.'; No verified external callers; imports: .framework/src/lib/supabase.ts,.framework/src/components/ui/LoadingSpinner.tsx"]
|
|
21
22
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
22
23
|
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
@@ -59,6 +60,7 @@ export function AuthConfirmPage() {
|
|
|
59
60
|
const [searchParams] = useSearchParams()
|
|
60
61
|
const navigate = useNavigate()
|
|
61
62
|
const { refreshUser } = useAuth()
|
|
63
|
+
const branding = useBranding()
|
|
62
64
|
|
|
63
65
|
const tokenHash = searchParams.get('token_hash')
|
|
64
66
|
const type = searchParams.get('type') as 'signup' | 'recovery' | string | null
|
|
@@ -275,7 +277,7 @@ export function AuthConfirmPage() {
|
|
|
275
277
|
<div className="max-w-md w-full space-y-8">
|
|
276
278
|
<div>
|
|
277
279
|
<div className="mx-auto flex items-center justify-center">
|
|
278
|
-
<img src=
|
|
280
|
+
<img src={branding.logo_url} alt={branding.app_name} className="h-14 w-auto" />
|
|
279
281
|
</div>
|
|
280
282
|
<h2 className="mt-6 text-center text-3xl font-extrabold text-slate-900">
|
|
281
283
|
Set a new password
|
|
@@ -13,6 +13,7 @@ import { Link } from 'react-router-dom'
|
|
|
13
13
|
import { supabase } from '../../lib/supabase'
|
|
14
14
|
import { LoadingSpinner } from '../../components/ui/LoadingSpinner'
|
|
15
15
|
import { TurnstileWidget, turnstileEnabled } from '../../components/auth/TurnstileWidget'
|
|
16
|
+
import { useBranding } from '../../hooks/useBranding'
|
|
16
17
|
|
|
17
18
|
// CIL[DOC-VECTOR type="context" content="purpose='Provides imports and entry-point metadata for the ForgotPasswordPage component.'; No verified external callers; imports: .framework/src/lib/supabase.ts,.framework/src/components/ui/LoadingSpinner.tsx"]
|
|
18
19
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
@@ -36,6 +37,7 @@ export function ForgotPasswordPage() {
|
|
|
36
37
|
const [isLoading, setIsLoading] = useState(false)
|
|
37
38
|
const [submitted, setSubmitted] = useState(false)
|
|
38
39
|
const [error, setError] = useState('')
|
|
40
|
+
const branding = useBranding()
|
|
39
41
|
|
|
40
42
|
const handleSubmit = async (e: React.FormEvent) => {
|
|
41
43
|
e.preventDefault()
|
|
@@ -91,7 +93,7 @@ export function ForgotPasswordPage() {
|
|
|
91
93
|
<div className="max-w-md w-full space-y-8">
|
|
92
94
|
<div>
|
|
93
95
|
<div className="mx-auto flex items-center justify-center">
|
|
94
|
-
<img src=
|
|
96
|
+
<img src={branding.logo_url} alt={branding.app_name} className="h-14 w-auto" />
|
|
95
97
|
</div>
|
|
96
98
|
<h2 className="mt-6 text-center text-3xl font-extrabold text-slate-900">
|
|
97
99
|
Reset your password
|
|
@@ -13,6 +13,7 @@ import { Link, useNavigate } from 'react-router-dom'
|
|
|
13
13
|
import { useAuth } from '../../contexts/AuthContext'
|
|
14
14
|
import { LoadingSpinner } from '../../components/ui/LoadingSpinner'
|
|
15
15
|
import { TurnstileWidget, turnstileEnabled } from '../../components/auth/TurnstileWidget'
|
|
16
|
+
import { useBranding } from '../../hooks/useBranding'
|
|
16
17
|
|
|
17
18
|
// CIL[DOC-VECTOR type="context" content="purpose='Module header for the LoginPage component: imports, dependencies, and module-level context.'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/LoadingSpinner.tsx"]
|
|
18
19
|
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
@@ -37,6 +38,7 @@ export function LoginPage() {
|
|
|
37
38
|
const [isLoading, setIsLoading] = useState(false)
|
|
38
39
|
|
|
39
40
|
const { login } = useAuth()
|
|
41
|
+
const branding = useBranding()
|
|
40
42
|
const navigate = useNavigate()
|
|
41
43
|
|
|
42
44
|
const handleSubmit = async (e: React.FormEvent) => {
|
|
@@ -74,10 +76,10 @@ export function LoginPage() {
|
|
|
74
76
|
<div className="max-w-md w-full space-y-8">
|
|
75
77
|
<div>
|
|
76
78
|
<div className="mx-auto flex items-center justify-center">
|
|
77
|
-
<img src=
|
|
79
|
+
<img src={branding.logo_url} alt={branding.app_name} className="h-14 w-auto" />
|
|
78
80
|
</div>
|
|
79
81
|
<h2 className="mt-6 text-center text-3xl font-extrabold text-slate-900">
|
|
80
|
-
Sign in to
|
|
82
|
+
Sign in to {branding.app_name}
|
|
81
83
|
</h2>
|
|
82
84
|
<p className="mt-2 text-center text-sm text-slate-600">
|
|
83
85
|
Or{' '}
|
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
PendingRegistrationIntent,
|
|
24
24
|
} from '../../lib/registration'
|
|
25
25
|
import { TurnstileWidget, turnstileEnabled } from '../../components/auth/TurnstileWidget'
|
|
26
|
+
import { useBranding } from '../../hooks/useBranding'
|
|
26
27
|
// CIL[DOC-NOTE type="change" content="Batch4b: POST invites calls go through apiFetch (authenticated); pending-registration intent helpers imported for confirm-email resume"]
|
|
27
28
|
// CIL[END stable_id="~/.framework/src/pages/auth/RegisterPage.tsx:module_header:module_header"]
|
|
28
29
|
// CIL[BEGIN stable_id="~/.framework/src/pages/auth/RegisterPage.tsx:usetype:type" type="type" identity="UseType" parent="~/.framework/src/pages/auth/RegisterPage.tsx"]
|
|
@@ -270,6 +271,7 @@ export function RegisterPage() {
|
|
|
270
271
|
const [searchParams] = useSearchParams()
|
|
271
272
|
const navigate = useNavigate()
|
|
272
273
|
const { user, refreshUser, logout } = useAuth()
|
|
274
|
+
const branding = useBranding()
|
|
273
275
|
const inviteToken = searchParams.get('t')
|
|
274
276
|
const resumeRequested = searchParams.get('resume') === '1'
|
|
275
277
|
|
|
@@ -652,7 +654,7 @@ export function RegisterPage() {
|
|
|
652
654
|
<div className="max-w-md w-full space-y-8">
|
|
653
655
|
<div>
|
|
654
656
|
<div className="mx-auto flex items-center justify-center">
|
|
655
|
-
<img src=
|
|
657
|
+
<img src={branding.logo_url} alt={branding.app_name} className="h-14 w-auto" />
|
|
656
658
|
</div>
|
|
657
659
|
<h2 className="mt-6 text-center text-3xl font-extrabold text-slate-900">
|
|
658
660
|
{isInvite ? 'Complete your registration' : 'Create your account'}
|