spine-framework 0.3.145 → 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 +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
|
@@ -9,42 +9,40 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// CIL[
|
|
16
|
-
// CIL[DOC-
|
|
17
|
-
// CIL[DOC-
|
|
18
|
-
// CIL[DOC-
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header" type="module_header" identity="module_header" parent=""]
|
|
16
|
+
// CIL[DOC-MACRO purpose="Import dependencies and set up module for the ItemCard and ItemGrid UI components"]
|
|
17
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare module-level imports for React, types, UI primitives, and utilities used by ItemCard and ItemGrid"]
|
|
18
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
19
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="imported symbols available to component chunks" errors="none" side_effects="none"]
|
|
20
|
+
// CIL[DOC-MICRO logic_summary="Imports React, Item/ItemType, Badge, Button, lucide-react icons, and date/text helpers" notable_decisions="[]"]
|
|
21
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
19
22
|
// CIL[DOC-STABILITY stability="stable"]
|
|
20
|
-
// CIL[DOC-AUDIENCE audience="
|
|
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/pages/admin/TypeDetailPage.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"]
|
|
23
|
+
// CIL[DOC-AUDIENCE audience="frontend maintainers"]
|
|
27
24
|
import React from 'react'
|
|
28
25
|
import { Item, ItemType } from '../../types/types'
|
|
29
26
|
import { Badge } from './badge'
|
|
30
27
|
import { Button } from './button'
|
|
31
28
|
import { Box, FileText, Calendar, User, MoreVertical } from 'lucide-react';
|
|
32
29
|
import { formatDateTime, truncateText } from '../../lib/utils'
|
|
33
|
-
// CIL[
|
|
34
|
-
// CIL[
|
|
35
|
-
// CIL[DOC-
|
|
36
|
-
// CIL[DOC-
|
|
37
|
-
// CIL[DOC-CONTEXT module="ItemCard" layer="frontend-component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
|
|
38
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="ItemCardProps interface" errors="none" side_effects="none"]
|
|
39
|
-
// CIL[DOC-MICRO logic_summary="Props for item data, action callbacks, and display options" notable_decisions="[]"]
|
|
40
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
41
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
42
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
|
|
43
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
44
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
45
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
30
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Import dependencies and set up module for the ItemCard and ItemGrid UI components'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
|
|
31
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
32
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
33
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
46
34
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
47
35
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
36
|
+
// CIL[END stable_id="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header"]
|
|
37
|
+
|
|
38
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemCardProps:interface" type="interface" identity="ItemCardProps" parent="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header"]
|
|
39
|
+
// CIL[DOC-MACRO purpose="Define the accepted props for the ItemCard component"]
|
|
40
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Type the property contract and rendering options for a single item card"]
|
|
41
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
42
|
+
// CIL[DOC-CONTRACT inputs="item, optional callbacks, and display flags" outputs="ItemCardProps TypeScript interface" errors="none" side_effects="none"]
|
|
43
|
+
// CIL[DOC-MICRO logic_summary="Props extend Item with an optional item_type string or object plus optional onEdit/onDelete/onView callbacks and layout flags" notable_decisions="[]"]
|
|
44
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
45
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
48
46
|
interface ItemCardProps {
|
|
49
47
|
item: Item & { item_type?: ItemType | string }
|
|
50
48
|
onEdit?: (item: Item) => void
|
|
@@ -53,21 +51,22 @@ interface ItemCardProps {
|
|
|
53
51
|
showActions?: boolean
|
|
54
52
|
compact?: boolean
|
|
55
53
|
}
|
|
56
|
-
// CIL[
|
|
57
|
-
// CIL[
|
|
58
|
-
// CIL[DOC-
|
|
59
|
-
// CIL[DOC-
|
|
60
|
-
// CIL[DOC-CONTEXT module="ItemCard" layer="frontend-component" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
61
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Item card component" errors="none" side_effects="Calls action callbacks"]
|
|
62
|
-
// CIL[DOC-MICRO logic_summary="Renders different layouts based on compact prop, extracts data from item" notable_decisions="[]"]
|
|
63
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
64
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
65
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
66
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
67
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
68
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
54
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the accepted props for the ItemCard component'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
|
|
55
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
56
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
57
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
69
58
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
70
59
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
60
|
+
// CIL[END stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemCardProps:interface"]
|
|
61
|
+
|
|
62
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemCard:component" type="component" identity="ItemCard" parent="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header"]
|
|
63
|
+
// CIL[DOC-MACRO purpose="Render a single item as a card, with an optional compact layout and action buttons"]
|
|
64
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Display item title, type badge, description, metadata, and action controls"]
|
|
65
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
66
|
+
// CIL[DOC-CONTRACT inputs="ItemCardProps" outputs="React JSX for the item card" errors="none" side_effects="triggers onView/onEdit callbacks when user clicks a button"]
|
|
67
|
+
// CIL[DOC-MICRO logic_summary="Derives primary text, secondary description, type label and badge color, then renders either a compact or full card layout" notable_decisions="[]"]
|
|
68
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
69
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
71
70
|
export function ItemCard({
|
|
72
71
|
item,
|
|
73
72
|
onEdit,
|
|
@@ -238,21 +237,22 @@ export function ItemCard({
|
|
|
238
237
|
</div>
|
|
239
238
|
)
|
|
240
239
|
}
|
|
241
|
-
// CIL[
|
|
242
|
-
// CIL[
|
|
243
|
-
// CIL[DOC-
|
|
244
|
-
// CIL[DOC-
|
|
245
|
-
// CIL[DOC-CONTEXT module="ItemCard" layer="frontend-component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
|
|
246
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="ItemGridProps interface" errors="none" side_effects="none"]
|
|
247
|
-
// CIL[DOC-MICRO logic_summary="Props for items array, loading state, actions, and display options" notable_decisions="[]"]
|
|
248
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
249
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
250
|
-
// 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/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
|
|
251
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
252
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
253
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
240
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render a single item as a card, with an optional compact layout and action buttons'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
|
|
241
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
242
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
243
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
254
244
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
255
245
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
246
|
+
// CIL[END stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemCard:component"]
|
|
247
|
+
|
|
248
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemGridProps:interface" type="interface" identity="ItemGridProps" parent="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header"]
|
|
249
|
+
// CIL[DOC-MACRO purpose="Define the accepted props for the ItemGrid component"]
|
|
250
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Type the property contract for rendering a list of items as a grid"]
|
|
251
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
252
|
+
// CIL[DOC-CONTRACT inputs="item array, optional callbacks, loading flag, and empty message" outputs="ItemGridProps TypeScript interface" errors="none" side_effects="none"]
|
|
253
|
+
// CIL[DOC-MICRO logic_summary="Props describe a list of items with callbacks, loading/empty UI controls, and a compact flag" notable_decisions="[]"]
|
|
254
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
255
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
256
256
|
interface ItemGridProps {
|
|
257
257
|
items: (Item & { item_type: ItemType })[]
|
|
258
258
|
loading?: boolean
|
|
@@ -262,21 +262,22 @@ interface ItemGridProps {
|
|
|
262
262
|
compact?: boolean
|
|
263
263
|
emptyMessage?: string
|
|
264
264
|
}
|
|
265
|
-
// CIL[
|
|
266
|
-
// CIL[
|
|
267
|
-
// CIL[DOC-
|
|
268
|
-
// CIL[DOC-
|
|
269
|
-
// CIL[DOC-CONTEXT module="ItemCard" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
270
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Grid container or loading/empty states" errors="none" side_effects="Delegates to ItemCard actions"]
|
|
271
|
-
// CIL[DOC-MICRO logic_summary="Maps items to ItemCard components, handles loading and empty states" notable_decisions="[]"]
|
|
272
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
273
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
274
|
-
// 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/pages/admin/RolesPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, \."]
|
|
275
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
276
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
277
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
265
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the accepted props for the ItemGrid component'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
|
|
266
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
267
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
268
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
278
269
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
279
270
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
271
|
+
// CIL[END stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemGridProps:interface"]
|
|
272
|
+
|
|
273
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemGrid:component" type="component" identity="ItemGrid" parent="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header"]
|
|
274
|
+
// CIL[DOC-MACRO purpose="Render a responsive grid of ItemCard components with loading and empty states"]
|
|
275
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Map an array of items to ItemCard instances and display loading or empty placeholders"]
|
|
276
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
277
|
+
// CIL[DOC-CONTRACT inputs="ItemGridProps" outputs="React JSX grid, loader, or empty message" errors="none" side_effects="none"]
|
|
278
|
+
// CIL[DOC-MICRO logic_summary="Shows a spinner while loading, an empty message when items are absent, or a responsive grid of ItemCard components" notable_decisions="[]"]
|
|
279
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
280
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
280
281
|
export function ItemGrid({
|
|
281
282
|
items,
|
|
282
283
|
loading = false,
|
|
@@ -321,4 +322,10 @@ export function ItemGrid({
|
|
|
321
322
|
</div>
|
|
322
323
|
)
|
|
323
324
|
}
|
|
324
|
-
// CIL[
|
|
325
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render a responsive grid of ItemCard components with loading and empty states'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
|
|
326
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
327
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
328
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
329
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
330
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
331
|
+
// CIL[END stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemGrid:component"]
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Module imports and exports for the item list view UI components"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provides the component library entry point, declaring dependencies and exporting ItemListView, ItemListPage, and their prop interfaces"]
|
|
4
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="module imports and named exports" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Imports React, type definitions, DataTable, ItemCard, Badge, Button, icons, and date formatting utilities" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="ui developers"]
|
|
10
|
+
|
|
1
11
|
|
|
2
12
|
|
|
3
13
|
|
|
@@ -9,21 +19,6 @@
|
|
|
9
19
|
|
|
10
20
|
|
|
11
21
|
|
|
12
|
-
// CIL[BEGIN chunk_id="ItemListView_moduleheader_1783907801" type="module_header" identity="imports" parent="none"]
|
|
13
|
-
// CIL[DOC-MACRO purpose="Import React and item list dependencies"]
|
|
14
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide all external dependencies for item list view components"]
|
|
15
|
-
// CIL[DOC-CONTEXT module="ItemListView" 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/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
16
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="React, useState, item types, UI components" errors="none" side_effects="none"]
|
|
17
|
-
// CIL[DOC-MICRO logic_summary="Imports React hooks, item types, DataTable, ItemCard, UI components" 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/pages/admin/TypeDetailPage.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 { Item, ItemType } from '../../types/types'
|
|
29
24
|
import { DataTable } from './DataTable'
|
|
@@ -32,21 +27,22 @@ import { Badge } from './badge'
|
|
|
32
27
|
import { Button } from './button'
|
|
33
28
|
import { Squares2X2Icon, List, Plus } from 'lucide-react';
|
|
34
29
|
import { formatDateTime } from '../../lib/utils'
|
|
35
|
-
|
|
36
|
-
// CIL[
|
|
37
|
-
// CIL[DOC-
|
|
38
|
-
// CIL[DOC-
|
|
39
|
-
// CIL[DOC-
|
|
40
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="ItemListViewProps interface" errors="none" side_effects="none"]
|
|
41
|
-
// CIL[DOC-MICRO logic_summary="Props for items array, loading state, actions, and display options" 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/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
|
|
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."]
|
|
30
|
+
|
|
31
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Module imports and exports for the item list view UI components'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx"]
|
|
32
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
33
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
34
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
48
35
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
49
36
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
37
|
+
// CIL[END stable_id="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header"]
|
|
38
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListViewProps:interface" type="interface" identity="ItemListViewProps" parent="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header"]
|
|
39
|
+
// CIL[DOC-MACRO purpose="Props contract for the ItemListView component"]
|
|
40
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Defines the shape of input properties accepted by ItemListView including items, callbacks, and display options"]
|
|
41
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/ItemListView.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
42
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="ItemListViewProps TypeScript interface" errors="none" side_effects="none"]
|
|
43
|
+
// CIL[DOC-MICRO logic_summary="Type-only interface describing props for item list view rendering" notable_decisions="[]"]
|
|
44
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
45
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
50
46
|
interface ItemListViewProps {
|
|
51
47
|
items: (Item & { item_type: ItemType })[]
|
|
52
48
|
loading?: boolean
|
|
@@ -60,21 +56,22 @@ interface ItemListViewProps {
|
|
|
60
56
|
showCreateButton?: boolean
|
|
61
57
|
createButtonText?: string
|
|
62
58
|
}
|
|
63
|
-
// CIL[
|
|
64
|
-
// CIL[
|
|
65
|
-
// CIL[DOC-
|
|
66
|
-
// CIL[DOC-
|
|
67
|
-
// CIL[DOC-CONTEXT module="ItemListView" layer="frontend-component" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
68
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="View mode toggle + ItemGrid or DataTable" errors="none" side_effects="Calls action callbacks"]
|
|
69
|
-
// CIL[DOC-MICRO logic_summary="Manages view mode state, builds table columns, renders appropriate view" notable_decisions="[]"]
|
|
70
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
71
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
72
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
73
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
74
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
75
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
59
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Props contract for the ItemListView component'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx"]
|
|
60
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
61
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
62
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
76
63
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
77
64
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
65
|
+
// CIL[END stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListViewProps:interface"]
|
|
66
|
+
|
|
67
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListView:component" type="component" identity="ItemListView" parent="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header"]
|
|
68
|
+
// CIL[DOC-MACRO purpose="Render an interactive item list with grid/table toggle and actions"]
|
|
69
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Displays items in a grid or data table, computes unique item type filters, formats dates, and wires edit/view/create handlers"]
|
|
70
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/ItemListView.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
71
|
+
// CIL[DOC-CONTRACT inputs="ItemListViewProps: items, loading, onEdit, onDelete, onView, onCreate, searchable, filterable, emptyMessage, showCreateButton, createButtonText" outputs="JSX element with header, view toggle, create button, and conditional grid/table content" errors="none" side_effects="setViewMode updates local React state"]
|
|
72
|
+
// CIL[DOC-MICRO logic_summary="Builds a type map from item_type values for filtering, derives a primary text/textarea display field with a name fallback, renders view mode buttons, and chooses ItemGrid or DataTable" notable_decisions="[]"]
|
|
73
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
74
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
78
75
|
export function ItemListView({
|
|
79
76
|
items,
|
|
80
77
|
loading = false,
|
|
@@ -247,21 +244,22 @@ export function ItemListView({
|
|
|
247
244
|
</div>
|
|
248
245
|
)
|
|
249
246
|
}
|
|
250
|
-
// CIL[
|
|
251
|
-
// CIL[
|
|
252
|
-
// CIL[DOC-
|
|
253
|
-
// CIL[DOC-
|
|
254
|
-
// CIL[DOC-CONTEXT module="ItemListView" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
255
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="ItemListPageProps interface" errors="none" side_effects="none"]
|
|
256
|
-
// CIL[DOC-MICRO logic_summary="Extends ItemListViewProps with page-level title and description" notable_decisions="[]"]
|
|
257
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
258
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
259
|
-
// 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/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
|
|
260
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
261
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
262
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
247
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render an interactive item list with grid/table toggle and actions'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx"]
|
|
248
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
249
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
250
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
263
251
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
264
252
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
253
|
+
// CIL[END stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListView:component"]
|
|
254
|
+
|
|
255
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListPageProps:interface" type="interface" identity="ItemListPageProps" parent="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header"]
|
|
256
|
+
// CIL[DOC-MACRO purpose="Props contract for the ItemListPage page-level wrapper"]
|
|
257
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Defines page wrapper props that extend ItemListViewProps with a title and description"]
|
|
258
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/ItemListView.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
259
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="ItemListPageProps TypeScript interface" errors="none" side_effects="none"]
|
|
260
|
+
// CIL[DOC-MICRO logic_summary="Type-only interface extending ItemListViewProps with title and description fields" notable_decisions="[]"]
|
|
261
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
262
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
265
263
|
interface ItemListPageProps {
|
|
266
264
|
items: (Item & { item_type: ItemType })[]
|
|
267
265
|
loading?: boolean
|
|
@@ -277,21 +275,22 @@ interface ItemListPageProps {
|
|
|
277
275
|
title?: string
|
|
278
276
|
description?: string
|
|
279
277
|
}
|
|
280
|
-
// CIL[
|
|
281
|
-
// CIL[
|
|
282
|
-
// CIL[DOC-
|
|
283
|
-
// CIL[DOC-
|
|
284
|
-
// CIL[DOC-CONTEXT module="ItemListView" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
285
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Page with header + ItemListView" errors="none" side_effects="none"]
|
|
286
|
-
// CIL[DOC-MICRO logic_summary="Renders page header with title/description, wraps ItemListView component" notable_decisions="[]"]
|
|
287
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
288
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
289
|
-
// 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/TypeDetailPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
290
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
291
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
292
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
278
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Props contract for the ItemListPage page-level wrapper'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx"]
|
|
279
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
280
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
281
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
293
282
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
294
283
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
284
|
+
// CIL[END stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListPageProps:interface"]
|
|
285
|
+
|
|
286
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListPage:component" type="component" identity="ItemListPage" parent="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header"]
|
|
287
|
+
// CIL[DOC-MACRO purpose="Page-level wrapper that renders a titled item list page"]
|
|
288
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provides a page header with title and description and delegates the list rendering to ItemListView"]
|
|
289
|
+
// CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/ItemListView.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
|
|
290
|
+
// CIL[DOC-CONTRACT inputs="ItemListPageProps: all ItemListViewProps plus title and description" outputs="JSX page layout containing a header and an ItemListView" errors="none" side_effects="none"]
|
|
291
|
+
// CIL[DOC-MICRO logic_summary="Renders a page header and passes all props through to ItemListView" notable_decisions="[]"]
|
|
292
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
293
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
295
294
|
export function ItemListPage({
|
|
296
295
|
items,
|
|
297
296
|
loading = false,
|
|
@@ -332,4 +331,10 @@ export function ItemListPage({
|
|
|
332
331
|
</div>
|
|
333
332
|
)
|
|
334
333
|
}
|
|
335
|
-
// CIL[
|
|
334
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Page-level wrapper that renders a titled item list page'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx"]
|
|
335
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
336
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
337
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
338
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
339
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
340
|
+
// CIL[END stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListPage:component"]
|
|
@@ -1,62 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// CIL[BEGIN chunk_id="LoadingSpinner_moduleheader_1783907801" type="module_header" identity="imports" parent="none"]
|
|
9
|
-
// CIL[DOC-MACRO purpose="Import React and spinner dependencies"]
|
|
10
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide all external dependencies for loading spinner component"]
|
|
11
|
-
// CIL[DOC-CONTEXT module="LoadingSpinner" 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\",\"\\\"]"]
|
|
12
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="React, Loader2 icon, cn utility" errors="none" side_effects="none"]
|
|
13
|
-
// CIL[DOC-MICRO logic_summary="Imports React, lucide-react Loader2 icon, and utility function" notable_decisions="[]"]
|
|
14
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:module_header:module_header" type="module_header" identity="module_header" parent=""]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Import React, the Loader2 icon, and the cn utility to support the LoadingSpinner UI component."]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide module-level imports for the LoadingSpinner component and its props interface."]
|
|
4
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/lib/utils.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Imports the React, Loader2, and cn dependencies required by the LoadingSpinner component." notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
15
8
|
// CIL[DOC-STABILITY stability="stable"]
|
|
16
|
-
// CIL[DOC-AUDIENCE audience="
|
|
17
|
-
// 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, \."]
|
|
18
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
19
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
20
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
21
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
22
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="internal"]
|
|
23
10
|
import React from 'react'
|
|
24
11
|
import { Loader2 } from 'lucide-react'
|
|
25
12
|
import { cn } from '../../lib/utils'
|
|
26
|
-
// CIL[
|
|
27
|
-
// CIL[
|
|
28
|
-
// CIL[DOC-
|
|
29
|
-
// CIL[DOC-
|
|
30
|
-
// CIL[DOC-CONTEXT module="LoadingSpinner" layer="frontend-component" related_files="[\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
|
|
31
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="LoadingSpinnerProps interface" errors="none" side_effects="none"]
|
|
32
|
-
// CIL[DOC-MICRO logic_summary="Props for optional className and size (sm/md/lg)" notable_decisions="[]"]
|
|
33
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
34
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
35
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
|
|
36
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
37
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
38
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
13
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Import React, the Loader2 icon, and the cn utility to support the LoadingSpinner UI component.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
|
|
14
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
15
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
16
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
39
17
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
40
18
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
19
|
+
// CIL[END stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:module_header:module_header"]
|
|
20
|
+
|
|
21
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:LoadingSpinnerProps:interface" type="interface" identity="LoadingSpinnerProps" parent="~/.framework/src/components/ui/LoadingSpinner.tsx:module_header:module_header"]
|
|
22
|
+
// CIL[DOC-MACRO purpose="Declare the typed props accepted by the LoadingSpinner component."]
|
|
23
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the className and size prop types for LoadingSpinner."]
|
|
24
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/LoadingSpinner.tsx,.framework/src/lib/utils.ts"]
|
|
25
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="LoadingSpinnerProps interface definition" errors="none" side_effects="none"]
|
|
26
|
+
// CIL[DOC-MICRO logic_summary="Declares an interface with an optional className string and an optional size union of sm, md, or lg." notable_decisions="[]"]
|
|
27
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
28
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
41
29
|
interface LoadingSpinnerProps {
|
|
42
30
|
className?: string
|
|
43
31
|
size?: 'sm' | 'md' | 'lg'
|
|
44
32
|
}
|
|
45
|
-
// CIL[
|
|
46
|
-
// CIL[
|
|
47
|
-
// CIL[DOC-
|
|
48
|
-
// CIL[DOC-
|
|
49
|
-
// CIL[DOC-CONTEXT module="LoadingSpinner" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
50
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Animated Loader2 component" errors="none" side_effects="none"]
|
|
51
|
-
// CIL[DOC-MICRO logic_summary="Maps size prop to Tailwind classes, applies animation and custom classes" notable_decisions="[]"]
|
|
52
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
53
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
54
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 1. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
|
|
55
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
|
|
56
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
57
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
33
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Declare the typed props accepted by the LoadingSpinner component.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
|
|
34
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
35
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
36
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
58
37
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
59
38
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
39
|
+
// CIL[END stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:LoadingSpinnerProps:interface"]
|
|
40
|
+
|
|
41
|
+
// CIL[BEGIN stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:loadingspinner:function" type="function" identity="loadingspinner" parent="~/.framework/src/components/ui/LoadingSpinner.tsx:module_header:module_header"]
|
|
42
|
+
// CIL[DOC-MACRO purpose="Render an animated loading spinner using the Loader2 icon with configurable size and className."]
|
|
43
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return a spinning Loader2 icon sized according to the size prop and combined with the className prop."]
|
|
44
|
+
// CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/LoadingSpinner.tsx,.framework/src/lib/utils.ts"]
|
|
45
|
+
// CIL[DOC-CONTRACT inputs="LoadingSpinnerProps { className?: string, size?: 'sm' | 'md' | 'lg' }" outputs="React element: animated Loader2 icon" errors="none" side_effects="none"]
|
|
46
|
+
// CIL[DOC-MICRO logic_summary="Selects Tailwind size classes based on the size prop, then renders a Loader2 icon with animate-spin and merged class names." notable_decisions="[]"]
|
|
47
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
48
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
60
49
|
export function LoadingSpinner({ className, size = 'md' }: LoadingSpinnerProps) {
|
|
61
50
|
const sizeClasses = {
|
|
62
51
|
sm: 'h-4 w-4',
|
|
@@ -74,4 +63,10 @@ export function LoadingSpinner({ className, size = 'md' }: LoadingSpinnerProps)
|
|
|
74
63
|
/>
|
|
75
64
|
)
|
|
76
65
|
}
|
|
77
|
-
// CIL[
|
|
66
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Render an animated loading spinner using the Loader2 icon with configurable size and className.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
|
|
67
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
68
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
69
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
70
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
71
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
72
|
+
// CIL[END stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:loadingspinner:function"]
|