spine-framework 0.3.145 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +76 -0
- package/.framework/.spine-manifest.json +19 -0
- package/.framework/cli/commands/agents.ts +61 -33
- package/.framework/cli/commands/auth.ts +60 -28
- package/.framework/cli/commands/create-app.ts +212 -80
- package/.framework/cli/commands/dev.ts +184 -68
- package/.framework/cli/commands/doctor.ts +324 -152
- package/.framework/cli/commands/generate.ts +119 -68
- package/.framework/cli/commands/init.ts +141 -242
- package/.framework/cli/commands/install-app.ts +1336 -314
- package/.framework/cli/commands/items.ts +31 -29
- package/.framework/cli/commands/migrate.ts +299 -156
- package/.framework/cli/commands/migrations.ts +62 -30
- package/.framework/cli/commands/pipelines.ts +31 -29
- package/.framework/cli/commands/status.ts +105 -45
- package/.framework/cli/commands/system.ts +47 -42
- package/.framework/cli/commands/test.ts +161 -102
- package/.framework/cli/commands/upgrade.ts +260 -0
- package/.framework/cli/commands/validate-app.ts +517 -161
- package/.framework/cli/context.ts +117 -85
- package/.framework/cli/env-loader.ts +74 -43
- package/.framework/cli/index.ts +70 -46
- package/.framework/cli/lib/project-files.ts +404 -0
- package/.framework/docs/guides/testing-guide.md +1 -1
- package/.framework/docs/runtime-types.md +72 -72
- package/.framework/functions/_shared/access.ts +84 -0
- package/.framework/functions/_shared/agent-runner.ts +5067 -1026
- package/.framework/functions/_shared/app-manifest.ts +214 -94
- package/.framework/functions/_shared/ast.ts +214 -0
- package/.framework/functions/_shared/audit.ts +91 -55
- package/.framework/functions/_shared/cil.ts +368 -127
- package/.framework/functions/_shared/db.ts +337 -68
- package/.framework/functions/_shared/funnel.ts +228 -0
- package/.framework/functions/_shared/geo.ts +105 -0
- package/.framework/functions/_shared/hash-api-key.ts +94 -17
- package/.framework/functions/_shared/index.ts +22 -224
- package/.framework/functions/_shared/kb.ts +832 -58
- package/.framework/functions/_shared/llm.ts +118 -18
- package/.framework/functions/_shared/logging.ts +317 -19
- package/.framework/functions/_shared/middleware.ts +701 -131
- package/.framework/functions/_shared/notify.ts +70 -0
- package/.framework/functions/_shared/outcomes.ts +34 -19
- package/.framework/functions/_shared/permissions.ts +501 -315
- package/.framework/functions/_shared/pipeline-runner.ts +704 -155
- package/.framework/functions/_shared/principal.ts +436 -263
- package/.framework/functions/_shared/rate-limit.ts +233 -0
- package/.framework/functions/_shared/resolve-credentials.ts +86 -19
- package/.framework/functions/_shared/resolve-ids.ts +203 -139
- package/.framework/functions/_shared/retry-deliveries.ts +51 -16
- package/.framework/functions/_shared/schema-utils.ts +602 -521
- package/.framework/functions/_shared/security.ts +345 -0
- package/.framework/functions/_shared/testing.ts +197 -172
- package/.framework/functions/_shared/tracing.ts +351 -21
- package/.framework/functions/_shared/trigger-engine.ts +425 -136
- package/.framework/functions/_shared/webhook-registration.ts +71 -70
- package/.framework/functions/_shared/webhook-registry.ts +126 -83
- package/.framework/functions/account-nodes.ts +30 -30
- package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
- package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
- package/.framework/functions/adapters/openai-outbound.ts +15 -16
- package/.framework/functions/admin-data.ts +596 -173
- package/.framework/functions/admin-funnel.ts +64 -60
- package/.framework/functions/admin-install-funnel.ts +84 -66
- package/.framework/functions/admin-signals.ts +69 -51
- package/.framework/functions/ai-agents.ts +431 -106
- package/.framework/functions/ai-interactions.ts +186 -112
- package/.framework/functions/api-keys.ts +107 -107
- package/.framework/functions/apps.ts +154 -136
- package/.framework/functions/auth.ts +83 -65
- package/.framework/functions/cil-agent-ingest.ts +189 -232
- package/.framework/functions/cil-agent.ts +433 -177
- package/.framework/functions/cil-callmap.ts +642 -430
- package/.framework/functions/cil-config.ts +139 -135
- package/.framework/functions/cil-context.ts +214 -127
- package/.framework/functions/cil-doc.ts +587 -458
- package/.framework/functions/cil-embeddings.ts +453 -364
- package/.framework/functions/cil-graph.ts +427 -142
- package/.framework/functions/cil-ingest.ts +1418 -1154
- package/.framework/functions/cil-pipeline.ts +276 -21
- package/.framework/functions/cil-project.ts +659 -132
- package/.framework/functions/cil-validate.ts +198 -164
- package/.framework/functions/debug-auth.ts +57 -55
- package/.framework/functions/deliveries.ts +80 -21
- package/.framework/functions/embeddings.ts +1023 -318
- package/.framework/functions/eval-harness.ts +146 -108
- package/.framework/functions/integration-outbound.ts +205 -75
- package/.framework/functions/integration-routes.ts +128 -23
- package/.framework/functions/integrations.ts +125 -100
- package/.framework/functions/invites.ts +1095 -460
- package/.framework/functions/item-progress.ts +158 -102
- package/.framework/functions/kb.ts +34 -10
- package/.framework/functions/logs.ts +133 -133
- package/.framework/functions/observability.ts +152 -122
- package/.framework/functions/pipeline-executions.ts +147 -132
- package/.framework/functions/pipelines.ts +134 -119
- package/.framework/functions/prompt-configs.ts +96 -80
- package/.framework/functions/roles.ts +112 -82
- package/.framework/functions/security.ts +450 -0
- package/.framework/functions/system-cron.ts +117 -80
- package/.framework/functions/system.ts +158 -98
- package/.framework/functions/tests.ts +29 -29
- package/.framework/functions/timers.ts +94 -95
- package/.framework/functions/trigger-scheduler.ts +10 -0
- package/.framework/functions/triggers.ts +179 -149
- package/.framework/functions/types.ts +137 -125
- package/.framework/mcp/index.ts +133 -0
- package/.framework/mcp/load-env.ts +60 -0
- package/.framework/mcp/shared/app-manifest.ts +275 -0
- package/.framework/mcp/shared/db.ts +477 -0
- package/.framework/mcp/shared/kb.ts +118 -0
- package/.framework/mcp/tools/architect.ts +431 -0
- package/.framework/mcp/tools/cil/context.ts +345 -0
- package/.framework/mcp/tools/cil/graph.ts +242 -0
- package/.framework/mcp/tools/cil/ingest.ts +1217 -0
- package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
- package/.framework/mcp/tools/cil/pipeline.ts +767 -0
- package/.framework/mcp/tools/cil/project.ts +791 -0
- package/.framework/mcp/tools/cil/retrieval.ts +336 -0
- package/.framework/mcp/tools/cil/search-core.ts +454 -0
- package/.framework/mcp/tools/cil/search.ts +97 -0
- package/.framework/mcp/tools/cil/suggest.ts +186 -0
- package/.framework/mcp/tools/cil/validate.ts +1369 -0
- package/.framework/mcp/tools/kb/delete.ts +139 -0
- package/.framework/mcp/tools/kb/index.ts +52 -0
- package/.framework/mcp/tools/kb/ingest.ts +84 -0
- package/.framework/mcp/tools/kb/list-types.ts +102 -0
- package/.framework/mcp/tools/kb/publish.ts +100 -0
- package/.framework/mcp/tools/kb/reindex.ts +86 -0
- package/.framework/mcp/tools/kb/revoke.ts +85 -0
- package/.framework/mcp/tools/kb/search.ts +101 -0
- package/.framework/mcp/tools/kb/upsert.ts +125 -0
- package/.framework/mcp/tools/observability.ts +510 -0
- package/.framework/migrations/001_core_schema.sql +15 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
- package/.framework/migrations/003_core_system_data.sql +16 -1
- package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
- package/.framework/migrations/005_core_observability.sql +17 -1
- package/.framework/migrations/006_security_hardening_rls.sql +15 -0
- package/.framework/migrations/007_kb_article_list.sql +17 -1
- package/.framework/migrations/008_items_target.sql +15 -0
- package/.framework/migrations/009_roles_slug_unique.sql +15 -0
- package/.framework/migrations/010_auth_user_trigger.sql +15 -0
- package/.framework/migrations/011_spine_system_account.sql +16 -0
- package/.framework/migrations/012_service_role_grants.sql +16 -0
- package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
- package/.framework/migrations/014_apps_required_roles.sql +16 -0
- package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
- package/.framework/migrations/016_cil_types.sql +281 -0
- package/.framework/migrations/017_cil_stable_ids.sql +37 -0
- package/.framework/migrations/018_runtime_tables.sql +129 -0
- package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
- package/.framework/migrations/020_schema_reconciliation.sql +67 -0
- package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
- package/.framework/migrations/032_cil_status_migration.sql +73 -0
- package/.framework/migrations/033_cil_versioning.sql +73 -0
- package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
- package/.framework/migrations/035_rate_limits.sql +55 -0
- package/.framework/migrations/036_demo_record_flags.sql +72 -0
- package/.framework/migrations/037_kb_types_canonical.sql +244 -0
- package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
- package/.framework/migrations/042_registration_hierarchy.sql +309 -0
- package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
- package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
- package/.framework/migrations/045_security_critical_rls.sql +139 -0
- package/.framework/migrations/046_security_missing_rls.sql +79 -0
- package/.framework/migrations/047_people_updated_by.sql +27 -0
- package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
- package/.framework/migrations/049_security_blocklist.sql +148 -0
- package/.framework/migrations/050_notifications.sql +49 -0
- package/.framework/migrations/051_message_agent_fields.sql +74 -0
- package/.framework/migrations/052_registration_security.sql +421 -0
- package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
- package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
- package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
- package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
- package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
- package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
- package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
- package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
- package/.framework/migrations/061_fk_dedup.sql +32 -0
- package/.framework/public/spine-logo.svg +10 -3
- package/.framework/scripts/app-install-cli.ts +190 -93
- package/.framework/scripts/assemble-frontend.sh +127 -44
- package/.framework/scripts/assemble-functions.sh +128 -30
- package/.framework/scripts/boundary-check.sh +6 -2
- package/.framework/scripts/build-manifest.sh +24 -68
- package/.framework/scripts/check-core-integrity.sh +15 -76
- package/.framework/scripts/checksum-manifest.mts +343 -0
- package/.framework/scripts/cil-migrate-markers.ts +403 -0
- package/.framework/scripts/fix-cil-markers.mjs +176 -0
- package/.framework/scripts/verify-integrity.sh +21 -57
- package/.framework/scripts/verify-manifest.mts +305 -0
- package/.framework/seeds/types/funnel_signal_use.json +74 -21
- package/.framework/seeds/types/spine_instance.json +73 -21
- package/.framework/src/App.tsx +118 -72
- package/.framework/src/apps/admin/index.tsx +855 -58
- package/.framework/src/components/AppWrapper.tsx +43 -45
- package/.framework/src/components/CustomAppLoader.tsx +160 -116
- package/.framework/src/components/admin/AdminListPage.tsx +46 -44
- package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
- package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
- package/.framework/src/components/admin/PageInstructions.tsx +98 -2
- package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
- package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
- package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
- package/.framework/src/components/app-sidebar.tsx +42 -45
- package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
- package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
- package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
- package/.framework/src/components/kb/KBArticleList.tsx +251 -10
- package/.framework/src/components/layout/AppShell.tsx +51 -45
- package/.framework/src/components/layout/Header.tsx +42 -43
- package/.framework/src/components/layout/Layout.tsx +46 -46
- package/.framework/src/components/layout/Sidebar.tsx +196 -96
- package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
- package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
- package/.framework/src/components/runtime/DataFilters.tsx +49 -74
- package/.framework/src/components/runtime/DataHeader.tsx +53 -32
- package/.framework/src/components/runtime/DataListPage.tsx +51 -155
- package/.framework/src/components/runtime/DataStats.tsx +66 -44
- package/.framework/src/components/runtime/DataTable.tsx +49 -149
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
- package/.framework/src/components/runtime/index.ts +119 -16
- package/.framework/src/components/search-form.tsx +46 -29
- package/.framework/src/components/shared/AgentView.tsx +65 -48
- package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
- package/.framework/src/components/shared/InviteManager.tsx +207 -97
- package/.framework/src/components/shared/MemberList.tsx +97 -0
- package/.framework/src/components/shared/SchemaFields.tsx +107 -86
- package/.framework/src/components/ui/DataTable.tsx +80 -68
- package/.framework/src/components/ui/Form.tsx +157 -146
- package/.framework/src/components/ui/ItemCard.tsx +74 -67
- package/.framework/src/components/ui/ItemListView.tsx +73 -68
- package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
- package/.framework/src/components/ui/Modal.tsx +78 -68
- package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
- package/.framework/src/components/ui/accordion.tsx +85 -86
- package/.framework/src/components/ui/alert-dialog.tsx +197 -184
- package/.framework/src/components/ui/alert.tsx +105 -94
- package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
- package/.framework/src/components/ui/avatar.tsx +122 -107
- package/.framework/src/components/ui/badge.tsx +60 -55
- package/.framework/src/components/ui/breadcrumb.tsx +127 -128
- package/.framework/src/components/ui/button-group.tsx +86 -72
- package/.framework/src/components/ui/button.tsx +71 -50
- package/.framework/src/components/ui/calendar.tsx +72 -57
- package/.framework/src/components/ui/card.tsx +136 -129
- package/.framework/src/components/ui/carousel.tsx +226 -107
- package/.framework/src/components/ui/chart.tsx +252 -147
- package/.framework/src/components/ui/checkbox.tsx +43 -44
- package/.framework/src/components/ui/collapsible.tsx +86 -71
- package/.framework/src/components/ui/combobox.tsx +282 -249
- package/.framework/src/components/ui/command.tsx +158 -146
- package/.framework/src/components/ui/context-menu.tsx +239 -240
- package/.framework/src/components/ui/dialog.tsx +174 -157
- package/.framework/src/components/ui/direction.tsx +72 -56
- package/.framework/src/components/ui/drawer.tsx +168 -169
- package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
- package/.framework/src/components/ui/empty.tsx +131 -120
- package/.framework/src/components/ui/field.tsx +205 -173
- package/.framework/src/components/ui/hover-card.tsx +71 -72
- package/.framework/src/components/ui/input-group.tsx +148 -133
- package/.framework/src/components/ui/input-otp.tsx +99 -86
- package/.framework/src/components/ui/input.tsx +43 -41
- package/.framework/src/components/ui/item.tsx +207 -185
- package/.framework/src/components/ui/kbd.tsx +57 -56
- package/.framework/src/components/ui/label.tsx +45 -41
- package/.framework/src/components/ui/menubar.tsx +268 -236
- package/.framework/src/components/ui/native-select.tsx +85 -86
- package/.framework/src/components/ui/navigation-menu.tsx +166 -156
- package/.framework/src/components/ui/pagination.tsx +131 -141
- package/.framework/src/components/ui/popover.tsx +125 -128
- package/.framework/src/components/ui/progress.tsx +47 -44
- package/.framework/src/components/ui/radio-group.tsx +60 -55
- package/.framework/src/components/ui/resizable.tsx +85 -72
- package/.framework/src/components/ui/scroll-area.tsx +57 -58
- package/.framework/src/components/ui/select.tsx +182 -169
- package/.framework/src/components/ui/separator.tsx +42 -43
- package/.framework/src/components/ui/sheet.tsx +170 -159
- package/.framework/src/components/ui/sidebar.tsx +395 -398
- package/.framework/src/components/ui/skeleton.tsx +42 -43
- package/.framework/src/components/ui/slider.tsx +61 -44
- package/.framework/src/components/ui/sonner.tsx +44 -44
- package/.framework/src/components/ui/spinner.tsx +47 -42
- package/.framework/src/components/ui/switch.tsx +56 -42
- package/.framework/src/components/ui/table-primitives.tsx +272 -132
- package/.framework/src/components/ui/table.tsx +140 -142
- package/.framework/src/components/ui/tabs.tsx +110 -93
- package/.framework/src/components/ui/textarea.tsx +43 -44
- package/.framework/src/components/ui/toggle-group.tsx +87 -71
- package/.framework/src/components/ui/toggle.tsx +56 -56
- package/.framework/src/components/ui/tooltip.tsx +99 -85
- package/.framework/src/contexts/AppContext.tsx +166 -114
- package/.framework/src/contexts/AuthContext.tsx +232 -137
- package/.framework/src/hooks/use-mobile.ts +43 -44
- package/.framework/src/hooks/useApi.ts +185 -172
- package/.framework/src/hooks/useAppPath.ts +31 -29
- package/.framework/src/hooks/useApps.ts +77 -42
- package/.framework/src/hooks/useEntityList.ts +66 -29
- package/.framework/src/hooks/useEntityRecord.ts +76 -32
- package/.framework/src/hooks/useForm.ts +62 -30
- package/.framework/src/hooks/useListSchema.ts +60 -43
- package/.framework/src/hooks/useSchemaRecord.ts +115 -95
- package/.framework/src/lib/api.ts +258 -134
- package/.framework/src/lib/registration.ts +181 -0
- package/.framework/src/lib/supabase.ts +118 -81
- package/.framework/src/lib/utils.ts +266 -266
- package/.framework/src/main.tsx +43 -44
- package/.framework/src/pages/DashboardPage.tsx +44 -43
- package/.framework/src/pages/NoAppPage.tsx +50 -0
- package/.framework/src/pages/NotFoundPage.tsx +32 -29
- package/.framework/src/pages/SetupPage.tsx +34 -33
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
- package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
- package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
- package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
- package/.framework/src/pages/admin/AppsPage.tsx +45 -42
- package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
- package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
- package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
- package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
- package/.framework/src/pages/admin/LogsPage.tsx +87 -137
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
- package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
- package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
- package/.framework/src/pages/admin/RolesPage.tsx +47 -164
- package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
- package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
- package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
- package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
- package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
- package/.framework/src/pages/admin/TimersPage.tsx +44 -42
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
- package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
- package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
- package/.framework/src/pages/admin/TypesPage.tsx +45 -42
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
- package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
- package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
- package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
- package/.framework/src/pages/auth/LoginPage.tsx +38 -32
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
- package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
- package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
- package/.framework/src/types/auth.ts +101 -93
- package/.framework/src/types/types.ts +283 -262
- package/.framework/templates/project.json +87 -0
- package/.framework/templates/spine.config.neutral.json +7 -0
- package/.framework/tests/api/api-surface.test.ts +381 -0
- package/.framework/tests/fixtures/seed.ts +427 -0
- package/.framework/tests/fixtures/teardown.ts +228 -0
- package/.framework/tests/reporter.ts +351 -0
- package/.framework/tests/setup.ts +135 -0
- package/.framework/tests/ui/ui-sweep.ts +278 -0
- package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
- package/.framework/tests/unit/agent-runner.test.ts +2389 -0
- package/.framework/tests/unit/ai-interactions.test.ts +81 -0
- package/.framework/tests/unit/app-manifest.test.ts +359 -0
- package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
- package/.framework/tests/unit/cil-determinism.test.ts +85 -0
- package/.framework/tests/unit/core-isolation.test.ts +153 -0
- package/.framework/tests/unit/funnel-signals.test.ts +135 -0
- package/.framework/tests/unit/install-app.test.ts +1759 -0
- package/.framework/tests/unit/invites-security.test.ts +572 -0
- package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
- package/.framework/tests/unit/kb-search.test.ts +119 -0
- package/.framework/tests/unit/migrate.test.ts +509 -0
- package/.framework/tests/unit/notify.test.ts +136 -0
- package/.framework/tests/unit/permissions.test.ts +269 -0
- package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
- package/.framework/tests/unit/principal-cache.test.ts +138 -0
- package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
- package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
- package/.framework/tests/unit/schema-utils.test.ts +225 -0
- package/.framework/tests/unit/trigger-engine.test.ts +513 -0
- package/.framework/tests/unit/validate-app.test.ts +527 -0
- package/README.md +34 -3
- package/bin/spine-framework.cjs +1 -0
- package/config/tailwind.config.cjs +7 -0
- package/config/tsconfig.functions.json +42 -0
- package/config/tsconfig.json +37 -9
- package/config/vite.config.ts +31 -2
- package/netlify.toml +31 -3
- package/package.json +46 -29
- package/scripts/assemble-frontend.sh +127 -44
- package/scripts/assemble-functions.sh +127 -29
- package/scripts/boundary-check.sh +6 -2
- package/scripts/build-manifest.sh +24 -68
- package/scripts/checksum-manifest.mts +345 -0
- package/scripts/dev-clean.sh +86 -0
- package/scripts/dev-netlify.sh +49 -0
- package/scripts/netlify-dev-wrapper.sh +2 -0
- package/scripts/verify-install.ts +358 -0
- package/scripts/verify-integrity.sh +21 -57
- package/scripts/verify-manifest.mts +305 -0
- package/templates/project/gitignore +45 -0
- package/{config → templates/project}/package-lock.json +22335 -9366
- package/vitest.config.ts +46 -0
- package/.framework/public/spine.config.json +0 -91
- package/config/deno.lock +0 -108
- package/config/tsconfig.node.tsbuildinfo +0 -1
- package/config/tsconfig.tsbuildinfo +0 -1
- package/config/vite.config.d.ts +0 -2
- package/custom/.devin/AGENT.md +0 -357
- package/custom/.devin/skills/install-app/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
- package/custom/.devin/workflows/app-install.yaml +0 -83
- package/custom/README.md +0 -79
- package/docs/README.md +0 -15
- package/scripts/app-install-cli.ts +0 -286
- package/scripts/check-core-integrity.sh +0 -82
- package/scripts/ingest-chunks.cjs +0 -202
- package/scripts/kb-chunk-parser.cjs +0 -312
- package/scripts/kb-chunk-parser.ts +0 -330
- package/scripts/kb-ingest-docs.ts +0 -203
- package/scripts/load-test-app-install.ts +0 -484
- package/scripts/test-login.js +0 -33
- package/spine.config.json +0 -91
|
@@ -1,91 +1,115 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
// CIL[BEGIN chunk_id="AppContext_module_header_1783749485" type="module_header" identity="module_header" parent="none"]
|
|
10
|
-
// CIL[DOC-MACRO purpose="Module imports and type definitions"]
|
|
11
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Define React context types and import dependencies"]
|
|
12
|
-
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-context" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/db.ts\",\"\\\"]"]
|
|
13
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="type definitions" errors="none" side_effects="none"]
|
|
14
|
-
// CIL[DOC-MICRO logic_summary="Sets up imports and context interfaces for app management" notable_decisions="[]"]
|
|
15
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Defines React contexts and hooks for the current app and app registry"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide AppContext and AppsRegistryContext along with their consumers and providers"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Module-level header with imports" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
16
8
|
// CIL[DOC-STABILITY stability="stable"]
|
|
17
|
-
// CIL[DOC-AUDIENCE audience="
|
|
18
|
-
|
|
19
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
20
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
21
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
22
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
23
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="developers"]
|
|
10
|
+
|
|
24
11
|
import React, { createContext, useContext, useState, useEffect, useRef, useCallback } from 'react'
|
|
25
12
|
import { AppRecord } from '../hooks/useApps'
|
|
26
13
|
import { apiFetch } from '../lib/api'
|
|
27
14
|
import { useAuth } from './AuthContext'
|
|
15
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Defines React contexts and hooks for the current app and app registry'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
|
|
16
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
17
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
18
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
19
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
20
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
21
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:module_header:module_header"]
|
|
22
|
+
|
|
23
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppContextType:interface" type="interface" identity="AppContextType" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
24
|
+
// CIL[DOC-MACRO purpose="Type definition for the AppContext value"]
|
|
25
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare the shape of the AppContext value"]
|
|
26
|
+
// CIL[DOC-CONTEXT module="contexts" layer="type" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
27
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="AppContextType interface" errors="none" side_effects="none"]
|
|
28
|
+
// CIL[DOC-MICRO logic_summary="Declares an app field of type AppRecord" notable_decisions="[]"]
|
|
29
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
30
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
28
31
|
interface AppContextType {
|
|
29
32
|
app: AppRecord
|
|
30
33
|
}
|
|
34
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for the AppContext value'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
|
|
35
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
36
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
37
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
38
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
39
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
40
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppContextType:interface"]
|
|
31
41
|
|
|
32
|
-
|
|
33
|
-
// CIL[
|
|
34
|
-
// CIL[
|
|
35
|
-
// CIL[DOC-
|
|
36
|
-
// CIL[DOC-
|
|
37
|
-
// CIL[DOC-
|
|
38
|
-
// CIL[DOC-
|
|
39
|
-
// CIL[DOC-MICRO logic_summary="Returns app from React context with safety check" notable_decisions="[]"]
|
|
40
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
42
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppContext:constant" type="constant" identity="AppContext" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
43
|
+
// CIL[DOC-MACRO purpose="Creates the React context for the current app"]
|
|
44
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a context object that holds the current AppRecord"]
|
|
45
|
+
// CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
46
|
+
// CIL[DOC-CONTRACT inputs="AppContextType default undefined" outputs="AppContext object" errors="none" side_effects="none"]
|
|
47
|
+
// CIL[DOC-MICRO logic_summary="createContext with undefined default" notable_decisions="[]"]
|
|
48
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
41
49
|
// CIL[DOC-STABILITY stability="stable"]
|
|
42
|
-
|
|
43
|
-
// CIL[DOC-VECTOR type="
|
|
44
|
-
// CIL[DOC-VECTOR type="
|
|
45
|
-
// CIL[DOC-VECTOR type="
|
|
50
|
+
const AppContext = createContext<AppContextType | undefined>(undefined)
|
|
51
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Creates the React context for the current app'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
|
|
52
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
53
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
54
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
46
55
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
47
56
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
57
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppContext:constant"]
|
|
58
|
+
|
|
59
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:useCurrentApp:hook" type="hook" identity="useCurrentApp" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
60
|
+
// CIL[DOC-MACRO purpose="Consumes AppContext and returns the current app record"]
|
|
61
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return the current app from AppContext, throwing if used outside a provider"]
|
|
62
|
+
// CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
63
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="AppRecord" errors="throws Error if context undefined" side_effects="none"]
|
|
64
|
+
// CIL[DOC-MICRO logic_summary="useContext check and return the app field" notable_decisions="[]"]
|
|
65
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
66
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
48
67
|
export function useCurrentApp(): AppRecord {
|
|
49
68
|
const context = useContext(AppContext)
|
|
50
69
|
if (context === undefined) {
|
|
51
70
|
throw new Error('useCurrentApp must be used within an AppProvider')
|
|
52
71
|
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
53
75
|
return context.app
|
|
54
76
|
}
|
|
55
|
-
// CIL[
|
|
56
|
-
// CIL[
|
|
57
|
-
// CIL[DOC-
|
|
58
|
-
// CIL[DOC-
|
|
59
|
-
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-types" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
60
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
61
|
-
// CIL[DOC-MICRO logic_summary="Simple props interface with app and children" notable_decisions="[]"]
|
|
62
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
63
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
64
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-types. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
65
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
66
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
67
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
77
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Consumes AppContext and returns the current app record'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.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"]
|
|
68
81
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
69
82
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
83
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:useCurrentApp:hook"]
|
|
84
|
+
|
|
85
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppProviderProps:interface" type="interface" identity="AppProviderProps" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
86
|
+
// CIL[DOC-MACRO purpose="Props type for the AppProvider component"]
|
|
87
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare app and children props"]
|
|
88
|
+
// CIL[DOC-CONTEXT module="contexts" layer="type" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
89
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="AppProviderProps interface" errors="none" side_effects="none"]
|
|
90
|
+
// CIL[DOC-MICRO logic_summary="Declares app AppRecord and children ReactNode" notable_decisions="[]"]
|
|
91
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
92
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
70
93
|
interface AppProviderProps {
|
|
71
94
|
app: AppRecord
|
|
72
95
|
children: React.ReactNode
|
|
73
96
|
}
|
|
74
|
-
// CIL[
|
|
75
|
-
// CIL[
|
|
76
|
-
// CIL[DOC-
|
|
77
|
-
// CIL[DOC-
|
|
78
|
-
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-provider" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
79
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Provider component" errors="none" side_effects="context provider"]
|
|
80
|
-
// CIL[DOC-MICRO logic_summary="Simple React context provider wrapper" notable_decisions="[]"]
|
|
81
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
82
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
83
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-provider. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
84
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
85
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
86
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
97
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Props type for the AppProvider component'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
|
|
98
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
99
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
100
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
87
101
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
88
102
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
103
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppProviderProps:interface"]
|
|
104
|
+
|
|
105
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppProvider:component" type="component" identity="AppProvider" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
106
|
+
// CIL[DOC-MACRO purpose="Provides the current app context to children"]
|
|
107
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Wrap children in AppContext.Provider with the provided app"]
|
|
108
|
+
// CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
109
|
+
// CIL[DOC-CONTRACT inputs="app: AppRecord, children: React.ReactNode" outputs="JSX" errors="none" side_effects="none"]
|
|
110
|
+
// CIL[DOC-MICRO logic_summary="Renders AppContext.Provider with a value object" notable_decisions="[]"]
|
|
111
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
112
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
89
113
|
export function AppProvider({ app, children }: AppProviderProps) {
|
|
90
114
|
return (
|
|
91
115
|
<AppContext.Provider value={{ app }}>
|
|
@@ -93,21 +117,22 @@ export function AppProvider({ app, children }: AppProviderProps) {
|
|
|
93
117
|
</AppContext.Provider>
|
|
94
118
|
)
|
|
95
119
|
}
|
|
96
|
-
// CIL[
|
|
97
|
-
// CIL[
|
|
98
|
-
// CIL[DOC-
|
|
99
|
-
// CIL[DOC-
|
|
100
|
-
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-types" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
101
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
102
|
-
// CIL[DOC-MICRO logic_summary="Defines shape of apps registry context with apps list and loading state" notable_decisions="[]"]
|
|
103
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
104
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
105
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-types. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
106
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
107
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
108
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
120
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Provides the current app context to children'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
|
|
121
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
122
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
123
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
109
124
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
110
125
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
126
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppProvider:component"]
|
|
127
|
+
|
|
128
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryContextType:interface" type="interface" identity="AppsRegistryContextType" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
129
|
+
// CIL[DOC-MACRO purpose="Type definition for the apps registry context value"]
|
|
130
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare the shape of apps registry state and actions"]
|
|
131
|
+
// CIL[DOC-CONTEXT module="contexts" layer="type" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
132
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="AppsRegistryContextType interface" errors="none" side_effects="none"]
|
|
133
|
+
// CIL[DOC-MICRO logic_summary="Declares apps, routableApps, loading, error, and refetch fields" notable_decisions="[]"]
|
|
134
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
135
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
111
136
|
interface AppsRegistryContextType {
|
|
112
137
|
apps: AppRecord[]
|
|
113
138
|
routableApps: AppRecord[]
|
|
@@ -115,63 +140,84 @@ interface AppsRegistryContextType {
|
|
|
115
140
|
error: string | null
|
|
116
141
|
refetch: () => void
|
|
117
142
|
}
|
|
143
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for the apps registry context value'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
|
|
144
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
145
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
146
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
147
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
148
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
149
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryContextType:interface"]
|
|
118
150
|
|
|
119
|
-
|
|
120
|
-
// CIL[
|
|
121
|
-
// CIL[
|
|
122
|
-
// CIL[DOC-
|
|
123
|
-
// CIL[DOC-
|
|
124
|
-
// CIL[DOC-
|
|
125
|
-
// CIL[DOC-
|
|
126
|
-
// CIL[DOC-MICRO logic_summary="Returns apps registry context with safety check" notable_decisions="[]"]
|
|
127
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
151
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryContext:constant" type="constant" identity="AppsRegistryContext" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
152
|
+
// CIL[DOC-MACRO purpose="Creates the React context for the apps registry"]
|
|
153
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide a context object for the apps registry"]
|
|
154
|
+
// CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
155
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="AppsRegistryContext object" errors="none" side_effects="none"]
|
|
156
|
+
// CIL[DOC-MICRO logic_summary="createContext with undefined default" notable_decisions="[]"]
|
|
157
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
128
158
|
// CIL[DOC-STABILITY stability="stable"]
|
|
129
|
-
|
|
130
|
-
// CIL[DOC-VECTOR type="
|
|
131
|
-
// CIL[DOC-VECTOR type="
|
|
132
|
-
// CIL[DOC-VECTOR type="
|
|
159
|
+
const AppsRegistryContext = createContext<AppsRegistryContextType | undefined>(undefined)
|
|
160
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Creates the React context for the apps registry'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
|
|
161
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
162
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
163
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
133
164
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
134
165
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
166
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryContext:constant"]
|
|
167
|
+
|
|
168
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:useAppsRegistry:hook" type="hook" identity="useAppsRegistry" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
169
|
+
// CIL[DOC-MACRO purpose="Consumes AppsRegistryContext and returns the registry state"]
|
|
170
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return the apps registry context, throwing if used outside a provider"]
|
|
171
|
+
// CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
172
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="AppsRegistryContextType" errors="throws Error if context undefined" side_effects="none"]
|
|
173
|
+
// CIL[DOC-MICRO logic_summary="useContext check and return the context object" notable_decisions="[]"]
|
|
174
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
175
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
135
176
|
export function useAppsRegistry(): AppsRegistryContextType {
|
|
136
177
|
const context = useContext(AppsRegistryContext)
|
|
137
178
|
if (context === undefined) {
|
|
138
179
|
throw new Error('useAppsRegistry must be used within an AppsRegistryProvider')
|
|
139
180
|
}
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
140
184
|
return context
|
|
141
185
|
}
|
|
142
|
-
// CIL[
|
|
143
|
-
// CIL[
|
|
144
|
-
// CIL[DOC-
|
|
145
|
-
// CIL[DOC-
|
|
146
|
-
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-types" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
147
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
|
|
148
|
-
// CIL[DOC-MICRO logic_summary="Simple props interface with only children" notable_decisions="[]"]
|
|
149
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
150
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
151
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-types. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
152
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
153
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
154
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
186
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Consumes AppsRegistryContext and returns the registry state'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
|
|
187
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
188
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
189
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
155
190
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
156
191
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
192
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:useAppsRegistry:hook"]
|
|
193
|
+
|
|
194
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryProviderProps:interface" type="interface" identity="AppsRegistryProviderProps" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
195
|
+
// CIL[DOC-MACRO purpose="Props type for the AppsRegistryProvider component"]
|
|
196
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Declare the children prop"]
|
|
197
|
+
// CIL[DOC-CONTEXT module="contexts" layer="type" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
198
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="AppsRegistryProviderProps interface" errors="none" side_effects="none"]
|
|
199
|
+
// CIL[DOC-MICRO logic_summary="Declares children ReactNode" notable_decisions="[]"]
|
|
200
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
201
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
157
202
|
interface AppsRegistryProviderProps {
|
|
158
203
|
children: React.ReactNode
|
|
159
204
|
}
|
|
160
|
-
// CIL[
|
|
161
|
-
// CIL[
|
|
162
|
-
// CIL[DOC-
|
|
163
|
-
// CIL[DOC-
|
|
164
|
-
// CIL[DOC-CONTEXT module="AppContext" layer="frontend-provider" related_files="[]"]
|
|
165
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Provider component" errors="network errors" side_effects="API calls, state updates"]
|
|
166
|
-
// CIL[DOC-MICRO logic_summary="Fetches apps list, filters by domain, provides registry context" notable_decisions="[]"]
|
|
167
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
168
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
169
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-provider. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
170
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
171
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
172
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
205
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Props type for the AppsRegistryProvider component'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
|
|
206
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
207
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
208
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
173
209
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
174
210
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
211
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryProviderProps:interface"]
|
|
212
|
+
|
|
213
|
+
// CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryProvider:component" type="component" identity="AppsRegistryProvider" parent="~/.framework/src/contexts/AppContext.tsx"]
|
|
214
|
+
// CIL[DOC-MACRO purpose="Fetches and provides the list of apps for the current user"]
|
|
215
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Load accessible apps, derive routable apps, and expose registry state"]
|
|
216
|
+
// CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
|
|
217
|
+
// CIL[DOC-CONTRACT inputs="children: React.ReactNode" outputs="JSX" errors="network or auth errors surface as error string" side_effects="fetches /api/apps, manages an AbortController, and updates React state"]
|
|
218
|
+
// CIL[DOC-MICRO logic_summary="Fetches apps when the user changes, filters routable apps by domain and route, and provides the registry value" notable_decisions="[]"]
|
|
219
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
220
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
175
221
|
export function AppsRegistryProvider({ children }: AppsRegistryProviderProps) {
|
|
176
222
|
const { user } = useAuth()
|
|
177
223
|
const [apps, setApps] = useState<AppRecord[]>([])
|
|
@@ -253,4 +299,10 @@ export function AppsRegistryProvider({ children }: AppsRegistryProviderProps) {
|
|
|
253
299
|
</AppsRegistryContext.Provider>
|
|
254
300
|
)
|
|
255
301
|
}
|
|
256
|
-
// CIL[
|
|
302
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Fetches and provides the list of apps for the current user'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
|
|
303
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
304
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
305
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
306
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
307
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
308
|
+
// CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryProvider:component"]
|