spine-framework 0.3.145 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +76 -0
- package/.framework/.spine-manifest.json +19 -0
- package/.framework/cli/commands/agents.ts +61 -33
- package/.framework/cli/commands/auth.ts +60 -28
- package/.framework/cli/commands/create-app.ts +212 -80
- package/.framework/cli/commands/dev.ts +184 -68
- package/.framework/cli/commands/doctor.ts +324 -152
- package/.framework/cli/commands/generate.ts +119 -68
- package/.framework/cli/commands/init.ts +141 -242
- package/.framework/cli/commands/install-app.ts +1336 -314
- package/.framework/cli/commands/items.ts +31 -29
- package/.framework/cli/commands/migrate.ts +299 -156
- package/.framework/cli/commands/migrations.ts +62 -30
- package/.framework/cli/commands/pipelines.ts +31 -29
- package/.framework/cli/commands/status.ts +105 -45
- package/.framework/cli/commands/system.ts +47 -42
- package/.framework/cli/commands/test.ts +161 -102
- package/.framework/cli/commands/upgrade.ts +260 -0
- package/.framework/cli/commands/validate-app.ts +517 -161
- package/.framework/cli/context.ts +117 -85
- package/.framework/cli/env-loader.ts +74 -43
- package/.framework/cli/index.ts +70 -46
- package/.framework/cli/lib/project-files.ts +404 -0
- package/.framework/docs/guides/testing-guide.md +1 -1
- package/.framework/docs/runtime-types.md +72 -72
- package/.framework/functions/_shared/access.ts +84 -0
- package/.framework/functions/_shared/agent-runner.ts +5067 -1026
- package/.framework/functions/_shared/app-manifest.ts +214 -94
- package/.framework/functions/_shared/ast.ts +214 -0
- package/.framework/functions/_shared/audit.ts +91 -55
- package/.framework/functions/_shared/cil.ts +368 -127
- package/.framework/functions/_shared/db.ts +337 -68
- package/.framework/functions/_shared/funnel.ts +228 -0
- package/.framework/functions/_shared/geo.ts +105 -0
- package/.framework/functions/_shared/hash-api-key.ts +94 -17
- package/.framework/functions/_shared/index.ts +22 -224
- package/.framework/functions/_shared/kb.ts +832 -58
- package/.framework/functions/_shared/llm.ts +118 -18
- package/.framework/functions/_shared/logging.ts +317 -19
- package/.framework/functions/_shared/middleware.ts +701 -131
- package/.framework/functions/_shared/notify.ts +70 -0
- package/.framework/functions/_shared/outcomes.ts +34 -19
- package/.framework/functions/_shared/permissions.ts +501 -315
- package/.framework/functions/_shared/pipeline-runner.ts +704 -155
- package/.framework/functions/_shared/principal.ts +436 -263
- package/.framework/functions/_shared/rate-limit.ts +233 -0
- package/.framework/functions/_shared/resolve-credentials.ts +86 -19
- package/.framework/functions/_shared/resolve-ids.ts +203 -139
- package/.framework/functions/_shared/retry-deliveries.ts +51 -16
- package/.framework/functions/_shared/schema-utils.ts +602 -521
- package/.framework/functions/_shared/security.ts +345 -0
- package/.framework/functions/_shared/testing.ts +197 -172
- package/.framework/functions/_shared/tracing.ts +351 -21
- package/.framework/functions/_shared/trigger-engine.ts +425 -136
- package/.framework/functions/_shared/webhook-registration.ts +71 -70
- package/.framework/functions/_shared/webhook-registry.ts +126 -83
- package/.framework/functions/account-nodes.ts +30 -30
- package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
- package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
- package/.framework/functions/adapters/openai-outbound.ts +15 -16
- package/.framework/functions/admin-data.ts +596 -173
- package/.framework/functions/admin-funnel.ts +64 -60
- package/.framework/functions/admin-install-funnel.ts +84 -66
- package/.framework/functions/admin-signals.ts +69 -51
- package/.framework/functions/ai-agents.ts +431 -106
- package/.framework/functions/ai-interactions.ts +186 -112
- package/.framework/functions/api-keys.ts +107 -107
- package/.framework/functions/apps.ts +154 -136
- package/.framework/functions/auth.ts +83 -65
- package/.framework/functions/cil-agent-ingest.ts +189 -232
- package/.framework/functions/cil-agent.ts +433 -177
- package/.framework/functions/cil-callmap.ts +642 -430
- package/.framework/functions/cil-config.ts +139 -135
- package/.framework/functions/cil-context.ts +214 -127
- package/.framework/functions/cil-doc.ts +587 -458
- package/.framework/functions/cil-embeddings.ts +453 -364
- package/.framework/functions/cil-graph.ts +427 -142
- package/.framework/functions/cil-ingest.ts +1418 -1154
- package/.framework/functions/cil-pipeline.ts +276 -21
- package/.framework/functions/cil-project.ts +659 -132
- package/.framework/functions/cil-validate.ts +198 -164
- package/.framework/functions/debug-auth.ts +57 -55
- package/.framework/functions/deliveries.ts +80 -21
- package/.framework/functions/embeddings.ts +1023 -318
- package/.framework/functions/eval-harness.ts +146 -108
- package/.framework/functions/integration-outbound.ts +205 -75
- package/.framework/functions/integration-routes.ts +128 -23
- package/.framework/functions/integrations.ts +125 -100
- package/.framework/functions/invites.ts +1095 -460
- package/.framework/functions/item-progress.ts +158 -102
- package/.framework/functions/kb.ts +34 -10
- package/.framework/functions/logs.ts +133 -133
- package/.framework/functions/observability.ts +152 -122
- package/.framework/functions/pipeline-executions.ts +147 -132
- package/.framework/functions/pipelines.ts +134 -119
- package/.framework/functions/prompt-configs.ts +96 -80
- package/.framework/functions/roles.ts +112 -82
- package/.framework/functions/security.ts +450 -0
- package/.framework/functions/system-cron.ts +117 -80
- package/.framework/functions/system.ts +158 -98
- package/.framework/functions/tests.ts +29 -29
- package/.framework/functions/timers.ts +94 -95
- package/.framework/functions/trigger-scheduler.ts +10 -0
- package/.framework/functions/triggers.ts +179 -149
- package/.framework/functions/types.ts +137 -125
- package/.framework/mcp/index.ts +133 -0
- package/.framework/mcp/load-env.ts +60 -0
- package/.framework/mcp/shared/app-manifest.ts +275 -0
- package/.framework/mcp/shared/db.ts +477 -0
- package/.framework/mcp/shared/kb.ts +118 -0
- package/.framework/mcp/tools/architect.ts +431 -0
- package/.framework/mcp/tools/cil/context.ts +345 -0
- package/.framework/mcp/tools/cil/graph.ts +242 -0
- package/.framework/mcp/tools/cil/ingest.ts +1217 -0
- package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
- package/.framework/mcp/tools/cil/pipeline.ts +767 -0
- package/.framework/mcp/tools/cil/project.ts +791 -0
- package/.framework/mcp/tools/cil/retrieval.ts +336 -0
- package/.framework/mcp/tools/cil/search-core.ts +454 -0
- package/.framework/mcp/tools/cil/search.ts +97 -0
- package/.framework/mcp/tools/cil/suggest.ts +186 -0
- package/.framework/mcp/tools/cil/validate.ts +1369 -0
- package/.framework/mcp/tools/kb/delete.ts +139 -0
- package/.framework/mcp/tools/kb/index.ts +52 -0
- package/.framework/mcp/tools/kb/ingest.ts +84 -0
- package/.framework/mcp/tools/kb/list-types.ts +102 -0
- package/.framework/mcp/tools/kb/publish.ts +100 -0
- package/.framework/mcp/tools/kb/reindex.ts +86 -0
- package/.framework/mcp/tools/kb/revoke.ts +85 -0
- package/.framework/mcp/tools/kb/search.ts +101 -0
- package/.framework/mcp/tools/kb/upsert.ts +125 -0
- package/.framework/mcp/tools/observability.ts +510 -0
- package/.framework/migrations/001_core_schema.sql +15 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
- package/.framework/migrations/003_core_system_data.sql +16 -1
- package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
- package/.framework/migrations/005_core_observability.sql +17 -1
- package/.framework/migrations/006_security_hardening_rls.sql +15 -0
- package/.framework/migrations/007_kb_article_list.sql +17 -1
- package/.framework/migrations/008_items_target.sql +15 -0
- package/.framework/migrations/009_roles_slug_unique.sql +15 -0
- package/.framework/migrations/010_auth_user_trigger.sql +15 -0
- package/.framework/migrations/011_spine_system_account.sql +16 -0
- package/.framework/migrations/012_service_role_grants.sql +16 -0
- package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
- package/.framework/migrations/014_apps_required_roles.sql +16 -0
- package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
- package/.framework/migrations/016_cil_types.sql +281 -0
- package/.framework/migrations/017_cil_stable_ids.sql +37 -0
- package/.framework/migrations/018_runtime_tables.sql +129 -0
- package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
- package/.framework/migrations/020_schema_reconciliation.sql +67 -0
- package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
- package/.framework/migrations/032_cil_status_migration.sql +73 -0
- package/.framework/migrations/033_cil_versioning.sql +73 -0
- package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
- package/.framework/migrations/035_rate_limits.sql +55 -0
- package/.framework/migrations/036_demo_record_flags.sql +72 -0
- package/.framework/migrations/037_kb_types_canonical.sql +244 -0
- package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
- package/.framework/migrations/042_registration_hierarchy.sql +309 -0
- package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
- package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
- package/.framework/migrations/045_security_critical_rls.sql +139 -0
- package/.framework/migrations/046_security_missing_rls.sql +79 -0
- package/.framework/migrations/047_people_updated_by.sql +27 -0
- package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
- package/.framework/migrations/049_security_blocklist.sql +148 -0
- package/.framework/migrations/050_notifications.sql +49 -0
- package/.framework/migrations/051_message_agent_fields.sql +74 -0
- package/.framework/migrations/052_registration_security.sql +421 -0
- package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
- package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
- package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
- package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
- package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
- package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
- package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
- package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
- package/.framework/migrations/061_fk_dedup.sql +32 -0
- package/.framework/public/spine-logo.svg +10 -3
- package/.framework/scripts/app-install-cli.ts +190 -93
- package/.framework/scripts/assemble-frontend.sh +127 -44
- package/.framework/scripts/assemble-functions.sh +128 -30
- package/.framework/scripts/boundary-check.sh +6 -2
- package/.framework/scripts/build-manifest.sh +24 -68
- package/.framework/scripts/check-core-integrity.sh +15 -76
- package/.framework/scripts/checksum-manifest.mts +343 -0
- package/.framework/scripts/cil-migrate-markers.ts +403 -0
- package/.framework/scripts/fix-cil-markers.mjs +176 -0
- package/.framework/scripts/verify-integrity.sh +21 -57
- package/.framework/scripts/verify-manifest.mts +305 -0
- package/.framework/seeds/types/funnel_signal_use.json +74 -21
- package/.framework/seeds/types/spine_instance.json +73 -21
- package/.framework/src/App.tsx +118 -72
- package/.framework/src/apps/admin/index.tsx +855 -58
- package/.framework/src/components/AppWrapper.tsx +43 -45
- package/.framework/src/components/CustomAppLoader.tsx +160 -116
- package/.framework/src/components/admin/AdminListPage.tsx +46 -44
- package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
- package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
- package/.framework/src/components/admin/PageInstructions.tsx +98 -2
- package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
- package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
- package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
- package/.framework/src/components/app-sidebar.tsx +42 -45
- package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
- package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
- package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
- package/.framework/src/components/kb/KBArticleList.tsx +251 -10
- package/.framework/src/components/layout/AppShell.tsx +51 -45
- package/.framework/src/components/layout/Header.tsx +42 -43
- package/.framework/src/components/layout/Layout.tsx +46 -46
- package/.framework/src/components/layout/Sidebar.tsx +196 -96
- package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
- package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
- package/.framework/src/components/runtime/DataFilters.tsx +49 -74
- package/.framework/src/components/runtime/DataHeader.tsx +53 -32
- package/.framework/src/components/runtime/DataListPage.tsx +51 -155
- package/.framework/src/components/runtime/DataStats.tsx +66 -44
- package/.framework/src/components/runtime/DataTable.tsx +49 -149
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
- package/.framework/src/components/runtime/index.ts +119 -16
- package/.framework/src/components/search-form.tsx +46 -29
- package/.framework/src/components/shared/AgentView.tsx +65 -48
- package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
- package/.framework/src/components/shared/InviteManager.tsx +207 -97
- package/.framework/src/components/shared/MemberList.tsx +97 -0
- package/.framework/src/components/shared/SchemaFields.tsx +107 -86
- package/.framework/src/components/ui/DataTable.tsx +80 -68
- package/.framework/src/components/ui/Form.tsx +157 -146
- package/.framework/src/components/ui/ItemCard.tsx +74 -67
- package/.framework/src/components/ui/ItemListView.tsx +73 -68
- package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
- package/.framework/src/components/ui/Modal.tsx +78 -68
- package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
- package/.framework/src/components/ui/accordion.tsx +85 -86
- package/.framework/src/components/ui/alert-dialog.tsx +197 -184
- package/.framework/src/components/ui/alert.tsx +105 -94
- package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
- package/.framework/src/components/ui/avatar.tsx +122 -107
- package/.framework/src/components/ui/badge.tsx +60 -55
- package/.framework/src/components/ui/breadcrumb.tsx +127 -128
- package/.framework/src/components/ui/button-group.tsx +86 -72
- package/.framework/src/components/ui/button.tsx +71 -50
- package/.framework/src/components/ui/calendar.tsx +72 -57
- package/.framework/src/components/ui/card.tsx +136 -129
- package/.framework/src/components/ui/carousel.tsx +226 -107
- package/.framework/src/components/ui/chart.tsx +252 -147
- package/.framework/src/components/ui/checkbox.tsx +43 -44
- package/.framework/src/components/ui/collapsible.tsx +86 -71
- package/.framework/src/components/ui/combobox.tsx +282 -249
- package/.framework/src/components/ui/command.tsx +158 -146
- package/.framework/src/components/ui/context-menu.tsx +239 -240
- package/.framework/src/components/ui/dialog.tsx +174 -157
- package/.framework/src/components/ui/direction.tsx +72 -56
- package/.framework/src/components/ui/drawer.tsx +168 -169
- package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
- package/.framework/src/components/ui/empty.tsx +131 -120
- package/.framework/src/components/ui/field.tsx +205 -173
- package/.framework/src/components/ui/hover-card.tsx +71 -72
- package/.framework/src/components/ui/input-group.tsx +148 -133
- package/.framework/src/components/ui/input-otp.tsx +99 -86
- package/.framework/src/components/ui/input.tsx +43 -41
- package/.framework/src/components/ui/item.tsx +207 -185
- package/.framework/src/components/ui/kbd.tsx +57 -56
- package/.framework/src/components/ui/label.tsx +45 -41
- package/.framework/src/components/ui/menubar.tsx +268 -236
- package/.framework/src/components/ui/native-select.tsx +85 -86
- package/.framework/src/components/ui/navigation-menu.tsx +166 -156
- package/.framework/src/components/ui/pagination.tsx +131 -141
- package/.framework/src/components/ui/popover.tsx +125 -128
- package/.framework/src/components/ui/progress.tsx +47 -44
- package/.framework/src/components/ui/radio-group.tsx +60 -55
- package/.framework/src/components/ui/resizable.tsx +85 -72
- package/.framework/src/components/ui/scroll-area.tsx +57 -58
- package/.framework/src/components/ui/select.tsx +182 -169
- package/.framework/src/components/ui/separator.tsx +42 -43
- package/.framework/src/components/ui/sheet.tsx +170 -159
- package/.framework/src/components/ui/sidebar.tsx +395 -398
- package/.framework/src/components/ui/skeleton.tsx +42 -43
- package/.framework/src/components/ui/slider.tsx +61 -44
- package/.framework/src/components/ui/sonner.tsx +44 -44
- package/.framework/src/components/ui/spinner.tsx +47 -42
- package/.framework/src/components/ui/switch.tsx +56 -42
- package/.framework/src/components/ui/table-primitives.tsx +272 -132
- package/.framework/src/components/ui/table.tsx +140 -142
- package/.framework/src/components/ui/tabs.tsx +110 -93
- package/.framework/src/components/ui/textarea.tsx +43 -44
- package/.framework/src/components/ui/toggle-group.tsx +87 -71
- package/.framework/src/components/ui/toggle.tsx +56 -56
- package/.framework/src/components/ui/tooltip.tsx +99 -85
- package/.framework/src/contexts/AppContext.tsx +166 -114
- package/.framework/src/contexts/AuthContext.tsx +232 -137
- package/.framework/src/hooks/use-mobile.ts +43 -44
- package/.framework/src/hooks/useApi.ts +185 -172
- package/.framework/src/hooks/useAppPath.ts +31 -29
- package/.framework/src/hooks/useApps.ts +77 -42
- package/.framework/src/hooks/useEntityList.ts +66 -29
- package/.framework/src/hooks/useEntityRecord.ts +76 -32
- package/.framework/src/hooks/useForm.ts +62 -30
- package/.framework/src/hooks/useListSchema.ts +60 -43
- package/.framework/src/hooks/useSchemaRecord.ts +115 -95
- package/.framework/src/lib/api.ts +258 -134
- package/.framework/src/lib/registration.ts +181 -0
- package/.framework/src/lib/supabase.ts +118 -81
- package/.framework/src/lib/utils.ts +266 -266
- package/.framework/src/main.tsx +43 -44
- package/.framework/src/pages/DashboardPage.tsx +44 -43
- package/.framework/src/pages/NoAppPage.tsx +50 -0
- package/.framework/src/pages/NotFoundPage.tsx +32 -29
- package/.framework/src/pages/SetupPage.tsx +34 -33
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
- package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
- package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
- package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
- package/.framework/src/pages/admin/AppsPage.tsx +45 -42
- package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
- package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
- package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
- package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
- package/.framework/src/pages/admin/LogsPage.tsx +87 -137
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
- package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
- package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
- package/.framework/src/pages/admin/RolesPage.tsx +47 -164
- package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
- package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
- package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
- package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
- package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
- package/.framework/src/pages/admin/TimersPage.tsx +44 -42
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
- package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
- package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
- package/.framework/src/pages/admin/TypesPage.tsx +45 -42
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
- package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
- package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
- package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
- package/.framework/src/pages/auth/LoginPage.tsx +38 -32
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
- package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
- package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
- package/.framework/src/types/auth.ts +101 -93
- package/.framework/src/types/types.ts +283 -262
- package/.framework/templates/project.json +87 -0
- package/.framework/templates/spine.config.neutral.json +7 -0
- package/.framework/tests/api/api-surface.test.ts +381 -0
- package/.framework/tests/fixtures/seed.ts +427 -0
- package/.framework/tests/fixtures/teardown.ts +228 -0
- package/.framework/tests/reporter.ts +351 -0
- package/.framework/tests/setup.ts +135 -0
- package/.framework/tests/ui/ui-sweep.ts +278 -0
- package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
- package/.framework/tests/unit/agent-runner.test.ts +2389 -0
- package/.framework/tests/unit/ai-interactions.test.ts +81 -0
- package/.framework/tests/unit/app-manifest.test.ts +359 -0
- package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
- package/.framework/tests/unit/cil-determinism.test.ts +85 -0
- package/.framework/tests/unit/core-isolation.test.ts +153 -0
- package/.framework/tests/unit/funnel-signals.test.ts +135 -0
- package/.framework/tests/unit/install-app.test.ts +1759 -0
- package/.framework/tests/unit/invites-security.test.ts +572 -0
- package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
- package/.framework/tests/unit/kb-search.test.ts +119 -0
- package/.framework/tests/unit/migrate.test.ts +509 -0
- package/.framework/tests/unit/notify.test.ts +136 -0
- package/.framework/tests/unit/permissions.test.ts +269 -0
- package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
- package/.framework/tests/unit/principal-cache.test.ts +138 -0
- package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
- package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
- package/.framework/tests/unit/schema-utils.test.ts +225 -0
- package/.framework/tests/unit/trigger-engine.test.ts +513 -0
- package/.framework/tests/unit/validate-app.test.ts +527 -0
- package/README.md +34 -3
- package/bin/spine-framework.cjs +1 -0
- package/config/tailwind.config.cjs +7 -0
- package/config/tsconfig.functions.json +42 -0
- package/config/tsconfig.json +37 -9
- package/config/vite.config.ts +31 -2
- package/netlify.toml +31 -3
- package/package.json +46 -29
- package/scripts/assemble-frontend.sh +127 -44
- package/scripts/assemble-functions.sh +127 -29
- package/scripts/boundary-check.sh +6 -2
- package/scripts/build-manifest.sh +24 -68
- package/scripts/checksum-manifest.mts +345 -0
- package/scripts/dev-clean.sh +86 -0
- package/scripts/dev-netlify.sh +49 -0
- package/scripts/netlify-dev-wrapper.sh +2 -0
- package/scripts/verify-install.ts +358 -0
- package/scripts/verify-integrity.sh +21 -57
- package/scripts/verify-manifest.mts +305 -0
- package/templates/project/gitignore +45 -0
- package/{config → templates/project}/package-lock.json +22335 -9366
- package/vitest.config.ts +46 -0
- package/.framework/public/spine.config.json +0 -91
- package/config/deno.lock +0 -108
- package/config/tsconfig.node.tsbuildinfo +0 -1
- package/config/tsconfig.tsbuildinfo +0 -1
- package/config/vite.config.d.ts +0 -2
- package/custom/.devin/AGENT.md +0 -357
- package/custom/.devin/skills/install-app/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
- package/custom/.devin/workflows/app-install.yaml +0 -83
- package/custom/README.md +0 -79
- package/docs/README.md +0 -15
- package/scripts/app-install-cli.ts +0 -286
- package/scripts/check-core-integrity.sh +0 -82
- package/scripts/ingest-chunks.cjs +0 -202
- package/scripts/kb-chunk-parser.cjs +0 -312
- package/scripts/kb-chunk-parser.ts +0 -330
- package/scripts/kb-ingest-docs.ts +0 -203
- package/scripts/load-test-app-install.ts +0 -484
- package/scripts/test-login.js +0 -33
- package/spine.config.json +0 -91
|
@@ -1,8 +1,24 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/functions/pipelines.ts"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Pipeline handler module imports shared dependencies and exports CRUD and dispatch handlers."]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Import createHandler, adminDb, emitLog, sanitizeRecordData, and isSystemAdmin for pipeline operation handlers."]
|
|
4
|
+
// CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="shared module imports" outputs="bound handler functions" errors="import failures" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Module header imports shared middleware and helpers" notable_decisions="Uses shared helpers instead of inline logic"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="internal"]
|
|
1
10
|
import { createHandler } from './_shared/middleware'
|
|
2
11
|
import { adminDb } from './_shared/db'
|
|
3
12
|
import { emitLog } from './_shared/audit'
|
|
4
13
|
import { sanitizeRecordData } from './_shared/permissions'
|
|
5
14
|
import { isSystemAdmin } from './_shared/principal'
|
|
15
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Pipeline handler module imports shared dependencies and exports CRUD and dispatch handlers.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.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/functions/pipelines.ts:module_header:module_header"]
|
|
6
22
|
|
|
7
23
|
|
|
8
24
|
|
|
@@ -13,21 +29,14 @@ import { isSystemAdmin } from './_shared/principal'
|
|
|
13
29
|
|
|
14
30
|
|
|
15
31
|
|
|
16
|
-
// CIL[BEGIN
|
|
17
|
-
// CIL[DOC-MACRO purpose="
|
|
18
|
-
// CIL[DOC-RESPONSIBILITY responsibility="
|
|
19
|
-
// CIL[DOC-CONTEXT module="pipelines" layer="
|
|
20
|
-
// CIL[DOC-CONTRACT inputs="ctx,
|
|
21
|
-
// CIL[DOC-MICRO logic_summary="
|
|
22
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.
|
|
32
|
+
// CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:listByTrigger:constant" type="constant" identity="listByTrigger" parent="~/.framework/functions/pipelines.ts"]
|
|
33
|
+
// CIL[DOC-MACRO purpose="List pipelines filtered by trigger type, optional app and active state."]
|
|
34
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return a filtered, sanitized list of pipelines for the account."]
|
|
35
|
+
// CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
|
|
36
|
+
// CIL[DOC-CONTRACT inputs="ctx.query: trigger_type, app_id, include_inactive" outputs="sanitized pipeline array" errors="Missing trigger_type or account; DB errors" side_effects="none"]
|
|
37
|
+
// CIL[DOC-MICRO logic_summary="Validate trigger_type and account, query pipelines with filters, sanitize each result" notable_decisions="System admins use adminDb; non-admins use ctx.db"]
|
|
38
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
23
39
|
// CIL[DOC-STABILITY stability="stable"]
|
|
24
|
-
// CIL[DOC-AUDIENCE audience="developer"]
|
|
25
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
26
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
27
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
28
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
29
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
30
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
31
40
|
export const listByTrigger = createHandler(async (ctx, _body) => {
|
|
32
41
|
const { trigger_type, app_id, include_inactive } = ctx.query || {}
|
|
33
42
|
|
|
@@ -64,21 +73,21 @@ export const listByTrigger = createHandler(async (ctx, _body) => {
|
|
|
64
73
|
|
|
65
74
|
return sanitized
|
|
66
75
|
})
|
|
67
|
-
// CIL[
|
|
68
|
-
// CIL[
|
|
69
|
-
// CIL[DOC-
|
|
70
|
-
// CIL[DOC-
|
|
71
|
-
// CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
72
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Array of pipeline records" errors="Throws on validation or DB errors" side_effects="Database queries, permission sanitization"]
|
|
73
|
-
// CIL[DOC-MICRO logic_summary="Lists pipelines with optional app filter, applies sanitization" notable_decisions="[]"]
|
|
74
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
75
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
76
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 3. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
77
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 3. Total affected: 4."]
|
|
78
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
79
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
76
|
+
// CIL[DOC-VECTOR type="context" content="purpose='List pipelines filtered by trigger type, optional app and active state.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
77
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
78
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
79
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
80
80
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
81
81
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
82
|
+
// CIL[END stable_id="~/.framework/functions/pipelines.ts:listByTrigger:constant"]
|
|
83
|
+
// CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:list:constant" type="constant" identity="list" parent="~/.framework/functions/pipelines.ts"]
|
|
84
|
+
// CIL[DOC-MACRO purpose="List all pipelines for the account, optionally filtered by app and active state."]
|
|
85
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return a sanitized list of all pipelines for the account."]
|
|
86
|
+
// CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
|
|
87
|
+
// CIL[DOC-CONTRACT inputs="ctx.query: app_id, include_inactive" outputs="sanitized pipeline array" errors="Missing account; DB errors" side_effects="none"]
|
|
88
|
+
// CIL[DOC-MICRO logic_summary="Validate account, query all pipelines with optional app/active filters, sanitize results" notable_decisions="System admins use adminDb"]
|
|
89
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
90
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
82
91
|
export const list = createHandler(async (ctx, body) => {
|
|
83
92
|
const { app_id, include_inactive } = ctx.query || {}
|
|
84
93
|
|
|
@@ -107,21 +116,21 @@ export const list = createHandler(async (ctx, body) => {
|
|
|
107
116
|
|
|
108
117
|
return sanitized
|
|
109
118
|
})
|
|
110
|
-
// CIL[
|
|
111
|
-
// CIL[
|
|
112
|
-
// CIL[DOC-
|
|
113
|
-
// CIL[DOC-
|
|
114
|
-
// CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
|
|
115
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Single pipeline record" errors="Throws if ID missing or DB error" side_effects="Database query, permission sanitization"]
|
|
116
|
-
// CIL[DOC-MICRO logic_summary="Fetches pipeline by ID, applies permission sanitization" notable_decisions="[]"]
|
|
117
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
118
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
119
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/components/ui/dialog.tsx, \."]
|
|
120
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
121
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
122
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
119
|
+
// CIL[DOC-VECTOR type="context" content="purpose='List all pipelines for the account, optionally filtered by app and active state.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
120
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
121
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
122
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
123
123
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
124
124
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
125
|
+
// CIL[END stable_id="~/.framework/functions/pipelines.ts:list:constant"]
|
|
126
|
+
// CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:get:constant" type="constant" identity="get" parent="~/.framework/functions/pipelines.ts"]
|
|
127
|
+
// CIL[DOC-MACRO purpose="Get a single pipeline by ID with sanitized output."]
|
|
128
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return one sanitized pipeline record matching the requested ID."]
|
|
129
|
+
// CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
|
|
130
|
+
// CIL[DOC-CONTRACT inputs="ctx.query.id" outputs="sanitized pipeline object" errors="Missing ID or account; not found; DB errors" side_effects="none"]
|
|
131
|
+
// CIL[DOC-MICRO logic_summary="Validate ID and account, fetch single pipeline, sanitize result" notable_decisions="Uses .single() and adminDb for system admins"]
|
|
132
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
133
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
125
134
|
export const get = createHandler(async (ctx, body) => {
|
|
126
135
|
const { id } = ctx.query || {}
|
|
127
136
|
|
|
@@ -141,21 +150,21 @@ export const get = createHandler(async (ctx, body) => {
|
|
|
141
150
|
|
|
142
151
|
return await sanitizeRecordData(ctx, data, 'pipeline')
|
|
143
152
|
})
|
|
144
|
-
// CIL[
|
|
145
|
-
// CIL[
|
|
146
|
-
// CIL[DOC-
|
|
147
|
-
// CIL[DOC-
|
|
148
|
-
// CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
|
|
149
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Created pipeline record" errors="Throws on validation or DB errors" side_effects="Database insert, audit logging"]
|
|
150
|
-
// CIL[DOC-MICRO logic_summary="Validates required fields, creates pipeline with audit trail" notable_decisions="[]"]
|
|
151
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
152
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
153
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
|
|
154
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
155
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
156
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
153
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Get a single pipeline by ID with sanitized output.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
154
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
155
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
156
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
157
157
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
158
158
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
159
|
+
// CIL[END stable_id="~/.framework/functions/pipelines.ts:get:constant"]
|
|
160
|
+
// CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:create:constant" type="constant" identity="create" parent="~/.framework/functions/pipelines.ts"]
|
|
161
|
+
// CIL[DOC-MACRO purpose="Create a new pipeline record and emit an audit log."]
|
|
162
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Insert a new pipeline and return the created record."]
|
|
163
|
+
// CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
|
|
164
|
+
// CIL[DOC-CONTRACT inputs="body: name, trigger_type, stages; optional app_id, description, config, metadata" outputs="created pipeline record" errors="Missing required fields; unauthenticated; DB errors" side_effects="Inserts row and emits pipeline.created audit log"]
|
|
165
|
+
// CIL[DOC-MICRO logic_summary="Validate required fields and principal, insert pipeline with created_by, emit audit log" notable_decisions="Defaults empty optional fields to null or empty objects"]
|
|
166
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
167
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
159
168
|
export const create = createHandler(async (ctx, body) => {
|
|
160
169
|
const { app_id, name, description, trigger_type, config, stages, metadata } = body
|
|
161
170
|
|
|
@@ -192,21 +201,21 @@ export const create = createHandler(async (ctx, body) => {
|
|
|
192
201
|
|
|
193
202
|
return data
|
|
194
203
|
})
|
|
195
|
-
// CIL[
|
|
196
|
-
// CIL[
|
|
197
|
-
// CIL[DOC-
|
|
198
|
-
// CIL[DOC-
|
|
199
|
-
// CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
200
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Updated pipeline record" errors="Throws on validation or DB errors" side_effects="Database update, audit logging"]
|
|
201
|
-
// CIL[DOC-MICRO logic_summary="Updates specified fields, maintains audit trail" notable_decisions="[]"]
|
|
202
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
203
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
204
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
205
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
206
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
207
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
204
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Create a new pipeline record and emit an audit log.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
205
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
206
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
207
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
208
208
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
209
209
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
210
|
+
// CIL[END stable_id="~/.framework/functions/pipelines.ts:create:constant"]
|
|
211
|
+
// CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:update:constant" type="constant" identity="update" parent="~/.framework/functions/pipelines.ts"]
|
|
212
|
+
// CIL[DOC-MACRO purpose="Update an existing pipeline by ID and emit an audit log."]
|
|
213
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Partially update a pipeline record and return the updated row."]
|
|
214
|
+
// CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
|
|
215
|
+
// CIL[DOC-CONTRACT inputs="body or query: id; optional name, description, config, stages, metadata, trigger_type, is_active, app_id" outputs="updated pipeline record" errors="Missing ID or principal; not found; DB errors" side_effects="Updates row and emits pipeline.updated audit log"]
|
|
216
|
+
// CIL[DOC-MICRO logic_summary="Fetch current record, build sparse update set, apply update, emit audit log" notable_decisions="Uses undefined check to allow null values; updates updated_at"]
|
|
217
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
218
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
210
219
|
export const update = createHandler(async (ctx, body) => {
|
|
211
220
|
const id = body?.id || ctx.query?.id
|
|
212
221
|
const { id: _bodyId, name, description, config, stages, metadata, trigger_type, is_active, app_id } = body || {}
|
|
@@ -255,21 +264,21 @@ export const update = createHandler(async (ctx, body) => {
|
|
|
255
264
|
|
|
256
265
|
return data
|
|
257
266
|
})
|
|
258
|
-
// CIL[
|
|
259
|
-
// CIL[
|
|
260
|
-
// CIL[DOC-
|
|
261
|
-
// CIL[DOC-
|
|
262
|
-
// CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\"]"]
|
|
263
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Updated pipeline record" errors="Throws on validation or DB errors" side_effects="Database update, audit logging"]
|
|
264
|
-
// CIL[DOC-MICRO logic_summary="Updates is_active flag, tracks state changes" notable_decisions="[]"]
|
|
265
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
266
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
267
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 1. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts."]
|
|
268
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
|
|
269
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
270
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
267
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Update an existing pipeline by ID and emit an audit log.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
268
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
269
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
270
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
271
271
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
272
272
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
273
|
+
// CIL[END stable_id="~/.framework/functions/pipelines.ts:update:constant"]
|
|
274
|
+
// CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:toggle:constant" type="constant" identity="toggle" parent="~/.framework/functions/pipelines.ts"]
|
|
275
|
+
// CIL[DOC-MACRO purpose="Toggle the active state of a pipeline."]
|
|
276
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Set is_active on a pipeline and return the updated record."]
|
|
277
|
+
// CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
|
|
278
|
+
// CIL[DOC-CONTRACT inputs="body: id, is_active" outputs="updated pipeline record" errors="Missing fields or principal; not found; DB errors" side_effects="Updates is_active and emits pipeline.toggled audit log"]
|
|
279
|
+
// CIL[DOC-MICRO logic_summary="Validate id and is_active, verify pipeline exists, update active flag, emit audit log" notable_decisions="Switches active state independently from full update"]
|
|
280
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
281
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
273
282
|
export const toggle = createHandler(async (ctx, body) => {
|
|
274
283
|
const { id, is_active } = body
|
|
275
284
|
|
|
@@ -307,21 +316,21 @@ export const toggle = createHandler(async (ctx, body) => {
|
|
|
307
316
|
|
|
308
317
|
return data
|
|
309
318
|
})
|
|
310
|
-
// CIL[
|
|
311
|
-
// CIL[
|
|
312
|
-
// CIL[DOC-
|
|
313
|
-
// CIL[DOC-
|
|
314
|
-
// CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
315
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Array of execution records" errors="Throws if pipeline_id missing or DB error" side_effects="Database query"]
|
|
316
|
-
// CIL[DOC-MICRO logic_summary="Queries execution history with pagination" notable_decisions="[]"]
|
|
317
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
318
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
319
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
320
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
321
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
322
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
319
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Toggle the active state of a pipeline.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
320
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
321
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
322
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
323
323
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
324
324
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
325
|
+
// CIL[END stable_id="~/.framework/functions/pipelines.ts:toggle:constant"]
|
|
326
|
+
// CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:getExecutions:constant" type="constant" identity="getExecutions" parent="~/.framework/functions/pipelines.ts"]
|
|
327
|
+
// CIL[DOC-MACRO purpose="List execution records for a pipeline with pagination."]
|
|
328
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return paginated pipeline execution history."]
|
|
329
|
+
// CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
|
|
330
|
+
// CIL[DOC-CONTRACT inputs="ctx.query: pipeline_id, limit, offset" outputs="array of pipeline execution records" errors="Missing pipeline_id; DB errors" side_effects="none"]
|
|
331
|
+
// CIL[DOC-MICRO logic_summary="Validate pipeline_id, query executions with range, return data" notable_decisions="Default limit 50 and offset 0; uses ctx.db"]
|
|
332
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
333
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
325
334
|
export const getExecutions = createHandler(async (ctx, _body) => {
|
|
326
335
|
const { pipeline_id, limit = 50, offset = 0 } = ctx.query || {}
|
|
327
336
|
|
|
@@ -343,21 +352,21 @@ export const getExecutions = createHandler(async (ctx, _body) => {
|
|
|
343
352
|
|
|
344
353
|
return data
|
|
345
354
|
})
|
|
346
|
-
// CIL[
|
|
347
|
-
// CIL[
|
|
348
|
-
// CIL[DOC-
|
|
349
|
-
// CIL[DOC-
|
|
350
|
-
// CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[]"]
|
|
351
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="{success: true}" errors="Throws if ID missing or DB error" side_effects="Database delete, audit logging"]
|
|
352
|
-
// CIL[DOC-MICRO logic_summary="Hard deletes pipeline, maintains audit trail" notable_decisions="[]"]
|
|
353
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
354
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
355
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
356
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
357
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
358
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
355
|
+
// CIL[DOC-VECTOR type="context" content="purpose='List execution records for a pipeline with pagination.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
356
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
357
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
358
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
359
359
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
360
360
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
361
|
+
// CIL[END stable_id="~/.framework/functions/pipelines.ts:getExecutions:constant"]
|
|
362
|
+
// CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:remove:constant" type="constant" identity="remove" parent="~/.framework/functions/pipelines.ts"]
|
|
363
|
+
// CIL[DOC-MACRO purpose="Delete a pipeline by ID and emit an audit log."]
|
|
364
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Remove a pipeline record and return success."]
|
|
365
|
+
// CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
|
|
366
|
+
// CIL[DOC-CONTRACT inputs="ctx.query.id" outputs="{ success: true }" errors="Missing ID; not found; DB errors" side_effects="Deletes row and emits pipeline.deleted audit log"]
|
|
367
|
+
// CIL[DOC-MICRO logic_summary="Validate ID, fetch existing pipeline, delete, emit audit log" notable_decisions="Fetches minimal id and name before delete for audit"]
|
|
368
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
369
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
361
370
|
export const remove = createHandler(async (ctx, _body) => {
|
|
362
371
|
const id = ctx.query?.id
|
|
363
372
|
|
|
@@ -387,21 +396,21 @@ export const remove = createHandler(async (ctx, _body) => {
|
|
|
387
396
|
|
|
388
397
|
return { success: true }
|
|
389
398
|
})
|
|
390
|
-
// CIL[
|
|
391
|
-
// CIL[
|
|
392
|
-
// CIL[DOC-
|
|
393
|
-
// CIL[DOC-
|
|
394
|
-
// CIL[DOC-CONTEXT module="pipelines" layer="api-handler" related_files="[]"]
|
|
395
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="Varies by handler" errors="Throws on unsupported methods" side_effects="Delegates to appropriate handler"]
|
|
396
|
-
// CIL[DOC-MICRO logic_summary="Routes based on action and method, delegates to handlers" notable_decisions="[]"]
|
|
397
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
398
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
399
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
400
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
401
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
402
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
399
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Delete a pipeline by ID and emit an audit log.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
400
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
401
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
402
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
403
403
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
404
404
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
405
|
+
// CIL[END stable_id="~/.framework/functions/pipelines.ts:remove:constant"]
|
|
406
|
+
// CIL[BEGIN stable_id="~/.framework/functions/pipelines.ts:handler:constant" type="constant" identity="handler" parent="~/.framework/functions/pipelines.ts"]
|
|
407
|
+
// CIL[DOC-MACRO purpose="Dispatch pipeline requests to the correct handler based on action and method."]
|
|
408
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Route incoming pipeline API calls to the appropriate handler."]
|
|
409
|
+
// CIL[DOC-CONTEXT module="pipelines" layer="functions" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/permissions.ts,.framework/functions/_shared/principal.ts,.framework/functions/pipelines.ts"]
|
|
410
|
+
// CIL[DOC-CONTRACT inputs="ctx.query.action, ctx.query.method, body" outputs="handler result" errors="Invalid action or method" side_effects="Calls delegated handlers"]
|
|
411
|
+
// CIL[DOC-MICRO logic_summary="Switch on action and method to route to listByTrigger, getExecutions, toggle, get, list, create, update, or remove" notable_decisions="Default GET routes to list or get by presence of id"]
|
|
412
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
413
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
405
414
|
export const handler = createHandler(async (ctx, body) => {
|
|
406
415
|
const { action } = ctx.query || {}
|
|
407
416
|
const method = ctx.query?.method || 'GET'
|
|
@@ -440,4 +449,10 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
440
449
|
|
|
441
450
|
throw new Error('Invalid action or method')
|
|
442
451
|
})
|
|
443
|
-
// CIL[
|
|
452
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Dispatch pipeline requests to the correct handler based on action and method.'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
453
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
454
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
455
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
456
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
457
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
458
|
+
// CIL[END stable_id="~/.framework/functions/pipelines.ts:handler:constant"]
|