spine-framework 0.3.144 → 0.4.0
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 +5051 -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 +20 -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
|
@@ -1,27 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
// CIL[
|
|
8
|
-
// CIL[DOC-MACRO purpose="Import dependencies and define schema field component interfaces"]
|
|
9
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Manage React imports and field component prop types"]
|
|
10
|
-
// CIL[DOC-CONTEXT module="schema-fields" layer="frontend-component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
11
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Imported modules and interfaces" errors="none" side_effects="none"]
|
|
12
|
-
// CIL[DOC-MICRO logic_summary="Imports React, field types, and component, defines SchemaFieldsProps interface" notable_decisions="[]"]
|
|
13
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/shared/SchemaFields.tsx:module_header:module_header" type="module_header" identity="module_header" parent=""]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Provide the module-level imports for the SchemaFields shared component"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Import React, the FieldDefinition type, and the FieldRenderer helper"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="components/shared" layer="presentation" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/types/types.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Imports React, the FieldDefinition type from types, and the FieldRenderer helper for rendering schema fields" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
14
8
|
// CIL[DOC-STABILITY stability="stable"]
|
|
15
|
-
// CIL[DOC-AUDIENCE audience="
|
|
16
|
-
|
|
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"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="developers"]
|
|
10
|
+
|
|
22
11
|
import React from 'react'
|
|
23
12
|
import { FieldDefinition } from '../../types/types'
|
|
24
13
|
import { FieldRenderer } from './FieldRenderer'
|
|
14
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Provide the module-level imports for the SchemaFields shared component'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx"]
|
|
15
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
16
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
17
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
18
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
19
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
20
|
+
// CIL[END stable_id="~/.framework/src/components/shared/SchemaFields.tsx:module_header:module_header"]
|
|
21
|
+
|
|
22
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/shared/SchemaFields.tsx:schemafieldsprops:interface" type="interface" identity="SchemaFieldsProps" parent="module_header"]
|
|
23
|
+
// CIL[DOC-MACRO purpose="Define the props contract for the SchemaFields component"]
|
|
24
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare the typed shape of props accepted by the SchemaFields function"]
|
|
25
|
+
// CIL[DOC-CONTEXT module="components/shared" layer="presentation" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/shared/SchemaFields.tsx,.framework/src/types/types.ts"]
|
|
26
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="SchemaFieldsProps interface" errors="none" side_effects="none"]
|
|
27
|
+
// CIL[DOC-MICRO logic_summary="Defines an interface with fields, data, onChange, readonly, errors, twoColumn and displayTypes props" notable_decisions="[]"]
|
|
28
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
29
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
25
30
|
|
|
26
31
|
interface SchemaFieldsProps {
|
|
27
32
|
fields: FieldDefinition[]
|
|
@@ -32,21 +37,23 @@ interface SchemaFieldsProps {
|
|
|
32
37
|
twoColumn?: boolean
|
|
33
38
|
displayTypes?: Record<string, string>
|
|
34
39
|
}
|
|
35
|
-
// CIL[
|
|
36
|
-
// CIL[
|
|
37
|
-
// CIL[DOC-
|
|
38
|
-
// CIL[DOC-
|
|
39
|
-
// CIL[DOC-CONTEXT module="schema-fields" layer="frontend-component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
40
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Responsive field grid" errors="none" side_effects="Renders UI, calls onChange"]
|
|
41
|
-
// CIL[DOC-MICRO logic_summary="Maps field definitions to SchemaField components, handles system vs JSONB data resolution" notable_decisions="[]"]
|
|
42
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
43
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
44
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
|
|
45
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
46
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
47
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
40
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the props contract for the SchemaFields component'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.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"]
|
|
48
44
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
49
45
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
46
|
+
// CIL[END stable_id="~/.framework/src/components/shared/SchemaFields.tsx:schemafieldsprops:interface"]
|
|
47
|
+
|
|
48
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/shared/SchemaFields.tsx:schemafields:function" type="function" identity="SchemaFields" parent="module_header"]
|
|
49
|
+
// CIL[DOC-MACRO purpose="Render a grid or list of schema fields for a record"]
|
|
50
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Filter valid fields, resolve values, and render per-field SchemaField children"]
|
|
51
|
+
// CIL[DOC-CONTEXT module="components/shared" layer="presentation" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/shared/SchemaFields.tsx,.framework/src/types/types.ts"]
|
|
52
|
+
// CIL[DOC-CONTRACT inputs="fields FieldDefinition[], data Record<string, any>, onChange function, readonly boolean, errors Record<string, string>, twoColumn boolean, displayTypes Record<string, string>" outputs="JSX.Element | null" errors="none" side_effects="none"]
|
|
53
|
+
// CIL[DOC-MICRO logic_summary="Guard for empty fields, render a two-column or single-column container, and map filtered fields to SchemaField with resolved values" notable_decisions="['System fields read from data[name], non-system fields fall back from data.data[name] to data[name]']"]
|
|
54
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
55
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
56
|
+
|
|
50
57
|
export function SchemaFields({
|
|
51
58
|
fields,
|
|
52
59
|
data,
|
|
@@ -81,21 +88,23 @@ export function SchemaFields({
|
|
|
81
88
|
</div>
|
|
82
89
|
)
|
|
83
90
|
}
|
|
84
|
-
// CIL[
|
|
85
|
-
// CIL[
|
|
86
|
-
// CIL[DOC-
|
|
87
|
-
// CIL[DOC-
|
|
88
|
-
// CIL[DOC-CONTEXT module="schema-fields" layer="frontend-component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
89
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Interface definition" errors="none" side_effects="Type definition"]
|
|
90
|
-
// CIL[DOC-MICRO logic_summary="Defines SchemaFieldProps interface with field, value, and callback properties" notable_decisions="[]"]
|
|
91
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
92
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
93
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
94
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
95
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
96
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
91
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render a grid or list of schema fields for a record'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx"]
|
|
92
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
93
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
94
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
97
95
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
98
96
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
97
|
+
// CIL[END stable_id="~/.framework/src/components/shared/SchemaFields.tsx:schemafields:function"]
|
|
98
|
+
|
|
99
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/shared/SchemaFields.tsx:schemafieldprops:interface" type="interface" identity="SchemaFieldProps" parent="module_header"]
|
|
100
|
+
// CIL[DOC-MACRO purpose="Define the props contract for the SchemaField helper"]
|
|
101
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare the typed shape of props accepted by the SchemaField function"]
|
|
102
|
+
// CIL[DOC-CONTEXT module="components/shared" layer="presentation" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/shared/SchemaFields.tsx,.framework/src/types/types.ts"]
|
|
103
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="SchemaFieldProps interface" errors="none" side_effects="none"]
|
|
104
|
+
// CIL[DOC-MICRO logic_summary="Defines an interface with field, value, onChange, readonly, error and displayType props" notable_decisions="[]"]
|
|
105
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
106
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
107
|
+
|
|
99
108
|
interface SchemaFieldProps {
|
|
100
109
|
field: FieldDefinition
|
|
101
110
|
value: any
|
|
@@ -104,21 +113,23 @@ interface SchemaFieldProps {
|
|
|
104
113
|
error?: string
|
|
105
114
|
displayType?: string
|
|
106
115
|
}
|
|
107
|
-
// CIL[
|
|
108
|
-
// CIL[
|
|
109
|
-
// CIL[DOC-
|
|
110
|
-
// CIL[DOC-
|
|
111
|
-
// CIL[DOC-CONTEXT module="schema-fields" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
112
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="FieldRenderer component" errors="none" side_effects="Renders FieldRenderer"]
|
|
113
|
-
// CIL[DOC-MICRO logic_summary="Wraps FieldRenderer with name-binding logic and readonly handling" notable_decisions="[]"]
|
|
114
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
115
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
116
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
117
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
118
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
119
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
116
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the props contract for the SchemaField helper'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx"]
|
|
117
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
118
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
119
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
120
120
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
121
121
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
122
|
+
// CIL[END stable_id="~/.framework/src/components/shared/SchemaFields.tsx:schemafieldprops:interface"]
|
|
123
|
+
|
|
124
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/shared/SchemaFields.tsx:schemafield:function" type="function" identity="SchemaField" parent="module_header"]
|
|
125
|
+
// CIL[DOC-MACRO purpose="Render a single schema field using FieldRenderer"]
|
|
126
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Wrap FieldRenderer with the field definition, resolved value, and conditional change handler"]
|
|
127
|
+
// CIL[DOC-CONTEXT module="components/shared" layer="presentation" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/shared/SchemaFields.tsx,.framework/src/types/types.ts"]
|
|
128
|
+
// CIL[DOC-CONTRACT inputs="field FieldDefinition, value any, onChange function, readonly boolean, error string, displayType string" outputs="FieldRenderer JSX" errors="none" side_effects="none"]
|
|
129
|
+
// CIL[DOC-MICRO logic_summary="Compute an onChange callback for non-readonly fields and delegate rendering to FieldRenderer" notable_decisions="['Only invokes onChange when field.name is defined']"]
|
|
130
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
131
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
132
|
+
|
|
122
133
|
function SchemaField({ field, value, onChange, readonly, error, displayType }: SchemaFieldProps) {
|
|
123
134
|
return (
|
|
124
135
|
<FieldRenderer
|
|
@@ -131,21 +142,23 @@ function SchemaField({ field, value, onChange, readonly, error, displayType }: S
|
|
|
131
142
|
/>
|
|
132
143
|
)
|
|
133
144
|
}
|
|
134
|
-
// CIL[
|
|
135
|
-
// CIL[
|
|
136
|
-
// CIL[DOC-
|
|
137
|
-
// CIL[DOC-
|
|
138
|
-
// CIL[DOC-CONTEXT module="schema-fields" layer="frontend-component" related_files="[]"]
|
|
139
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Formatted display row" errors="none" side_effects="Renders UI"]
|
|
140
|
-
// CIL[DOC-MICRO logic_summary="Formats field value and renders as label-value pair with proper styling" notable_decisions="[]"]
|
|
141
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
142
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
143
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
144
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
145
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
146
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
145
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render a single schema field using FieldRenderer'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx"]
|
|
146
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
147
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
148
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
147
149
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
148
150
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
151
|
+
// CIL[END stable_id="~/.framework/src/components/shared/SchemaFields.tsx:schemafield:function"]
|
|
152
|
+
|
|
153
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/shared/SchemaFields.tsx:schemafielddisplay:function" type="function" identity="SchemaFieldDisplay" parent="module_header"]
|
|
154
|
+
// CIL[DOC-MACRO purpose="Display a read-only field label and formatted value pair"]
|
|
155
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Format the field value and render a definition list item"]
|
|
156
|
+
// CIL[DOC-CONTEXT module="components/shared" layer="presentation" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/shared/SchemaFields.tsx,.framework/src/types/types.ts"]
|
|
157
|
+
// CIL[DOC-CONTRACT inputs="field FieldDefinition, value any" outputs="JSX definition list item" errors="none" side_effects="none"]
|
|
158
|
+
// CIL[DOC-MICRO logic_summary="Compute a display value via formatFieldValue and render a flex row with label and value" notable_decisions="[]"]
|
|
159
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
160
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
161
|
+
|
|
149
162
|
export function SchemaFieldDisplay({
|
|
150
163
|
field,
|
|
151
164
|
value
|
|
@@ -166,21 +179,23 @@ export function SchemaFieldDisplay({
|
|
|
166
179
|
</div>
|
|
167
180
|
)
|
|
168
181
|
}
|
|
169
|
-
// CIL[
|
|
170
|
-
// CIL[
|
|
171
|
-
// CIL[DOC-
|
|
172
|
-
// CIL[DOC-
|
|
173
|
-
// CIL[DOC-CONTEXT module="schema-fields" layer="frontend-component" related_files="[]"]
|
|
174
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Formatted ReactNode" errors="none" side_effects="none"]
|
|
175
|
-
// CIL[DOC-MICRO logic_summary="Switches on data_type to apply appropriate formatting (dates, booleans, URLs, JSON)" notable_decisions="[]"]
|
|
176
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
177
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
178
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
179
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
180
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
181
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
182
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Display a read-only field label and formatted value pair'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx"]
|
|
183
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
184
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
185
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
182
186
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
183
187
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
188
|
+
// CIL[END stable_id="~/.framework/src/components/shared/SchemaFields.tsx:schemafielddisplay:function"]
|
|
189
|
+
|
|
190
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/shared/SchemaFields.tsx:formatfieldvalue:function" type="function" identity="formatFieldValue" parent="module_header"]
|
|
191
|
+
// CIL[DOC-MACRO purpose="Format a field value for read-only display based on its data_type"]
|
|
192
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Convert null, boolean, date, select, multiselect, json, url and other values into a display-friendly React node"]
|
|
193
|
+
// CIL[DOC-CONTEXT module="components/shared" layer="presentation" related_files=".framework/src/components/shared/FieldRenderer.tsx,.framework/src/components/shared/SchemaFields.tsx,.framework/src/types/types.ts"]
|
|
194
|
+
// CIL[DOC-CONTRACT inputs="field FieldDefinition, value any" outputs="React.ReactNode" errors="none" side_effects="none"]
|
|
195
|
+
// CIL[DOC-MICRO logic_summary="Handle missing values then switch on data_type to format booleans, dates, select options, arrays, json, urls and defaults" notable_decisions="['Booleans render as Yes/No, null or empty values render as an em dash, and select options look up labels from field.options']"]
|
|
196
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
197
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
198
|
+
|
|
184
199
|
function formatFieldValue(field: FieldDefinition, value: any): React.ReactNode {
|
|
185
200
|
if (value === null || value === undefined || value === '') {
|
|
186
201
|
return <span className="text-slate-400 italic">—</span>
|
|
@@ -241,4 +256,10 @@ function formatFieldValue(field: FieldDefinition, value: any): React.ReactNode {
|
|
|
241
256
|
return String(value)
|
|
242
257
|
}
|
|
243
258
|
}
|
|
244
|
-
// CIL[
|
|
259
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Format a field value for read-only display based on its data_type'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/shared/FieldRenderer.tsx"]
|
|
260
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
261
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
262
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
263
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
264
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
265
|
+
// CIL[END stable_id="~/.framework/src/components/shared/SchemaFields.tsx:formatfieldvalue:function"]
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/DataTable.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Provides a reusable DataTable UI component with sorting, searching, filtering, and pagination controls"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Export the DataTable component and supporting column/props interfaces for use across the UI layer"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/table.tsx,.framework/src/lib/utils.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="DataTable component and TypeScript interfaces" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Contains default imports, type declarations, and the DataTable component implementation" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="developer|ai"]
|
|
10
|
+
|
|
1
11
|
|
|
2
12
|
|
|
3
13
|
|
|
@@ -9,21 +19,6 @@
|
|
|
9
19
|
|
|
10
20
|
|
|
11
21
|
|
|
12
|
-
// CIL[BEGIN chunk_id="DataTable_moduleheader_1783907801" type="module_header" identity="imports" parent="none"]
|
|
13
|
-
// CIL[DOC-MACRO purpose="Import React and table dependencies"]
|
|
14
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide all external dependencies for data table components"]
|
|
15
|
-
// CIL[DOC-CONTEXT module="DataTable" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
16
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="React, useState, table components, UI components" errors="none" side_effects="none"]
|
|
17
|
-
// CIL[DOC-MICRO logic_summary="Imports React hooks, shadcn table primitives, badge, button, icons" notable_decisions="[]"]
|
|
18
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
19
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
20
|
-
// CIL[DOC-AUDIENCE audience="developer"]
|
|
21
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
|
|
22
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
23
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
24
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
25
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
26
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
27
22
|
import React, { useState } from 'react'
|
|
28
23
|
import {
|
|
29
24
|
Table,
|
|
@@ -37,61 +32,64 @@ import { Badge } from './badge'
|
|
|
37
32
|
import { Button } from './button'
|
|
38
33
|
import { Search, Filter } from 'lucide-react'
|
|
39
34
|
import { cn } from '../../lib/utils'
|
|
40
|
-
// CIL[
|
|
41
|
-
// CIL[
|
|
42
|
-
// CIL[DOC-
|
|
43
|
-
// CIL[DOC-
|
|
44
|
-
// CIL[DOC-CONTEXT module="DataTable" layer="frontend-component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
45
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="TableColumn interface" errors="none" side_effects="none"]
|
|
46
|
-
// CIL[DOC-MICRO logic_summary="Generic column interface with key, title, render function, and sort flag" notable_decisions="[]"]
|
|
47
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
48
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
49
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
50
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
51
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
52
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
35
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Provides a reusable DataTable UI component with sorting, searching, filtering, and pagination controls'; No verified external callers; imports: .framework/src/components/ui/table.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
|
|
36
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
37
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
38
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
53
39
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
54
40
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
41
|
+
// CIL[END stable_id="~/.framework/src/components/ui/DataTable.tsx:module_header:module_header"]
|
|
42
|
+
|
|
43
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/DataTable.tsx:TableColumn:interface" type="interface" identity="TableColumn" parent="none"]
|
|
44
|
+
// CIL[DOC-MACRO purpose="Define the base column configuration contract for a generic DataTable"]
|
|
45
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Describe a single table column with key, title, optional renderer and sort flag"]
|
|
46
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/table.tsx,.framework/src/lib/utils.ts"]
|
|
47
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="TableColumn<T> type" errors="none" side_effects="none"]
|
|
48
|
+
// CIL[DOC-MICRO logic_summary="Base generic interface for a table column" notable_decisions="[]"]
|
|
49
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
50
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
55
51
|
interface TableColumn<T> {
|
|
56
52
|
key: keyof T | string
|
|
57
53
|
title: string
|
|
58
54
|
render?: (row: T) => React.ReactNode
|
|
59
55
|
sortable?: boolean
|
|
60
56
|
}
|
|
61
|
-
// CIL[
|
|
62
|
-
// CIL[
|
|
63
|
-
// CIL[DOC-
|
|
64
|
-
// CIL[DOC-
|
|
65
|
-
// CIL[DOC-CONTEXT module="DataTable" layer="frontend-component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
|
|
66
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="DataTableColumn interface" errors="none" side_effects="none"]
|
|
67
|
-
// CIL[DOC-MICRO logic_summary="Adds filterable flag and filter options array to base column interface" 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: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
|
|
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."]
|
|
57
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the base column configuration contract for a generic DataTable'; No verified external callers; imports: .framework/src/components/ui/table.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
|
|
58
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
59
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
60
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
74
61
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
75
62
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
63
|
+
// CIL[END stable_id="~/.framework/src/components/ui/DataTable.tsx:TableColumn:interface"]
|
|
64
|
+
|
|
65
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/DataTable.tsx:DataTableColumn:interface" type="interface" identity="DataTableColumn" parent="none"]
|
|
66
|
+
// CIL[DOC-MACRO purpose="Extend TableColumn with filter-specific properties for the DataTable"]
|
|
67
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Add filterable flag and filter options to a table column"]
|
|
68
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/table.tsx,.framework/src/lib/utils.ts"]
|
|
69
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="DataTableColumn<T> type" errors="none" side_effects="none"]
|
|
70
|
+
// CIL[DOC-MICRO logic_summary="DataTable column interface extending TableColumn with filtering support" notable_decisions="[]"]
|
|
71
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
72
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
76
73
|
interface DataTableColumn<T> extends TableColumn<T> {
|
|
77
74
|
filterable?: boolean
|
|
78
75
|
filterOptions?: Array<{ value: string; label: string }>
|
|
79
76
|
}
|
|
80
|
-
// CIL[
|
|
81
|
-
// CIL[
|
|
82
|
-
// CIL[DOC-
|
|
83
|
-
// CIL[DOC-
|
|
84
|
-
// CIL[DOC-CONTEXT module="DataTable" layer="frontend-component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
85
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="DataTableProps interface" errors="none" side_effects="none"]
|
|
86
|
-
// CIL[DOC-MICRO logic_summary="Extensive props for data, columns, search, filters, pagination, and callbacks" notable_decisions="[]"]
|
|
87
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
88
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
89
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, \."]
|
|
90
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
91
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
92
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
77
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Extend TableColumn with filter-specific properties for the DataTable'; No verified external callers; imports: .framework/src/components/ui/table.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
|
|
78
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
79
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
80
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
93
81
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
94
82
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
83
|
+
// CIL[END stable_id="~/.framework/src/components/ui/DataTable.tsx:DataTableColumn:interface"]
|
|
84
|
+
|
|
85
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/DataTable.tsx:DataTableProps:interface" type="interface" identity="DataTableProps" parent="none"]
|
|
86
|
+
// CIL[DOC-MACRO purpose="Define the prop contract for the DataTable component"]
|
|
87
|
+
// CIL[DOC-RESPONSIBILITY responsibility="List all configurable props including data, columns, pagination, sort, search, filter, and callbacks"]
|
|
88
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/table.tsx,.framework/src/lib/utils.ts"]
|
|
89
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="DataTableProps<T> type" errors="none" side_effects="none"]
|
|
90
|
+
// CIL[DOC-MICRO logic_summary="Props interface for the DataTable component" notable_decisions="[]"]
|
|
91
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
92
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
95
93
|
interface DataTableProps<T> {
|
|
96
94
|
data: T[]
|
|
97
95
|
columns: DataTableColumn<T>[]
|
|
@@ -116,21 +114,22 @@ interface DataTableProps<T> {
|
|
|
116
114
|
emptyMessage?: string
|
|
117
115
|
className?: string
|
|
118
116
|
}
|
|
119
|
-
// CIL[
|
|
120
|
-
// CIL[
|
|
121
|
-
// CIL[DOC-
|
|
122
|
-
// CIL[DOC-
|
|
123
|
-
// CIL[DOC-CONTEXT module="DataTable" layer="frontend-component" related_files="[]"]
|
|
124
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Table with search/filter controls" errors="none" side_effects="Calls search/filter/sort callbacks"]
|
|
125
|
-
// CIL[DOC-MICRO logic_summary="Manages internal search/filter state, renders UI controls and table body" notable_decisions="[]"]
|
|
126
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
127
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
128
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
129
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
130
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
131
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
117
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the prop contract for the DataTable component'; No verified external callers; imports: .framework/src/components/ui/table.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
|
|
118
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
119
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
120
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
132
121
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
133
122
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
123
|
+
// CIL[END stable_id="~/.framework/src/components/ui/DataTable.tsx:DataTableProps:interface"]
|
|
124
|
+
|
|
125
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/DataTable.tsx:DataTable:component" type="component" identity="DataTable" parent="none"]
|
|
126
|
+
// CIL[DOC-MACRO purpose="Render a searchable, filterable, sortable data table with pagination"]
|
|
127
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Display tabular data, manage search/filter UI state, and call provided handlers"]
|
|
128
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/table.tsx,.framework/src/lib/utils.ts"]
|
|
129
|
+
// CIL[DOC-CONTRACT inputs="data: T[], columns: DataTableColumn<T>[], loading: boolean, searchable: boolean, filterable: boolean, pagination, sort/search/filter callbacks" outputs="Rendered table UI with search, filters, active filter badges and pagination controls" errors="none" side_effects="Calls onSearch, onFilter, onSort, onRowClick callbacks and updates local useState"]
|
|
130
|
+
// CIL[DOC-MICRO logic_summary="Uses React state for search query, filter map and filter visibility; renders optional search input, filter dropdowns, active filter badges, table, and pagination" notable_decisions="[]"]
|
|
131
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
132
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
134
133
|
export function DataTable<T extends Record<string, any>>({
|
|
135
134
|
data,
|
|
136
135
|
columns,
|
|
@@ -272,8 +271,14 @@ export function DataTable<T extends Record<string, any>>({
|
|
|
272
271
|
)}
|
|
273
272
|
|
|
274
273
|
{Object.entries(filters).map(([key, value]) => {
|
|
274
|
+
|
|
275
|
+
|
|
275
276
|
const column = columns.find(col => String(col.key) === key)
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
276
280
|
const option = column?.filterOptions?.find(opt => opt.value === value)
|
|
281
|
+
|
|
277
282
|
|
|
278
283
|
return (
|
|
279
284
|
<Badge key={key} variant="info" className="flex items-center">
|
|
@@ -370,4 +375,11 @@ export function DataTable<T extends Record<string, any>>({
|
|
|
370
375
|
</div>
|
|
371
376
|
)
|
|
372
377
|
}
|
|
373
|
-
// CIL[
|
|
378
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render a searchable, filterable, sortable data table with pagination'; No verified external callers; imports: .framework/src/components/ui/table.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
|
|
379
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
380
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
381
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
382
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
383
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
384
|
+
// CIL[END stable_id="~/.framework/src/components/ui/DataTable.tsx:DataTable:component"]
|
|
385
|
+
|