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,3 +1,12 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/functions/triggers.ts"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Triggers function module — exports agent event types and CRUD + dispatch handlers for the triggers table"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Define agent event constants and expose Edge-function-style handlers for listing, creating, updating, toggling and dispatching trigger records and executions"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="triggers" 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="module imports" outputs="AGENT_EVENT_TYPES, getAgentEventTypes, listByEvent, list, get, getExecutions, create, update, remove, toggle, handler" errors="none" side_effects="none at module load"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Imports shared middleware, database, audit and permission helpers, then defines the public API surface of the triggers feature" notable_decisions="Exports named constants and createHandler wrappers; dispatch is routed by action query parameter"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="developers"]
|
|
1
10
|
|
|
2
11
|
|
|
3
12
|
|
|
@@ -8,43 +17,43 @@
|
|
|
8
17
|
|
|
9
18
|
|
|
10
19
|
|
|
11
|
-
// CIL[BEGIN chunk_id="triggers_module_header_1783931956" type="module_header" identity="module_header" parent="none"]
|
|
12
|
-
// CIL[DOC-MACRO purpose="Import dependencies for triggers CRUD API"]
|
|
13
|
-
// CIL[DOC-RESPONSIBILITY responsibility="Provide middleware, database, audit and permissions utilities"]
|
|
14
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
15
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="imported modules and permissions instance" errors="none" side_effects="none"]
|
|
16
|
-
// CIL[DOC-MICRO logic_summary="Imports all required modules for trigger management operations" notable_decisions="[]"]
|
|
17
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
18
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
19
|
-
// CIL[DOC-AUDIENCE audience="developer"]
|
|
20
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
21
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
22
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
23
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
24
|
-
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
25
|
-
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
26
20
|
import { createHandler } from './_shared/middleware'
|
|
27
21
|
import { joins, adminDb } from './_shared/db'
|
|
28
22
|
import { emitLog } from './_shared/audit'
|
|
29
23
|
import { PermissionEngine, sanitizeRecordData } from './_shared/permissions'
|
|
30
24
|
import { isSystemAdmin } from './_shared/principal'
|
|
31
|
-
|
|
25
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Triggers function module — exports agent event types and CRUD + dispatch handlers for the triggers table'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
26
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
27
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
28
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
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
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:module_header:module_header"]
|
|
32
|
+
|
|
33
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:permissions:constant" type="constant" identity="permissions" parent="~/.framework/functions/triggers.ts"]
|
|
34
|
+
// CIL[DOC-MACRO purpose="PermissionEngine alias used for admin and permission checks in trigger handlers"]
|
|
35
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the permission engine reference used by the create handler"]
|
|
36
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
37
|
+
// CIL[DOC-CONTRACT inputs="imported PermissionEngine" outputs="permissions constant alias" errors="none" side_effects="none"]
|
|
38
|
+
// CIL[DOC-MICRO logic_summary="Casts PermissionEngine to any and assigns it to a local constant" notable_decisions="Used as any to avoid strict typing issues; deprecated usage pattern noted in create chunk"]
|
|
39
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
40
|
+
// CIL[DOC-STABILITY stability="deprecated"]
|
|
32
41
|
const permissions = PermissionEngine as any
|
|
33
|
-
// CIL[
|
|
34
|
-
// CIL[
|
|
35
|
-
// CIL[DOC-
|
|
36
|
-
// CIL[DOC-
|
|
37
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
38
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="event type constants object" errors="none" side_effects="none"]
|
|
39
|
-
// CIL[DOC-MICRO logic_summary="Defines constants for inference, tool, conversation, and escalation events" notable_decisions="[]"]
|
|
40
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
41
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
42
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, \."]
|
|
43
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
44
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
45
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
42
|
+
// CIL[DOC-VECTOR type="context" content="purpose='PermissionEngine alias used for admin and permission checks in trigger handlers'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
43
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
44
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
45
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
46
46
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
47
47
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
48
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:permissions:constant"]
|
|
49
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:AGENT_EVENT_TYPES:constant" type="constant" identity="AGENT_EVENT_TYPES" parent="~/.framework/functions/triggers.ts"]
|
|
50
|
+
// CIL[DOC-MACRO purpose="Catalog of string event types emitted by and consumed in agent workflows"]
|
|
51
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide strongly-typed, readonly event type strings for trigger conditions"]
|
|
52
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
53
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="AGENT_EVENT_TYPES object with string constants" errors="none" side_effects="none"]
|
|
54
|
+
// CIL[DOC-MICRO logic_summary="Declare a const object of agent inference/tool/message/escalation/human-handoff event strings and cast to const" notable_decisions="Values are namespaced under agent.*"]
|
|
55
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
56
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
48
57
|
export const AGENT_EVENT_TYPES = {
|
|
49
58
|
INFERENCE_COMPLETED: 'agent.inference.completed',
|
|
50
59
|
INFERENCE_FAILED: 'agent.inference.failed',
|
|
@@ -59,39 +68,39 @@ export const AGENT_EVENT_TYPES = {
|
|
|
59
68
|
ESCALATION_RESOLVED: 'agent.escalation.resolved',
|
|
60
69
|
HUMAN_HANDOFF: 'agent.human.handoff'
|
|
61
70
|
} as const
|
|
62
|
-
// CIL[
|
|
63
|
-
// CIL[
|
|
64
|
-
// CIL[DOC-
|
|
65
|
-
// CIL[DOC-
|
|
66
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
67
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="string array of event types" errors="none" side_effects="none"]
|
|
68
|
-
// CIL[DOC-MICRO logic_summary="Extracts values from AGENT_EVENT_TYPES constant for UI consumption" notable_decisions="[]"]
|
|
69
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
70
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
71
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/functions/_shared/schema-utils.ts, \."]
|
|
72
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
73
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
74
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
71
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Catalog of string event types emitted by and consumed in agent workflows'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
72
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
73
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
74
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
75
75
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
76
76
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
77
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:AGENT_EVENT_TYPES:constant"]
|
|
78
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:getAgentEventTypes:function" type="function" identity="getAgentEventTypes" parent="~/.framework/functions/triggers.ts"]
|
|
79
|
+
// CIL[DOC-MACRO purpose="Return all agent event type strings as an array"]
|
|
80
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Expose a typed array getter for event types"]
|
|
81
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
82
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="string[] of event type values" errors="none" side_effects="none"]
|
|
83
|
+
// CIL[DOC-MICRO logic_summary="Call Object.values on AGENT_EVENT_TYPES and return the string array" notable_decisions="No dependencies or side effects"]
|
|
84
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
85
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
77
86
|
export function getAgentEventTypes(): string[] {
|
|
78
87
|
return Object.values(AGENT_EVENT_TYPES)
|
|
79
88
|
}
|
|
80
|
-
// CIL[
|
|
81
|
-
// CIL[
|
|
82
|
-
// CIL[DOC-
|
|
83
|
-
// CIL[DOC-
|
|
84
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
85
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="sanitized trigger array" errors="throws" side_effects="database queries"]
|
|
86
|
-
// CIL[DOC-MICRO logic_summary="Filters triggers by event_type and app, sanitizes based on permissions" notable_decisions="[]"]
|
|
87
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
88
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
89
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/functions/_shared/schema-utils.ts, \."]
|
|
90
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
91
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
92
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
89
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Return all agent event type strings as an array'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
90
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
91
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
92
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
93
93
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
94
94
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
95
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:getAgentEventTypes:function"]
|
|
96
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:listByEvent:constant" type="constant" identity="listByEvent" parent="~/.framework/functions/triggers.ts"]
|
|
97
|
+
// CIL[DOC-MACRO purpose="List triggers filtered by event type, optional app and active status"]
|
|
98
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Query trigger records for an account, filter by event_type and optional params, and sanitize results"]
|
|
99
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
100
|
+
// CIL[DOC-CONTRACT inputs="ctx.query {event_type, app_id?, include_inactive?}" outputs="sanitized trigger records" errors="missing event_type, account context, database error" side_effects="none"]
|
|
101
|
+
// CIL[DOC-MICRO logic_summary="Validate event_type and account, choose admin or account db, build a filtered ordered query, then sanitize each returned row through permissions" notable_decisions="Defaults include_inactive to false unless 'true'; system admins can query across accounts"]
|
|
102
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
103
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
95
104
|
export const listByEvent = createHandler(async (ctx, body) => {
|
|
96
105
|
const { event_type, app_id, include_inactive } = ctx.query || {}
|
|
97
106
|
|
|
@@ -129,21 +138,21 @@ export const listByEvent = createHandler(async (ctx, body) => {
|
|
|
129
138
|
|
|
130
139
|
return sanitized
|
|
131
140
|
})
|
|
132
|
-
// CIL[
|
|
133
|
-
// CIL[
|
|
134
|
-
// CIL[DOC-
|
|
135
|
-
// CIL[DOC-
|
|
136
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[]"]
|
|
137
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="sanitized trigger array" errors="throws" side_effects="database queries"]
|
|
138
|
-
// CIL[DOC-MICRO logic_summary="Filters triggers by app/event_type, sanitizes based on permissions" notable_decisions="[]"]
|
|
139
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
140
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
141
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
142
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
143
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
144
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
141
|
+
// CIL[DOC-VECTOR type="context" content="purpose='List triggers filtered by event type, optional app and active status'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
142
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
143
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
144
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
145
145
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
146
146
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
147
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:listByEvent:constant"]
|
|
148
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:list:constant" type="constant" identity="list" parent="~/.framework/functions/triggers.ts"]
|
|
149
|
+
// CIL[DOC-MACRO purpose="List triggers with optional app, event and active filters"]
|
|
150
|
+
// CIL[DOC-RESPONSIBILITY responsibility="List trigger records for the caller, applying optional app_id, event_type and active-status filters"]
|
|
151
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
152
|
+
// CIL[DOC-CONTRACT inputs="ctx.query {app_id?, event_type?, include_inactive?}" outputs="sanitized trigger records" errors="account context required; database error" side_effects="none"]
|
|
153
|
+
// CIL[DOC-MICRO logic_summary="Validate account, select account or admin db, build query with optional filters and order, then sanitize each row" notable_decisions="Same default active filter and admin bypass as listByEvent, but event_type is optional"]
|
|
154
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
155
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
147
156
|
export const list = createHandler(async (ctx, body) => {
|
|
148
157
|
const { app_id, event_type, include_inactive } = ctx.query || {}
|
|
149
158
|
|
|
@@ -179,21 +188,21 @@ export const list = createHandler(async (ctx, body) => {
|
|
|
179
188
|
|
|
180
189
|
return sanitized
|
|
181
190
|
})
|
|
182
|
-
// CIL[
|
|
183
|
-
// CIL[
|
|
184
|
-
// CIL[DOC-
|
|
185
|
-
// CIL[DOC-
|
|
186
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[]"]
|
|
187
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="sanitized trigger object" errors="throws" side_effects="database query"]
|
|
188
|
-
// CIL[DOC-MICRO logic_summary="Queries trigger by ID with app/createdBy joins, sanitizes based on permissions" notable_decisions="[]"]
|
|
189
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
190
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
191
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
192
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
193
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
194
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
191
|
+
// CIL[DOC-VECTOR type="context" content="purpose='List triggers with optional app, event and active filters'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
192
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
193
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
194
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
195
195
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
196
196
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
197
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:list:constant"]
|
|
198
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:get:constant" type="constant" identity="get" parent="~/.framework/functions/triggers.ts"]
|
|
199
|
+
// CIL[DOC-MACRO purpose="Fetch a single trigger by ID"]
|
|
200
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return a sanitized trigger record for the given id"]
|
|
201
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
202
|
+
// CIL[DOC-CONTRACT inputs="ctx.query {id}" outputs="sanitized trigger object" errors="missing id, database error, not found" side_effects="none"]
|
|
203
|
+
// CIL[DOC-MICRO logic_summary="Validate id, choose db by admin status, query a single trigger, sanitize and return" notable_decisions="System admins can read across accounts"]
|
|
204
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
205
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
197
206
|
export const get = createHandler(async (ctx, body) => {
|
|
198
207
|
const { id } = ctx.query || {}
|
|
199
208
|
|
|
@@ -213,21 +222,21 @@ export const get = createHandler(async (ctx, body) => {
|
|
|
213
222
|
|
|
214
223
|
return await sanitizeRecordData(ctx, data, 'trigger')
|
|
215
224
|
})
|
|
216
|
-
// CIL[
|
|
217
|
-
// CIL[
|
|
218
|
-
// CIL[DOC-
|
|
219
|
-
// CIL[DOC-
|
|
220
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[]"]
|
|
221
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="execution records array" errors="throws" side_effects="database queries"]
|
|
222
|
-
// CIL[DOC-MICRO logic_summary="Queries trigger_executions table with pagination and ordering" notable_decisions="[]"]
|
|
223
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
224
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
225
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
226
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
227
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
228
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
225
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Fetch a single trigger by ID'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
226
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
227
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
228
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
229
229
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
230
230
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
231
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:get:constant"]
|
|
232
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:getExecutions:constant" type="constant" identity="getExecutions" parent="~/.framework/functions/triggers.ts"]
|
|
233
|
+
// CIL[DOC-MACRO purpose="List recent executions for a trigger"]
|
|
234
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Return paginated trigger execution history ordered by executed_at descending"]
|
|
235
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
236
|
+
// CIL[DOC-CONTRACT inputs="ctx.query {trigger_id, limit?, offset?}" outputs="trigger_executions records" errors="missing trigger_id or account; database error" side_effects="none"]
|
|
237
|
+
// CIL[DOC-MICRO logic_summary="Validate trigger_id and account, query trigger_executions with a range and descending order, and return rows" notable_decisions="Uses ctx.db directly; no admin cross-account bypass"]
|
|
238
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
239
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
231
240
|
export const getExecutions = createHandler(async (ctx, body) => {
|
|
232
241
|
const { trigger_id, limit = '50', offset = '0' } = ctx.query || {}
|
|
233
242
|
|
|
@@ -250,21 +259,21 @@ export const getExecutions = createHandler(async (ctx, body) => {
|
|
|
250
259
|
|
|
251
260
|
return data || []
|
|
252
261
|
})
|
|
253
|
-
// CIL[
|
|
254
|
-
// CIL[
|
|
255
|
-
// CIL[DOC-
|
|
256
|
-
// CIL[DOC-
|
|
257
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[]"]
|
|
258
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="created trigger record" errors="throws" side_effects="database insert, audit log"]
|
|
259
|
-
// CIL[DOC-MICRO logic_summary="Validates permissions, creates trigger with defaults, emits audit log" notable_decisions="[]"]
|
|
260
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
261
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
262
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
263
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
264
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
265
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
262
|
+
// CIL[DOC-VECTOR type="context" content="purpose='List recent executions for a trigger'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
263
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
264
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
265
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
266
266
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
267
267
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
268
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:getExecutions:constant"]
|
|
269
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:create:constant" type="constant" identity="create" parent="~/.framework/functions/triggers.ts"]
|
|
270
|
+
// CIL[DOC-MACRO purpose="Create a new trigger record after permission check"]
|
|
271
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Validate required fields, enforce permission rules, insert a trigger and emit an audit log"]
|
|
272
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
273
|
+
// CIL[DOC-CONTRACT inputs="body {name, event_type, pipeline_id, app_id?, description?, config?, metadata?}" outputs="created trigger record" errors="missing required fields, anonymous user, insufficient permissions, database error" side_effects="inserts triggers row, emits trigger.created audit log"]
|
|
274
|
+
// CIL[DOC-MICRO logic_summary="Validate required fields and user context, bypass permission for system admins, resolve create permission, insert row with timestamps and created_by, then emit audit log" notable_decisions="Replicates isSystemAdmin(ctx)-then-resolveFirstSurfacePermissions pattern from apps/roles/types; previously had a bug by passing principal instead of ctx"]
|
|
275
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
276
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
268
277
|
export const create = createHandler(async (ctx, body) => {
|
|
269
278
|
const { app_id, name, description, event_type, pipeline_id, config, metadata } = body
|
|
270
279
|
|
|
@@ -321,21 +330,21 @@ export const create = createHandler(async (ctx, body) => {
|
|
|
321
330
|
|
|
322
331
|
return data
|
|
323
332
|
})
|
|
324
|
-
// CIL[
|
|
325
|
-
// CIL[
|
|
326
|
-
// CIL[DOC-
|
|
327
|
-
// CIL[DOC-
|
|
328
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[]"]
|
|
329
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="updated trigger record" errors="throws" side_effects="database update, audit log"]
|
|
330
|
-
// CIL[DOC-MICRO logic_summary="Updates only allowed fields, adds timestamp, emits audit log" notable_decisions="[]"]
|
|
331
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
332
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
333
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
334
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
335
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
336
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
333
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Create a new trigger record after permission check'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
334
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
335
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
336
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
337
337
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
338
338
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
339
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:create:constant"]
|
|
340
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:update:constant" type="constant" identity="update" parent="~/.framework/functions/triggers.ts"]
|
|
341
|
+
// CIL[DOC-MACRO purpose="Update an existing trigger's allowed fields"]
|
|
342
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Apply partial updates to a trigger record, set updated_at and emit an audit log"]
|
|
343
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
344
|
+
// CIL[DOC-CONTRACT inputs="body or query {id}, updates {name, description, config, pipeline_id, metadata, is_active, event_type, app_id}" outputs="updated trigger record" errors="missing id, database error" side_effects="updates triggers row, emits trigger.updated audit log"]
|
|
345
|
+
// CIL[DOC-MICRO logic_summary="Resolve id, build updateData from allowed keys plus updated_at, perform the update, then log" notable_decisions="No explicit permission call; relies on caller middleware"]
|
|
346
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
347
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
339
348
|
export const update = createHandler(async (ctx, body) => {
|
|
340
349
|
const id = body?.id || ctx.query?.id
|
|
341
350
|
const { id: _bodyId, ...updates } = body || {}
|
|
@@ -366,21 +375,21 @@ export const update = createHandler(async (ctx, body) => {
|
|
|
366
375
|
|
|
367
376
|
return data
|
|
368
377
|
})
|
|
369
|
-
// CIL[
|
|
370
|
-
// CIL[
|
|
371
|
-
// CIL[DOC-
|
|
372
|
-
// CIL[DOC-
|
|
373
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[]"]
|
|
374
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="success indicator" errors="throws" side_effects="database update, audit log"]
|
|
375
|
-
// CIL[DOC-MICRO logic_summary="Validates trigger exists, soft deletes by setting is_active=false, emits audit log" notable_decisions="[]"]
|
|
376
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
377
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
378
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
379
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
380
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
381
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
378
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Update an existing trigger's allowed fields'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
379
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
380
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
381
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
382
382
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
383
383
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
384
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:update:constant"]
|
|
385
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:remove:constant" type="constant" identity="remove" parent="~/.framework/functions/triggers.ts"]
|
|
386
|
+
// CIL[DOC-MACRO purpose="Soft-delete a trigger by marking it inactive"]
|
|
387
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Verify the trigger exists, deactivate it, and log deletion"]
|
|
388
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
389
|
+
// CIL[DOC-CONTRACT inputs="body/query {id}" outputs="{success: true}" errors="missing id, trigger not found, database error" side_effects="sets is_active=false and updated_at, emits trigger.deleted audit log"]
|
|
390
|
+
// CIL[DOC-MICRO logic_summary="Look up the id, fetch name and event_type, perform a soft-delete and emit a log with the before state" notable_decisions="Soft delete via is_active=false to preserve execution history"]
|
|
391
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
392
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
384
393
|
export const remove = createHandler(async (ctx, body) => {
|
|
385
394
|
const id = body?.id || ctx.query?.id
|
|
386
395
|
|
|
@@ -415,21 +424,21 @@ export const remove = createHandler(async (ctx, body) => {
|
|
|
415
424
|
|
|
416
425
|
return { success: true }
|
|
417
426
|
})
|
|
418
|
-
// CIL[
|
|
419
|
-
// CIL[
|
|
420
|
-
// CIL[DOC-
|
|
421
|
-
// CIL[DOC-
|
|
422
|
-
// CIL[DOC-CONTEXT module="triggers" layer="api-handler" related_files="[]"]
|
|
423
|
-
// CIL[DOC-CONTRACT inputs="none" outputs="updated trigger record" errors="throws" side_effects="database update, audit log"]
|
|
424
|
-
// CIL[DOC-MICRO logic_summary="Flips is_active boolean, updates timestamp, emits audit log" notable_decisions="[]"]
|
|
425
|
-
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
426
|
-
// CIL[DOC-STABILITY stability="stable"]
|
|
427
|
-
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
428
|
-
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
429
|
-
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
430
|
-
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
427
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Soft-delete a trigger by marking it inactive'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
428
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
429
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
430
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
431
431
|
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
432
432
|
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
433
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:remove:constant"]
|
|
434
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:toggle:constant" type="constant" identity="toggle" parent="~/.framework/functions/triggers.ts"]
|
|
435
|
+
// CIL[DOC-MACRO purpose="Toggle the active state of a trigger"]
|
|
436
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Flip is_active for a trigger and emit an audit log"]
|
|
437
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
438
|
+
// CIL[DOC-CONTRACT inputs="body/query {id}" outputs="updated trigger record" errors="missing id, trigger not found, database error" side_effects="toggles is_active and updated_at, emits trigger.toggled audit log"]
|
|
439
|
+
// CIL[DOC-MICRO logic_summary="Fetch the current is_active and name, compute the new status, update the row and emit a before/after log" notable_decisions="Uses a single-row select and update and returns the updated record"]
|
|
440
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
441
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
433
442
|
export const toggle = createHandler(async (ctx, body) => {
|
|
434
443
|
const id = body?.id || ctx.query?.id
|
|
435
444
|
|
|
@@ -471,8 +480,22 @@ export const toggle = createHandler(async (ctx, body) => {
|
|
|
471
480
|
|
|
472
481
|
return data
|
|
473
482
|
})
|
|
474
|
-
// CIL[
|
|
475
|
-
|
|
483
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Toggle the active state of a trigger'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
484
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
485
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
486
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
487
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
488
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
489
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:toggle:constant"]
|
|
490
|
+
|
|
491
|
+
// CIL[BEGIN stable_id="~/.framework/functions/triggers.ts:handler:constant" type="constant" identity="handler" parent="~/.framework/functions/triggers.ts"]
|
|
492
|
+
// CIL[DOC-MACRO purpose="Central action dispatcher for the triggers function"]
|
|
493
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Route incoming action query to the appropriate trigger sub-handler"]
|
|
494
|
+
// CIL[DOC-CONTEXT module="triggers" 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/triggers.ts"]
|
|
495
|
+
// CIL[DOC-CONTRACT inputs="ctx.query {action}, body" outputs="result from the chosen sub-handler" errors="unknown action or sub-handler error" side_effects="delegates to the listed sub-handlers"]
|
|
496
|
+
// CIL[DOC-MICRO logic_summary="Read the action from the query, switch to the matching named handler, await and return its result, and throw for unsupported actions" notable_decisions="All sub-handlers are closed over in the same module; the default action throws an error"]
|
|
497
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
498
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
476
499
|
export const handler = createHandler(async (ctx, body) => {
|
|
477
500
|
const { action } = ctx.query || {}
|
|
478
501
|
|
|
@@ -496,4 +519,11 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
496
519
|
default:
|
|
497
520
|
throw new Error(`Unsupported action: ${action}`)
|
|
498
521
|
}
|
|
499
|
-
})
|
|
522
|
+
})
|
|
523
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Central action dispatcher for the triggers function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/audit.ts"]
|
|
524
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
525
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
526
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
527
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
528
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
529
|
+
// CIL[END stable_id="~/.framework/functions/triggers.ts:handler:constant"]
|