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,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module auth
|
|
3
|
+
* @audience core-contributor
|
|
4
|
+
* @layer api-handler
|
|
5
|
+
* @stability stable
|
|
6
|
+
*
|
|
7
|
+
* Authentication context endpoint. Returns the full user session context for
|
|
8
|
+
* the authenticated principal: person record, account, role, permissions, and
|
|
9
|
+
* accessible child accounts (via the `get_account_hierarchy` RPC).
|
|
10
|
+
*
|
|
11
|
+
* **Routed by:** `GET /.netlify/functions/auth`
|
|
12
|
+
*
|
|
13
|
+
* **Actions:**
|
|
14
|
+
* | method | handler |
|
|
15
|
+
* |--------|----------|
|
|
16
|
+
* | GET | context |
|
|
17
|
+
* | HEALTH | health |
|
|
18
|
+
*
|
|
19
|
+
* **Authorization:** `context` requires a non-anonymous authenticated
|
|
20
|
+
* principal. `health` is unauthenticated.
|
|
21
|
+
*
|
|
22
|
+
* **Returned session shape:**
|
|
23
|
+
* ```ts
|
|
24
|
+
* {
|
|
25
|
+
* id: string // person UUID
|
|
26
|
+
* email: string
|
|
27
|
+
* full_name: string
|
|
28
|
+
* account_id: string
|
|
29
|
+
* account: { id, slug, display_name, parent_id }
|
|
30
|
+
* roles: string[] // role slugs (e.g. ['system_admin'])
|
|
31
|
+
* permissions: string[] // derived from role.slug or role.permissions
|
|
32
|
+
* accessible_accounts: AccountHierarchyRow[]
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* INVARIANT: `system_admin` role always receives the full permission set
|
|
37
|
+
* ['read', 'write', 'admin', 'system'] regardless of `role.permissions`.
|
|
38
|
+
*
|
|
39
|
+
* @seeAlso middleware.ts (createHandler builds ctx.principal from JWT)
|
|
40
|
+
* @seeAlso _shared/db.ts (get_account_hierarchy RPC)
|
|
41
|
+
* @seeAlso roles.ts (role records referenced by FK)
|
|
42
|
+
*/
|
|
43
|
+
/**
|
|
44
|
+
* Returns the full authenticated user context. Fetches person, account,
|
|
45
|
+
* and role in a single query, then calls `get_account_hierarchy` to
|
|
46
|
+
* resolve accessible child accounts.
|
|
47
|
+
*
|
|
48
|
+
* @returns Session object (see module-level shape doc)
|
|
49
|
+
* @throws Error('Authentication required') if principal is anonymous
|
|
50
|
+
* @throws Error('User not found: <id>') if person row is inactive or missing
|
|
51
|
+
* @sideEffects DB read: people table (with account + role joins)
|
|
52
|
+
* @sideEffects DB read: get_account_hierarchy RPC
|
|
53
|
+
* @calledBy handler (GET)
|
|
54
|
+
* @testUnit tests/unit/auth.test.ts — 'context'
|
|
55
|
+
* @testIntegration tests/integration/auth.test.ts — 'returns valid context'
|
|
56
|
+
*/
|
|
57
|
+
export declare const context: (event: any, context: any) => Promise<any>;
|
|
58
|
+
/**
|
|
59
|
+
* Lightweight health check for the auth function. Returns service name
|
|
60
|
+
* and current timestamp. No authentication required.
|
|
61
|
+
*
|
|
62
|
+
* @returns `{ status: 'healthy', timestamp: string, service: 'auth' }`
|
|
63
|
+
* @calledBy handler (HEALTH method)
|
|
64
|
+
* @calledBy load balancer health probes
|
|
65
|
+
*/
|
|
66
|
+
export declare const health: (event: any, context: any) => Promise<any>;
|
|
67
|
+
/**
|
|
68
|
+
* Netlify function entry point. Routes by HTTP method:
|
|
69
|
+
* GET → context | HEALTH → health
|
|
70
|
+
* @throws Error('Unsupported method: <method>') on unmatched method
|
|
71
|
+
* @calledBy Netlify function routing
|
|
72
|
+
*/
|
|
73
|
+
export declare const handler: (event: any, context: any) => Promise<any>;
|
|
74
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../.framework/functions/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAMH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO,4CAiGlB,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,4CAMjB,CAAA;AAIF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,4CAWlB,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module debug-auth
|
|
3
|
+
* @audience core-contributor
|
|
4
|
+
* @layer api-handler
|
|
5
|
+
* @stability internal
|
|
6
|
+
*
|
|
7
|
+
* Development/diagnostic endpoint for verifying that authentication
|
|
8
|
+
* middleware is resolving principals correctly. **Never expose this in
|
|
9
|
+
* production without access controls.**
|
|
10
|
+
*
|
|
11
|
+
* **Routed by:** `GET /.netlify/functions/debug-auth`
|
|
12
|
+
*
|
|
13
|
+
* **Actions (via ?method):**
|
|
14
|
+
* | ?method | handler | description |
|
|
15
|
+
* |----------|----------|-------------------------------------|
|
|
16
|
+
* | debug | debug | env check + principal presence |
|
|
17
|
+
* | testJwt | testJwt | validates JWT, returns principal ID |
|
|
18
|
+
*
|
|
19
|
+
* **Authorization:** None — intentionally unauthenticated so broken JWT
|
|
20
|
+
* flows can be diagnosed. Reveals only presence/absence of env vars and
|
|
21
|
+
* principal shape, never secret values.
|
|
22
|
+
*
|
|
23
|
+
* @seeAlso auth.ts (production auth context endpoint)
|
|
24
|
+
* @seeAlso middleware.ts (createHandler — JWT resolution logic)
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Netlify function entry point. Routes by ?method (debug | testJwt),
|
|
28
|
+
* defaulting to debug. Note: uses raw Netlify event/context signature
|
|
29
|
+
* rather than `createHandler` wrapper to allow unauthenticated access.
|
|
30
|
+
* @calledBy Netlify function routing (GET)
|
|
31
|
+
*/
|
|
32
|
+
export declare function handler(event: any, context: any): Promise<any>;
|
|
33
|
+
//# sourceMappingURL=debug-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-auth.d.ts","sourceRoot":"","sources":["../../.framework/functions/debug-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AA6DH;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,gBAerD"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module embeddings
|
|
3
|
+
* @audience core-contributor
|
|
4
|
+
* @layer api-handler
|
|
5
|
+
* @stability stable
|
|
6
|
+
*
|
|
7
|
+
* CRUD and search API for the `embeddings` table. Embeddings store vector
|
|
8
|
+
* representations of text chunks for RAG (retrieval-augmented generation)
|
|
9
|
+
* workloads. Vector similarity search is performed via the
|
|
10
|
+
* `search_similar_embeddings` Postgres RPC function.
|
|
11
|
+
*
|
|
12
|
+
* **Routed by:** `GET/POST/PATCH /.netlify/functions/embeddings`
|
|
13
|
+
*
|
|
14
|
+
* **Actions:**
|
|
15
|
+
* | method | ?action | handler |
|
|
16
|
+
* |--------|-----------------|-------------------|
|
|
17
|
+
* | GET | stats | getStats |
|
|
18
|
+
* | POST | batch-create | batchCreate |
|
|
19
|
+
* | POST | delete-document | deleteByDocument |
|
|
20
|
+
* | POST | cleanup | cleanup |
|
|
21
|
+
* | POST | search-similar | searchSimilar |
|
|
22
|
+
* | POST | search-semantic | searchSemantic |
|
|
23
|
+
* | GET | ?id | get |
|
|
24
|
+
* | GET | (default) | list |
|
|
25
|
+
* | POST | — | create |
|
|
26
|
+
* | PATCH | — | update |
|
|
27
|
+
*
|
|
28
|
+
* **Authorization:** All operations use `ctx.db` (RLS-scoped). Account context
|
|
29
|
+
* required for writes. No hard-delete endpoint — use `delete-document` or
|
|
30
|
+
* `cleanup` for bulk removal.
|
|
31
|
+
*
|
|
32
|
+
* INVARIANT: `update` only patches `content` and `metadata`.
|
|
33
|
+
* INVARIANT: `searchSimilar` requires a pre-computed `query_embedding` vector.
|
|
34
|
+
* Use `searchSemantic` for text-based fallback.
|
|
35
|
+
*
|
|
36
|
+
* @seeAlso agent-runner.ts (executeSearchKnowledge calls search_similar_embeddings)
|
|
37
|
+
* @seeAlso pipeline-runner.ts (search_knowledge stage type)
|
|
38
|
+
* @seeAlso audit.ts (emitLog for embedding.* / embeddings.* events)
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* @chunk-id EMBEDDINGS_LIST_1_0_0
|
|
42
|
+
* @version 1.0.0
|
|
43
|
+
* @hash 929d4ac3030c10ac7a31bef9cad565900a5cd11af2e130ce3e4cfc28bc65d5ab
|
|
44
|
+
* @macro Embeddings List Handler
|
|
45
|
+
* @micro Lists embeddings with filtering, pagination, and sanitization
|
|
46
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
47
|
+
* @inputs _body: any — Request body (unused for GET)
|
|
48
|
+
* @outputs Array of sanitized embedding records
|
|
49
|
+
* @depends-on [createHandler, sanitizeRecordData]
|
|
50
|
+
* @depended-by [Netlify function routing]
|
|
51
|
+
* @side-effects [DB queries, permission sanitization]
|
|
52
|
+
* @tags embeddings, list, crud, pagination
|
|
53
|
+
*/
|
|
54
|
+
export declare const list: (event: any, context: any) => Promise<any>;
|
|
55
|
+
/**
|
|
56
|
+
* @chunk-id EMBEDDINGS_GET_1_0_0
|
|
57
|
+
* @version 1.0.0
|
|
58
|
+
* @hash 261bfd4dd3107ebfbc0a2ee3d870ac449f543699358a03d8bea27f86ba57b5bc
|
|
59
|
+
* @macro Embedding Get Handler
|
|
60
|
+
* @micro Returns single embedding record with sanitization
|
|
61
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
62
|
+
* @inputs _body: any — Request body (unused for GET)
|
|
63
|
+
* @outputs Sanitized embedding record
|
|
64
|
+
* @depends-on [createHandler, sanitizeRecordData]
|
|
65
|
+
* @depended-by [Netlify function routing]
|
|
66
|
+
* @side-effects [DB single row query, permission sanitization]
|
|
67
|
+
* @tags embeddings, get, crud, single-record
|
|
68
|
+
*/
|
|
69
|
+
export declare const get: (event: any, context: any) => Promise<any>;
|
|
70
|
+
/**
|
|
71
|
+
* @chunk-id EMBEDDINGS_CREATE_1_0_0
|
|
72
|
+
* @version 1.0.0
|
|
73
|
+
* @hash 26bc1b478138d27fc02ebeede1b0ede362ef43864591bc7353390d5f60ae81db
|
|
74
|
+
* @macro Embedding Create Handler
|
|
75
|
+
* @micro Creates embedding record with validation and audit logging
|
|
76
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
77
|
+
* @inputs body: object — Embedding data including model_id, document_id, content
|
|
78
|
+
* @outputs Inserted embedding record
|
|
79
|
+
* @depends-on [createHandler, emitLog]
|
|
80
|
+
* @depended-by [Netlify function routing]
|
|
81
|
+
* @side-effects [DB insert, audit logging]
|
|
82
|
+
* @tags embeddings, create, crud, audit
|
|
83
|
+
*/
|
|
84
|
+
export declare const create: (event: any, context: any) => Promise<any>;
|
|
85
|
+
/**
|
|
86
|
+
* @chunk-id EMBEDDINGS_UPDATE_1_0_0
|
|
87
|
+
* @version 1.0.0
|
|
88
|
+
* @hash e543c87308991159cda8e50f85127884475004bffaedb4508117481375bfaa43
|
|
89
|
+
* @macro Embedding Update Handler
|
|
90
|
+
* @micro Updates embedding content and/or metadata with audit logging
|
|
91
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
92
|
+
* @inputs body: object — Embedding updates including id
|
|
93
|
+
* @outputs Updated embedding record
|
|
94
|
+
* @depends-on [createHandler, emitLog]
|
|
95
|
+
* @depended-by [Netlify function routing]
|
|
96
|
+
* @side-effects [DB update, audit logging]
|
|
97
|
+
* @tags embeddings, update, crud, audit
|
|
98
|
+
*/
|
|
99
|
+
export declare const update: (event: any, context: any) => Promise<any>;
|
|
100
|
+
/**
|
|
101
|
+
* @chunk-id EMBEDDINGS_GET_STATS_1_0_0
|
|
102
|
+
* @version 1.0.0
|
|
103
|
+
* @hash 176a002d14e89cffb0cb993b554c28e2258f66951901be49a4eccbe7855a2d7a
|
|
104
|
+
* @macro Embeddings Statistics Handler
|
|
105
|
+
* @micro Returns total embedding count for account with RLS scoping
|
|
106
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
107
|
+
* @inputs _body: any — Request body (unused for GET)
|
|
108
|
+
* @outputs {total_embeddings: number} — Total count of embeddings
|
|
109
|
+
* @depends-on [createHandler]
|
|
110
|
+
* @depended-by [Netlify function routing]
|
|
111
|
+
* @side-effects [DB count query]
|
|
112
|
+
* @tags embeddings, stats, count, monitoring
|
|
113
|
+
*/
|
|
114
|
+
export declare const getStats: (event: any, context: any) => Promise<any>;
|
|
115
|
+
/**
|
|
116
|
+
* @chunk-id EMBEDDINGS_BATCH_CREATE_1_0_0
|
|
117
|
+
* @version 1.0.0
|
|
118
|
+
* @hash 18f603dbb73e044737283100d6e4cc092597a61645905473d6c6ec1ee67a9d7f
|
|
119
|
+
* @macro Embeddings Batch Create Handler
|
|
120
|
+
* @micro Bulk inserts multiple embeddings with account stamping and audit logging
|
|
121
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
122
|
+
* @inputs body: object — embeddings_data array of embedding objects
|
|
123
|
+
* @outputs Array of inserted embedding records
|
|
124
|
+
* @depends-on [createHandler, emitLog]
|
|
125
|
+
* @depended-by [Netlify function routing]
|
|
126
|
+
* @side-effects [Bulk DB insert, audit logging]
|
|
127
|
+
* @tags embeddings, batch-create, bulk, audit
|
|
128
|
+
*/
|
|
129
|
+
export declare const batchCreate: (event: any, context: any) => Promise<any>;
|
|
130
|
+
/**
|
|
131
|
+
* @chunk-id EMBEDDINGS_DELETE_BY_DOCUMENT_1_0_0
|
|
132
|
+
* @version 1.0.0
|
|
133
|
+
* @hash 1f74f199f69f563dbc9e72c0f3906412d6315721212261c5a61da4250cb34909
|
|
134
|
+
* @macro Embeddings Document Delete Handler
|
|
135
|
+
* @micro Deletes all embeddings for a document with audit logging
|
|
136
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
137
|
+
* @inputs body: object — document_id to delete embeddings for
|
|
138
|
+
* @outputs {deleted_count: number} — Number of deleted embeddings
|
|
139
|
+
* @depends-on [createHandler, emitLog]
|
|
140
|
+
* @depended-by [Netlify function routing]
|
|
141
|
+
* @side-effects [DB delete, audit logging]
|
|
142
|
+
* @tags embeddings, delete, document, audit
|
|
143
|
+
*/
|
|
144
|
+
export declare const deleteByDocument: (event: any, context: any) => Promise<any>;
|
|
145
|
+
/**
|
|
146
|
+
* @chunk-id EMBEDDINGS_CLEANUP_1_0_0
|
|
147
|
+
* @version 1.0.0
|
|
148
|
+
* @hash b5caa85d93d7eb232eaf7f81c63f7adc4269898397c4cc1d9186ce868a056223
|
|
149
|
+
* @macro Embeddings Cleanup Handler
|
|
150
|
+
* @micro Deletes old embeddings beyond retention period with audit logging
|
|
151
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
152
|
+
* @inputs body: object — days_to_keep (default 365)
|
|
153
|
+
* @outputs {deleted_count: number} — Number of deleted embeddings
|
|
154
|
+
* @depends-on [createHandler, emitLog]
|
|
155
|
+
* @depended-by [Netlify function routing]
|
|
156
|
+
* @side-effects [DB delete by date, audit logging]
|
|
157
|
+
* @tags embeddings, cleanup, retention, audit
|
|
158
|
+
*/
|
|
159
|
+
export declare const cleanup: (event: any, context: any) => Promise<any>;
|
|
160
|
+
/**
|
|
161
|
+
* @chunk-id EMBEDDINGS_SEARCH_SIMILAR_1_0_0
|
|
162
|
+
* @version 1.0.0
|
|
163
|
+
* @hash e34df64fa1db62cdef551da14b15e6f7183915562ca68763b5ebe28fe889fff7
|
|
164
|
+
* @macro Embeddings Vector Search Handler
|
|
165
|
+
* @micro Performs vector similarity search using cosine similarity via RPC
|
|
166
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
167
|
+
* @inputs body: object — query_embedding vector and search parameters
|
|
168
|
+
* @outputs {results, count, model_id, threshold} — Search results with metadata
|
|
169
|
+
* @depends-on [createHandler]
|
|
170
|
+
* @depended-by [Netlify function routing, agent-runner.ts]
|
|
171
|
+
* @side-effects [RPC call for vector similarity search]
|
|
172
|
+
* @tags embeddings, search, vector, similarity, rpc
|
|
173
|
+
*/
|
|
174
|
+
export declare const searchSimilar: (event: any, context: any) => Promise<any>;
|
|
175
|
+
/**
|
|
176
|
+
* @chunk-id EMBEDDINGS_SEARCH_SEMANTIC_1_0_0
|
|
177
|
+
* @version 1.0.0
|
|
178
|
+
* @hash 26c9cb4da3ddfa47c34afd1c60c2568f760a97d07719a58e9ae2e3d3926e84ce
|
|
179
|
+
* @macro Embeddings Text Search Handler
|
|
180
|
+
* @micro Performs full-text search on embedding content using Postgres websearch
|
|
181
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
182
|
+
* @inputs body: object — query string and optional filters
|
|
183
|
+
* @outputs {results, count, method, query} — Search results with metadata
|
|
184
|
+
* @depends-on [createHandler]
|
|
185
|
+
* @depended-by [Netlify function routing]
|
|
186
|
+
* @side-effects [DB full-text search query]
|
|
187
|
+
* @tags embeddings, search, text-search, fallback
|
|
188
|
+
*/
|
|
189
|
+
export declare const searchSemantic: (event: any, context: any) => Promise<any>;
|
|
190
|
+
/**
|
|
191
|
+
* @chunk-id EMBEDDINGS_HANDLER_1_0_0
|
|
192
|
+
* @version 1.0.0
|
|
193
|
+
* @hash 5c4c550bcf413d5975c54a1f1cbfbc4641425d663127fa55fac1616085a43644
|
|
194
|
+
* @macro Embeddings Router
|
|
195
|
+
* @micro Routes HTTP methods and actions to appropriate handlers
|
|
196
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
197
|
+
* @inputs body: any — Request body for POST/PATCH operations
|
|
198
|
+
* @outputs Varies — Depends on routed handler (list/get/create/update/batch-create/delete-document/cleanup/search-similar/search-semantic/stats)
|
|
199
|
+
* @depends-on [createHandler, list, get, create, update, getStats, batchCreate, deleteByDocument, cleanup, searchSimilar, searchSemantic]
|
|
200
|
+
* @depended-by [Netlify function routing]
|
|
201
|
+
* @side-effects [Delegates to appropriate handler]
|
|
202
|
+
* @tags embeddings, router, crud, netlify-function
|
|
203
|
+
*/
|
|
204
|
+
export declare const handler: (event: any, context: any) => Promise<any>;
|
|
205
|
+
//# sourceMappingURL=embeddings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../.framework/functions/embeddings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AASH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,IAAI,4CAoCf,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,GAAG,4CAgBd,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,4CAgCjB,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,4CA2BjB,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ,4CAYnB,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,4CA6BtB,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,4CAqB3B,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO,4CAqBlB,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,4CA4BxB,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,4CAuCzB,CAAA;AAMF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO,4CAkDlB,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integration-routes
|
|
3
|
+
* @audience core-contributor
|
|
4
|
+
* @layer api-handler
|
|
5
|
+
* @stability stable
|
|
6
|
+
*
|
|
7
|
+
* Unified integration routing system for all integration types.
|
|
8
|
+
* Handles webhook, API, database, file, and custom integrations
|
|
9
|
+
* through a single entry point with type-specific handlers.
|
|
10
|
+
*
|
|
11
|
+
** Routed by:** `POST /api/integration-routes?slug=:slug`
|
|
12
|
+
*
|
|
13
|
+
* Route patterns:
|
|
14
|
+
* | method | path | handler |
|
|
15
|
+
* |--------|-------------------------------------------|------------------------|
|
|
16
|
+
* | POST | /api/integration-routes?slug=:slug | handleWebhook |
|
|
17
|
+
*
|
|
18
|
+
* **Authorization:** API key authentication with integration permissions
|
|
19
|
+
* - API key validated via resolvePrincipal
|
|
20
|
+
* - Integration permissions checked against principal.permissions.integrations[slug]
|
|
21
|
+
*
|
|
22
|
+
* **Security Flow:**
|
|
23
|
+
* 1. API key validation (resolvePrincipal)
|
|
24
|
+
* 2. Integration permission check
|
|
25
|
+
* 3. Schema validation (if configured)
|
|
26
|
+
* 4. Data sanitization
|
|
27
|
+
* 5. Custom script execution
|
|
28
|
+
*
|
|
29
|
+
* INVARIANT: All validation failures return generic { status: "rejected" }
|
|
30
|
+
* INVARIANT: Detailed errors logged server-side only
|
|
31
|
+
* INVARIANT: Unknown fields in payload = HARD FAIL (fishing detection)
|
|
32
|
+
*
|
|
33
|
+
* @seeAlso integrations.ts (integration configuration)
|
|
34
|
+
* @seeAlso principal.ts (machine principal resolution)
|
|
35
|
+
* @seeAlso api-keys.ts (API key permissions)
|
|
36
|
+
*/
|
|
37
|
+
declare const handler: (event: any, _context: any) => Promise<{
|
|
38
|
+
statusCode: number;
|
|
39
|
+
headers: {
|
|
40
|
+
'Content-Type': string;
|
|
41
|
+
};
|
|
42
|
+
body: string;
|
|
43
|
+
}>;
|
|
44
|
+
export { handler };
|
|
45
|
+
//# sourceMappingURL=integration-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-routes.d.ts","sourceRoot":"","sources":["../../.framework/functions/integration-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAseH,QAAA,MAAM,OAAO,UA9P4B,GAAG,YAAY,GAAG;;;;;;EA8PzB,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations
|
|
3
|
+
* @audience core-contributor
|
|
4
|
+
* @layer api-handler
|
|
5
|
+
* @stability stable
|
|
6
|
+
*
|
|
7
|
+
* CRUD API for the `integrations` table. Integration records describe
|
|
8
|
+
* third-party service connections (API credentials, provider, version,
|
|
9
|
+
* configuration). Each integration is scoped to an account and optionally
|
|
10
|
+
* to an app. `is_configured` tracks whether credentials have been set.
|
|
11
|
+
*
|
|
12
|
+
* **Routed by:** `GET/POST/PATCH/DELETE /.netlify/functions/integrations`
|
|
13
|
+
*
|
|
14
|
+
* **Standard CRUD — routes directly by HTTP method (no ?action switch):**
|
|
15
|
+
* | method | condition | handler |
|
|
16
|
+
* |--------|-----------|---------|
|
|
17
|
+
* | GET | ?id | get |
|
|
18
|
+
* | GET | (default) | list |
|
|
19
|
+
* | POST | — | create |
|
|
20
|
+
* | PATCH | — | update |
|
|
21
|
+
* | DELETE | — | remove (soft) |
|
|
22
|
+
*
|
|
23
|
+
* **Authorization:** All operations use `ctx.db` (RLS-scoped). Authenticated
|
|
24
|
+
* principal required for writes.
|
|
25
|
+
*
|
|
26
|
+
* INVARIANT: `remove` is a soft delete (sets `is_active = false`). Hard deletes
|
|
27
|
+
* are not supported to preserve audit trails on integration-linked data.
|
|
28
|
+
* INVARIANT: `update` only patches the explicit allowlist of fields.
|
|
29
|
+
*
|
|
30
|
+
* @seeAlso api-keys.ts (api_keys belong to integrations)
|
|
31
|
+
* @seeAlso trigger-engine.ts (integration webhooks trigger pipelines)
|
|
32
|
+
* @seeAlso audit.ts (emitLog for integration.* events)
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* @chunk-id INTEGRATIONS_LIST_1_0_0
|
|
36
|
+
* @version 1.0.0
|
|
37
|
+
* @hash 5faf0b7052d9aac5f764d1fc30ddde1485a0296ad2b209cd2e3a73c09061a1fc
|
|
38
|
+
* @macro Integrations List Handler
|
|
39
|
+
* @micro Lists integrations with filtering, pagination, and joins
|
|
40
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
41
|
+
* @inputs _body: any — Request body (unused for GET)
|
|
42
|
+
* @outputs Array of sanitized integration records with app/createdBy joins
|
|
43
|
+
* @depends-on [createHandler, joins, sanitizeRecordData]
|
|
44
|
+
* @depended-by [Netlify function routing]
|
|
45
|
+
* @side-effects [DB queries, permission sanitization]
|
|
46
|
+
* @tags integrations, list, crud, pagination
|
|
47
|
+
*/
|
|
48
|
+
export declare const list: (event: any, context: any) => Promise<any>;
|
|
49
|
+
/**
|
|
50
|
+
* @chunk-id INTEGRATIONS_GET_1_0_0
|
|
51
|
+
* @version 1.0.0
|
|
52
|
+
* @hash 975126629cff24c75d2b74328d1ae08dd033ed451d3820d828c62b1f7a27413e
|
|
53
|
+
* @macro Integration Get Handler
|
|
54
|
+
* @micro Returns single integration record with joins and sanitization
|
|
55
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
56
|
+
* @inputs _body: any — Request body (unused for GET)
|
|
57
|
+
* @outputs Sanitized integration record with app/createdBy joins
|
|
58
|
+
* @depends-on [createHandler, joins, sanitizeRecordData]
|
|
59
|
+
* @depended-by [Netlify function routing]
|
|
60
|
+
* @side-effects [DB single row query, permission sanitization]
|
|
61
|
+
* @tags integrations, get, crud, single-record
|
|
62
|
+
*/
|
|
63
|
+
export declare const get: (event: any, context: any) => Promise<any>;
|
|
64
|
+
/**
|
|
65
|
+
* @chunk-id INTEGRATIONS_CREATE_1_0_0
|
|
66
|
+
* @version 1.0.0
|
|
67
|
+
* @hash 27d2242703930d7eeb33b49bbce4c22681ab891750c4c7a298c1c717a39870d7
|
|
68
|
+
* @macro Integration Create Handler
|
|
69
|
+
* @micro Creates integration record with validation and audit logging
|
|
70
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
71
|
+
* @inputs body: object — Integration data including name, integration_type, provider
|
|
72
|
+
* @outputs Inserted integration record
|
|
73
|
+
* @depends-on [createHandler, emitLog]
|
|
74
|
+
* @depended-by [Netlify function routing]
|
|
75
|
+
* @side-effects [DB insert, audit logging]
|
|
76
|
+
* @tags integrations, create, crud, audit
|
|
77
|
+
*/
|
|
78
|
+
export declare const create: (event: any, context: any) => Promise<any>;
|
|
79
|
+
/**
|
|
80
|
+
* @chunk-id INTEGRATIONS_UPDATE_1_0_0
|
|
81
|
+
* @version 1.0.0
|
|
82
|
+
* @hash ab5c8404ddec24ff912c55e7e52cd0ecdd220646b0e07f56a49a02ef3288f3e9
|
|
83
|
+
* @macro Integration Update Handler
|
|
84
|
+
* @micro Updates integration with field allowlist and audit logging
|
|
85
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
86
|
+
* @inputs body: object — Integration updates including id
|
|
87
|
+
* @outputs Updated integration record
|
|
88
|
+
* @depends-on [createHandler, emitLog]
|
|
89
|
+
* @depended-by [Netlify function routing]
|
|
90
|
+
* @side-effects [DB update, audit logging]
|
|
91
|
+
* @tags integrations, update, crud, audit
|
|
92
|
+
*/
|
|
93
|
+
export declare const update: (event: any, context: any) => Promise<any>;
|
|
94
|
+
/**
|
|
95
|
+
* @chunk-id INTEGRATIONS_REMOVE_1_0_0
|
|
96
|
+
* @version 1.0.0
|
|
97
|
+
* @hash a8b5f084d745d2ce69a1e29d74903832ed39647ccb779d0f651a99157777a08a
|
|
98
|
+
* @macro Integration Remove Handler
|
|
99
|
+
* @micro Soft-deletes integration with validation and audit logging
|
|
100
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
101
|
+
* @inputs _body: any — Request body (unused for DELETE)
|
|
102
|
+
* @outputs Updated integration record with is_active: false
|
|
103
|
+
* @depends-on [createHandler, emitLog]
|
|
104
|
+
* @depended-by [Netlify function routing]
|
|
105
|
+
* @side-effects [DB soft delete, audit logging]
|
|
106
|
+
* @tags integrations, remove, crud, audit
|
|
107
|
+
*/
|
|
108
|
+
export declare const remove: (event: any, context: any) => Promise<any>;
|
|
109
|
+
/**
|
|
110
|
+
* @chunk-id INTEGRATIONS_HANDLER_1_0_0
|
|
111
|
+
* @version 1.0.0
|
|
112
|
+
* @hash 14c00f276a22287ed65c019efe327cbb513f860a408191e299864b05c641833c
|
|
113
|
+
* @macro Integrations Router
|
|
114
|
+
* @micro Routes HTTP methods to appropriate handlers (no action switch)
|
|
115
|
+
* @inputs ctx: CoreContext — Request context with principal and database
|
|
116
|
+
* @inputs body: any — Request body for POST/PATCH operations
|
|
117
|
+
* @outputs Varies — Depends on routed handler (list/get/create/update/remove)
|
|
118
|
+
* @depends-on [createHandler, list, get, create, update, remove]
|
|
119
|
+
* @depended-by [Netlify function routing]
|
|
120
|
+
* @side-effects [Delegates to appropriate handler]
|
|
121
|
+
* @tags integrations, router, crud, netlify-function
|
|
122
|
+
*/
|
|
123
|
+
export declare const handler: (event: any, context: any) => Promise<any>;
|
|
124
|
+
//# sourceMappingURL=integrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../.framework/functions/integrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAUH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,IAAI,4CAsCf,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,GAAG,4CAgBd,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,4CAqCjB,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,4CA6BjB,CAAA;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,4CA8BjB,CAAA;AAMF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO,4CAmBlB,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module item-progress
|
|
3
|
+
* @audience both
|
|
4
|
+
* @layer api-handler
|
|
5
|
+
* @stability stable
|
|
6
|
+
*
|
|
7
|
+
* CRUD + upsert API for the `item_progress` table. Tracks per-person, per-item
|
|
8
|
+
* progress state for courses, tasks, onboarding, and any item-based pipeline.
|
|
9
|
+
*
|
|
10
|
+
* Routed by: GET/POST/PATCH /.netlify/functions/item-progress
|
|
11
|
+
*
|
|
12
|
+
* INVARIANT: (person_id, item_id) is unique — state, not a log.
|
|
13
|
+
* INVARIANT: status transitions are forward-only unless force: true.
|
|
14
|
+
* INVARIANT: score must be 0–100 or null.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Lists progress records for the authenticated principal.
|
|
18
|
+
* Query params: person_id, item_id, item_ids (comma-sep), status, limit, offset
|
|
19
|
+
*/
|
|
20
|
+
export declare const list: (event: any, context: any) => Promise<any>;
|
|
21
|
+
/**
|
|
22
|
+
* Gets a single item_progress record by id.
|
|
23
|
+
*/
|
|
24
|
+
export declare const get: (event: any, context: any) => Promise<any>;
|
|
25
|
+
/**
|
|
26
|
+
* Upserts a progress record for (person_id, item_id).
|
|
27
|
+
* Auto-composes title and description. Enforces pipeline transitions.
|
|
28
|
+
* Sets started_at / completed_at timestamps in data. Increments attempts.
|
|
29
|
+
*
|
|
30
|
+
* Body: person_id*, item_id*, type_id*, account_id*, status, score, data,
|
|
31
|
+
* title, description, app_id, force (bypass direction check)
|
|
32
|
+
*/
|
|
33
|
+
export declare const upsert: (event: any, context: any) => Promise<any>;
|
|
34
|
+
/**
|
|
35
|
+
* Partially updates an existing item_progress record.
|
|
36
|
+
* Body: id (required), plus any updatable fields.
|
|
37
|
+
* Enforces forward-only status transitions unless force: true.
|
|
38
|
+
*/
|
|
39
|
+
export declare const update: (event: any, context: any) => Promise<any>;
|
|
40
|
+
export declare const handler: (event: any, context: any) => Promise<any>;
|
|
41
|
+
//# sourceMappingURL=item-progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-progress.d.ts","sourceRoot":"","sources":["../../.framework/functions/item-progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAuCH;;;GAGG;AACH,eAAO,MAAM,IAAI,4CAkBf,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,GAAG,4CAYd,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,4CA6FjB,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM,4CAwDjB,CAAA;AAIF,eAAO,MAAM,OAAO,4CASlB,CAAA"}
|