spine-framework 0.3.145 → 0.4.1
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 +76 -0
- package/.framework/.spine-manifest.json +19 -0
- package/.framework/cli/commands/agents.ts +61 -33
- package/.framework/cli/commands/auth.ts +60 -28
- package/.framework/cli/commands/create-app.ts +212 -80
- package/.framework/cli/commands/dev.ts +184 -68
- package/.framework/cli/commands/doctor.ts +324 -152
- package/.framework/cli/commands/generate.ts +119 -68
- package/.framework/cli/commands/init.ts +141 -242
- package/.framework/cli/commands/install-app.ts +1336 -314
- package/.framework/cli/commands/items.ts +31 -29
- package/.framework/cli/commands/migrate.ts +299 -156
- package/.framework/cli/commands/migrations.ts +62 -30
- package/.framework/cli/commands/pipelines.ts +31 -29
- package/.framework/cli/commands/status.ts +105 -45
- package/.framework/cli/commands/system.ts +47 -42
- package/.framework/cli/commands/test.ts +161 -102
- package/.framework/cli/commands/upgrade.ts +260 -0
- package/.framework/cli/commands/validate-app.ts +517 -161
- package/.framework/cli/context.ts +117 -85
- package/.framework/cli/env-loader.ts +74 -43
- package/.framework/cli/index.ts +70 -46
- package/.framework/cli/lib/project-files.ts +404 -0
- package/.framework/docs/guides/testing-guide.md +1 -1
- package/.framework/docs/runtime-types.md +72 -72
- package/.framework/functions/_shared/access.ts +84 -0
- package/.framework/functions/_shared/agent-runner.ts +5067 -1026
- package/.framework/functions/_shared/app-manifest.ts +214 -94
- package/.framework/functions/_shared/ast.ts +214 -0
- package/.framework/functions/_shared/audit.ts +91 -55
- package/.framework/functions/_shared/cil.ts +368 -127
- package/.framework/functions/_shared/db.ts +337 -68
- package/.framework/functions/_shared/funnel.ts +228 -0
- package/.framework/functions/_shared/geo.ts +105 -0
- package/.framework/functions/_shared/hash-api-key.ts +94 -17
- package/.framework/functions/_shared/index.ts +22 -224
- package/.framework/functions/_shared/kb.ts +832 -58
- package/.framework/functions/_shared/llm.ts +118 -18
- package/.framework/functions/_shared/logging.ts +317 -19
- package/.framework/functions/_shared/middleware.ts +701 -131
- package/.framework/functions/_shared/notify.ts +70 -0
- package/.framework/functions/_shared/outcomes.ts +34 -19
- package/.framework/functions/_shared/permissions.ts +501 -315
- package/.framework/functions/_shared/pipeline-runner.ts +704 -155
- package/.framework/functions/_shared/principal.ts +436 -263
- package/.framework/functions/_shared/rate-limit.ts +233 -0
- package/.framework/functions/_shared/resolve-credentials.ts +86 -19
- package/.framework/functions/_shared/resolve-ids.ts +203 -139
- package/.framework/functions/_shared/retry-deliveries.ts +51 -16
- package/.framework/functions/_shared/schema-utils.ts +602 -521
- package/.framework/functions/_shared/security.ts +345 -0
- package/.framework/functions/_shared/testing.ts +197 -172
- package/.framework/functions/_shared/tracing.ts +351 -21
- package/.framework/functions/_shared/trigger-engine.ts +425 -136
- package/.framework/functions/_shared/webhook-registration.ts +71 -70
- package/.framework/functions/_shared/webhook-registry.ts +126 -83
- package/.framework/functions/account-nodes.ts +30 -30
- package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
- package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
- package/.framework/functions/adapters/openai-outbound.ts +15 -16
- package/.framework/functions/admin-data.ts +596 -173
- package/.framework/functions/admin-funnel.ts +64 -60
- package/.framework/functions/admin-install-funnel.ts +84 -66
- package/.framework/functions/admin-signals.ts +69 -51
- package/.framework/functions/ai-agents.ts +431 -106
- package/.framework/functions/ai-interactions.ts +186 -112
- package/.framework/functions/api-keys.ts +107 -107
- package/.framework/functions/apps.ts +154 -136
- package/.framework/functions/auth.ts +83 -65
- package/.framework/functions/cil-agent-ingest.ts +189 -232
- package/.framework/functions/cil-agent.ts +433 -177
- package/.framework/functions/cil-callmap.ts +642 -430
- package/.framework/functions/cil-config.ts +139 -135
- package/.framework/functions/cil-context.ts +214 -127
- package/.framework/functions/cil-doc.ts +587 -458
- package/.framework/functions/cil-embeddings.ts +453 -364
- package/.framework/functions/cil-graph.ts +427 -142
- package/.framework/functions/cil-ingest.ts +1418 -1154
- package/.framework/functions/cil-pipeline.ts +276 -21
- package/.framework/functions/cil-project.ts +659 -132
- package/.framework/functions/cil-validate.ts +198 -164
- package/.framework/functions/debug-auth.ts +57 -55
- package/.framework/functions/deliveries.ts +80 -21
- package/.framework/functions/embeddings.ts +1023 -318
- package/.framework/functions/eval-harness.ts +146 -108
- package/.framework/functions/integration-outbound.ts +205 -75
- package/.framework/functions/integration-routes.ts +128 -23
- package/.framework/functions/integrations.ts +125 -100
- package/.framework/functions/invites.ts +1095 -460
- package/.framework/functions/item-progress.ts +158 -102
- package/.framework/functions/kb.ts +34 -10
- package/.framework/functions/logs.ts +133 -133
- package/.framework/functions/observability.ts +152 -122
- package/.framework/functions/pipeline-executions.ts +147 -132
- package/.framework/functions/pipelines.ts +134 -119
- package/.framework/functions/prompt-configs.ts +96 -80
- package/.framework/functions/roles.ts +112 -82
- package/.framework/functions/security.ts +450 -0
- package/.framework/functions/system-cron.ts +117 -80
- package/.framework/functions/system.ts +158 -98
- package/.framework/functions/tests.ts +29 -29
- package/.framework/functions/timers.ts +94 -95
- package/.framework/functions/trigger-scheduler.ts +10 -0
- package/.framework/functions/triggers.ts +179 -149
- package/.framework/functions/types.ts +137 -125
- package/.framework/mcp/index.ts +133 -0
- package/.framework/mcp/load-env.ts +60 -0
- package/.framework/mcp/shared/app-manifest.ts +275 -0
- package/.framework/mcp/shared/db.ts +477 -0
- package/.framework/mcp/shared/kb.ts +118 -0
- package/.framework/mcp/tools/architect.ts +431 -0
- package/.framework/mcp/tools/cil/context.ts +345 -0
- package/.framework/mcp/tools/cil/graph.ts +242 -0
- package/.framework/mcp/tools/cil/ingest.ts +1217 -0
- package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
- package/.framework/mcp/tools/cil/pipeline.ts +767 -0
- package/.framework/mcp/tools/cil/project.ts +791 -0
- package/.framework/mcp/tools/cil/retrieval.ts +336 -0
- package/.framework/mcp/tools/cil/search-core.ts +454 -0
- package/.framework/mcp/tools/cil/search.ts +97 -0
- package/.framework/mcp/tools/cil/suggest.ts +186 -0
- package/.framework/mcp/tools/cil/validate.ts +1369 -0
- package/.framework/mcp/tools/kb/delete.ts +139 -0
- package/.framework/mcp/tools/kb/index.ts +52 -0
- package/.framework/mcp/tools/kb/ingest.ts +84 -0
- package/.framework/mcp/tools/kb/list-types.ts +102 -0
- package/.framework/mcp/tools/kb/publish.ts +100 -0
- package/.framework/mcp/tools/kb/reindex.ts +86 -0
- package/.framework/mcp/tools/kb/revoke.ts +85 -0
- package/.framework/mcp/tools/kb/search.ts +101 -0
- package/.framework/mcp/tools/kb/upsert.ts +125 -0
- package/.framework/mcp/tools/observability.ts +510 -0
- package/.framework/migrations/001_core_schema.sql +15 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
- package/.framework/migrations/003_core_system_data.sql +16 -1
- package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
- package/.framework/migrations/005_core_observability.sql +17 -1
- package/.framework/migrations/006_security_hardening_rls.sql +15 -0
- package/.framework/migrations/007_kb_article_list.sql +17 -1
- package/.framework/migrations/008_items_target.sql +15 -0
- package/.framework/migrations/009_roles_slug_unique.sql +15 -0
- package/.framework/migrations/010_auth_user_trigger.sql +15 -0
- package/.framework/migrations/011_spine_system_account.sql +16 -0
- package/.framework/migrations/012_service_role_grants.sql +16 -0
- package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
- package/.framework/migrations/014_apps_required_roles.sql +16 -0
- package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
- package/.framework/migrations/016_cil_types.sql +281 -0
- package/.framework/migrations/017_cil_stable_ids.sql +37 -0
- package/.framework/migrations/018_runtime_tables.sql +129 -0
- package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
- package/.framework/migrations/020_schema_reconciliation.sql +67 -0
- package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
- package/.framework/migrations/032_cil_status_migration.sql +73 -0
- package/.framework/migrations/033_cil_versioning.sql +73 -0
- package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
- package/.framework/migrations/035_rate_limits.sql +55 -0
- package/.framework/migrations/036_demo_record_flags.sql +72 -0
- package/.framework/migrations/037_kb_types_canonical.sql +244 -0
- package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
- package/.framework/migrations/042_registration_hierarchy.sql +309 -0
- package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
- package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
- package/.framework/migrations/045_security_critical_rls.sql +139 -0
- package/.framework/migrations/046_security_missing_rls.sql +79 -0
- package/.framework/migrations/047_people_updated_by.sql +27 -0
- package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
- package/.framework/migrations/049_security_blocklist.sql +148 -0
- package/.framework/migrations/050_notifications.sql +49 -0
- package/.framework/migrations/051_message_agent_fields.sql +74 -0
- package/.framework/migrations/052_registration_security.sql +421 -0
- package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
- package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
- package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
- package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
- package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
- package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
- package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
- package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
- package/.framework/migrations/061_fk_dedup.sql +32 -0
- package/.framework/public/spine-logo.svg +10 -3
- package/.framework/scripts/app-install-cli.ts +190 -93
- package/.framework/scripts/assemble-frontend.sh +127 -44
- package/.framework/scripts/assemble-functions.sh +128 -30
- package/.framework/scripts/boundary-check.sh +6 -2
- package/.framework/scripts/build-manifest.sh +24 -68
- package/.framework/scripts/check-core-integrity.sh +15 -76
- package/.framework/scripts/checksum-manifest.mts +343 -0
- package/.framework/scripts/cil-migrate-markers.ts +403 -0
- package/.framework/scripts/fix-cil-markers.mjs +176 -0
- package/.framework/scripts/verify-integrity.sh +21 -57
- package/.framework/scripts/verify-manifest.mts +305 -0
- package/.framework/seeds/types/funnel_signal_use.json +74 -21
- package/.framework/seeds/types/spine_instance.json +73 -21
- package/.framework/src/App.tsx +118 -72
- package/.framework/src/apps/admin/index.tsx +855 -58
- package/.framework/src/components/AppWrapper.tsx +43 -45
- package/.framework/src/components/CustomAppLoader.tsx +160 -116
- package/.framework/src/components/admin/AdminListPage.tsx +46 -44
- package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
- package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
- package/.framework/src/components/admin/PageInstructions.tsx +98 -2
- package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
- package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
- package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
- package/.framework/src/components/app-sidebar.tsx +42 -45
- package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
- package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
- package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
- package/.framework/src/components/kb/KBArticleList.tsx +251 -10
- package/.framework/src/components/layout/AppShell.tsx +51 -45
- package/.framework/src/components/layout/Header.tsx +42 -43
- package/.framework/src/components/layout/Layout.tsx +46 -46
- package/.framework/src/components/layout/Sidebar.tsx +196 -96
- package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
- package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
- package/.framework/src/components/runtime/DataFilters.tsx +49 -74
- package/.framework/src/components/runtime/DataHeader.tsx +53 -32
- package/.framework/src/components/runtime/DataListPage.tsx +51 -155
- package/.framework/src/components/runtime/DataStats.tsx +66 -44
- package/.framework/src/components/runtime/DataTable.tsx +49 -149
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
- package/.framework/src/components/runtime/index.ts +119 -16
- package/.framework/src/components/search-form.tsx +46 -29
- package/.framework/src/components/shared/AgentView.tsx +65 -48
- package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
- package/.framework/src/components/shared/InviteManager.tsx +207 -97
- package/.framework/src/components/shared/MemberList.tsx +97 -0
- package/.framework/src/components/shared/SchemaFields.tsx +107 -86
- package/.framework/src/components/ui/DataTable.tsx +80 -68
- package/.framework/src/components/ui/Form.tsx +157 -146
- package/.framework/src/components/ui/ItemCard.tsx +74 -67
- package/.framework/src/components/ui/ItemListView.tsx +73 -68
- package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
- package/.framework/src/components/ui/Modal.tsx +78 -68
- package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
- package/.framework/src/components/ui/accordion.tsx +85 -86
- package/.framework/src/components/ui/alert-dialog.tsx +197 -184
- package/.framework/src/components/ui/alert.tsx +105 -94
- package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
- package/.framework/src/components/ui/avatar.tsx +122 -107
- package/.framework/src/components/ui/badge.tsx +60 -55
- package/.framework/src/components/ui/breadcrumb.tsx +127 -128
- package/.framework/src/components/ui/button-group.tsx +86 -72
- package/.framework/src/components/ui/button.tsx +71 -50
- package/.framework/src/components/ui/calendar.tsx +72 -57
- package/.framework/src/components/ui/card.tsx +136 -129
- package/.framework/src/components/ui/carousel.tsx +226 -107
- package/.framework/src/components/ui/chart.tsx +252 -147
- package/.framework/src/components/ui/checkbox.tsx +43 -44
- package/.framework/src/components/ui/collapsible.tsx +86 -71
- package/.framework/src/components/ui/combobox.tsx +282 -249
- package/.framework/src/components/ui/command.tsx +158 -146
- package/.framework/src/components/ui/context-menu.tsx +239 -240
- package/.framework/src/components/ui/dialog.tsx +174 -157
- package/.framework/src/components/ui/direction.tsx +72 -56
- package/.framework/src/components/ui/drawer.tsx +168 -169
- package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
- package/.framework/src/components/ui/empty.tsx +131 -120
- package/.framework/src/components/ui/field.tsx +205 -173
- package/.framework/src/components/ui/hover-card.tsx +71 -72
- package/.framework/src/components/ui/input-group.tsx +148 -133
- package/.framework/src/components/ui/input-otp.tsx +99 -86
- package/.framework/src/components/ui/input.tsx +43 -41
- package/.framework/src/components/ui/item.tsx +207 -185
- package/.framework/src/components/ui/kbd.tsx +57 -56
- package/.framework/src/components/ui/label.tsx +45 -41
- package/.framework/src/components/ui/menubar.tsx +268 -236
- package/.framework/src/components/ui/native-select.tsx +85 -86
- package/.framework/src/components/ui/navigation-menu.tsx +166 -156
- package/.framework/src/components/ui/pagination.tsx +131 -141
- package/.framework/src/components/ui/popover.tsx +125 -128
- package/.framework/src/components/ui/progress.tsx +47 -44
- package/.framework/src/components/ui/radio-group.tsx +60 -55
- package/.framework/src/components/ui/resizable.tsx +85 -72
- package/.framework/src/components/ui/scroll-area.tsx +57 -58
- package/.framework/src/components/ui/select.tsx +182 -169
- package/.framework/src/components/ui/separator.tsx +42 -43
- package/.framework/src/components/ui/sheet.tsx +170 -159
- package/.framework/src/components/ui/sidebar.tsx +395 -398
- package/.framework/src/components/ui/skeleton.tsx +42 -43
- package/.framework/src/components/ui/slider.tsx +61 -44
- package/.framework/src/components/ui/sonner.tsx +44 -44
- package/.framework/src/components/ui/spinner.tsx +47 -42
- package/.framework/src/components/ui/switch.tsx +56 -42
- package/.framework/src/components/ui/table-primitives.tsx +272 -132
- package/.framework/src/components/ui/table.tsx +140 -142
- package/.framework/src/components/ui/tabs.tsx +110 -93
- package/.framework/src/components/ui/textarea.tsx +43 -44
- package/.framework/src/components/ui/toggle-group.tsx +87 -71
- package/.framework/src/components/ui/toggle.tsx +56 -56
- package/.framework/src/components/ui/tooltip.tsx +99 -85
- package/.framework/src/contexts/AppContext.tsx +166 -114
- package/.framework/src/contexts/AuthContext.tsx +232 -137
- package/.framework/src/hooks/use-mobile.ts +43 -44
- package/.framework/src/hooks/useApi.ts +185 -172
- package/.framework/src/hooks/useAppPath.ts +31 -29
- package/.framework/src/hooks/useApps.ts +77 -42
- package/.framework/src/hooks/useEntityList.ts +66 -29
- package/.framework/src/hooks/useEntityRecord.ts +76 -32
- package/.framework/src/hooks/useForm.ts +62 -30
- package/.framework/src/hooks/useListSchema.ts +60 -43
- package/.framework/src/hooks/useSchemaRecord.ts +115 -95
- package/.framework/src/lib/api.ts +258 -134
- package/.framework/src/lib/registration.ts +181 -0
- package/.framework/src/lib/supabase.ts +118 -81
- package/.framework/src/lib/utils.ts +266 -266
- package/.framework/src/main.tsx +43 -44
- package/.framework/src/pages/DashboardPage.tsx +44 -43
- package/.framework/src/pages/NoAppPage.tsx +50 -0
- package/.framework/src/pages/NotFoundPage.tsx +32 -29
- package/.framework/src/pages/SetupPage.tsx +34 -33
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
- package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
- package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
- package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
- package/.framework/src/pages/admin/AppsPage.tsx +45 -42
- package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
- package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
- package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
- package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
- package/.framework/src/pages/admin/LogsPage.tsx +87 -137
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
- package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
- package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
- package/.framework/src/pages/admin/RolesPage.tsx +47 -164
- package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
- package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
- package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
- package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
- package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
- package/.framework/src/pages/admin/TimersPage.tsx +44 -42
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
- package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
- package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
- package/.framework/src/pages/admin/TypesPage.tsx +45 -42
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
- package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
- package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
- package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
- package/.framework/src/pages/auth/LoginPage.tsx +38 -32
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
- package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
- package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
- package/.framework/src/types/auth.ts +101 -93
- package/.framework/src/types/types.ts +283 -262
- package/.framework/templates/project.json +87 -0
- package/.framework/templates/spine.config.neutral.json +7 -0
- package/.framework/tests/api/api-surface.test.ts +381 -0
- package/.framework/tests/fixtures/seed.ts +427 -0
- package/.framework/tests/fixtures/teardown.ts +228 -0
- package/.framework/tests/reporter.ts +351 -0
- package/.framework/tests/setup.ts +135 -0
- package/.framework/tests/ui/ui-sweep.ts +278 -0
- package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
- package/.framework/tests/unit/agent-runner.test.ts +2389 -0
- package/.framework/tests/unit/ai-interactions.test.ts +81 -0
- package/.framework/tests/unit/app-manifest.test.ts +359 -0
- package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
- package/.framework/tests/unit/cil-determinism.test.ts +85 -0
- package/.framework/tests/unit/core-isolation.test.ts +153 -0
- package/.framework/tests/unit/funnel-signals.test.ts +135 -0
- package/.framework/tests/unit/install-app.test.ts +1759 -0
- package/.framework/tests/unit/invites-security.test.ts +572 -0
- package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
- package/.framework/tests/unit/kb-search.test.ts +119 -0
- package/.framework/tests/unit/migrate.test.ts +509 -0
- package/.framework/tests/unit/notify.test.ts +136 -0
- package/.framework/tests/unit/permissions.test.ts +269 -0
- package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
- package/.framework/tests/unit/principal-cache.test.ts +138 -0
- package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
- package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
- package/.framework/tests/unit/schema-utils.test.ts +225 -0
- package/.framework/tests/unit/trigger-engine.test.ts +513 -0
- package/.framework/tests/unit/validate-app.test.ts +527 -0
- package/README.md +34 -3
- package/bin/spine-framework.cjs +1 -0
- package/config/tailwind.config.cjs +7 -0
- package/config/tsconfig.functions.json +42 -0
- package/config/tsconfig.json +37 -9
- package/config/vite.config.ts +31 -2
- package/netlify.toml +31 -3
- package/package.json +46 -29
- package/scripts/assemble-frontend.sh +127 -44
- package/scripts/assemble-functions.sh +127 -29
- package/scripts/boundary-check.sh +6 -2
- package/scripts/build-manifest.sh +24 -68
- package/scripts/checksum-manifest.mts +345 -0
- package/scripts/dev-clean.sh +86 -0
- package/scripts/dev-netlify.sh +49 -0
- package/scripts/netlify-dev-wrapper.sh +2 -0
- package/scripts/verify-install.ts +358 -0
- package/scripts/verify-integrity.sh +21 -57
- package/scripts/verify-manifest.mts +305 -0
- package/templates/project/gitignore +45 -0
- package/{config → templates/project}/package-lock.json +22335 -9366
- package/vitest.config.ts +46 -0
- package/.framework/public/spine.config.json +0 -91
- package/config/deno.lock +0 -108
- package/config/tsconfig.node.tsbuildinfo +0 -1
- package/config/tsconfig.tsbuildinfo +0 -1
- package/config/vite.config.d.ts +0 -2
- package/custom/.devin/AGENT.md +0 -357
- package/custom/.devin/skills/install-app/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
- package/custom/.devin/workflows/app-install.yaml +0 -83
- package/custom/README.md +0 -79
- package/docs/README.md +0 -15
- package/scripts/app-install-cli.ts +0 -286
- package/scripts/check-core-integrity.sh +0 -82
- package/scripts/ingest-chunks.cjs +0 -202
- package/scripts/kb-chunk-parser.cjs +0 -312
- package/scripts/kb-chunk-parser.ts +0 -330
- package/scripts/kb-ingest-docs.ts +0 -203
- package/scripts/load-test-app-install.ts +0 -484
- package/scripts/test-login.js +0 -33
- package/spine.config.json +0 -91
|
@@ -10,122 +10,127 @@
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
// CIL[
|
|
15
|
-
// CIL[DOC-
|
|
16
|
-
// CIL[DOC-
|
|
17
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="
|
|
18
|
-
// CIL[DOC-MICRO logic_summary="Imports React, Radix Dialog primitives, styling utilities and icons" notable_decisions="[]"]
|
|
19
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
13
|
+
|
|
14
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:use_client:directive"]
|
|
15
|
+
// CIL[DOC-MACRO purpose="Declarative client-only directive for Next.js."]
|
|
16
|
+
// CIL[DOC-MICRO logic_summary="Emits the 'use client' directive at the top of the module." notable_decisions="[]"]
|
|
17
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="[]" side_effects="none"]
|
|
20
18
|
// CIL[DOC-STABILITY stability="stable"]
|
|
21
|
-
|
|
22
|
-
// CIL[DOC-
|
|
23
|
-
// CIL[DOC-
|
|
24
|
-
// CIL[DOC-VECTOR type="
|
|
25
|
-
// CIL[DOC-VECTOR type="
|
|
19
|
+
"use client"
|
|
20
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
21
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
22
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Declarative client-only directive for Next.js.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
23
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
24
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
25
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
26
26
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
27
27
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
28
|
-
|
|
28
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:use_client:directive"]
|
|
29
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
|
|
30
|
+
// CIL[DOC-MACRO purpose="Dialog UI primitives built on Radix UI for the framework design system."]
|
|
31
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts"]
|
|
32
|
+
// CIL[DOC-AUDIENCE audience="framework"]
|
|
33
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
29
34
|
import * as React from "react"
|
|
30
35
|
import { Dialog as DialogPrimitive } from "radix-ui"
|
|
31
36
|
import { cn } from "@/lib/utils"
|
|
32
37
|
import { Button } from "@/components/ui/button"
|
|
33
38
|
import { XIcon } from "lucide-react"
|
|
34
|
-
// CIL[
|
|
35
|
-
// CIL[
|
|
36
|
-
// CIL[DOC-
|
|
37
|
-
// CIL[DOC-
|
|
38
|
-
// CIL[DOC-
|
|
39
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Dialog root component" errors="none" side_effects="renders DOM"]
|
|
40
|
-
// CIL[DOC-MICRO logic_summary="Wraps Radix Dialog.Root with data-slot attribute" notable_decisions="[]"]
|
|
41
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
42
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
43
|
-
// CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 1. Direct calls: 0. Related files: .framework/src/components/ui/table-primitives.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
44
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 2."]
|
|
45
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
46
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
39
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
40
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Dialog UI primitives built on Radix UI for the framework design system.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
41
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
42
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
43
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
47
44
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
48
45
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
46
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
47
|
+
|
|
48
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:Dialog:component" type="component" identity="Dialog" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
49
|
+
// CIL[DOC-MACRO purpose="Root Dialog component forwarding props to Radix Dialog.Root."]
|
|
50
|
+
// CIL[DOC-MICRO logic_summary="Wraps DialogPrimitive.Root and applies a data-slot marker." notable_decisions="[]"]
|
|
51
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React node" errors="[]" side_effects="none"]
|
|
52
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
49
53
|
function Dialog({
|
|
50
54
|
...props
|
|
51
55
|
}: React.ComponentProps<typeof DialogPrimitive.Root>) {
|
|
52
56
|
return <DialogPrimitive.Root data-slot="dialog" {...props} />
|
|
53
57
|
}
|
|
54
|
-
// CIL[
|
|
55
|
-
// CIL[
|
|
56
|
-
// CIL[DOC-
|
|
57
|
-
// CIL[DOC-
|
|
58
|
-
// CIL[DOC-
|
|
59
|
-
// CIL[DOC-
|
|
60
|
-
// CIL[DOC-MICRO logic_summary="Wraps Radix Dialog.Trigger with data-slot attribute" notable_decisions="[]"]
|
|
61
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
62
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
63
|
-
// CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 1. Direct calls: 0. Related files: .framework/src/components/ui/table-primitives.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
64
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
|
|
65
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
66
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
58
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
59
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
60
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Root Dialog component forwarding props to Radix Dialog.Root.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
61
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
62
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
63
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
67
64
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
68
65
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
66
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:Dialog:component"]
|
|
67
|
+
|
|
68
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:DialogTrigger:component" type="component" identity="DialogTrigger" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
69
|
+
// CIL[DOC-MACRO purpose="Trigger element that opens the dialog."]
|
|
70
|
+
// CIL[DOC-MICRO logic_summary="Wraps DialogPrimitive.Trigger and applies a data-slot marker." notable_decisions="[]"]
|
|
71
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React node" errors="[]" side_effects="none"]
|
|
72
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
69
73
|
function DialogTrigger({
|
|
70
74
|
...props
|
|
71
75
|
}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {
|
|
72
76
|
return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />
|
|
73
77
|
}
|
|
74
|
-
// CIL[
|
|
75
|
-
// CIL[
|
|
76
|
-
// CIL[DOC-
|
|
77
|
-
// CIL[DOC-
|
|
78
|
-
// CIL[DOC-
|
|
79
|
-
// CIL[DOC-
|
|
80
|
-
// CIL[DOC-MICRO logic_summary="Wraps Radix Dialog.Portal with data-slot attribute" 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: ui. Direct callers: 1. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
84
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 2."]
|
|
85
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
86
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
78
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
79
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
80
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Trigger element that opens the dialog.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
81
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
82
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
83
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
87
84
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
88
85
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
86
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:DialogTrigger:component"]
|
|
87
|
+
|
|
88
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:DialogPortal:component" type="component" identity="DialogPortal" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
89
|
+
// CIL[DOC-MACRO purpose="Portal that renders dialog content outside the DOM tree."]
|
|
90
|
+
// CIL[DOC-MICRO logic_summary="Wraps DialogPrimitive.Portal and applies a data-slot marker." notable_decisions="[]"]
|
|
91
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React portal" errors="[]" side_effects="none"]
|
|
92
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
89
93
|
function DialogPortal({
|
|
90
94
|
...props
|
|
91
95
|
}: React.ComponentProps<typeof DialogPrimitive.Portal>) {
|
|
92
96
|
return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />
|
|
93
97
|
}
|
|
94
|
-
// CIL[
|
|
95
|
-
// CIL[
|
|
96
|
-
// CIL[DOC-
|
|
97
|
-
// CIL[DOC-
|
|
98
|
-
// CIL[DOC-
|
|
99
|
-
// CIL[DOC-
|
|
100
|
-
// CIL[DOC-MICRO logic_summary="Wraps Radix Dialog.Close with data-slot attribute" notable_decisions="[]"]
|
|
101
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
102
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
103
|
-
// CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/table-primitives.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
104
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
105
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
106
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
98
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
99
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
100
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Portal that renders dialog content outside the DOM tree.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
101
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
102
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
103
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
107
104
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
108
105
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
106
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:DialogPortal:component"]
|
|
107
|
+
|
|
108
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:DialogClose:component" type="component" identity="DialogClose" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
109
|
+
// CIL[DOC-MACRO purpose="Close control for the dialog."]
|
|
110
|
+
// CIL[DOC-MICRO logic_summary="Wraps DialogPrimitive.Close and applies a data-slot marker." notable_decisions="[]"]
|
|
111
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React node" errors="[]" side_effects="none"]
|
|
112
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
109
113
|
function DialogClose({
|
|
110
114
|
...props
|
|
111
115
|
}: React.ComponentProps<typeof DialogPrimitive.Close>) {
|
|
112
116
|
return <DialogPrimitive.Close data-slot="dialog-close" {...props} />
|
|
113
117
|
}
|
|
114
|
-
// CIL[
|
|
115
|
-
// CIL[
|
|
116
|
-
// CIL[DOC-
|
|
117
|
-
// CIL[DOC-
|
|
118
|
-
// CIL[DOC-
|
|
119
|
-
// CIL[DOC-
|
|
120
|
-
// CIL[DOC-MICRO logic_summary="Creates semi-transparent backdrop with blur and animations" notable_decisions="[]"]
|
|
121
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
122
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
123
|
-
// CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
124
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
125
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
126
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
118
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
119
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
120
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Close control for the dialog.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
121
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
122
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
123
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
127
124
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
128
125
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
126
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:DialogClose:component"]
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:DialogOverlay:component" type="component" identity="DialogOverlay" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
130
|
+
// CIL[DOC-MACRO purpose="Backdrop overlay behind the dialog content."]
|
|
131
|
+
// CIL[DOC-MICRO logic_summary="ForwardRef component rendering DialogPrimitive.Overlay with styling and animation classes." notable_decisions="[]"]
|
|
132
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React node" errors="[]" side_effects="none"]
|
|
133
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
129
134
|
const DialogOverlay = React.forwardRef<
|
|
130
135
|
React.ElementRef<typeof DialogPrimitive.Overlay>,
|
|
131
136
|
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>
|
|
@@ -139,30 +144,33 @@ const DialogOverlay = React.forwardRef<
|
|
|
139
144
|
className
|
|
140
145
|
)}
|
|
141
146
|
{...props}
|
|
147
|
+
|
|
142
148
|
/>
|
|
143
149
|
)
|
|
144
150
|
})
|
|
145
151
|
DialogOverlay.displayName = "DialogOverlay"
|
|
146
|
-
// CIL[
|
|
147
|
-
// CIL[
|
|
148
|
-
// CIL[DOC-
|
|
149
|
-
// CIL[DOC-
|
|
150
|
-
// CIL[DOC-
|
|
151
|
-
// CIL[DOC-
|
|
152
|
-
// CIL[DOC-MICRO logic_summary="Creates modal dialog with overlay, animations and optional close button" notable_decisions="[]"]
|
|
153
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
154
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
155
|
-
// CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
156
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
157
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
158
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
152
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
153
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
154
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Backdrop overlay behind the dialog content.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
155
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
156
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
157
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
159
158
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
160
159
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
160
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:DialogOverlay:component"]
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:DialogContent:component" type="component" identity="DialogContent" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
164
|
+
// CIL[DOC-MACRO purpose="Main dialog content panel with optional close button."]
|
|
165
|
+
// CIL[DOC-MICRO logic_summary="ForwardRef component composing Portal, Overlay, and DialogPrimitive.Content with children and an optional X icon button." notable_decisions="[]"]
|
|
166
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React node" errors="[]" side_effects="none"]
|
|
167
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
161
168
|
const DialogContent = React.forwardRef<
|
|
162
169
|
React.ElementRef<typeof DialogPrimitive.Content>,
|
|
163
170
|
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {
|
|
164
171
|
showCloseButton?: boolean
|
|
165
172
|
}
|
|
173
|
+
|
|
166
174
|
>(({ className, children, showCloseButton = true, ...props }, ref) => {
|
|
167
175
|
return (
|
|
168
176
|
<DialogPortal>
|
|
@@ -175,6 +183,7 @@ const DialogContent = React.forwardRef<
|
|
|
175
183
|
className
|
|
176
184
|
)}
|
|
177
185
|
{...props}
|
|
186
|
+
|
|
178
187
|
>
|
|
179
188
|
{children}
|
|
180
189
|
{showCloseButton && (
|
|
@@ -195,21 +204,21 @@ const DialogContent = React.forwardRef<
|
|
|
195
204
|
)
|
|
196
205
|
})
|
|
197
206
|
DialogContent.displayName = "DialogContent"
|
|
198
|
-
// CIL[
|
|
199
|
-
// CIL[
|
|
200
|
-
// CIL[DOC-
|
|
201
|
-
// CIL[DOC-
|
|
202
|
-
// CIL[DOC-
|
|
203
|
-
// CIL[DOC-
|
|
204
|
-
// CIL[DOC-MICRO logic_summary="Creates flex column container with gap spacing for header" notable_decisions="[]"]
|
|
205
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
206
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
207
|
-
// CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
208
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
209
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
210
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
207
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
208
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
209
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Main dialog content panel with optional close button.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
210
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
211
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
212
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
211
213
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
212
214
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
215
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:DialogContent:component"]
|
|
216
|
+
|
|
217
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:DialogHeader:component" type="component" identity="DialogHeader" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
218
|
+
// CIL[DOC-MACRO purpose="Header area for dialog content."]
|
|
219
|
+
// CIL[DOC-MICRO logic_summary="Renders a flex column div with the dialog-header data slot." notable_decisions="[]"]
|
|
220
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React node" errors="[]" side_effects="none"]
|
|
221
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
213
222
|
function DialogHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
214
223
|
return (
|
|
215
224
|
<div
|
|
@@ -219,21 +228,22 @@ function DialogHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
219
228
|
/>
|
|
220
229
|
)
|
|
221
230
|
}
|
|
222
|
-
|
|
223
|
-
// CIL[
|
|
224
|
-
// CIL[DOC-
|
|
225
|
-
// CIL[DOC-
|
|
226
|
-
// CIL[DOC-
|
|
227
|
-
// CIL[DOC-
|
|
228
|
-
// CIL[DOC-
|
|
229
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
230
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
231
|
-
// CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
232
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
233
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
234
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
231
|
+
|
|
232
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
233
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
234
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Header area for dialog content.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
235
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
236
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
237
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
235
238
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
236
239
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
240
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:DialogHeader:component"]
|
|
241
|
+
|
|
242
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:DialogFooter:component" type="component" identity="DialogFooter" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
243
|
+
// CIL[DOC-MACRO purpose="Footer area for dialog actions."]
|
|
244
|
+
// CIL[DOC-MICRO logic_summary="Renders a responsive action bar with optional close button." notable_decisions="[]"]
|
|
245
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React node" errors="[]" side_effects="none"]
|
|
246
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
237
247
|
function DialogFooter({
|
|
238
248
|
className,
|
|
239
249
|
showCloseButton = false,
|
|
@@ -260,21 +270,21 @@ function DialogFooter({
|
|
|
260
270
|
</div>
|
|
261
271
|
)
|
|
262
272
|
}
|
|
263
|
-
// CIL[
|
|
264
|
-
// CIL[
|
|
265
|
-
// CIL[DOC-
|
|
266
|
-
// CIL[DOC-
|
|
267
|
-
// CIL[DOC-
|
|
268
|
-
// CIL[DOC-
|
|
269
|
-
// CIL[DOC-MICRO logic_summary="Creates heading-styled title with font and spacing" notable_decisions="[]"]
|
|
270
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
271
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
272
|
-
// CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
273
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
274
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
275
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
273
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
274
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
275
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Footer area for dialog actions.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
276
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
277
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
278
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
276
279
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
277
280
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
281
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:DialogFooter:component"]
|
|
282
|
+
|
|
283
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:DialogTitle:component" type="component" identity="DialogTitle" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
284
|
+
// CIL[DOC-MACRO purpose="Accessible title for the dialog."]
|
|
285
|
+
// CIL[DOC-MICRO logic_summary="Wraps DialogPrimitive.Title with heading typography and data-slot marker." notable_decisions="[]"]
|
|
286
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React node" errors="[]" side_effects="none"]
|
|
287
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
278
288
|
function DialogTitle({
|
|
279
289
|
className,
|
|
280
290
|
...props
|
|
@@ -287,21 +297,21 @@ function DialogTitle({
|
|
|
287
297
|
/>
|
|
288
298
|
)
|
|
289
299
|
}
|
|
290
|
-
// CIL[
|
|
291
|
-
// CIL[
|
|
292
|
-
// CIL[DOC-
|
|
293
|
-
// CIL[DOC-
|
|
294
|
-
// CIL[DOC-
|
|
295
|
-
// CIL[DOC-
|
|
296
|
-
// CIL[DOC-MICRO logic_summary="Creates muted text styling with link support for descriptions" notable_decisions="[]"]
|
|
297
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
298
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
299
|
-
// CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
300
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
301
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
302
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
300
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
301
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
302
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Accessible title for the dialog.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
303
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
304
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
305
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
303
306
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
304
307
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
308
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:DialogTitle:component"]
|
|
309
|
+
|
|
310
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:DialogDescription:component" type="component" identity="DialogDescription" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
311
|
+
// CIL[DOC-MACRO purpose="Description text for the dialog."]
|
|
312
|
+
// CIL[DOC-MICRO logic_summary="Wraps DialogPrimitive.Description with muted styling and link hover behavior." notable_decisions="[]"]
|
|
313
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="React node" errors="[]" side_effects="none"]
|
|
314
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
305
315
|
function DialogDescription({
|
|
306
316
|
className,
|
|
307
317
|
...props
|
|
@@ -317,21 +327,20 @@ function DialogDescription({
|
|
|
317
327
|
/>
|
|
318
328
|
)
|
|
319
329
|
}
|
|
320
|
-
// CIL[
|
|
321
|
-
// CIL[
|
|
322
|
-
// CIL[DOC-
|
|
323
|
-
// CIL[DOC-
|
|
324
|
-
// CIL[DOC-
|
|
325
|
-
// CIL[DOC-
|
|
326
|
-
// CIL[DOC-MICRO logic_summary="Exports all dialog components for external usage" notable_decisions="[]"]
|
|
327
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
328
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
329
|
-
// CIL[DOC-VECTOR type="context" content="Layer: ui. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
330
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
331
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
332
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
330
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
331
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
332
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Description text for the dialog.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
333
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
334
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
335
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
333
336
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
334
337
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
338
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:DialogDescription:component"]
|
|
339
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/dialog.tsx:module_footer:module_footer" type="module_footer" identity="module_footer" parent="~/.framework/src/components/ui/dialog.tsx:module_header:module_header"]
|
|
340
|
+
// CIL[DOC-MACRO purpose="Named exports for all dialog primitives."]
|
|
341
|
+
// CIL[DOC-MICRO logic_summary="Re-exports the composed dialog components for consumers." notable_decisions="[]"]
|
|
342
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="[]" side_effects="none"]
|
|
343
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
335
344
|
export {
|
|
336
345
|
Dialog,
|
|
337
346
|
DialogClose,
|
|
@@ -344,4 +353,12 @@ export {
|
|
|
344
353
|
DialogTitle,
|
|
345
354
|
DialogTrigger,
|
|
346
355
|
}
|
|
347
|
-
// CIL[
|
|
356
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
357
|
+
// CIL[DOC-CONTEXT module="dialog" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/dialog.tsx,.framework/src/lib/utils.ts"]
|
|
358
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Named exports for all dialog primitives.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/components/ui/button.tsx"]
|
|
359
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
360
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
361
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
362
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
363
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
364
|
+
// CIL[END stable_id="~/.framework/src/components/ui/dialog.tsx:module_footer:module_footer"]
|