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
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module delete
|
|
3
|
+
* @audience both
|
|
4
|
+
* @layer shared-core
|
|
5
|
+
* @stability stable
|
|
6
|
+
*
|
|
7
|
+
* This module handles the deletion of knowledge base entries within the MCP framework. It interacts with the admin database and utilizes the McpServer for server-side operations. INVARIANT: Only authorized admin users can invoke this deletion process.
|
|
8
|
+
*
|
|
9
|
+
* @seeAlso adminDb (provides access to the admin database).
|
|
10
|
+
* @seeAlso kbRevoke (handles knowledge base revocation logic).
|
|
11
|
+
* @seeAlso adminRemove (performs the actual removal of data from admin records).
|
|
12
|
+
*
|
|
13
|
+
* @cil-generated
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/delete.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/mcp/tools/kb/delete.ts"]
|
|
17
|
+
// CIL[DOC-MACRO purpose="Knowledge base entry deletion module for the MCP framework"]
|
|
18
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Delete KB articles through admin-data and revoke their embeddings"]
|
|
19
|
+
// CIL[DOC-CONTEXT module="kb-delete" layer="shared-core" related_files=".framework/functions/admin-data.ts,.framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
|
|
20
|
+
// CIL[DOC-CONTRACT inputs="server, id, account_id, hard" outputs="deletion and revocation result" errors="invalid UUID, admin errors, revoke errors" side_effects="admin data removal and embedding revocation"]
|
|
21
|
+
// CIL[DOC-MICRO logic_summary="Provides tool registration and context building for KB article deletion" notable_decisions="Only authorized admin users can invoke deletion"]
|
|
22
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
23
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
24
|
+
// CIL[DOC-AUDIENCE audience="both"]
|
|
25
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
26
|
+
import { z } from 'zod'
|
|
27
|
+
import { adminDb } from '../../shared/db.js'
|
|
28
|
+
import { remove as adminRemove } from '../../../functions/admin-data.js'
|
|
29
|
+
import { kbRevoke } from '../../shared/kb.js'
|
|
30
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Knowledge base entry deletion module for the MCP framework'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/functions/admin-data.ts,.framework/mcp/shared/kb.ts"]
|
|
31
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
32
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
33
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
34
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
35
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
36
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/delete.ts:module_header:module_header"]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Builds a context object for the knowledge base operations, including request metadata and account information. This function is essential for tracking requests and associating them with specific accounts.
|
|
41
|
+
*
|
|
42
|
+
* @inputSpec
|
|
43
|
+
* - accountId: string (required) — The ID of the account associated with the context.
|
|
44
|
+
* - query: any (required) — The query parameters for the operation.
|
|
45
|
+
* @outputSpec any — An object containing request metadata, account information, and the provided query.
|
|
46
|
+
* @sideEffects none
|
|
47
|
+
* @stability internal
|
|
48
|
+
* @cil-generated
|
|
49
|
+
*/
|
|
50
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/delete.ts:buildCtx:function" type="function" identity="buildCtx" parent="~/.framework/mcp/tools/kb/delete.ts"]
|
|
51
|
+
// CIL[DOC-MACRO purpose="Builds a context object for knowledge base operations"]
|
|
52
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Constructs a request context with metadata, account, and query"]
|
|
53
|
+
// CIL[DOC-CONTEXT module="kb-delete" layer="shared-core" related_files=".framework/functions/admin-data.ts,.framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/delete.ts"]
|
|
54
|
+
// CIL[DOC-CONTRACT inputs="accountId: string, query: any" outputs="context object" errors="none" side_effects="none"]
|
|
55
|
+
// CIL[DOC-MICRO logic_summary="Creates a context with machine principal, admin database, and provided query" notable_decisions="Uses 'kb-mcp' principal with system_admin role"]
|
|
56
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
57
|
+
// CIL[DOC-STABILITY stability="internal"]
|
|
58
|
+
function buildCtx(accountId: string, query: any) {
|
|
59
|
+
return {
|
|
60
|
+
requestId: `kb-mcp-${Date.now()}`,
|
|
61
|
+
accountId,
|
|
62
|
+
principal: {
|
|
63
|
+
id: 'kb-mcp',
|
|
64
|
+
type: 'machine' as const,
|
|
65
|
+
roles: [{ slug: 'system_admin', is_system: true }]
|
|
66
|
+
},
|
|
67
|
+
db: adminDb,
|
|
68
|
+
trace: undefined,
|
|
69
|
+
query,
|
|
70
|
+
} as any
|
|
71
|
+
}
|
|
72
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Builds a context object for knowledge base operations'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/functions/admin-data.ts,.framework/mcp/shared/kb.ts"]
|
|
73
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
74
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
75
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
76
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
77
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
78
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/delete.ts:buildCtx:function"]
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Registers a tool for deleting a KB article and revoking its embeddings. This function facilitates the removal of articles from the admin data system.
|
|
83
|
+
*
|
|
84
|
+
* @macro Tool registration function for KB article deletion.
|
|
85
|
+
* @micro Builds context for deletion and revocation operations, invoking external services for both actions.
|
|
86
|
+
* @inputSpec
|
|
87
|
+
* - server: McpServer (required) — The server instance to register the tool with.
|
|
88
|
+
* - id: string (required) — Item UUID.
|
|
89
|
+
* - account_id: string (required) — Account UUID for audit scope.
|
|
90
|
+
* - hard: boolean (optional) — Permanently delete the record.
|
|
91
|
+
* @outputSpec Promise<{ content: Array<{ type: string, text: string }> }> — Returns a structured response containing the results of the delete and revoke operations.
|
|
92
|
+
* @sideEffects Calls to external services for article deletion and embedding revocation.
|
|
93
|
+
* @stability internal
|
|
94
|
+
* @calls buildCtx, adminRemove, kbRevoke
|
|
95
|
+
* @cil-generated
|
|
96
|
+
*/
|
|
97
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/delete.ts:register:function" type="function" identity="register" parent="~/.framework/mcp/tools/kb/delete.ts"]
|
|
98
|
+
// CIL[DOC-MACRO purpose="Registers a tool for deleting a KB article and revoking its embeddings"]
|
|
99
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Register the spine_kb_delete tool on an McpServer"]
|
|
100
|
+
// CIL[DOC-CONTEXT module="kb-delete" layer="shared-core" related_files=".framework/functions/admin-data.ts,.framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/delete.ts"]
|
|
101
|
+
// CIL[DOC-CONTRACT inputs="server: McpServer" outputs="Promise<{ content: Array<{ type: string, text: string }> }>" errors="invalid UUID, admin errors, revoke errors" side_effects="Calls adminRemove and kbRevoke"]
|
|
102
|
+
// CIL[DOC-MICRO logic_summary="Registers the tool, builds context, calls adminRemove and kbRevoke, and returns combined result" notable_decisions="Soft delete by default; hard delete controlled by 'hard' flag"]
|
|
103
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
104
|
+
// CIL[DOC-STABILITY stability="internal"]
|
|
105
|
+
export function register(server: McpServer) {
|
|
106
|
+
server.registerTool(
|
|
107
|
+
'spine_kb_delete',
|
|
108
|
+
{
|
|
109
|
+
description: 'Delete a KB article through admin-data and revoke its embeddings.',
|
|
110
|
+
inputSchema: z.object({
|
|
111
|
+
id: z.string().uuid().describe('Item UUID'),
|
|
112
|
+
account_id: z.string().uuid().describe('Account UUID for audit scope'),
|
|
113
|
+
hard: z.boolean().optional().describe('Permanently delete the record'),
|
|
114
|
+
}),
|
|
115
|
+
},
|
|
116
|
+
async ({ id, account_id, hard }) => {
|
|
117
|
+
const ctx = buildCtx(account_id, {
|
|
118
|
+
entity: 'items',
|
|
119
|
+
id,
|
|
120
|
+
soft: hard ? 'false' : 'true',
|
|
121
|
+
method: 'DELETE',
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
const remove = await adminRemove(ctx, {})
|
|
125
|
+
|
|
126
|
+
const revokeCtx = buildCtx(account_id, {})
|
|
127
|
+
const revoke = await kbRevoke(revokeCtx, { id })
|
|
128
|
+
|
|
129
|
+
return { content: [{ type: 'text', text: JSON.stringify({ remove, revoke }) }] }
|
|
130
|
+
}
|
|
131
|
+
)
|
|
132
|
+
}
|
|
133
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Registers a tool for deleting a KB article and revoking its embeddings'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/functions/admin-data.ts,.framework/mcp/shared/kb.ts"]
|
|
134
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
135
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
136
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
137
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
138
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
139
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/delete.ts:register:function"]
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/index.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/mcp/tools/kb/index.ts"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Re-export and aggregate Knowledge Base MCP tool modules (search, ingest, revoke, reindex, publish, upsert, delete, list-types) for unified server registration."]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the integration surface that imports all kb tool submodules and exposes a single register() entry point for the MCP server."]
|
|
4
|
+
// CIL[DOC-CONTEXT module="index" layer="shared-core" related_files=".framework/mcp/tools/kb/delete.ts,.framework/mcp/tools/kb/ingest.ts,.framework/mcp/tools/kb/list-types.ts,.framework/mcp/tools/kb/publish.ts,.framework/mcp/tools/kb/reindex.ts,.framework/mcp/tools/kb/revoke.ts,.framework/mcp/tools/kb/search.ts,.framework/mcp/tools/kb/upsert.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Imports the McpServer type and all sibling tool modules; contains no runtime logic itself." notable_decisions="Tool modules are imported as side-effect namespaces for their register() functions."]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stable]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="both"]
|
|
10
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
11
|
+
import * as search from './search.js'
|
|
12
|
+
import * as ingest from './ingest.js'
|
|
13
|
+
import * as revoke from './revoke.js'
|
|
14
|
+
import * as reindex from './reindex.js'
|
|
15
|
+
import * as publish from './publish.js'
|
|
16
|
+
import * as upsert from './upsert.js'
|
|
17
|
+
import * as remove from './delete.js'
|
|
18
|
+
import * as listTypes from './list-types.js'
|
|
19
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Re-export and aggregate Knowledge Base MCP tool modules (search, ingest, revoke, reindex, publish, upsert, delete, list-types) for unified server registration.'; No verified external callers; imports: .framework/mcp/tools/kb/search.ts,.framework/mcp/tools/kb/ingest.ts,.framework/mcp/tools/kb/revoke.ts"]
|
|
20
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
21
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
22
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
23
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
24
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
25
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/index.ts:module_header:module_header"]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/index.ts:register:function" type="function" identity="register" parent="~/.framework/mcp/tools/kb/index.ts"]
|
|
29
|
+
// CIL[DOC-MACRO purpose="Register all Knowledge Base MCP tool handlers on a provided McpServer instance."]
|
|
30
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Initialize and attach search, ingest, revoke, reindex, publish, upsert, remove and listTypes tool registrations to the server."]
|
|
31
|
+
// CIL[DOC-CONTEXT module="index" layer="shared-core" related_files=".framework/mcp/tools/kb/delete.ts,.framework/mcp/tools/kb/index.ts,.framework/mcp/tools/kb/ingest.ts,.framework/mcp/tools/kb/list-types.ts,.framework/mcp/tools/kb/publish.ts,.framework/mcp/tools/kb/reindex.ts,.framework/mcp/tools/kb/revoke.ts,.framework/mcp/tools/kb/search.ts,.framework/mcp/tools/kb/upsert.ts"]
|
|
32
|
+
// CIL[DOC-CONTRACT inputs="server: McpServer (required)" outputs="void" errors="Exceptions thrown by submodule register() calls propagate to the caller." side_effects="Tool handlers are registered on the supplied McpServer."]
|
|
33
|
+
// CIL[DOC-MICRO logic_summary="Calls each submodule's register() method with the server argument, delegating initialization to the individual tool modules." notable_decisions="Registration order matches the import list; each tool owns its own handler attachment."]
|
|
34
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
35
|
+
// CIL[DOC-STABILITY stable]
|
|
36
|
+
export function register(server: McpServer) {
|
|
37
|
+
search.register(server)
|
|
38
|
+
ingest.register(server)
|
|
39
|
+
revoke.register(server)
|
|
40
|
+
reindex.register(server)
|
|
41
|
+
publish.register(server)
|
|
42
|
+
upsert.register(server)
|
|
43
|
+
remove.register(server)
|
|
44
|
+
listTypes.register(server)
|
|
45
|
+
}
|
|
46
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Register all Knowledge Base MCP tool handlers on a provided McpServer instance.'; No verified external callers; imports: .framework/mcp/tools/kb/search.ts,.framework/mcp/tools/kb/ingest.ts,.framework/mcp/tools/kb/revoke.ts"]
|
|
47
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
48
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
49
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
50
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
51
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
52
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/index.ts:register:function"]
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/ingest.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/mcp/tools/kb/ingest.ts"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Knowledge base data ingestion module for MCP; integrates external KB sources and ensures ingested data passes schema and validation checks before storage."]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the kb ingest entry point and validation plumbing for the MCP server."]
|
|
4
|
+
// CIL[DOC-MICRO logic_summary="Exports the register function and serves as the integration point for the spine_kb_ingest tool." notable_decisions="Uses JSDoc metadata to document invariants and related files; delegates actual database and embedding work to shared modules."]
|
|
5
|
+
// CIL[DOC-CONTEXT module="ingest" layer="shared-core" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
|
|
6
|
+
// CIL[DOC-CONTRACT inputs="none (module import)" outputs="register function for MCP tool registration" errors="none (initialization)" side_effects="none (definitions only)"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="both"]
|
|
10
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
11
|
+
import { z } from 'zod'
|
|
12
|
+
import { adminDb } from '../../shared/db.js'
|
|
13
|
+
import { kbIngest } from '../../shared/kb.js'
|
|
14
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Knowledge base data ingestion module for MCP; integrates external KB sources and ensures ingested data passes schema and validation checks before storage.'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
|
|
15
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
16
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
17
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
18
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
19
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
20
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/ingest.ts:module_header:module_header"]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/ingest.ts:buildCtx:function" type="function" identity="buildCtx" parent="~/.framework/mcp/tools/kb/ingest.ts"]
|
|
24
|
+
// CIL[DOC-MACRO purpose="Build a request context for a given account."]
|
|
25
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Create and return a processing context containing request ID, principal, db, and trace for kbIngest operations."]
|
|
26
|
+
// CIL[DOC-MICRO logic_summary="Constructs a machine principal with the system_admin role, prefixes a request ID, and returns the context object with adminDb." notable_decisions="Uses type assertion `as any` and `machine` as const for principal; sets trace to undefined."]
|
|
27
|
+
// CIL[DOC-CONTEXT module="ingest" layer="shared-core" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/ingest.ts"]
|
|
28
|
+
// CIL[DOC-CONTRACT inputs="accountId: string" outputs="object { requestId, accountId, principal, db, trace }" errors="none" side_effects="none"]
|
|
29
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
30
|
+
// CIL[DOC-STABILITY stability="internal"]
|
|
31
|
+
function buildCtx(accountId: string) {
|
|
32
|
+
return {
|
|
33
|
+
requestId: `kb-mcp-${Date.now()}`,
|
|
34
|
+
accountId,
|
|
35
|
+
principal: {
|
|
36
|
+
id: 'kb-mcp',
|
|
37
|
+
type: 'machine' as const,
|
|
38
|
+
roles: [{ slug: 'system_admin', is_system: true }]
|
|
39
|
+
},
|
|
40
|
+
db: adminDb,
|
|
41
|
+
trace: undefined,
|
|
42
|
+
} as any
|
|
43
|
+
}
|
|
44
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Build a request context for a given account.'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
|
|
45
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
46
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
47
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
48
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
49
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
50
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/ingest.ts:buildCtx:function"]
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/ingest.ts:register:function" type="function" identity="register" parent="~/.framework/mcp/tools/kb/ingest.ts"]
|
|
54
|
+
// CIL[DOC-MACRO purpose="Register the spine_kb_ingest tool on an MCP server to generate and store embeddings for published KB items."]
|
|
55
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Bind a Zod-validated tool to the server that accepts id and account_id and invokes kbIngest with a built context."]
|
|
56
|
+
// CIL[DOC-MICRO logic_summary="Defines tool metadata and an async handler that builds a context and awaits kbIngest, returning the result wrapped as text content." notable_decisions="Uses Zod for input validation; builds the context with buildCtx; returns JSON stringified result in MCP text content."]
|
|
57
|
+
// CIL[DOC-CONTEXT module="ingest" layer="shared-core" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/ingest.ts"]
|
|
58
|
+
// CIL[DOC-CONTRACT inputs="server: McpServer" outputs="Promise<{ content: Array<{ type: 'text', text: string }> }>" errors="throws if validation or kbIngest fails" side_effects="Registers a tool with the server"]
|
|
59
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
60
|
+
// CIL[DOC-STABILITY stability="internal"]
|
|
61
|
+
export function register(server: McpServer) {
|
|
62
|
+
server.registerTool(
|
|
63
|
+
'spine_kb_ingest',
|
|
64
|
+
{
|
|
65
|
+
description: 'Generate and store embeddings for a published KB item.',
|
|
66
|
+
inputSchema: z.object({
|
|
67
|
+
id: z.string().uuid().describe('Item UUID'),
|
|
68
|
+
account_id: z.string().uuid().describe('Account UUID for audit scope'),
|
|
69
|
+
}),
|
|
70
|
+
},
|
|
71
|
+
async ({ id, account_id }) => {
|
|
72
|
+
const ctx = buildCtx(account_id)
|
|
73
|
+
const result = await kbIngest(ctx, { id })
|
|
74
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }] }
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Register the spine_kb_ingest tool on an MCP server to generate and store embeddings for published KB items.'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
|
|
79
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
80
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
81
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
82
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
83
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
84
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/ingest.ts:register:function"]
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/list-types.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/mcp/tools/kb/list-types.ts"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Provides module-level JSDoc and imports for the list-types KB tool"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Documents the module scope, audience, and dependencies for the MCP KB list-types tool"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="list-types" layer="shared-core" related_files=".framework/mcp/shared/db.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Defines module metadata and imports required for the tool" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="both"]
|
|
10
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
11
|
+
import { z } from 'zod'
|
|
12
|
+
import { adminDb } from '../../shared/db.js'
|
|
13
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Provides module-level JSDoc and imports for the list-types KB tool'; No verified external callers; imports: .framework/mcp/shared/db.ts"]
|
|
14
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
15
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
16
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
17
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
18
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
19
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/list-types.ts:module_header:module_header"]
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @module list-types
|
|
23
|
+
* @audience both
|
|
24
|
+
* @layer shared-core
|
|
25
|
+
* @stability stable
|
|
26
|
+
*
|
|
27
|
+
* This module defines types for handling keyboard input in the MCP framework, facilitating the interaction between the server and client components. It ensures that the data structures used for keyboard events are validated and conform to the expected formats. INVARIANT: All keyboard events must be processed through the defined types to maintain consistency across the application.
|
|
28
|
+
*
|
|
29
|
+
* @seeAlso adminDb.js (provides database access for admin operations)
|
|
30
|
+
* @seeAlso @modelcontextprotocol/sdk/server/mcp.js (core SDK for server interactions)
|
|
31
|
+
* @seeAlso zod (used for data validation)
|
|
32
|
+
*
|
|
33
|
+
* @cil-generated
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/list-types.ts:register:function" type="function" identity="register" parent="~/.framework/mcp/tools/kb/list-types.ts"]
|
|
38
|
+
// CIL[DOC-MACRO purpose="Registers the spine_kb_list_types tool on an McpServer"]
|
|
39
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Bind a named MCP tool that queries installed KB type slugs and their scopes"]
|
|
40
|
+
// CIL[DOC-CONTEXT module="list-types" layer="shared-core" related_files=".framework/mcp/shared/db.ts,.framework/mcp/tools/kb/list-types.ts"]
|
|
41
|
+
// CIL[DOC-CONTRACT inputs="server: McpServer, app_id?: string" outputs="Promise<{ content: Array<{ type: 'text', text: string }> }>" errors="Error on database query failure" side_effects="Database read from public.types"]
|
|
42
|
+
// CIL[DOC-MICRO logic_summary="Query active types with slug ilike 'kb-%', optionally filter by app_id, and return a JSON list of slug, app_id, and scope" notable_decisions="[]"]
|
|
43
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
44
|
+
// CIL[DOC-STABILITY stability="internal"]
|
|
45
|
+
export function register(server: McpServer) {
|
|
46
|
+
server.registerTool(
|
|
47
|
+
'spine_kb_list_types',
|
|
48
|
+
{
|
|
49
|
+
description: 'List installed KB type slugs and their scopes.',
|
|
50
|
+
inputSchema: z.object({
|
|
51
|
+
app_id: z.string().uuid().optional().describe('Filter by app UUID'),
|
|
52
|
+
}),
|
|
53
|
+
},
|
|
54
|
+
async ({ app_id }) => {
|
|
55
|
+
let query = adminDb
|
|
56
|
+
.from('types')
|
|
57
|
+
.select('slug, app_id, design_schema')
|
|
58
|
+
.eq('kind', 'item')
|
|
59
|
+
.eq('is_active', true)
|
|
60
|
+
.ilike('slug', 'kb-%')
|
|
61
|
+
|
|
62
|
+
if (app_id) {
|
|
63
|
+
query = query.eq('app_id', app_id)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const { data, error } = await query
|
|
67
|
+
if (error) throw error
|
|
68
|
+
|
|
69
|
+
const types = (data || []).map((t: any) => ({
|
|
70
|
+
slug: t.slug,
|
|
71
|
+
app_id: t.app_id,
|
|
72
|
+
scope: t.design_schema?.scope || 'account',
|
|
73
|
+
}))
|
|
74
|
+
|
|
75
|
+
return { content: [{ type: 'text', text: JSON.stringify({ types }) }] }
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Registers the spine_kb_list_types tool on an McpServer'; No verified external callers; imports: .framework/mcp/shared/db.ts"]
|
|
80
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
81
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
82
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
83
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
84
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
85
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/list-types.ts:register:function"]
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Registers a tool to list installed KB type slugs and their scopes for a given application. This function facilitates querying and retrieving specific type information from the database.
|
|
89
|
+
*
|
|
90
|
+
* @macro Tool registration function for listing KB types.
|
|
91
|
+
* @micro Constructs a database query based on optional application ID filtering.
|
|
92
|
+
* @inputSpec
|
|
93
|
+
* server: McpServer (required) — the server instance to register the tool with.
|
|
94
|
+
* app_id: string (optional) — Filter by app UUID.
|
|
95
|
+
* @outputSpec Promise<{ content: Array<{ type: 'text', text: string }> }> — Returns a structured response containing the list of types.
|
|
96
|
+
* @throws Error — if the database query encounters an error.
|
|
97
|
+
* @sideEffects Database read operation to fetch type data.
|
|
98
|
+
* @stability internal
|
|
99
|
+
* @calls adminDb.from('types')
|
|
100
|
+
* @errorHandling throws error if the database query fails
|
|
101
|
+
* @cil-generated
|
|
102
|
+
*/
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/publish.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/mcp/tools/kb/publish.ts"]
|
|
2
|
+
// CIL[DOC-AUDIENCE audience="both"]
|
|
3
|
+
// CIL[DOC-MACRO purpose="Handle the publishing of knowledge base content within the MCP framework"]
|
|
4
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Integrate with the McpServer and the admin database to update and ingest knowledge base content; ensure the knowledge base is properly formatted before ingestion"]
|
|
5
|
+
// CIL[DOC-CONTEXT module="publish" layer="shared-core" related_files=".framework/functions/admin-data.ts,.framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
|
|
6
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
|
|
7
|
+
// CIL[DOC-MICRO logic_summary="Provides the module header and imports dependencies for the publish module" notable_decisions="Knowledge base must be properly formatted before ingestion"]
|
|
8
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
9
|
+
// CIL[DOC-STABILITY stable]
|
|
10
|
+
|
|
11
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
12
|
+
import { z } from 'zod'
|
|
13
|
+
import { adminDb } from '../../shared/db.js'
|
|
14
|
+
import { update as adminUpdate } from '../../../functions/admin-data.js'
|
|
15
|
+
import { kbIngest } from '../../shared/kb.js'
|
|
16
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Handle the publishing of knowledge base content within the MCP framework'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/functions/admin-data.ts,.framework/mcp/shared/kb.ts"]
|
|
17
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
18
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
19
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
20
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
21
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
22
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/publish.ts:module_header:module_header"]
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/publish.ts:buildctx:function" type="function" identity="buildCtx" parent="~/.framework/mcp/tools/kb/publish.ts"]
|
|
26
|
+
// CIL[DOC-AUDIENCE audience="internal"]
|
|
27
|
+
// CIL[DOC-MACRO purpose="Create a context object for a specific account"]
|
|
28
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Encapsulate relevant request and query information to standardize the context structure for operations within the module"]
|
|
29
|
+
// CIL[DOC-CONTEXT module="publish" layer="shared-core" related_files=".framework/functions/admin-data.ts,.framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/publish.ts"]
|
|
30
|
+
// CIL[DOC-CONTRACT inputs="accountId (string), query (any)" outputs="object containing requestId, accountId, principal, db, trace, and query" errors="none" side_effects="none"]
|
|
31
|
+
// CIL[DOC-MICRO logic_summary="Build a request context using the provided account and query, assigning a generated requestId, a machine principal with system_admin role, the adminDb client, and the query" notable_decisions=""]
|
|
32
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
33
|
+
// CIL[DOC-STABILITY internal]
|
|
34
|
+
|
|
35
|
+
function buildCtx(accountId: string, query: any) {
|
|
36
|
+
return {
|
|
37
|
+
requestId: `kb-mcp-${Date.now()}`,
|
|
38
|
+
accountId,
|
|
39
|
+
principal: {
|
|
40
|
+
id: 'kb-mcp',
|
|
41
|
+
type: 'machine' as const,
|
|
42
|
+
roles: [{ slug: 'system_admin', is_system: true }]
|
|
43
|
+
},
|
|
44
|
+
db: adminDb,
|
|
45
|
+
trace: undefined,
|
|
46
|
+
query,
|
|
47
|
+
} as any
|
|
48
|
+
}
|
|
49
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Create a context object for a specific account'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/functions/admin-data.ts,.framework/mcp/shared/kb.ts"]
|
|
50
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
51
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
52
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
53
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
54
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
55
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/publish.ts:buildctx:function"]
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/publish.ts:register:function" type="function" identity="register" parent="~/.framework/mcp/tools/kb/publish.ts"]
|
|
59
|
+
// CIL[DOC-AUDIENCE audience="internal"]
|
|
60
|
+
// CIL[DOC-MACRO purpose="Register the spine_kb_publish tool for managing KB item publishing"]
|
|
61
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Register a tool that sets a KB item status to published and triggers embedding generation through admin-data"]
|
|
62
|
+
// CIL[DOC-CONTEXT module="publish" layer="shared-core" related_files=".framework/functions/admin-data.ts,.framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/publish.ts"]
|
|
63
|
+
// CIL[DOC-CONTRACT inputs="server (McpServer)" outputs="Promise<{ content: Array<{ type: string, text: string }> }>" errors="from adminUpdate or kbIngest" side_effects="DB writes for updating item status and generating embeddings"]
|
|
64
|
+
// CIL[DOC-MICRO logic_summary="Register a tool that accepts an item UUID and account UUID, builds a PATCH context for admin-data, updates status to published, builds an ingest context, and calls kbIngest to generate embeddings" notable_decisions="Returns a structured MCP content response"]
|
|
65
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
66
|
+
// CIL[DOC-STABILITY internal]
|
|
67
|
+
|
|
68
|
+
export function register(server: McpServer) {
|
|
69
|
+
server.registerTool(
|
|
70
|
+
'spine_kb_publish',
|
|
71
|
+
{
|
|
72
|
+
description: 'Set a KB item status to published through admin-data and generate embeddings.',
|
|
73
|
+
inputSchema: z.object({
|
|
74
|
+
id: z.string().uuid().describe('Item UUID'),
|
|
75
|
+
account_id: z.string().uuid().describe('Account UUID for audit scope'),
|
|
76
|
+
}),
|
|
77
|
+
},
|
|
78
|
+
async ({ id, account_id }) => {
|
|
79
|
+
const ctx = buildCtx(account_id, {
|
|
80
|
+
entity: 'items',
|
|
81
|
+
id,
|
|
82
|
+
method: 'PATCH',
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
const record = await adminUpdate(ctx, { status: 'published' })
|
|
86
|
+
|
|
87
|
+
const ingestCtx = buildCtx(account_id, {})
|
|
88
|
+
const ingest = await kbIngest(ingestCtx, { id })
|
|
89
|
+
|
|
90
|
+
return { content: [{ type: 'text', text: JSON.stringify({ record, ingest }) }] }
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
}
|
|
94
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Register the spine_kb_publish tool for managing KB item publishing'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/functions/admin-data.ts,.framework/mcp/shared/kb.ts"]
|
|
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"]
|
|
98
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
99
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
100
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/publish.ts:register:function"]
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/reindex.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/mcp/tools/kb/reindex.ts"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="MCP KB reindex tool registration"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provides the register function and buildCtx helper to wire the kb reindex MCP tool."]
|
|
4
|
+
// CIL[DOC-CONTEXT module="mcp-tools-kb" layer="tool" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="server: McpServer" outputs="registered kb reindex tool" errors="runtime registration failures" side_effects="registers 'spine_kb_reindex' tool"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Imports McpServer, zod, adminDb, and kbReindex; exports register and buildCtx." notable_decisions="Uses a machine principal with system-admin role for internal requests."]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="maintainer"]
|
|
10
|
+
|
|
11
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
12
|
+
import { z } from 'zod'
|
|
13
|
+
import { adminDb } from '../../shared/db.js'
|
|
14
|
+
import { kbReindex } from '../../shared/kb.js'
|
|
15
|
+
// CIL[DOC-VECTOR type="context" content="purpose='MCP KB reindex tool registration'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
|
|
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/mcp/tools/kb/reindex.ts:module_header:module_header"]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/reindex.ts:buildCtx:function" type="function" identity="buildCtx" parent="~/.framework/mcp/tools/kb/reindex.ts"]
|
|
25
|
+
// CIL[DOC-MACRO purpose="Build a request context for the kb reindex tool"]
|
|
26
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Constructs an internal request context with a machine principal and admin database."]
|
|
27
|
+
// CIL[DOC-CONTEXT module="kb" layer="mcp" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/reindex.ts"]
|
|
28
|
+
// CIL[DOC-CONTRACT inputs="accountId: string" outputs="RequestContext-like object" errors="none" side_effects="none"]
|
|
29
|
+
// CIL[DOC-MICRO logic_summary="Creates a context with a generated requestId, accountId, machine principal, adminDb, and undefined trace." notable_decisions="Casts the returned object as any."]
|
|
30
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
31
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
32
|
+
function buildCtx(accountId: string) {
|
|
33
|
+
return {
|
|
34
|
+
requestId: `kb-mcp-${Date.now()}`,
|
|
35
|
+
accountId,
|
|
36
|
+
principal: {
|
|
37
|
+
id: 'kb-mcp',
|
|
38
|
+
type: 'machine' as const,
|
|
39
|
+
roles: [{ slug: 'system_admin', is_system: true }]
|
|
40
|
+
},
|
|
41
|
+
db: adminDb,
|
|
42
|
+
trace: undefined,
|
|
43
|
+
} as any
|
|
44
|
+
}
|
|
45
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Build a request context for the kb reindex tool'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
|
|
46
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
47
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
48
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
49
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
50
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
51
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/reindex.ts:buildCtx:function"]
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
// CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/reindex.ts:register:function" type="function" identity="register" parent="~/.framework/mcp/tools/kb/reindex.ts"]
|
|
55
|
+
// CIL[DOC-MACRO purpose="Register the kb reindex tool on an MCP server"]
|
|
56
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Binds the spine_kb_reindex tool to the provided McpServer with a zod input schema."]
|
|
57
|
+
// CIL[DOC-CONTEXT module="kb" layer="mcp" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/reindex.ts"]
|
|
58
|
+
// CIL[DOC-CONTRACT inputs="server: McpServer" outputs="void" errors="none" side_effects="registers the 'spine_kb_reindex' tool with the server"]
|
|
59
|
+
// CIL[DOC-MICRO logic_summary="Defines the input schema and async handler that builds a context and calls kbReindex, returning JSON." notable_decisions="app_id is optional; response is JSON stringified."]
|
|
60
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
61
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
62
|
+
export function register(server: McpServer) {
|
|
63
|
+
server.registerTool(
|
|
64
|
+
'spine_kb_reindex',
|
|
65
|
+
{
|
|
66
|
+
description: 'Re-ingest all published records of a KB type.',
|
|
67
|
+
inputSchema: z.object({
|
|
68
|
+
type_slug: z.string().describe('KB type slug'),
|
|
69
|
+
account_id: z.string().uuid().describe('Account UUID for audit scope'),
|
|
70
|
+
app_id: z.string().uuid().optional().describe('Filter by app_id'),
|
|
71
|
+
}),
|
|
72
|
+
},
|
|
73
|
+
async ({ type_slug, account_id, app_id }) => {
|
|
74
|
+
const ctx = buildCtx(account_id)
|
|
75
|
+
const result = await kbReindex(ctx, { type_slug, app_id })
|
|
76
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }] }
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Register the kb reindex tool on an MCP server'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
|
|
81
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
82
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
83
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
84
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
85
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
86
|
+
// CIL[END stable_id="~/.framework/mcp/tools/kb/reindex.ts:register:function"]
|