spine-framework 0.1.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/.framework/README.md +129 -0
- package/.framework/cli/bin.cjs +14 -0
- package/.framework/cli/commands/agents.ts +153 -0
- package/.framework/cli/commands/auth.ts +94 -0
- package/.framework/cli/commands/create-app.ts +185 -0
- package/.framework/cli/commands/dev.ts +295 -0
- package/.framework/cli/commands/doctor.ts +442 -0
- package/.framework/cli/commands/generate.ts +332 -0
- package/.framework/cli/commands/init.ts +272 -0
- package/.framework/cli/commands/install-app.ts +391 -0
- package/.framework/cli/commands/items.ts +253 -0
- package/.framework/cli/commands/migrations.ts +141 -0
- package/.framework/cli/commands/pipelines.ts +166 -0
- package/.framework/cli/commands/status.ts +197 -0
- package/.framework/cli/commands/system.ts +184 -0
- package/.framework/cli/commands/test.ts +227 -0
- package/.framework/cli/commands/uninstall-app.ts +166 -0
- package/.framework/cli/context.ts +268 -0
- package/.framework/cli/env-loader.ts +36 -0
- package/.framework/cli/index.ts +106 -0
- package/.framework/cli/welcome.cjs +45 -0
- package/.framework/docs/API.md +384 -0
- package/.framework/docs/STABILITY.md +52 -0
- package/.framework/docs/admin-routes.md +76 -0
- package/.framework/docs/api-docs-progress.md +38 -0
- package/.framework/docs/api-governance.md +146 -0
- package/.framework/docs/api-testing-results.md +212 -0
- package/.framework/docs/apis/admin-configs.md +567 -0
- package/.framework/docs/apis/admin-data.md +272 -0
- package/.framework/docs/apis/index.md +231 -0
- package/.framework/docs/apis/internal.md +295 -0
- package/.framework/docs/apis/runtime.md +537 -0
- package/.framework/docs/assembly-launch-guide.md +138 -0
- package/.framework/docs/audit-results.md +590 -0
- package/.framework/docs/authorization-model.md +170 -0
- package/.framework/docs/db-api-inventory.md +95 -0
- package/.framework/docs/examples/custom-app/README.md +77 -0
- package/.framework/docs/examples/custom-function/README.md +27 -0
- package/.framework/docs/examples/custom-function/handler.ts +48 -0
- package/.framework/docs/examples/custom-webhook/README.md +68 -0
- package/.framework/docs/gap-remediation-backlog.md +103 -0
- package/.framework/docs/guides/cli-guide.md +224 -0
- package/.framework/docs/guides/getting-started.md +103 -0
- package/.framework/docs/guides/import-guide.md +193 -0
- package/.framework/docs/guides/testing-guide.md +229 -0
- package/.framework/docs/permission-examples.md +326 -0
- package/.framework/docs/ui-adoption-verification.md +111 -0
- package/.framework/docs/ui-api-coverage.md +84 -0
- package/.framework/docs/v2-compatibility-audit.md +228 -0
- package/.framework/functions/.gitkeep +1 -0
- package/.framework/functions/_shared/agent-runner.ts +1097 -0
- package/.framework/functions/_shared/app-manifest.ts +184 -0
- package/.framework/functions/_shared/audit.ts +150 -0
- package/.framework/functions/_shared/db.ts +174 -0
- package/.framework/functions/_shared/index.ts +382 -0
- package/.framework/functions/_shared/middleware.ts +490 -0
- package/.framework/functions/_shared/permissions.ts +1325 -0
- package/.framework/functions/_shared/pipeline-runner.ts +731 -0
- package/.framework/functions/_shared/principal.ts +760 -0
- package/.framework/functions/_shared/schema-utils.ts +967 -0
- package/.framework/functions/_shared/testing.ts +258 -0
- package/.framework/functions/_shared/trigger-engine.ts +425 -0
- package/.framework/functions/_shared/webhook-registration.ts +168 -0
- package/.framework/functions/_shared/webhook-registry.ts +129 -0
- package/.framework/functions/account-nodes.ts +111 -0
- package/.framework/functions/admin-data.ts +606 -0
- package/.framework/functions/ai-agents.ts +323 -0
- package/.framework/functions/api-keys.ts +376 -0
- package/.framework/functions/apps.ts +483 -0
- package/.framework/functions/auth.ts +196 -0
- package/.framework/functions/debug-auth.ts +107 -0
- package/.framework/functions/embeddings.ts +556 -0
- package/.framework/functions/integration-routes.ts +523 -0
- package/.framework/functions/integrations.ts +319 -0
- package/.framework/functions/item-progress.ts +272 -0
- package/.framework/functions/logs.ts +438 -0
- package/.framework/functions/observability.ts +275 -0
- package/.framework/functions/pipeline-executions.ts +494 -0
- package/.framework/functions/pipelines.ts +485 -0
- package/.framework/functions/prompt-configs.ts +339 -0
- package/.framework/functions/roles.ts +387 -0
- package/.framework/functions/system-cron.ts +742 -0
- package/.framework/functions/system.ts +323 -0
- package/.framework/functions/tests.ts +119 -0
- package/.framework/functions/timers.ts +357 -0
- package/.framework/functions/triggers.ts +563 -0
- package/.framework/functions/types.ts +604 -0
- package/.framework/migrations/000_foundation.sql +1256 -0
- package/.framework/migrations/001_seed.sql +92 -0
- package/.framework/migrations/002_seed_constraints.sql +13 -0
- package/.framework/migrations/003_auth_user_trigger.sql +59 -0
- package/.framework/src/App.tsx +126 -0
- package/.framework/src/apps/admin/index.tsx +173 -0
- package/.framework/src/components/AppWrapper.tsx +56 -0
- package/.framework/src/components/CustomAppLoader.tsx +116 -0
- package/.framework/src/components/admin/AdminListPage.tsx +151 -0
- package/.framework/src/components/admin/AdminSidebar.tsx +166 -0
- package/.framework/src/components/admin/AdminStatsCard.tsx +62 -0
- package/.framework/src/components/admin/SortableTableHeader.tsx +42 -0
- package/.framework/src/components/app-shell/GenericAppShell.tsx +181 -0
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +200 -0
- package/.framework/src/components/app-shell/GenericListPage.tsx +116 -0
- package/.framework/src/components/app-sidebar.tsx +228 -0
- package/.framework/src/components/auth/ProtectedRoute.tsx +88 -0
- package/.framework/src/components/layout/AppShell.tsx +91 -0
- package/.framework/src/components/layout/Header.tsx +88 -0
- package/.framework/src/components/layout/Layout.tsx +95 -0
- package/.framework/src/components/layout/Sidebar.tsx +329 -0
- package/.framework/src/components/runtime/DataDetailHeader.tsx +77 -0
- package/.framework/src/components/runtime/DataDetailPage.tsx +171 -0
- package/.framework/src/components/runtime/DataFilters.tsx +91 -0
- package/.framework/src/components/runtime/DataHeader.tsx +68 -0
- package/.framework/src/components/runtime/DataListPage.tsx +124 -0
- package/.framework/src/components/runtime/DataStats.tsx +70 -0
- package/.framework/src/components/runtime/DataTable.tsx +174 -0
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +134 -0
- package/.framework/src/components/runtime/index.ts +18 -0
- package/.framework/src/components/search-form.tsx +29 -0
- package/.framework/src/components/shared/AgentView.tsx +213 -0
- package/.framework/src/components/shared/FieldRenderer.tsx +478 -0
- package/.framework/src/components/shared/SchemaFields.tsx +226 -0
- package/.framework/src/components/ui/DataTable.tsx +343 -0
- package/.framework/src/components/ui/Form.tsx +281 -0
- package/.framework/src/components/ui/ItemCard.tsx +296 -0
- package/.framework/src/components/ui/ItemListView.tsx +308 -0
- package/.framework/src/components/ui/LoadingSpinner.tsx +52 -0
- package/.framework/src/components/ui/Modal.tsx +61 -0
- package/.framework/src/components/ui/RichTextEditor.tsx +210 -0
- package/.framework/src/components/ui/accordion.tsx +82 -0
- package/.framework/src/components/ui/alert-dialog.tsx +197 -0
- package/.framework/src/components/ui/alert.tsx +76 -0
- package/.framework/src/components/ui/aspect-ratio.tsx +11 -0
- package/.framework/src/components/ui/avatar.tsx +110 -0
- package/.framework/src/components/ui/badge.tsx +49 -0
- package/.framework/src/components/ui/breadcrumb.tsx +122 -0
- package/.framework/src/components/ui/button-group.tsx +83 -0
- package/.framework/src/components/ui/button.tsx +65 -0
- package/.framework/src/components/ui/calendar.tsx +222 -0
- package/.framework/src/components/ui/card.tsx +100 -0
- package/.framework/src/components/ui/carousel.tsx +240 -0
- package/.framework/src/components/ui/chart.tsx +373 -0
- package/.framework/src/components/ui/checkbox.tsx +31 -0
- package/.framework/src/components/ui/collapsible.tsx +33 -0
- package/.framework/src/components/ui/combobox.tsx +299 -0
- package/.framework/src/components/ui/command.tsx +193 -0
- package/.framework/src/components/ui/context-menu.tsx +261 -0
- package/.framework/src/components/ui/dialog.tsx +165 -0
- package/.framework/src/components/ui/direction.tsx +22 -0
- package/.framework/src/components/ui/drawer.tsx +132 -0
- package/.framework/src/components/ui/dropdown-menu.tsx +269 -0
- package/.framework/src/components/ui/empty.tsx +104 -0
- package/.framework/src/components/ui/field.tsx +238 -0
- package/.framework/src/components/ui/hover-card.tsx +42 -0
- package/.framework/src/components/ui/input-group.tsx +153 -0
- package/.framework/src/components/ui/input-otp.tsx +87 -0
- package/.framework/src/components/ui/input.tsx +19 -0
- package/.framework/src/components/ui/item.tsx +196 -0
- package/.framework/src/components/ui/kbd.tsx +26 -0
- package/.framework/src/components/ui/label.tsx +22 -0
- package/.framework/src/components/ui/menubar.tsx +277 -0
- package/.framework/src/components/ui/native-select.tsx +61 -0
- package/.framework/src/components/ui/navigation-menu.tsx +164 -0
- package/.framework/src/components/ui/pagination.tsx +129 -0
- package/.framework/src/components/ui/popover.tsx +87 -0
- package/.framework/src/components/ui/progress.tsx +31 -0
- package/.framework/src/components/ui/radio-group.tsx +42 -0
- package/.framework/src/components/ui/resizable.tsx +50 -0
- package/.framework/src/components/ui/scroll-area.tsx +53 -0
- package/.framework/src/components/ui/select.tsx +195 -0
- package/.framework/src/components/ui/separator.tsx +26 -0
- package/.framework/src/components/ui/sheet.tsx +145 -0
- package/.framework/src/components/ui/sidebar.tsx +706 -0
- package/.framework/src/components/ui/skeleton.tsx +13 -0
- package/.framework/src/components/ui/slider.tsx +59 -0
- package/.framework/src/components/ui/sonner.tsx +47 -0
- package/.framework/src/components/ui/spinner.tsx +10 -0
- package/.framework/src/components/ui/switch.tsx +33 -0
- package/.framework/src/components/ui/table-primitives.tsx +141 -0
- package/.framework/src/components/ui/table.tsx +114 -0
- package/.framework/src/components/ui/tabs.tsx +90 -0
- package/.framework/src/components/ui/textarea.tsx +18 -0
- package/.framework/src/components/ui/toggle-group.tsx +89 -0
- package/.framework/src/components/ui/toggle.tsx +45 -0
- package/.framework/src/components/ui/tooltip.tsx +57 -0
- package/.framework/src/contexts/AppContext.tsx +133 -0
- package/.framework/src/contexts/AuthContext.tsx +371 -0
- package/.framework/src/hooks/use-mobile.ts +19 -0
- package/.framework/src/hooks/useApi.ts +526 -0
- package/.framework/src/hooks/useApps.ts +114 -0
- package/.framework/src/hooks/useEntityList.ts +190 -0
- package/.framework/src/hooks/useEntityRecord.ts +308 -0
- package/.framework/src/hooks/useForm.ts +307 -0
- package/.framework/src/hooks/useListSchema.ts +264 -0
- package/.framework/src/hooks/useSchemaRecord.ts +223 -0
- package/.framework/src/index.css +128 -0
- package/.framework/src/lib/api.ts +156 -0
- package/.framework/src/lib/supabase.ts +94 -0
- package/.framework/src/lib/utils.ts +317 -0
- package/.framework/src/main.tsx +27 -0
- package/.framework/src/pages/DashboardPage.tsx +181 -0
- package/.framework/src/pages/NotFoundPage.tsx +39 -0
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +161 -0
- package/.framework/src/pages/admin/AIAgentsPage.tsx +318 -0
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +199 -0
- package/.framework/src/pages/admin/APIKeysPage.tsx +303 -0
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +523 -0
- package/.framework/src/pages/admin/AppDetailPage.tsx +493 -0
- package/.framework/src/pages/admin/AppsPage.tsx +355 -0
- package/.framework/src/pages/admin/DesignedPage.tsx +491 -0
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +534 -0
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +424 -0
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +176 -0
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +109 -0
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +402 -0
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +187 -0
- package/.framework/src/pages/admin/IntegrationsPage.tsx +301 -0
- package/.framework/src/pages/admin/LogsPage.tsx +283 -0
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +85 -0
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +470 -0
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +183 -0
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +279 -0
- package/.framework/src/pages/admin/PipelinesPage.tsx +390 -0
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +299 -0
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +292 -0
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +434 -0
- package/.framework/src/pages/admin/RoleDetailPage.tsx +273 -0
- package/.framework/src/pages/admin/RolesPage.tsx +292 -0
- package/.framework/src/pages/admin/SelectTestPage.tsx +61 -0
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +588 -0
- package/.framework/src/pages/admin/SimpleDashboard.tsx +387 -0
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +172 -0
- package/.framework/src/pages/admin/TestingDashboard.tsx +257 -0
- package/.framework/src/pages/admin/TimerDetailPage.tsx +151 -0
- package/.framework/src/pages/admin/TimersPage.tsx +376 -0
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +149 -0
- package/.framework/src/pages/admin/TriggersPage.tsx +381 -0
- package/.framework/src/pages/admin/TypeDetailPage.tsx +694 -0
- package/.framework/src/pages/admin/TypesPage.tsx +295 -0
- package/.framework/src/pages/auth/LoginPage.tsx +188 -0
- package/.framework/src/pages/auth/RegisterPage.tsx +163 -0
- package/.framework/src/pages/spine-framework/APIPage.tsx +17 -0
- package/.framework/src/pages/spine-framework/CLIPage.tsx +25 -0
- package/.framework/src/types/auth.ts +125 -0
- package/.framework/src/types/types.ts +407 -0
- package/STRUCTURE.md +150 -0
- package/config/components.json +25 -0
- package/config/deno.lock +108 -0
- package/config/package-lock.json +17183 -0
- package/config/postcss.config.cjs +10 -0
- package/config/tailwind.config.cjs +78 -0
- package/config/tsconfig.build.json +32 -0
- package/config/tsconfig.cli.json +18 -0
- package/config/tsconfig.json +41 -0
- package/config/tsconfig.node.json +17 -0
- package/config/tsconfig.node.tsbuildinfo +1 -0
- package/config/tsconfig.tsbuildinfo +1 -0
- package/config/typedoc.json +16 -0
- package/config/vite.config.d.ts +2 -0
- package/config/vite.config.ts +72 -0
- package/dist/cli/commands/agents.d.ts +39 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/auth.d.ts +36 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/create-app.d.ts +23 -0
- package/dist/cli/commands/create-app.d.ts.map +1 -0
- package/dist/cli/commands/dev.d.ts +39 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/doctor.d.ts +42 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/generate.d.ts +36 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/init.d.ts +30 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/install-app.d.ts +30 -0
- package/dist/cli/commands/install-app.d.ts.map +1 -0
- package/dist/cli/commands/items.d.ts +45 -0
- package/dist/cli/commands/items.d.ts.map +1 -0
- package/dist/cli/commands/migrations.d.ts +41 -0
- package/dist/cli/commands/migrations.d.ts.map +1 -0
- package/dist/cli/commands/pipelines.d.ts +40 -0
- package/dist/cli/commands/pipelines.d.ts.map +1 -0
- package/dist/cli/commands/status.d.ts +23 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/system.d.ts +29 -0
- package/dist/cli/commands/system.d.ts.map +1 -0
- package/dist/cli/commands/test.d.ts +46 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/uninstall-app.d.ts +23 -0
- package/dist/cli/commands/uninstall-app.d.ts.map +1 -0
- package/dist/cli/context.d.ts +88 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/env-loader.d.ts +14 -0
- package/dist/cli/env-loader.d.ts.map +1 -0
- package/dist/cli/index.d.ts +41 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/functions/_shared/agent-runner.d.ts +156 -0
- package/dist/functions/_shared/agent-runner.d.ts.map +1 -0
- package/dist/functions/_shared/app-manifest.d.ts +68 -0
- package/dist/functions/_shared/app-manifest.d.ts.map +1 -0
- package/dist/functions/_shared/audit.d.ts +91 -0
- package/dist/functions/_shared/audit.d.ts.map +1 -0
- package/dist/functions/_shared/db.d.ts +125 -0
- package/dist/functions/_shared/db.d.ts.map +1 -0
- package/dist/functions/_shared/index.d.ts +298 -0
- package/dist/functions/_shared/index.d.ts.map +1 -0
- package/dist/functions/_shared/middleware.d.ts +315 -0
- package/dist/functions/_shared/middleware.d.ts.map +1 -0
- package/dist/functions/_shared/permissions.d.ts +626 -0
- package/dist/functions/_shared/permissions.d.ts.map +1 -0
- package/dist/functions/_shared/pipeline-runner.d.ts +124 -0
- package/dist/functions/_shared/pipeline-runner.d.ts.map +1 -0
- package/dist/functions/_shared/principal.d.ts +284 -0
- package/dist/functions/_shared/principal.d.ts.map +1 -0
- package/dist/functions/_shared/schema-utils.d.ts +181 -0
- package/dist/functions/_shared/schema-utils.d.ts.map +1 -0
- package/dist/functions/_shared/testing.d.ts +172 -0
- package/dist/functions/_shared/testing.d.ts.map +1 -0
- package/dist/functions/_shared/trigger-engine.d.ts +140 -0
- package/dist/functions/_shared/trigger-engine.d.ts.map +1 -0
- package/dist/functions/_shared/webhook-registration.d.ts +81 -0
- package/dist/functions/_shared/webhook-registration.d.ts.map +1 -0
- package/dist/functions/_shared/webhook-registry.d.ts +57 -0
- package/dist/functions/_shared/webhook-registry.d.ts.map +1 -0
- package/dist/functions/account-nodes.d.ts +48 -0
- package/dist/functions/account-nodes.d.ts.map +1 -0
- package/dist/functions/admin-data.d.ts +178 -0
- package/dist/functions/admin-data.d.ts.map +1 -0
- package/dist/functions/ai-agents.d.ts +125 -0
- package/dist/functions/ai-agents.d.ts.map +1 -0
- package/dist/functions/api-keys.d.ts +140 -0
- package/dist/functions/api-keys.d.ts.map +1 -0
- package/dist/functions/apps.d.ts +163 -0
- package/dist/functions/apps.d.ts.map +1 -0
- package/dist/functions/auth.d.ts +74 -0
- package/dist/functions/auth.d.ts.map +1 -0
- package/dist/functions/debug-auth.d.ts +33 -0
- package/dist/functions/debug-auth.d.ts.map +1 -0
- package/dist/functions/embeddings.d.ts +205 -0
- package/dist/functions/embeddings.d.ts.map +1 -0
- package/dist/functions/integration-routes.d.ts +45 -0
- package/dist/functions/integration-routes.d.ts.map +1 -0
- package/dist/functions/integrations.d.ts +124 -0
- package/dist/functions/integrations.d.ts.map +1 -0
- package/dist/functions/item-progress.d.ts +41 -0
- package/dist/functions/item-progress.d.ts.map +1 -0
- package/dist/functions/logs.d.ts +162 -0
- package/dist/functions/logs.d.ts.map +1 -0
- package/dist/functions/observability.d.ts +123 -0
- package/dist/functions/observability.d.ts.map +1 -0
- package/dist/functions/pipeline-executions.d.ts +190 -0
- package/dist/functions/pipeline-executions.d.ts.map +1 -0
- package/dist/functions/pipelines.d.ts +171 -0
- package/dist/functions/pipelines.d.ts.map +1 -0
- package/dist/functions/prompt-configs.d.ts +125 -0
- package/dist/functions/prompt-configs.d.ts.map +1 -0
- package/dist/functions/roles.d.ts +118 -0
- package/dist/functions/roles.d.ts.map +1 -0
- package/dist/functions/system-cron.d.ts +65 -0
- package/dist/functions/system-cron.d.ts.map +1 -0
- package/dist/functions/system.d.ts +29 -0
- package/dist/functions/system.d.ts.map +1 -0
- package/dist/functions/tests.d.ts +28 -0
- package/dist/functions/tests.d.ts.map +1 -0
- package/dist/functions/timers.d.ts +139 -0
- package/dist/functions/timers.d.ts.map +1 -0
- package/dist/functions/triggers.d.ts +203 -0
- package/dist/functions/triggers.d.ts.map +1 -0
- package/dist/functions/types.d.ts +151 -0
- package/dist/functions/types.d.ts.map +1 -0
- package/dist/src/types/types.d.ts +364 -0
- package/dist/src/types/types.d.ts.map +1 -0
- package/package.json +192 -0
- package/scripts/app-install-cli.ts +286 -0
- package/scripts/assemble-frontend.sh +79 -0
- package/scripts/assemble-functions.sh +62 -0
- package/scripts/assemble.sh +35 -0
- package/scripts/boundary-check.sh +106 -0
- package/scripts/build-manifest.sh +80 -0
- package/scripts/check-core-integrity.sh +82 -0
- package/scripts/ingest-chunks.cjs +202 -0
- package/scripts/kb-chunk-parser.cjs +312 -0
- package/scripts/kb-chunk-parser.ts +330 -0
- package/scripts/load-test-app-install.ts +484 -0
- package/scripts/netlify-dev-wrapper.sh +22 -0
- package/scripts/verify-integrity.sh +69 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module index
|
|
3
|
+
* @audience installer
|
|
4
|
+
* @layer shared-core
|
|
5
|
+
* @stability stable
|
|
6
|
+
*
|
|
7
|
+
* Spine v2 Core — Public Import Surface
|
|
8
|
+
*
|
|
9
|
+
* This is the **single, stable entry point** for all custom code importing
|
|
10
|
+
* Spine core functionality. Everything exported here is a committed contract.
|
|
11
|
+
* Internal helpers not listed here are free to change without notice.
|
|
12
|
+
*
|
|
13
|
+
* ## Usage
|
|
14
|
+
*
|
|
15
|
+
* ### In custom functions (v2-custom/functions/)
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { runPipeline, adminDb, SYSTEM_PRINCIPAL, CoreContext } from '../_shared'
|
|
18
|
+
*
|
|
19
|
+
* const ctx: CoreContext = {
|
|
20
|
+
* principal: SYSTEM_PRINCIPAL,
|
|
21
|
+
* accountId: myAccountId,
|
|
22
|
+
* db: adminDb,
|
|
23
|
+
* requestId: crypto.randomUUID()
|
|
24
|
+
* }
|
|
25
|
+
* const result = await runPipeline(pipelineId, triggerData, ctx)
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* ### In CLI commands
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { runPipeline, adminDb, resolvePrincipal, CoreContext } from '../functions/_shared'
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* ### Stability contract
|
|
34
|
+
* - All exports in this file are stable across patch and minor versions
|
|
35
|
+
* - Breaking changes require a major version bump and migration guide
|
|
36
|
+
* - Do NOT import from individual `_shared/*.ts` files directly — use this index
|
|
37
|
+
*
|
|
38
|
+
* @seeAlso middleware.ts (CoreContext, createHandler, HTTP helpers)
|
|
39
|
+
* @seeAlso principal.ts (Principal interface, SYSTEM_PRINCIPAL, resolvePrincipal)
|
|
40
|
+
* @seeAlso db.ts (adminDb, getUserDb, joins)
|
|
41
|
+
* @seeAlso pipeline-runner.ts (runPipeline, ExecutionResult)
|
|
42
|
+
* @seeAlso trigger-engine.ts (fire*Triggers, EventType)
|
|
43
|
+
* @seeAlso agent-runner.ts (runAgent, AgentConfig, InferenceResult)
|
|
44
|
+
* @seeAlso permissions.ts (PermissionEngine, sanitizeRecordData)
|
|
45
|
+
* @seeAlso schema-utils.ts (generateValidationSchema, ValidationSchema)
|
|
46
|
+
* @seeAlso audit.ts (emitAudit)
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
// ============================================
|
|
50
|
+
// Context — Execution context types
|
|
51
|
+
// ============================================
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* CoreContext — the minimal execution context accepted by all Spine core functions.
|
|
55
|
+
* Construct one directly for import/CLI usage; API handlers get it from createHandler().
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* const ctx: CoreContext = {
|
|
60
|
+
* principal: SYSTEM_PRINCIPAL,
|
|
61
|
+
* accountId: 'uuid-here',
|
|
62
|
+
* db: adminDb,
|
|
63
|
+
* requestId: crypto.randomUUID()
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export type { CoreContext } from './middleware'
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* RequestContext — CoreContext extended with HTTP-specific fields.
|
|
71
|
+
* Only needed if you are writing an API handler function.
|
|
72
|
+
*/
|
|
73
|
+
export type { RequestContext, HandlerFunction, HandlerResult } from './middleware'
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* createHandler — wraps a handler function with auth, principal resolution, and audit.
|
|
77
|
+
* Use this when writing Netlify function handlers.
|
|
78
|
+
*/
|
|
79
|
+
export { createHandler, requireUserContext, requireSystemContextWithAudit, json, error as errorResponse, cors } from './middleware'
|
|
80
|
+
|
|
81
|
+
// ============================================
|
|
82
|
+
// Identity — Principal model
|
|
83
|
+
// ============================================
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Principal — unified identity for all actors (humans, machines, cron, triggers).
|
|
87
|
+
*/
|
|
88
|
+
export type { Principal } from './principal'
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* resolvePrincipal — resolves a Principal from an incoming HTTP event.
|
|
92
|
+
* Used in custom handler wrappers.
|
|
93
|
+
*/
|
|
94
|
+
export { resolvePrincipal } from './principal'
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* isSystemAdmin — returns true if principal has the system_admin role.
|
|
98
|
+
*/
|
|
99
|
+
export { isSystemAdmin } from './principal'
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* machineHasScope — checks whether a machine principal has a given scope.
|
|
103
|
+
* Supports wildcards: "items:*", "*:*".
|
|
104
|
+
*/
|
|
105
|
+
export { machineHasScope, humanHasRole } from './principal'
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* getPrincipalDb — returns the appropriate DB client for a principal.
|
|
109
|
+
* Humans get RLS-scoped client; machines get adminDb.
|
|
110
|
+
*/
|
|
111
|
+
export { getPrincipalDb } from './principal'
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* formatPrincipalForAudit — structures a principal for audit log metadata.
|
|
115
|
+
*/
|
|
116
|
+
export { formatPrincipalForAudit } from './principal'
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* ANONYMOUS_PRINCIPAL — static principal for unauthenticated requests.
|
|
120
|
+
*/
|
|
121
|
+
export { ANONYMOUS_PRINCIPAL } from './principal'
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* SYSTEM_PRINCIPAL — static principal for internal system operations.
|
|
125
|
+
* Use this when constructing a CoreContext for CLI or import usage without
|
|
126
|
+
* a real authenticated user.
|
|
127
|
+
*/
|
|
128
|
+
export { SYSTEM_PRINCIPAL } from './principal'
|
|
129
|
+
|
|
130
|
+
// ============================================
|
|
131
|
+
// Database — Supabase clients
|
|
132
|
+
// ============================================
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* adminDb — Supabase service_role client. Bypasses RLS.
|
|
136
|
+
* Use for system operations, migrations, machine principal actions.
|
|
137
|
+
*/
|
|
138
|
+
export { adminDb } from './db'
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* getUserDb — Returns a JWT-scoped Supabase client with RLS enforced.
|
|
142
|
+
* Use for human-principal requests.
|
|
143
|
+
*/
|
|
144
|
+
export { getUserDb } from './db'
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* joins — PostgREST relationship hint strings for common FK relationships.
|
|
148
|
+
* @example `.select(\`*, \${joins.type}, \${joins.app}\`)`
|
|
149
|
+
*/
|
|
150
|
+
export { joins } from './db'
|
|
151
|
+
|
|
152
|
+
export type { DbResult } from './db'
|
|
153
|
+
|
|
154
|
+
// ============================================
|
|
155
|
+
// Pipeline Runtime
|
|
156
|
+
// ============================================
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* runPipeline — execute a pipeline by ID with trigger data.
|
|
160
|
+
*
|
|
161
|
+
* @param pipelineId - UUID of the pipeline to run
|
|
162
|
+
* @param triggerData - Arbitrary data passed to all pipeline stages
|
|
163
|
+
* @param ctx - CoreContext (principal + accountId + db + requestId)
|
|
164
|
+
* @returns ExecutionResult with per-stage output and final status
|
|
165
|
+
* @throws If pipeline not found or inactive
|
|
166
|
+
*
|
|
167
|
+
* @example API handler
|
|
168
|
+
* ```ts
|
|
169
|
+
* const result = await runPipeline(body.pipeline_id, body.data, ctx)
|
|
170
|
+
* ```
|
|
171
|
+
*
|
|
172
|
+
* @example Custom import
|
|
173
|
+
* ```ts
|
|
174
|
+
* import { runPipeline, adminDb, SYSTEM_PRINCIPAL } from '../_shared'
|
|
175
|
+
* const ctx = { principal: SYSTEM_PRINCIPAL, accountId, db: adminDb, requestId: crypto.randomUUID() }
|
|
176
|
+
* const result = await runPipeline('uuid', { item_id: '...' }, ctx)
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* @example CLI
|
|
180
|
+
* ```bash
|
|
181
|
+
* spine pipelines run <pipeline-id> --data '{"item_id":"..."}'
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
export { runPipeline } from './pipeline-runner'
|
|
185
|
+
export type { ExecutionResult, StageResult } from './pipeline-runner'
|
|
186
|
+
|
|
187
|
+
// ============================================
|
|
188
|
+
// Trigger Engine
|
|
189
|
+
// ============================================
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* checkAndFireTriggers — evaluate and fire all active triggers matching an event.
|
|
193
|
+
*
|
|
194
|
+
* @param eventType - e.g. 'item_created', 'account_updated'
|
|
195
|
+
* @param entityType - table name string
|
|
196
|
+
* @param entityId - UUID of the affected entity
|
|
197
|
+
* @param entityData - full entity data for condition evaluation
|
|
198
|
+
* @param ctx - CoreContext
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```ts
|
|
202
|
+
* await checkAndFireTriggers('item_created', 'items', item.id, item, ctx)
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
export { checkAndFireTriggers, fireCreateTriggers, fireUpdateTriggers, fireDeleteTriggers } from './trigger-engine'
|
|
206
|
+
export type { EventType } from './trigger-engine'
|
|
207
|
+
|
|
208
|
+
// ============================================
|
|
209
|
+
// Agent Runner
|
|
210
|
+
// ============================================
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* runAgent — run AI agent inference for a user message in a thread.
|
|
214
|
+
*
|
|
215
|
+
* Resolves agent config from thread → agent → prompt_config chain,
|
|
216
|
+
* assembles RAG context, calls LLM, handles tool dispatch and escalation.
|
|
217
|
+
*
|
|
218
|
+
* @param threadId - UUID of the thread
|
|
219
|
+
* @param userMessage - The user's message text
|
|
220
|
+
* @param ctx - CoreContext
|
|
221
|
+
* @returns Saved agent message record
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```ts
|
|
225
|
+
* const msg = await runAgent(threadId, 'How do I reset my password?', ctx)
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
export { runAgent, resolveAgentConfig } from './agent-runner'
|
|
229
|
+
export type { AgentConfig, InferenceResult, ToolCall, ToolResult } from './agent-runner'
|
|
230
|
+
|
|
231
|
+
// ============================================
|
|
232
|
+
// Permissions
|
|
233
|
+
// ============================================
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* PermissionEngine — the single source of truth for all authorization.
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
* ```ts
|
|
240
|
+
* const canRead = await PermissionEngine.canAccessRecord(ctx, record, 'read')
|
|
241
|
+
* const sanitized = await PermissionEngine.sanitizeRecordData(ctx, record, 'support_ticket')
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
export { PermissionEngine } from './permissions'
|
|
245
|
+
export type { PermissionResult } from './permissions'
|
|
246
|
+
|
|
247
|
+
// Legacy permission helpers (stable, bound to PermissionEngine instance)
|
|
248
|
+
export { sanitizeRecordData, validateUpdatePermissions, canAccessRecord } from './permissions'
|
|
249
|
+
|
|
250
|
+
// ============================================
|
|
251
|
+
// Schema Utilities
|
|
252
|
+
// ============================================
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* generateValidationSchema — derive a structural validation schema from a design schema.
|
|
256
|
+
* Called automatically on type create/update; also useful in custom code.
|
|
257
|
+
*/
|
|
258
|
+
export { generateValidationSchema } from './schema-utils'
|
|
259
|
+
export type { ValidationSchema } from './schema-utils'
|
|
260
|
+
|
|
261
|
+
// ============================================
|
|
262
|
+
// Audit
|
|
263
|
+
// ============================================
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* emitAudit — emit a structured audit log entry with full principal provenance.
|
|
267
|
+
*
|
|
268
|
+
* @param ctx - CoreContext
|
|
269
|
+
* @param action - e.g. 'items.create', 'pipeline.completed'
|
|
270
|
+
* @param target - { type, id, account_id }
|
|
271
|
+
* @param metadata - additional structured context
|
|
272
|
+
*
|
|
273
|
+
* @example
|
|
274
|
+
* ```ts
|
|
275
|
+
* await emitAudit(ctx, 'deal.stage_changed', { type: 'items', id: deal.id }, {
|
|
276
|
+
* before: { stage: 'prospect' },
|
|
277
|
+
* after: { stage: 'qualified' }
|
|
278
|
+
* })
|
|
279
|
+
* ```
|
|
280
|
+
*/
|
|
281
|
+
export { emitAudit } from './audit'
|
|
282
|
+
|
|
283
|
+
// ============================================
|
|
284
|
+
// Webhook Registry
|
|
285
|
+
// ============================================
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* resolveHandler — dynamically load a webhook handler by name.
|
|
289
|
+
*
|
|
290
|
+
* Used by integration-routes.ts to resolve handlers at runtime
|
|
291
|
+
* without static imports, enabling custom handlers to self-register.
|
|
292
|
+
*
|
|
293
|
+
* @param handlerName — The handler identifier from webhook_handlers table
|
|
294
|
+
* @returns Handler function or null if not found
|
|
295
|
+
*
|
|
296
|
+
* @example
|
|
297
|
+
* ```ts
|
|
298
|
+
* const handler = await resolveHandler('cortex-webhook')
|
|
299
|
+
* if (handler) await handler(event, context)
|
|
300
|
+
* ```
|
|
301
|
+
*/
|
|
302
|
+
export { resolveHandler, lookupHandler, loadHandler } from './webhook-registry'
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* registerWebhookHandler — self-register a custom webhook handler.
|
|
306
|
+
*
|
|
307
|
+
* Use in custom Netlify functions to register as webhook handlers
|
|
308
|
+
* without modifying core code.
|
|
309
|
+
*
|
|
310
|
+
* @param config — Handler registration details
|
|
311
|
+
*
|
|
312
|
+
* @example
|
|
313
|
+
* ```ts
|
|
314
|
+
* import { registerWebhookHandler } from '@core/_shared'
|
|
315
|
+
* import { adminDb } from '@core/_shared'
|
|
316
|
+
*
|
|
317
|
+
* registerWebhookHandler({
|
|
318
|
+
* name: 'my-handler',
|
|
319
|
+
* functionName: 'custom_my-handler',
|
|
320
|
+
* events: ['item.created']
|
|
321
|
+
* }, adminDb)
|
|
322
|
+
* ```
|
|
323
|
+
*/
|
|
324
|
+
export { registerWebhookHandler, deregisterWebhookHandler, isHandlerRegistered } from './webhook-registration'
|
|
325
|
+
export type { WebhookHandlerRegistration } from './webhook-registration'
|
|
326
|
+
|
|
327
|
+
// ============================================
|
|
328
|
+
// App Manifest Utilities
|
|
329
|
+
// ============================================
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* loadManifest — load and parse an app manifest.json file.
|
|
333
|
+
*
|
|
334
|
+
* Used by apps.ts to merge database records with file-based
|
|
335
|
+
* app configuration (name, routes, nav_items, required_roles).
|
|
336
|
+
*
|
|
337
|
+
* @param manifestPath — Path to manifest.json relative to project root
|
|
338
|
+
* @returns Parsed AppManifest or null if not found/invalid
|
|
339
|
+
*
|
|
340
|
+
* @example
|
|
341
|
+
* ```ts
|
|
342
|
+
* const manifest = loadManifest('custom/apps/cortex/manifest.json')
|
|
343
|
+
* console.log(manifest.required_roles) // ['member']
|
|
344
|
+
* ```
|
|
345
|
+
*/
|
|
346
|
+
export { loadManifest, mergeWithManifest, clearManifestCache, discoverManifests } from './app-manifest'
|
|
347
|
+
export type { AppManifest, NavItem } from './app-manifest'
|
|
348
|
+
|
|
349
|
+
// ============================================
|
|
350
|
+
// Testing Utilities
|
|
351
|
+
// ============================================
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Testing utilities for custom code developers.
|
|
355
|
+
*
|
|
356
|
+
* Use these helpers to test your custom functions without
|
|
357
|
+
* full deployment. Includes mock contexts, principals, and
|
|
358
|
+
* assertion helpers.
|
|
359
|
+
*
|
|
360
|
+
* @example
|
|
361
|
+
* ```ts
|
|
362
|
+
* import { makeTestContext, mockPrincipal, cleanup } from '@core/testing'
|
|
363
|
+
*
|
|
364
|
+
* describe('My Handler', () => {
|
|
365
|
+
* const ctx = makeTestContext({
|
|
366
|
+
* principal: mockPrincipal({ roles: ['member'] })
|
|
367
|
+
* })
|
|
368
|
+
* })
|
|
369
|
+
* ```
|
|
370
|
+
*/
|
|
371
|
+
export {
|
|
372
|
+
makeTestContext,
|
|
373
|
+
mockPrincipal,
|
|
374
|
+
mockLogger,
|
|
375
|
+
mockEvent,
|
|
376
|
+
mockNetlifyContext,
|
|
377
|
+
cleanup,
|
|
378
|
+
setupTests,
|
|
379
|
+
expectSuccessResponse,
|
|
380
|
+
expectErrorResponse
|
|
381
|
+
} from './testing'
|
|
382
|
+
export type { TestContext, TestPrincipal, TestLogger } from './testing'
|