spine-framework 0.3.125 → 0.3.127
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.framework/cli/commands/agents.ts +35 -37
- package/.framework/cli/commands/auth.ts +35 -34
- package/.framework/cli/commands/create-app.ts +104 -40
- package/.framework/cli/commands/dev.ts +104 -69
- package/.framework/cli/commands/doctor.ts +169 -97
- package/.framework/cli/commands/generate.ts +82 -161
- package/.framework/cli/commands/init.ts +72 -34
- package/.framework/cli/commands/install-app.ts +260 -125
- package/.framework/cli/commands/items.ts +33 -44
- package/.framework/cli/commands/migrate.ts +122 -40
- package/.framework/cli/commands/migrations.ts +33 -40
- package/.framework/cli/commands/pipelines.ts +31 -39
- package/.framework/cli/commands/status.ts +47 -23
- package/.framework/cli/commands/system.ts +47 -37
- package/.framework/cli/commands/test.ts +112 -68
- package/.framework/cli/commands/validate-app.ts +215 -121
- package/.framework/cli/context.ts +112 -130
- package/.framework/cli/env-loader.ts +47 -18
- package/.framework/cli/index.ts +81 -42
- package/.framework/docs/runtime-types.md +1024 -0
- package/.framework/functions/_shared/agent-runner.ts +1296 -961
- package/.framework/functions/_shared/app-manifest.ts +82 -68
- package/.framework/functions/_shared/audit.ts +135 -83
- package/.framework/functions/_shared/{cil-state.ts → cil.ts} +147 -54
- package/.framework/functions/_shared/db.ts +80 -126
- package/.framework/functions/_shared/hash-api-key.ts +63 -0
- package/.framework/functions/_shared/index.ts +222 -347
- package/.framework/functions/_shared/kb.ts +319 -0
- package/.framework/functions/_shared/llm.ts +92 -0
- package/.framework/functions/_shared/logging.ts +288 -0
- package/.framework/functions/_shared/middleware.ts +329 -365
- package/.framework/functions/_shared/outcomes.ts +36 -0
- package/.framework/functions/_shared/permissions.ts +359 -643
- package/.framework/functions/_shared/pipeline-runner.ts +243 -316
- package/.framework/functions/_shared/principal.ts +376 -468
- package/.framework/functions/_shared/resolve-credentials.ts +102 -0
- package/.framework/functions/_shared/resolve-ids.ts +162 -14
- package/.framework/functions/_shared/retry-deliveries.ts +104 -0
- package/.framework/functions/_shared/schema-utils.ts +611 -373
- package/.framework/functions/_shared/testing.ts +207 -137
- package/.framework/functions/_shared/tracing.ts +276 -0
- package/.framework/functions/_shared/trigger-engine.ts +159 -211
- package/.framework/functions/_shared/webhook-registration.ts +95 -81
- package/.framework/functions/_shared/webhook-registry.ts +153 -75
- package/.framework/functions/account-nodes.ts +31 -53
- package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
- package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
- package/.framework/functions/adapters/openai-outbound.ts +40 -0
- package/.framework/functions/admin-data.ts +687 -533
- package/.framework/functions/admin-funnel.ts +31 -20
- package/.framework/functions/admin-install-funnel.ts +47 -28
- package/.framework/functions/admin-signals.ts +47 -29
- package/.framework/functions/ai-agents.ts +122 -147
- package/.framework/functions/ai-interactions.ts +180 -90
- package/.framework/functions/api-keys.ts +250 -192
- package/.framework/functions/apps.ts +203 -197
- package/.framework/functions/auth.ts +98 -91
- package/.framework/functions/cil-agent-ingest.ts +773 -0
- package/.framework/functions/cil-agent.ts +592 -0
- package/.framework/functions/cil-callmap.ts +1227 -0
- package/.framework/functions/cil-config.ts +583 -0
- package/.framework/functions/cil-context.ts +445 -0
- package/.framework/functions/cil-doc.ts +1752 -0
- package/.framework/functions/cil-embeddings.ts +1202 -0
- package/.framework/functions/cil-graph.ts +585 -0
- package/.framework/functions/cil-ingest.ts +2416 -0
- package/.framework/functions/cil-pipeline.ts +318 -0
- package/.framework/functions/cil-project.ts +499 -0
- package/.framework/functions/cil-validate.ts +469 -0
- package/.framework/functions/debug-auth.ts +73 -53
- package/.framework/functions/deliveries.ts +117 -0
- package/.framework/functions/embeddings.ts +528 -516
- package/.framework/functions/eval-harness.ts +158 -106
- package/.framework/functions/integration-outbound.ts +311 -0
- package/.framework/functions/integration-routes.ts +240 -466
- package/.framework/functions/integrations.ts +132 -140
- package/.framework/functions/invites.ts +401 -201
- package/.framework/functions/item-progress.ts +113 -53
- package/.framework/functions/kb.ts +28 -0
- package/.framework/functions/logs.ts +239 -222
- package/.framework/functions/observability.ts +308 -259
- package/.framework/functions/pipeline-executions.ts +179 -235
- package/.framework/functions/pipelines.ts +163 -205
- package/.framework/functions/prompt-configs.ts +109 -156
- package/.framework/functions/roles.ts +97 -147
- package/.framework/functions/system-cron.ts +132 -218
- package/.framework/functions/system.ts +112 -52
- package/.framework/functions/tests.ts +32 -28
- package/.framework/functions/timers.ts +162 -210
- package/.framework/functions/triggers.ts +282 -346
- package/.framework/functions/types.ts +283 -400
- package/.framework/migrations/001_core_schema.sql +630 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
- package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
- package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
- package/.framework/migrations/005_core_observability.sql +598 -0
- package/.framework/migrations/006_security_hardening_rls.sql +97 -0
- package/.framework/migrations/007_kb_article_list.sql +237 -0
- package/.framework/migrations/008_items_target.sql +8 -0
- package/.framework/migrations/009_roles_slug_unique.sql +11 -0
- package/.framework/public/spine.config.json +91 -0
- package/.framework/scripts/app-install-cli.ts +112 -98
- package/.framework/src/App.tsx +67 -20
- package/.framework/src/apps/admin/index.tsx +97 -27
- package/.framework/src/components/AppWrapper.tsx +50 -11
- package/.framework/src/components/CustomAppLoader.tsx +131 -22
- package/.framework/src/components/admin/AdminListPage.tsx +75 -8
- package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
- package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
- package/.framework/src/components/admin/PageInstructions.tsx +49 -0
- package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
- package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
- package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
- package/.framework/src/components/app-sidebar.tsx +50 -3
- package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
- package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
- package/.framework/src/components/kb/KBArticleList.tsx +557 -0
- package/.framework/src/components/layout/AppShell.tsx +54 -16
- package/.framework/src/components/layout/Header.tsx +50 -38
- package/.framework/src/components/layout/Layout.tsx +48 -32
- package/.framework/src/components/layout/Sidebar.tsx +167 -16
- package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
- package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
- package/.framework/src/components/runtime/DataFilters.tsx +78 -1
- package/.framework/src/components/runtime/DataHeader.tsx +32 -29
- package/.framework/src/components/runtime/DataListPage.tsx +161 -2
- package/.framework/src/components/runtime/DataStats.tsx +48 -1
- package/.framework/src/components/runtime/DataTable.tsx +153 -1
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
- package/.framework/src/components/runtime/index.ts +16 -9
- package/.framework/src/components/search-form.tsx +33 -1
- package/.framework/src/components/shared/AgentView.tsx +48 -51
- package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
- package/.framework/src/components/shared/InviteManager.tsx +113 -52
- package/.framework/src/components/shared/MemberList.tsx +182 -0
- package/.framework/src/components/shared/SchemaFields.tsx +96 -78
- package/.framework/src/components/ui/DataTable.tsx +86 -56
- package/.framework/src/components/ui/Form.tsx +188 -109
- package/.framework/src/components/ui/ItemCard.tsx +86 -58
- package/.framework/src/components/ui/ItemListView.tsx +88 -61
- package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
- package/.framework/src/components/ui/Modal.tsx +81 -4
- package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
- package/.framework/src/components/ui/accordion.tsx +97 -5
- package/.framework/src/components/ui/alert-dialog.tsx +225 -13
- package/.framework/src/components/ui/alert.tsx +113 -6
- package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
- package/.framework/src/components/ui/avatar.tsx +129 -7
- package/.framework/src/components/ui/badge.tsx +65 -3
- package/.framework/src/components/ui/breadcrumb.tsx +145 -8
- package/.framework/src/components/ui/button-group.tsx +81 -4
- package/.framework/src/components/ui/button.tsx +49 -2
- package/.framework/src/components/ui/calendar.tsx +65 -3
- package/.framework/src/components/ui/card.tsx +145 -8
- package/.framework/src/components/ui/carousel.tsx +129 -7
- package/.framework/src/components/ui/chart.tsx +161 -10
- package/.framework/src/components/ui/checkbox.tsx +49 -2
- package/.framework/src/components/ui/collapsible.tsx +81 -5
- package/.framework/src/components/ui/combobox.tsx +305 -20
- package/.framework/src/components/ui/command.tsx +177 -11
- package/.framework/src/components/ui/context-menu.tsx +273 -17
- package/.framework/src/components/ui/dialog.tsx +209 -27
- package/.framework/src/components/ui/direction.tsx +64 -4
- package/.framework/src/components/ui/drawer.tsx +193 -12
- package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
- package/.framework/src/components/ui/empty.tsx +145 -9
- package/.framework/src/components/ui/field.tsx +209 -14
- package/.framework/src/components/ui/hover-card.tsx +81 -4
- package/.framework/src/components/ui/input-group.tsx +162 -10
- package/.framework/src/components/ui/input-otp.tsx +98 -5
- package/.framework/src/components/ui/input.tsx +49 -2
- package/.framework/src/components/ui/item.tsx +225 -13
- package/.framework/src/components/ui/kbd.tsx +65 -3
- package/.framework/src/components/ui/label.tsx +49 -2
- package/.framework/src/components/ui/menubar.tsx +289 -17
- package/.framework/src/components/ui/native-select.tsx +97 -5
- package/.framework/src/components/ui/navigation-menu.tsx +177 -10
- package/.framework/src/components/ui/pagination.tsx +161 -9
- package/.framework/src/components/ui/popover.tsx +145 -8
- package/.framework/src/components/ui/progress.tsx +49 -2
- package/.framework/src/components/ui/radio-group.tsx +65 -3
- package/.framework/src/components/ui/resizable.tsx +82 -4
- package/.framework/src/components/ui/scroll-area.tsx +65 -3
- package/.framework/src/components/ui/select.tsx +193 -11
- package/.framework/src/components/ui/separator.tsx +49 -2
- package/.framework/src/components/ui/sheet.tsx +193 -11
- package/.framework/src/components/ui/sidebar.tsx +481 -38
- package/.framework/src/components/ui/skeleton.tsx +49 -2
- package/.framework/src/components/ui/slider.tsx +49 -2
- package/.framework/src/components/ui/sonner.tsx +49 -2
- package/.framework/src/components/ui/spinner.tsx +49 -2
- package/.framework/src/components/ui/switch.tsx +49 -2
- package/.framework/src/components/ui/table-primitives.tsx +160 -33
- package/.framework/src/components/ui/table.tsx +161 -9
- package/.framework/src/components/ui/tabs.tsx +113 -6
- package/.framework/src/components/ui/textarea.tsx +49 -2
- package/.framework/src/components/ui/toggle-group.tsx +81 -4
- package/.framework/src/components/ui/toggle.tsx +65 -3
- package/.framework/src/components/ui/tooltip.tsx +97 -5
- package/.framework/src/contexts/AppContext.tsx +129 -45
- package/.framework/src/contexts/AuthContext.tsx +173 -145
- package/.framework/src/hooks/use-mobile.ts +48 -2
- package/.framework/src/hooks/useApi.ts +208 -159
- package/.framework/src/hooks/useAppPath.ts +32 -23
- package/.framework/src/hooks/useApps.ts +51 -20
- package/.framework/src/hooks/useEntityList.ts +32 -78
- package/.framework/src/hooks/useEntityRecord.ts +35 -96
- package/.framework/src/hooks/useForm.ts +32 -92
- package/.framework/src/hooks/useListSchema.ts +49 -78
- package/.framework/src/hooks/useSchemaRecord.ts +114 -105
- package/.framework/src/lib/api.ts +192 -115
- package/.framework/src/lib/supabase.ts +98 -64
- package/.framework/src/lib/utils.ts +287 -151
- package/.framework/src/main.tsx +49 -3
- package/.framework/src/pages/DashboardPage.tsx +52 -29
- package/.framework/src/pages/NotFoundPage.tsx +32 -10
- package/.framework/src/pages/SetupPage.tsx +32 -12
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
- package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
- package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
- package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
- package/.framework/src/pages/admin/AppsPage.tsx +49 -2
- package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
- package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
- package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
- package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
- package/.framework/src/pages/admin/LogsPage.tsx +422 -75
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
- package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
- package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
- package/.framework/src/pages/admin/RolesPage.tsx +171 -18
- package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
- package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
- package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
- package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
- package/.framework/src/pages/admin/TimersPage.tsx +48 -20
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
- package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
- package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
- package/.framework/src/pages/admin/TypesPage.tsx +48 -20
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
- package/.framework/src/pages/auth/LoginPage.tsx +50 -23
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
- package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
- package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
- package/.framework/src/types/auth.ts +128 -71
- package/.framework/src/types/types.ts +373 -157
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
- package/docs/README.md +9 -130
- package/netlify.toml +3 -3
- package/package.json +13 -25
- package/scripts/kb-ingest-docs.ts +203 -0
- package/spine.config.json +65 -4
- package/.framework/migrations/001_schema.sql +0 -425
- package/.framework/migrations/002_rls_and_functions.sql +0 -763
- package/.framework/migrations/004_enhancements.sql +0 -43
- package/.framework/migrations/005_auth_user_trigger.sql +0 -105
- package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
- package/.framework/migrations/016_invites.sql +0 -27
- package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
- package/.framework/migrations/018_apps_required_roles.sql +0 -17
- package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
- package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
- package/.framework/migrations/021_app_domains.sql +0 -112
- package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
- package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
- package/.framework/migrations/024_messages_account_id.sql +0 -9
- package/.framework/migrations/025_retype_threads_messages.sql +0 -240
- package/.framework/migrations/026_fix_rls_policies.sql +0 -47
- package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
- package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
- package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
- package/.framework/migrations/030_messages_updated_by.sql +0 -6
- package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
- package/docs/APPS.md +0 -232
- package/docs/ARCHITECTURE.md +0 -246
- package/docs/INSTALL.md +0 -155
- package/docs/design-schema-spec.md +0 -1837
- package/docs/dev-guides/01-create-an-app.md +0 -183
- package/docs/dev-guides/02-create-a-function.md +0 -178
- package/docs/dev-guides/03-create-a-component.md +0 -178
- package/docs/dev-guides/04-webhook-handlers.md +0 -129
- package/docs/dev-guides/05-testing.md +0 -168
- package/docs/dev-guides/README.md +0 -40
- package/docs/npm-packages-plan.md +0 -288
- package/docs/spine-core--api-reference.md +0 -822
|
@@ -1,9 +1,42 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
// CIL[BEGIN chunk_id="toggle_module_header_1783750525" type="module_header" identity="imports" parent="none"]
|
|
6
|
+
// CIL[DOC-MACRO purpose="Import dependencies for toggle UI components"]
|
|
7
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Import React, CVA, Radix UI primitives, and utility functions"]
|
|
8
|
+
// CIL[DOC-CONTEXT module="toggle-ui" layer="ui-components" related_files="[\".framework/src/components/ui/table-primitives.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
9
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React, cva, VariantProps, TogglePrimitive, cn" errors="none" side_effects="none"]
|
|
10
|
+
// CIL[DOC-MICRO logic_summary="Imports required libraries and utilities for toggle implementation" notable_decisions="[]"]
|
|
11
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
12
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
13
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
14
|
+
// CIL[DOC-VECTOR type="context" content="Layer: ui-components. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/table-primitives.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
15
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
16
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
17
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
18
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
19
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
1
20
|
import * as React from "react"
|
|
2
21
|
import { cva, type VariantProps } from "class-variance-authority"
|
|
3
22
|
import { Toggle as TogglePrimitive } from "radix-ui"
|
|
4
23
|
|
|
5
24
|
import { cn } from "@/lib/utils"
|
|
6
|
-
|
|
25
|
+
// CIL[END chunk_id="toggle_module_header_1783750525"]
|
|
26
|
+
// CIL[BEGIN chunk_id="toggle_togglevariants_1783750525" type="const" identity="toggleVariants" parent="none"]
|
|
27
|
+
// CIL[DOC-MACRO purpose="Define styling variants for toggle component"]
|
|
28
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide CVA configuration for toggle styling with variants and sizes"]
|
|
29
|
+
// CIL[DOC-CONTEXT module="toggle-ui" layer="ui-components" related_files="[\".framework/src/components/ui/table-primitives.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
30
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="cva config object" errors="none" side_effects="none"]
|
|
31
|
+
// CIL[DOC-MICRO logic_summary="Creates default/outline variants and sm/default/lg sizes with state-aware styling" notable_decisions="[]"]
|
|
32
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
33
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
34
|
+
// CIL[DOC-VECTOR type="context" content="Layer: ui-components. Direct callers: 2. Direct calls: 0. Related files: .framework/src/components/ui/table-primitives.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
|
|
35
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 2."]
|
|
36
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
37
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
38
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
39
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
7
40
|
const toggleVariants = cva(
|
|
8
41
|
"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-xs font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
9
42
|
{
|
|
@@ -25,7 +58,21 @@ const toggleVariants = cva(
|
|
|
25
58
|
},
|
|
26
59
|
}
|
|
27
60
|
)
|
|
28
|
-
|
|
61
|
+
// CIL[END chunk_id="toggle_togglevariants_1783750525"]
|
|
62
|
+
// CIL[BEGIN chunk_id="toggle_toggle_1783750525" type="function" identity="Toggle" parent="none"]
|
|
63
|
+
// CIL[DOC-MACRO purpose="Toggle button component with variant and size support"]
|
|
64
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render toggle with Radix UI and CVA styling"]
|
|
65
|
+
// CIL[DOC-CONTEXT module="toggle-ui" layer="ui-components" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
66
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="renders DOM"]
|
|
67
|
+
// CIL[DOC-MICRO logic_summary="Wraps Radix Root with variant and size-aware styling using toggleVariants" notable_decisions="[]"]
|
|
68
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
69
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
70
|
+
// CIL[DOC-VECTOR type="context" content="Layer: ui-components. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
71
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
72
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
73
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
74
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
75
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
29
76
|
function Toggle({
|
|
30
77
|
className,
|
|
31
78
|
variant = "default",
|
|
@@ -41,5 +88,20 @@ function Toggle({
|
|
|
41
88
|
/>
|
|
42
89
|
)
|
|
43
90
|
}
|
|
44
|
-
|
|
91
|
+
// CIL[END chunk_id="toggle_toggle_1783750525"]
|
|
92
|
+
// CIL[BEGIN chunk_id="toggle_export_1783750525" type="export" identity="export" parent="none"]
|
|
93
|
+
// CIL[DOC-MACRO purpose="Export toggle component and variants"]
|
|
94
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Make toggle components available for import"]
|
|
95
|
+
// CIL[DOC-CONTEXT module="toggle-ui" layer="ui-components" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
96
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="named exports" errors="none" side_effects="module exports"]
|
|
97
|
+
// CIL[DOC-MICRO logic_summary="Exports Toggle component and toggleVariants for external use" notable_decisions="[]"]
|
|
98
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
99
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
100
|
+
// CIL[DOC-VECTOR type="context" content="Layer: ui-components. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
101
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
102
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
103
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
104
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
105
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
45
106
|
export { Toggle, toggleVariants }
|
|
107
|
+
// CIL[END chunk_id="toggle_export_1783750525"]
|
|
@@ -1,10 +1,45 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
// CIL[BEGIN chunk_id="tooltip_module_header_1783750525" type="module_header" identity="imports" parent="none"]
|
|
8
|
+
// CIL[DOC-MACRO purpose="Import dependencies for tooltip UI components"]
|
|
9
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Import React, Radix UI primitives, and utility functions"]
|
|
10
|
+
// CIL[DOC-CONTEXT module="tooltip-ui" layer="ui-components" related_files="[\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
11
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React, TooltipPrimitive, cn" errors="none" side_effects="none"]
|
|
12
|
+
// CIL[DOC-MICRO logic_summary="Imports required libraries and utilities for tooltip implementation" notable_decisions="[]"]
|
|
13
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
14
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
15
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
16
|
+
// CIL[DOC-VECTOR type="context" content="Layer: ui-components. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/layout/Sidebar.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
17
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
18
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
19
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
20
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
21
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
1
22
|
"use client"
|
|
2
23
|
|
|
3
24
|
import * as React from "react"
|
|
4
25
|
import { Tooltip as TooltipPrimitive } from "radix-ui"
|
|
5
26
|
|
|
6
27
|
import { cn } from "@/lib/utils"
|
|
7
|
-
|
|
28
|
+
// CIL[END chunk_id="tooltip_module_header_1783750525"]
|
|
29
|
+
// CIL[BEGIN chunk_id="tooltip_tooltipprovider_1783750525" type="function" identity="TooltipProvider" parent="none"]
|
|
30
|
+
// CIL[DOC-MACRO purpose="Provider for tooltip context with delay configuration"]
|
|
31
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render tooltip provider with customizable delay duration"]
|
|
32
|
+
// CIL[DOC-CONTEXT module="tooltip-ui" layer="ui-components" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
33
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="renders DOM"]
|
|
34
|
+
// CIL[DOC-MICRO logic_summary="Wraps Radix Provider with delay duration configuration" notable_decisions="[]"]
|
|
35
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
36
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
37
|
+
// CIL[DOC-VECTOR type="context" content="Layer: ui-components. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/components/layout/Sidebar.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
38
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
39
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
40
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
41
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
42
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
8
43
|
function TooltipProvider({
|
|
9
44
|
delayDuration = 0,
|
|
10
45
|
...props
|
|
@@ -17,19 +52,61 @@ function TooltipProvider({
|
|
|
17
52
|
/>
|
|
18
53
|
)
|
|
19
54
|
}
|
|
20
|
-
|
|
55
|
+
// CIL[END chunk_id="tooltip_tooltipprovider_1783750525"]
|
|
56
|
+
// CIL[BEGIN chunk_id="tooltip_tooltip_1783750525" type="function" identity="Tooltip" parent="none"]
|
|
57
|
+
// CIL[DOC-MACRO purpose="Root tooltip container component"]
|
|
58
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render tooltip root with data attribute"]
|
|
59
|
+
// CIL[DOC-CONTEXT module="tooltip-ui" layer="ui-components" related_files="[\".framework/src/components/ui/dialog.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/portal/pages/CoursesPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
60
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="renders DOM"]
|
|
61
|
+
// CIL[DOC-MICRO logic_summary="Wraps Radix Root with tooltip data slot" notable_decisions="[]"]
|
|
62
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
63
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
64
|
+
// CIL[DOC-VECTOR type="context" content="Layer: ui-components. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, .framework/src/components/layout/Sidebar.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/portal/pages/CoursesPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
65
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
66
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
67
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
68
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
69
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
21
70
|
function Tooltip({
|
|
22
71
|
...props
|
|
23
72
|
}: React.ComponentProps<typeof TooltipPrimitive.Root>) {
|
|
24
73
|
return <TooltipPrimitive.Root data-slot="tooltip" {...props} />
|
|
25
74
|
}
|
|
26
|
-
|
|
75
|
+
// CIL[END chunk_id="tooltip_tooltip_1783750525"]
|
|
76
|
+
// CIL[BEGIN chunk_id="tooltip_tooltiptrigger_1783750525" type="function" identity="TooltipTrigger" parent="none"]
|
|
77
|
+
// CIL[DOC-MACRO purpose="Tooltip trigger element for hover/focus interaction"]
|
|
78
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render trigger with data attribute for tooltip activation"]
|
|
79
|
+
// CIL[DOC-CONTEXT module="tooltip-ui" layer="ui-components" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
80
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="renders DOM"]
|
|
81
|
+
// CIL[DOC-MICRO logic_summary="Wraps Radix Trigger with tooltip data slot" notable_decisions="[]"]
|
|
82
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
83
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
84
|
+
// CIL[DOC-VECTOR type="context" content="Layer: ui-components. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/layout/Sidebar.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
85
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
86
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
87
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
88
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
89
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
27
90
|
function TooltipTrigger({
|
|
28
91
|
...props
|
|
29
92
|
}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {
|
|
30
93
|
return <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />
|
|
31
94
|
}
|
|
32
|
-
|
|
95
|
+
// CIL[END chunk_id="tooltip_tooltiptrigger_1783750525"]
|
|
96
|
+
// CIL[BEGIN chunk_id="tooltip_tooltipcontent_1783750525" type="function" identity="TooltipContent" parent="none"]
|
|
97
|
+
// CIL[DOC-MACRO purpose="Tooltip content panel with portal and animations"]
|
|
98
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Render tooltip content with portal, styling, and arrow"]
|
|
99
|
+
// CIL[DOC-CONTEXT module="tooltip-ui" layer="ui-components" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/portal/pages/CoursesPage.tsx\",\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
100
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="JSX element" errors="none" side_effects="renders DOM"]
|
|
101
|
+
// CIL[DOC-MICRO logic_summary="Wraps Radix Content with portal, animations, and arrow styling" notable_decisions="[]"]
|
|
102
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
103
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
104
|
+
// CIL[DOC-VECTOR type="context" content="Layer: ui-components. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/portal/pages/CoursesPage.tsx, .framework/src/components/layout/Sidebar.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
105
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
106
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
107
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
108
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
109
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
33
110
|
function TooltipContent({
|
|
34
111
|
className,
|
|
35
112
|
sideOffset = 0,
|
|
@@ -53,5 +130,20 @@ function TooltipContent({
|
|
|
53
130
|
</TooltipPrimitive.Portal>
|
|
54
131
|
)
|
|
55
132
|
}
|
|
56
|
-
|
|
133
|
+
// CIL[END chunk_id="tooltip_tooltipcontent_1783750525"]
|
|
134
|
+
// CIL[BEGIN chunk_id="tooltip_export_1783750525" type="export" identity="export" parent="none"]
|
|
135
|
+
// CIL[DOC-MACRO purpose="Export all tooltip components"]
|
|
136
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Make tooltip components available for import"]
|
|
137
|
+
// CIL[DOC-CONTEXT module="tooltip-ui" layer="ui-components" related_files="[]"]
|
|
138
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="named exports" errors="none" side_effects="module exports"]
|
|
139
|
+
// CIL[DOC-MICRO logic_summary="Exports Tooltip, TooltipContent, TooltipProvider, and TooltipTrigger" notable_decisions="[]"]
|
|
140
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
141
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
142
|
+
// CIL[DOC-VECTOR type="context" content="Layer: ui-components. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
143
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
144
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
145
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
146
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
147
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
57
148
|
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }
|
|
149
|
+
// CIL[END chunk_id="tooltip_export_1783750525"]
|
|
@@ -1,20 +1,50 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
// CIL[BEGIN chunk_id="AppContext_module_header_1783749485" type="module_header" identity="module_header" parent="none"]
|
|
10
|
+
// CIL[DOC-MACRO purpose="Module imports and type definitions"]
|
|
11
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define React context types and import dependencies"]
|
|
12
|
+
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-context" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/db.ts\",\"\\\"]"]
|
|
13
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="type definitions" errors="none" side_effects="none"]
|
|
14
|
+
// CIL[DOC-MICRO logic_summary="Sets up imports and context interfaces for app management" notable_decisions="[]"]
|
|
15
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
16
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
17
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
18
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-context. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/db.ts, \."]
|
|
19
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
20
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
21
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
22
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
23
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
1
24
|
import React, { createContext, useContext, useState, useEffect, useRef, useCallback } from 'react'
|
|
2
25
|
import { AppRecord } from '../hooks/useApps'
|
|
3
26
|
import { apiFetch } from '../lib/api'
|
|
4
27
|
import { useAuth } from './AuthContext'
|
|
5
|
-
|
|
6
|
-
// ─── Current App Context (per-route) ───────────────────────────────────────────
|
|
7
|
-
|
|
8
28
|
interface AppContextType {
|
|
9
29
|
app: AppRecord
|
|
10
30
|
}
|
|
11
31
|
|
|
12
32
|
const AppContext = createContext<AppContextType | undefined>(undefined)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
33
|
+
// CIL[END chunk_id="AppContext_module_header_1783749485"]
|
|
34
|
+
// CIL[BEGIN chunk_id="AppContext_usecurrentapp_1783749485" type="function" identity="useCurrentApp" parent="none"]
|
|
35
|
+
// CIL[DOC-MACRO purpose="Access current app from context"]
|
|
36
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide current app record to components"]
|
|
37
|
+
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-hook" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
|
|
38
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="AppRecord" errors="throws if no provider" side_effects="none"]
|
|
39
|
+
// CIL[DOC-MICRO logic_summary="Returns app from React context with safety check" notable_decisions="[]"]
|
|
40
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
41
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
42
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 1. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
|
|
43
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 8."]
|
|
44
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
45
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
46
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
47
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
18
48
|
export function useCurrentApp(): AppRecord {
|
|
19
49
|
const context = useContext(AppContext)
|
|
20
50
|
if (context === undefined) {
|
|
@@ -22,15 +52,40 @@ export function useCurrentApp(): AppRecord {
|
|
|
22
52
|
}
|
|
23
53
|
return context.app
|
|
24
54
|
}
|
|
25
|
-
|
|
55
|
+
// CIL[END chunk_id="AppContext_usecurrentapp_1783749485"]
|
|
56
|
+
// CIL[BEGIN chunk_id="AppContext_appproviderprops_1783749485" type="interface" identity="AppProviderProps" parent="none"]
|
|
57
|
+
// CIL[DOC-MACRO purpose="Define provider props interface"]
|
|
58
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Type definition for AppProvider component"]
|
|
59
|
+
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-types" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
60
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
61
|
+
// CIL[DOC-MICRO logic_summary="Simple props interface with app and children" notable_decisions="[]"]
|
|
62
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
63
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
64
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-types. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
65
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
66
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
67
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
68
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
69
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
26
70
|
interface AppProviderProps {
|
|
27
71
|
app: AppRecord
|
|
28
72
|
children: React.ReactNode
|
|
29
73
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
74
|
+
// CIL[END chunk_id="AppContext_appproviderprops_1783749485"]
|
|
75
|
+
// CIL[BEGIN chunk_id="AppContext_appprovider_1783749485" type="function" identity="AppProvider" parent="none"]
|
|
76
|
+
// CIL[DOC-MACRO purpose="Provide current app context"]
|
|
77
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Wrap components with app context"]
|
|
78
|
+
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-provider" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
79
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="Provider component" errors="none" side_effects="context provider"]
|
|
80
|
+
// CIL[DOC-MICRO logic_summary="Simple React context provider wrapper" notable_decisions="[]"]
|
|
81
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
82
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
83
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-provider. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
84
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
85
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
86
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
87
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
88
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
34
89
|
export function AppProvider({ app, children }: AppProviderProps) {
|
|
35
90
|
return (
|
|
36
91
|
<AppContext.Provider value={{ app }}>
|
|
@@ -38,9 +93,21 @@ export function AppProvider({ app, children }: AppProviderProps) {
|
|
|
38
93
|
</AppContext.Provider>
|
|
39
94
|
)
|
|
40
95
|
}
|
|
41
|
-
|
|
42
|
-
//
|
|
43
|
-
|
|
96
|
+
// CIL[END chunk_id="AppContext_appprovider_1783749485"]
|
|
97
|
+
// CIL[BEGIN chunk_id="AppContext_appsregistrycontexttype_1783749485" type="interface" identity="AppsRegistryContextType" parent="none"]
|
|
98
|
+
// CIL[DOC-MACRO purpose="Define apps registry context type"]
|
|
99
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Type definition for apps registry context"]
|
|
100
|
+
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-types" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
101
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
102
|
+
// CIL[DOC-MICRO logic_summary="Defines shape of apps registry context with apps list and loading state" notable_decisions="[]"]
|
|
103
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
104
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
105
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-types. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
106
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
107
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
108
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
109
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
110
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
44
111
|
interface AppsRegistryContextType {
|
|
45
112
|
apps: AppRecord[]
|
|
46
113
|
routableApps: AppRecord[]
|
|
@@ -50,12 +117,21 @@ interface AppsRegistryContextType {
|
|
|
50
117
|
}
|
|
51
118
|
|
|
52
119
|
const AppsRegistryContext = createContext<AppsRegistryContextType | undefined>(undefined)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
120
|
+
// CIL[END chunk_id="AppContext_appsregistrycontexttype_1783749485"]
|
|
121
|
+
// CIL[BEGIN chunk_id="AppContext_useappsregistry_1783749485" type="function" identity="useAppsRegistry" parent="none"]
|
|
122
|
+
// CIL[DOC-MACRO purpose="Access apps registry from context"]
|
|
123
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide apps registry data to components"]
|
|
124
|
+
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-hook" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
|
|
125
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="AppsRegistryContextType" errors="throws if no provider" side_effects="none"]
|
|
126
|
+
// CIL[DOC-MICRO logic_summary="Returns apps registry context with safety check" notable_decisions="[]"]
|
|
127
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
128
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
129
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 1. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
|
|
130
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
|
|
131
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
132
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
133
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
134
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
59
135
|
export function useAppsRegistry(): AppsRegistryContextType {
|
|
60
136
|
const context = useContext(AppsRegistryContext)
|
|
61
137
|
if (context === undefined) {
|
|
@@ -63,31 +139,45 @@ export function useAppsRegistry(): AppsRegistryContextType {
|
|
|
63
139
|
}
|
|
64
140
|
return context
|
|
65
141
|
}
|
|
66
|
-
|
|
142
|
+
// CIL[END chunk_id="AppContext_useappsregistry_1783749485"]
|
|
143
|
+
// CIL[BEGIN chunk_id="AppContext_appsregistryproviderprops_1783749485" type="interface" identity="AppsRegistryProviderProps" parent="none"]
|
|
144
|
+
// CIL[DOC-MACRO purpose="Define registry provider props interface"]
|
|
145
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Type definition for AppsRegistryProvider component"]
|
|
146
|
+
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-types" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
147
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
148
|
+
// CIL[DOC-MICRO logic_summary="Simple props interface with only children" notable_decisions="[]"]
|
|
149
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
150
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
151
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-types. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
152
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
153
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
154
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
155
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
156
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
67
157
|
interface AppsRegistryProviderProps {
|
|
68
158
|
children: React.ReactNode
|
|
69
159
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
160
|
+
// CIL[END chunk_id="AppContext_appsregistryproviderprops_1783749485"]
|
|
161
|
+
// CIL[BEGIN chunk_id="AppContext_appsregistryprovider_1783749485" type="function" identity="AppsRegistryProvider" parent="none"]
|
|
162
|
+
// CIL[DOC-MACRO purpose="Fetch and provide apps registry"]
|
|
163
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Manage apps registry state and API calls"]
|
|
164
|
+
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-provider" related_files="[]"]
|
|
165
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="Provider component" errors="network errors" side_effects="API calls, state updates"]
|
|
166
|
+
// CIL[DOC-MICRO logic_summary="Fetches apps list, filters by domain, provides registry context" notable_decisions="[]"]
|
|
167
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
168
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
169
|
+
// CIL[DOC-VECTOR type="context" content="Layer: frontend-provider. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
170
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
171
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
172
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
173
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
174
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
83
175
|
export function AppsRegistryProvider({ children }: AppsRegistryProviderProps) {
|
|
84
176
|
const { user } = useAuth()
|
|
85
177
|
const [apps, setApps] = useState<AppRecord[]>([])
|
|
86
178
|
const [loading, setLoading] = useState(true)
|
|
87
179
|
const [error, setError] = useState<string | null>(null)
|
|
88
180
|
const abortRef = useRef<AbortController | null>(null)
|
|
89
|
-
// Track which user the current `apps` + `loading` state belongs to.
|
|
90
|
-
// When user changes, we know to treat state as stale until the new fetch lands.
|
|
91
181
|
const loadedForUserRef = useRef<string | null>(null)
|
|
92
182
|
|
|
93
183
|
const fetchApps = useCallback(async (signal?: AbortSignal) => {
|
|
@@ -111,7 +201,6 @@ export function AppsRegistryProvider({ children }: AppsRegistryProviderProps) {
|
|
|
111
201
|
const data = await response.json()
|
|
112
202
|
if (data.error) throw new Error(data.error)
|
|
113
203
|
|
|
114
|
-
// Backend already filters by role — no client-side role check needed
|
|
115
204
|
const allApps: AppRecord[] = data.data || data || []
|
|
116
205
|
setApps(allApps)
|
|
117
206
|
loadedForUserRef.current = user.id
|
|
@@ -124,11 +213,8 @@ export function AppsRegistryProvider({ children }: AppsRegistryProviderProps) {
|
|
|
124
213
|
}
|
|
125
214
|
}, [user])
|
|
126
215
|
|
|
127
|
-
// Fetch when user identity or roles change.
|
|
128
|
-
// Abort any in-flight request before starting a new one.
|
|
129
216
|
const rolesKey = user?.roles?.join(',') || ''
|
|
130
217
|
useEffect(() => {
|
|
131
|
-
// Cancel previous fetch
|
|
132
218
|
abortRef.current?.abort()
|
|
133
219
|
const controller = new AbortController()
|
|
134
220
|
abortRef.current = controller
|
|
@@ -138,8 +224,6 @@ export function AppsRegistryProvider({ children }: AppsRegistryProviderProps) {
|
|
|
138
224
|
return () => controller.abort()
|
|
139
225
|
}, [user?.id, user?.account_id, rolesKey, fetchApps])
|
|
140
226
|
|
|
141
|
-
// Derive effective loading: if user changed but we haven't fetched for them
|
|
142
|
-
// yet (effect hasn't fired), treat as loading to prevent 404 flash.
|
|
143
227
|
const effectiveLoading = loading || (!!user && loadedForUserRef.current !== user.id)
|
|
144
228
|
|
|
145
229
|
const environment = (import.meta.env.VITE_ENVIRONMENT as string) || 'prod'
|
|
@@ -148,7 +232,6 @@ export function AppsRegistryProvider({ children }: AppsRegistryProviderProps) {
|
|
|
148
232
|
const appMatchesDomain = (app: AppRecord): boolean => {
|
|
149
233
|
const domain = environment === 'preview' ? app.preview_domain : app.prod_domain
|
|
150
234
|
if (!domain) return true
|
|
151
|
-
// Accept both "hostname.com" and "https://hostname.com" formats
|
|
152
235
|
const hostname = domain.includes('://') ? new URL(domain).hostname : domain.split(':')[0]
|
|
153
236
|
return currentHost === hostname
|
|
154
237
|
}
|
|
@@ -170,3 +253,4 @@ export function AppsRegistryProvider({ children }: AppsRegistryProviderProps) {
|
|
|
170
253
|
</AppsRegistryContext.Provider>
|
|
171
254
|
)
|
|
172
255
|
}
|
|
256
|
+
// CIL[END chunk_id="AppContext_appsregistryprovider_1783749485"]
|