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
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/hooks/useApi.ts"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="React hooks for asynchronous API operations including fetching, pagination, and mutations"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide reusable React hooks that encapsulate data fetching, pagination, and mutation state"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="" outputs="useApi, usePaginatedApi, useMutation" errors="" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Exports three hooks for asynchronous API state management" notable_decisions="Keeps related data fetching patterns in a single module"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="frontend-developers"]
|
|
10
|
+
|
|
1
11
|
|
|
2
12
|
|
|
3
13
|
|
|
@@ -10,59 +20,46 @@
|
|
|
10
20
|
|
|
11
21
|
|
|
12
22
|
|
|
13
|
-
// CIL[BEGIN chunk_id="useapi_module_header_1783740744" type="module_header" identity="imports" parent="none"]
|
|
14
|
-
// CIL[DOC-MACRO purpose="Import React hooks and router for API functionality"]
|
|
15
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide core React dependencies for API state management"]
|
|
16
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
17
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="React hooks" errors="none" side_effects="Module imports"]
|
|
18
|
-
// CIL[DOC-MICRO logic_summary="Imports useState, useEffect, useCallback, useRef from React and useLocation from react-router-dom" notable_decisions="[]"]
|
|
19
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
20
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
21
|
-
// CIL[DOC-AUDIENCE audience="developer"]
|
|
22
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. 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/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
|
|
23
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
24
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
25
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
26
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
27
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
28
23
|
import { useState, useEffect, useCallback, useRef } from 'react'
|
|
29
24
|
import { useLocation } from 'react-router-dom'
|
|
30
|
-
// CIL[
|
|
31
|
-
// CIL[
|
|
32
|
-
// CIL[DOC-
|
|
33
|
-
// CIL[DOC-
|
|
34
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
35
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="state interface" errors="none" side_effects="Type definition"]
|
|
36
|
-
// CIL[DOC-MICRO logic_summary="Generic interface with data, loading, error, and lastFetched fields" notable_decisions="[]"]
|
|
37
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
38
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
39
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
40
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
41
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
42
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
25
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React hooks for asynchronous API operations including fetching, pagination, and mutations'; No verified external callers; imports: none"]
|
|
26
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
27
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
28
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
43
29
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
44
30
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
31
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:module_header:module_header"]
|
|
32
|
+
|
|
33
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:ApiState:interface" type="interface" identity="ApiState" parent="~/.framework/src/hooks/useApi.ts"]
|
|
34
|
+
// CIL[DOC-MACRO purpose="Type definition for ApiState"]
|
|
35
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the fields and shape of the ApiState interface"]
|
|
36
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
37
|
+
// CIL[DOC-CONTRACT inputs="generic type parameters" outputs="data, loading, error, lastFetched" errors="" side_effects="none"]
|
|
38
|
+
// CIL[DOC-MICRO logic_summary="Describes the structure of the ApiState data object" notable_decisions="Tracks lastFetched to record the most recent successful fetch"]
|
|
39
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
40
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
45
41
|
interface ApiState<T> {
|
|
46
42
|
data: T | null
|
|
47
43
|
loading: boolean
|
|
48
44
|
error: string | null
|
|
49
45
|
lastFetched: Date | null
|
|
50
46
|
}
|
|
51
|
-
// CIL[
|
|
52
|
-
// CIL[
|
|
53
|
-
// CIL[DOC-
|
|
54
|
-
// CIL[DOC-
|
|
55
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
56
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="options interface" errors="none" side_effects="Type definition"]
|
|
57
|
-
// CIL[DOC-MICRO logic_summary="Options for immediate execution, success/error callbacks, initial data, and dependencies" notable_decisions="[]"]
|
|
58
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
59
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
60
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
61
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
62
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
63
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
47
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for ApiState'; No verified external callers; imports: none"]
|
|
48
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
49
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
50
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
64
51
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
65
52
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
53
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:ApiState:interface"]
|
|
54
|
+
|
|
55
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:UseApiOptions:interface" type="interface" identity="UseApiOptions" parent="~/.framework/src/hooks/useApi.ts"]
|
|
56
|
+
// CIL[DOC-MACRO purpose="Type definition for UseApiOptions"]
|
|
57
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the fields and shape of the UseApiOptions interface"]
|
|
58
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
59
|
+
// CIL[DOC-CONTRACT inputs="generic type parameters" outputs="immediate, onSuccess, onError, initialData, deps" errors="" side_effects="none"]
|
|
60
|
+
// CIL[DOC-MICRO logic_summary="Describes the structure of the UseApiOptions data object" notable_decisions="Uses generics to remain flexible across concrete API payloads"]
|
|
61
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
62
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
66
63
|
interface UseApiOptions<T> {
|
|
67
64
|
immediate?: boolean
|
|
68
65
|
onSuccess?: (data: T) => void
|
|
@@ -70,21 +67,22 @@ interface UseApiOptions<T> {
|
|
|
70
67
|
initialData?: T
|
|
71
68
|
deps?: any[]
|
|
72
69
|
}
|
|
73
|
-
// CIL[
|
|
74
|
-
// CIL[
|
|
75
|
-
// CIL[DOC-
|
|
76
|
-
// CIL[DOC-
|
|
77
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
|
|
78
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="return interface" errors="none" side_effects="Type definition"]
|
|
79
|
-
// CIL[DOC-MICRO logic_summary="Returns state data, loading status, error, and control functions" notable_decisions="[]"]
|
|
80
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
81
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
82
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/principal.ts, .framework/src/pages/admin/IntegrationsPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
|
|
83
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
84
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
85
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
70
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for UseApiOptions'; No verified external callers; imports: none"]
|
|
71
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
72
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
73
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
86
74
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
87
75
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
76
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:UseApiOptions:interface"]
|
|
77
|
+
|
|
78
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:UseApiReturn:interface" type="interface" identity="UseApiReturn" parent="~/.framework/src/hooks/useApi.ts"]
|
|
79
|
+
// CIL[DOC-MACRO purpose="Type definition for UseApiReturn"]
|
|
80
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the fields and shape of the UseApiReturn interface"]
|
|
81
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
82
|
+
// CIL[DOC-CONTRACT inputs="generic type parameters" outputs="data, loading, error, execute, reset, refetch" errors="" side_effects="none"]
|
|
83
|
+
// CIL[DOC-MICRO logic_summary="Describes the structure of the UseApiReturn data object" notable_decisions="Returns both state and controller functions"]
|
|
84
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
85
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
88
86
|
interface UseApiReturn<T> {
|
|
89
87
|
data: T | null
|
|
90
88
|
loading: boolean
|
|
@@ -93,21 +91,22 @@ interface UseApiReturn<T> {
|
|
|
93
91
|
reset: () => void
|
|
94
92
|
refetch: () => Promise<T>
|
|
95
93
|
}
|
|
96
|
-
// CIL[
|
|
97
|
-
// CIL[
|
|
98
|
-
// CIL[DOC-
|
|
99
|
-
// CIL[DOC-
|
|
100
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[]"]
|
|
101
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="UseApiReturn" errors="throws API errors" side_effects="React state, AbortController"]
|
|
102
|
-
// CIL[DOC-MICRO logic_summary="Wraps async functions with loading state, error handling, and AbortController for cancellation" 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-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
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."]
|
|
94
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for UseApiReturn'; No verified external callers; imports: none"]
|
|
95
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
96
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
97
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
109
98
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
110
99
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
100
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:UseApiReturn:interface"]
|
|
101
|
+
|
|
102
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:useApi:hook" type="hook" identity="useApi" parent="~/.framework/src/hooks/useApi.ts"]
|
|
103
|
+
// CIL[DOC-MACRO purpose="React hook for fetching data from an API with cancellation support"]
|
|
104
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Manage async state and lifecycle for useApi"]
|
|
105
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
106
|
+
// CIL[DOC-CONTRACT inputs="apiFunction returning a Promise<T> and UseApiOptions<T>" outputs="UseApiReturn<T> with data, loading, error, execute, reset, refetch" errors="Throws non-AbortError after updating state.error" side_effects="Calls apiFunction, updates React state, invokes onSuccess/onError, logs metrics"]
|
|
107
|
+
// CIL[DOC-MICRO logic_summary="Encapsulates a single async request lifecycle with request cancellation" notable_decisions="Uses refs to keep the latest callback versions and aborts previous in-flight requests"]
|
|
108
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
109
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
111
110
|
export function useApi<T>(
|
|
112
111
|
apiFunction: (params?: any) => Promise<T>,
|
|
113
112
|
options: UseApiOptions<T> = {}
|
|
@@ -225,21 +224,22 @@ export function useApi<T>(
|
|
|
225
224
|
refetch
|
|
226
225
|
}
|
|
227
226
|
}
|
|
228
|
-
// CIL[
|
|
229
|
-
// CIL[
|
|
230
|
-
// CIL[DOC-
|
|
231
|
-
// CIL[DOC-
|
|
232
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[]"]
|
|
233
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="paginated state interface" errors="none" side_effects="Type definition"]
|
|
234
|
-
// CIL[DOC-MICRO logic_summary="Extends ApiState with pagination fields for page, totalPages, totalItems, itemsPerPage" notable_decisions="[]"]
|
|
235
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
236
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
237
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
238
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
239
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
240
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
227
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React hook for fetching data from an API with cancellation support'; No verified external callers; imports: none"]
|
|
228
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
229
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
230
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
241
231
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
242
232
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
233
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:useApi:hook"]
|
|
234
|
+
|
|
235
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:PaginatedApiState:interface" type="interface" identity="PaginatedApiState" parent="~/.framework/src/hooks/useApi.ts"]
|
|
236
|
+
// CIL[DOC-MACRO purpose="Type definition for PaginatedApiState"]
|
|
237
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the fields and shape of the PaginatedApiState interface"]
|
|
238
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
239
|
+
// CIL[DOC-CONTRACT inputs="generic type parameters" outputs="data, loading, error, lastFetched, pagination" errors="" side_effects="none"]
|
|
240
|
+
// CIL[DOC-MICRO logic_summary="Describes the structure of the PaginatedApiState data object" notable_decisions="Extends ApiState with a pagination block"]
|
|
241
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
242
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
243
243
|
interface PaginatedApiState<T> extends ApiState<T[]> {
|
|
244
244
|
pagination: {
|
|
245
245
|
page: number
|
|
@@ -248,39 +248,41 @@ interface PaginatedApiState<T> extends ApiState<T[]> {
|
|
|
248
248
|
itemsPerPage: number
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
|
-
// CIL[
|
|
252
|
-
// CIL[
|
|
253
|
-
// CIL[DOC-
|
|
254
|
-
// CIL[DOC-
|
|
255
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[]"]
|
|
256
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="paginated options interface" errors="none" side_effects="Type definition"]
|
|
257
|
-
// CIL[DOC-MICRO logic_summary="Extends UseApiOptions with itemsPerPage configuration" notable_decisions="[]"]
|
|
258
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
259
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
260
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
261
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
262
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
263
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
251
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for PaginatedApiState'; No verified external callers; imports: none"]
|
|
252
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
253
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
254
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
264
255
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
265
256
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
257
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:PaginatedApiState:interface"]
|
|
258
|
+
|
|
259
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:UsePaginatedApiOptions:interface" type="interface" identity="UsePaginatedApiOptions" parent="~/.framework/src/hooks/useApi.ts"]
|
|
260
|
+
// CIL[DOC-MACRO purpose="Type definition for UsePaginatedApiOptions"]
|
|
261
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the fields and shape of the UsePaginatedApiOptions interface"]
|
|
262
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
263
|
+
// CIL[DOC-CONTRACT inputs="generic type parameters" outputs="immediate, onSuccess, onError, initialData, deps, itemsPerPage" errors="" side_effects="none"]
|
|
264
|
+
// CIL[DOC-MICRO logic_summary="Describes the structure of the UsePaginatedApiOptions data object" notable_decisions="Extends UseApiOptions with pagination settings"]
|
|
265
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
266
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
266
267
|
interface UsePaginatedApiOptions<T> extends UseApiOptions<T[]> {
|
|
267
268
|
itemsPerPage?: number
|
|
268
269
|
}
|
|
269
|
-
// CIL[
|
|
270
|
-
// CIL[
|
|
271
|
-
// CIL[DOC-
|
|
272
|
-
// CIL[DOC-
|
|
273
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[]"]
|
|
274
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="paginated return interface" errors="none" side_effects="Type definition"]
|
|
275
|
-
// CIL[DOC-MICRO logic_summary="Extends UseApiReturn with pagination state and navigation functions" notable_decisions="[]"]
|
|
276
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
277
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
278
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
279
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
280
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
281
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
270
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for UsePaginatedApiOptions'; No verified external callers; imports: none"]
|
|
271
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
272
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
273
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
282
274
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
283
275
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
276
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:UsePaginatedApiOptions:interface"]
|
|
277
|
+
|
|
278
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:UsePaginatedApiReturn:interface" type="interface" identity="UsePaginatedApiReturn" parent="~/.framework/src/hooks/useApi.ts"]
|
|
279
|
+
// CIL[DOC-MACRO purpose="Type definition for UsePaginatedApiReturn"]
|
|
280
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the fields and shape of the UsePaginatedApiReturn interface"]
|
|
281
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
282
|
+
// CIL[DOC-CONTRACT inputs="generic type parameters" outputs="data, loading, error, execute, reset, refetch, pagination, setPage, setItemsPerPage, nextPage, prevPage, hasNextPage, hasPrevPage" errors="" side_effects="none"]
|
|
283
|
+
// CIL[DOC-MICRO logic_summary="Describes the structure of the UsePaginatedApiReturn data object" notable_decisions="Exposes pagination control methods in addition to base useApi return values"]
|
|
284
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
285
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
284
286
|
interface UsePaginatedApiReturn<T> extends UseApiReturn<T[]> {
|
|
285
287
|
pagination: PaginatedApiState<T>['pagination']
|
|
286
288
|
setPage: (page: number) => void
|
|
@@ -290,21 +292,22 @@ interface UsePaginatedApiReturn<T> extends UseApiReturn<T[]> {
|
|
|
290
292
|
hasNextPage: boolean
|
|
291
293
|
hasPrevPage: boolean
|
|
292
294
|
}
|
|
293
|
-
// CIL[
|
|
294
|
-
// CIL[
|
|
295
|
-
// CIL[DOC-
|
|
296
|
-
// CIL[DOC-
|
|
297
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[]"]
|
|
298
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="UsePaginatedApiReturn" errors="throws API errors" side_effects="React state, pagination"]
|
|
299
|
-
// CIL[DOC-MICRO logic_summary="Wraps paginated API calls with state management and navigation functions" notable_decisions="[]"]
|
|
300
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
301
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
302
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
303
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
304
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
305
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
295
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for UsePaginatedApiReturn'; No verified external callers; imports: none"]
|
|
296
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
297
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
298
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
306
299
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
307
300
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
301
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:UsePaginatedApiReturn:interface"]
|
|
302
|
+
|
|
303
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:usePaginatedApi:hook" type="hook" identity="usePaginatedApi" parent="~/.framework/src/hooks/useApi.ts"]
|
|
304
|
+
// CIL[DOC-MACRO purpose="React hook for paginated API fetching"]
|
|
305
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Manage async state and lifecycle for usePaginatedApi"]
|
|
306
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
307
|
+
// CIL[DOC-CONTRACT inputs="apiFunction returning {data: T[], pagination} and UsePaginatedApiOptions<T>" outputs="UsePaginatedApiReturn<T> with pagination controls" errors="Throws on API error after setting state.error" side_effects="Fetches new page when page or itemsPerPage changes"]
|
|
308
|
+
// CIL[DOC-MICRO logic_summary="Manages paginated state and refetches when pagination parameters change" notable_decisions="Resets to page 1 when itemsPerPage changes and exposes nextPage/prevPage helpers"]
|
|
309
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
310
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
308
311
|
export function usePaginatedApi<T>(
|
|
309
312
|
apiFunction: (params: { page: number; itemsPerPage: number; [key: string]: any }) => Promise<{
|
|
310
313
|
data: T[]
|
|
@@ -441,61 +444,64 @@ export function usePaginatedApi<T>(
|
|
|
441
444
|
hasPrevPage
|
|
442
445
|
}
|
|
443
446
|
}
|
|
444
|
-
// CIL[
|
|
445
|
-
// CIL[
|
|
446
|
-
// CIL[DOC-
|
|
447
|
-
// CIL[DOC-
|
|
448
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[]"]
|
|
449
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="mutation state interface" errors="none" side_effects="Type definition"]
|
|
450
|
-
// CIL[DOC-MICRO logic_summary="Simple state interface with data, loading, and error fields for mutations" notable_decisions="[]"]
|
|
451
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
452
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
453
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
454
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
455
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
456
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
447
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React hook for paginated API fetching'; No verified external callers; imports: none"]
|
|
448
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
449
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
450
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
457
451
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
458
452
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
453
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:usePaginatedApi:hook"]
|
|
454
|
+
|
|
455
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:MutationState:interface" type="interface" identity="MutationState" parent="~/.framework/src/hooks/useApi.ts"]
|
|
456
|
+
// CIL[DOC-MACRO purpose="Type definition for MutationState"]
|
|
457
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the fields and shape of the MutationState interface"]
|
|
458
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
459
|
+
// CIL[DOC-CONTRACT inputs="generic type parameters" outputs="data, loading, error" errors="" side_effects="none"]
|
|
460
|
+
// CIL[DOC-MICRO logic_summary="Describes the structure of the MutationState data object" notable_decisions="Uses generics to remain flexible across concrete API payloads"]
|
|
461
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
462
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
459
463
|
interface MutationState<T> {
|
|
460
464
|
data: T | null
|
|
461
465
|
loading: boolean
|
|
462
466
|
error: string | null
|
|
463
467
|
}
|
|
464
|
-
// CIL[
|
|
465
|
-
// CIL[
|
|
466
|
-
// CIL[DOC-
|
|
467
|
-
// CIL[DOC-
|
|
468
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[]"]
|
|
469
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="mutation options interface" errors="none" side_effects="Type definition"]
|
|
470
|
-
// CIL[DOC-MICRO logic_summary="Options for success, error, and settled callbacks with typed parameters" notable_decisions="[]"]
|
|
471
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
472
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
473
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
474
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
475
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
476
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
468
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for MutationState'; No verified external callers; imports: none"]
|
|
469
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
470
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
471
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
477
472
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
478
473
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
474
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:MutationState:interface"]
|
|
475
|
+
|
|
476
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:UseMutationOptions:interface" type="interface" identity="UseMutationOptions" parent="~/.framework/src/hooks/useApi.ts"]
|
|
477
|
+
// CIL[DOC-MACRO purpose="Type definition for UseMutationOptions"]
|
|
478
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the fields and shape of the UseMutationOptions interface"]
|
|
479
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
480
|
+
// CIL[DOC-CONTRACT inputs="generic type parameters" outputs="onSuccess, onError, onSettled" errors="" side_effects="none"]
|
|
481
|
+
// CIL[DOC-MICRO logic_summary="Describes the structure of the UseMutationOptions data object" notable_decisions="Uses generics to remain flexible across concrete API payloads"]
|
|
482
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
483
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
479
484
|
interface UseMutationOptions<T, P> {
|
|
480
485
|
onSuccess?: (data: T) => void
|
|
481
486
|
onError?: (error: string) => void
|
|
482
487
|
onSettled?: () => void
|
|
483
488
|
}
|
|
484
|
-
// CIL[
|
|
485
|
-
// CIL[
|
|
486
|
-
// CIL[DOC-
|
|
487
|
-
// CIL[DOC-
|
|
488
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[]"]
|
|
489
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="mutation return interface" errors="none" side_effects="Type definition"]
|
|
490
|
-
// CIL[DOC-MICRO logic_summary="Returns mutation state, mutate function, and reset function" notable_decisions="[]"]
|
|
491
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
492
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
493
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
494
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
495
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
496
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
489
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for UseMutationOptions'; No verified external callers; imports: none"]
|
|
490
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
491
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
492
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
497
493
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
498
494
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
495
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:UseMutationOptions:interface"]
|
|
496
|
+
|
|
497
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:UseMutationReturn:interface" type="interface" identity="UseMutationReturn" parent="~/.framework/src/hooks/useApi.ts"]
|
|
498
|
+
// CIL[DOC-MACRO purpose="Type definition for UseMutationReturn"]
|
|
499
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define the fields and shape of the UseMutationReturn interface"]
|
|
500
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
501
|
+
// CIL[DOC-CONTRACT inputs="generic type parameters" outputs="data, loading, error, mutate, reset" errors="" side_effects="none"]
|
|
502
|
+
// CIL[DOC-MICRO logic_summary="Describes the structure of the UseMutationReturn data object" notable_decisions="Provides a mutate trigger and reset for optimistic UIs"]
|
|
503
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
504
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
499
505
|
interface UseMutationReturn<T, P> {
|
|
500
506
|
data: T | null
|
|
501
507
|
loading: boolean
|
|
@@ -503,21 +509,22 @@ interface UseMutationReturn<T, P> {
|
|
|
503
509
|
mutate: (params: P) => Promise<T>
|
|
504
510
|
reset: () => void
|
|
505
511
|
}
|
|
506
|
-
// CIL[
|
|
507
|
-
// CIL[
|
|
508
|
-
// CIL[DOC-
|
|
509
|
-
// CIL[DOC-
|
|
510
|
-
// CIL[DOC-CONTEXT module="useApi" layer="frontend-hook" related_files="[]"]
|
|
511
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="UseMutationReturn" errors="throws mutation errors" side_effects="React state, callbacks"]
|
|
512
|
-
// CIL[DOC-MICRO logic_summary="Wraps async write operations with loading state and lifecycle callbacks" notable_decisions="[]"]
|
|
513
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
514
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
515
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
516
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
517
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
518
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
512
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Type definition for UseMutationReturn'; No verified external callers; imports: none"]
|
|
513
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
514
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
515
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
519
516
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
520
517
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
518
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:UseMutationReturn:interface"]
|
|
519
|
+
|
|
520
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useApi.ts:useMutation:hook" type="hook" identity="useMutation" parent="~/.framework/src/hooks/useApi.ts"]
|
|
521
|
+
// CIL[DOC-MACRO purpose="React hook for mutation operations"]
|
|
522
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Manage async state and lifecycle for useMutation"]
|
|
523
|
+
// CIL[DOC-CONTEXT module="hooks" layer="frontend" related_files=".framework/src/hooks/useApi.ts"]
|
|
524
|
+
// CIL[DOC-CONTRACT inputs="mutationFunction(params: P) => Promise<T> and UseMutationOptions<T, P>" outputs="UseMutationReturn<T, P> with data, loading, error, mutate, reset" errors="Throws mutation error after setting state.error" side_effects="Updates React state and calls onSuccess/onError/onSettled callbacks"]
|
|
525
|
+
// CIL[DOC-MICRO logic_summary="Encapsulates a mutation request and reset lifecycle" notable_decisions="Calls onSettled in a finally block to allow cleanup after success or failure"]
|
|
526
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
527
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
521
528
|
export function useMutation<T, P = void>(
|
|
522
529
|
mutationFunction: (params: P) => Promise<T>,
|
|
523
530
|
options: UseMutationOptions<T, P> = {}
|
|
@@ -572,4 +579,10 @@ export function useMutation<T, P = void>(
|
|
|
572
579
|
reset
|
|
573
580
|
}
|
|
574
581
|
}
|
|
575
|
-
// CIL[
|
|
582
|
+
// CIL[DOC-VECTOR type="context" content="purpose='React hook for mutation operations'; No verified external callers; imports: none"]
|
|
583
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
584
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
585
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
586
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
587
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
588
|
+
// CIL[END stable_id="~/.framework/src/hooks/useApi.ts:useMutation:hook"]
|
|
@@ -1,35 +1,31 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useAppPath.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/hooks/useAppPath.ts"]
|
|
2
|
+
// CIL[DOC-AUDIENCE audience="internal"]
|
|
3
|
+
// CIL[DOC-CONTEXT module="useAppPath" layer="hooks" related_files=".framework/src/contexts/AppContext.tsx"]
|
|
4
|
+
// CIL[DOC-CONTRACT inputs="" outputs="" errors="" side_effects=""]
|
|
5
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
6
|
+
// CIL[DOC-MACRO purpose="import the current-app context hook dependency"]
|
|
7
|
+
// CIL[DOC-MICRO logic_summary="imports useCurrentApp from AppContext" notable_decisions=""]
|
|
8
|
+
// CIL[DOC-RESPONSIBILITY responsibility="provide the app context dependency used by useAppPath"]
|
|
9
|
+
// CIL[DOC-STABILITY stable]
|
|
10
|
+
|
|
1
11
|
|
|
2
|
-
// CIL[BEGIN chunk_id="useapppath_module_header_1783740744" type="module_header" identity="imports" parent="none"]
|
|
3
|
-
// CIL[DOC-MACRO purpose="Import app context hook for route prefix access"]
|
|
4
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide access to current app configuration"]
|
|
5
|
-
// CIL[DOC-CONTEXT module="useAppPath" layer="frontend-hook" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
6
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="useCurrentApp hook" errors="none" side_effects="Module imports"]
|
|
7
|
-
// CIL[DOC-MICRO logic_summary="Imports useCurrentApp hook from AppContext for app-specific routing" notable_decisions="[]"]
|
|
8
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
9
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
10
|
-
// CIL[DOC-AUDIENCE audience="developer"]
|
|
11
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
12
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
13
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
14
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
15
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
16
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
17
12
|
import { useCurrentApp } from '../contexts/AppContext'
|
|
18
|
-
// CIL[
|
|
19
|
-
// CIL[
|
|
20
|
-
// CIL[DOC-
|
|
21
|
-
// CIL[DOC-
|
|
22
|
-
// CIL[DOC-CONTEXT module="useAppPath" layer="frontend-hook" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
23
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="path helper function" errors="none" side_effects="React hook dependency"]
|
|
24
|
-
// CIL[DOC-MICRO logic_summary="Creates path function that prepends app route_prefix to root-relative paths" notable_decisions="[]"]
|
|
25
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
26
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
27
|
-
// CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 7. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/components/ui/dialog.tsx, \."]
|
|
28
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 7. Total affected: 7."]
|
|
29
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
30
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
13
|
+
// CIL[DOC-VECTOR type="context" content="purpose='import the current-app context hook dependency'; No verified external callers; imports: .framework/src/contexts/AppContext.tsx"]
|
|
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"]
|
|
31
17
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
32
18
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
19
|
+
// CIL[END stable_id="~/.framework/src/hooks/useAppPath.ts:module_header:module_header"]
|
|
20
|
+
|
|
21
|
+
// CIL[BEGIN stable_id="~/.framework/src/hooks/useAppPath.ts:useAppPath:hook" type="hook" identity="useAppPath" parent="~/.framework/src/hooks/useAppPath.ts"]
|
|
22
|
+
// CIL[DOC-CONTEXT module="useAppPath" layer="hooks" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/hooks/useAppPath.ts"]
|
|
23
|
+
// CIL[DOC-CONTRACT inputs="path: string" outputs="string: prefixed and normalized path" errors="none" side_effects="none"]
|
|
24
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
25
|
+
// CIL[DOC-MACRO purpose="return a path prefix function that applies the current app route prefix"]
|
|
26
|
+
// CIL[DOC-MICRO logic_summary="strips trailing slash from app.route_prefix; special-cases root '/'; otherwise ensures leading slash and concatenates" notable_decisions="treats '/' as special root path; only prefixes when a non-root route_prefix exists"]
|
|
27
|
+
// CIL[DOC-RESPONSIBILITY responsibility="produce an application-prefixed, slash-normalized path string"]
|
|
28
|
+
// CIL[DOC-STABILITY stable]
|
|
33
29
|
export function useAppPath(): (path: string) => string {
|
|
34
30
|
const app = useCurrentApp()
|
|
35
31
|
|
|
@@ -44,4 +40,10 @@ export function useAppPath(): (path: string) => string {
|
|
|
44
40
|
return `${prefix}${normalized}`
|
|
45
41
|
}
|
|
46
42
|
}
|
|
47
|
-
// CIL[
|
|
43
|
+
// CIL[DOC-VECTOR type="context" content="purpose='return a path prefix function that applies the current app route prefix'; No verified external callers; imports: .framework/src/contexts/AppContext.tsx"]
|
|
44
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
45
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
46
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
47
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
48
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
49
|
+
// CIL[END stable_id="~/.framework/src/hooks/useAppPath.ts:useAppPath:hook"]
|