spine-framework 0.3.145 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +76 -0
- package/.framework/.spine-manifest.json +19 -0
- package/.framework/cli/commands/agents.ts +61 -33
- package/.framework/cli/commands/auth.ts +60 -28
- package/.framework/cli/commands/create-app.ts +212 -80
- package/.framework/cli/commands/dev.ts +184 -68
- package/.framework/cli/commands/doctor.ts +324 -152
- package/.framework/cli/commands/generate.ts +119 -68
- package/.framework/cli/commands/init.ts +141 -242
- package/.framework/cli/commands/install-app.ts +1336 -314
- package/.framework/cli/commands/items.ts +31 -29
- package/.framework/cli/commands/migrate.ts +299 -156
- package/.framework/cli/commands/migrations.ts +62 -30
- package/.framework/cli/commands/pipelines.ts +31 -29
- package/.framework/cli/commands/status.ts +105 -45
- package/.framework/cli/commands/system.ts +47 -42
- package/.framework/cli/commands/test.ts +161 -102
- package/.framework/cli/commands/upgrade.ts +260 -0
- package/.framework/cli/commands/validate-app.ts +517 -161
- package/.framework/cli/context.ts +117 -85
- package/.framework/cli/env-loader.ts +74 -43
- package/.framework/cli/index.ts +70 -46
- package/.framework/cli/lib/project-files.ts +404 -0
- package/.framework/docs/guides/testing-guide.md +1 -1
- package/.framework/docs/runtime-types.md +72 -72
- package/.framework/functions/_shared/access.ts +84 -0
- package/.framework/functions/_shared/agent-runner.ts +5051 -1026
- package/.framework/functions/_shared/app-manifest.ts +214 -94
- package/.framework/functions/_shared/ast.ts +214 -0
- package/.framework/functions/_shared/audit.ts +91 -55
- package/.framework/functions/_shared/cil.ts +368 -127
- package/.framework/functions/_shared/db.ts +337 -68
- package/.framework/functions/_shared/funnel.ts +228 -0
- package/.framework/functions/_shared/geo.ts +105 -0
- package/.framework/functions/_shared/hash-api-key.ts +94 -17
- package/.framework/functions/_shared/index.ts +22 -224
- package/.framework/functions/_shared/kb.ts +832 -58
- package/.framework/functions/_shared/llm.ts +118 -18
- package/.framework/functions/_shared/logging.ts +317 -19
- package/.framework/functions/_shared/middleware.ts +701 -131
- package/.framework/functions/_shared/notify.ts +70 -0
- package/.framework/functions/_shared/outcomes.ts +34 -19
- package/.framework/functions/_shared/permissions.ts +501 -315
- package/.framework/functions/_shared/pipeline-runner.ts +704 -155
- package/.framework/functions/_shared/principal.ts +436 -263
- package/.framework/functions/_shared/rate-limit.ts +233 -0
- package/.framework/functions/_shared/resolve-credentials.ts +86 -19
- package/.framework/functions/_shared/resolve-ids.ts +203 -139
- package/.framework/functions/_shared/retry-deliveries.ts +51 -16
- package/.framework/functions/_shared/schema-utils.ts +602 -521
- package/.framework/functions/_shared/security.ts +345 -0
- package/.framework/functions/_shared/testing.ts +197 -172
- package/.framework/functions/_shared/tracing.ts +351 -21
- package/.framework/functions/_shared/trigger-engine.ts +425 -136
- package/.framework/functions/_shared/webhook-registration.ts +71 -70
- package/.framework/functions/_shared/webhook-registry.ts +126 -83
- package/.framework/functions/account-nodes.ts +30 -30
- package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
- package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
- package/.framework/functions/adapters/openai-outbound.ts +15 -16
- package/.framework/functions/admin-data.ts +596 -173
- package/.framework/functions/admin-funnel.ts +64 -60
- package/.framework/functions/admin-install-funnel.ts +84 -66
- package/.framework/functions/admin-signals.ts +69 -51
- package/.framework/functions/ai-agents.ts +431 -106
- package/.framework/functions/ai-interactions.ts +186 -112
- package/.framework/functions/api-keys.ts +107 -107
- package/.framework/functions/apps.ts +154 -136
- package/.framework/functions/auth.ts +83 -65
- package/.framework/functions/cil-agent-ingest.ts +189 -232
- package/.framework/functions/cil-agent.ts +433 -177
- package/.framework/functions/cil-callmap.ts +642 -430
- package/.framework/functions/cil-config.ts +139 -135
- package/.framework/functions/cil-context.ts +214 -127
- package/.framework/functions/cil-doc.ts +587 -458
- package/.framework/functions/cil-embeddings.ts +453 -364
- package/.framework/functions/cil-graph.ts +427 -142
- package/.framework/functions/cil-ingest.ts +1418 -1154
- package/.framework/functions/cil-pipeline.ts +276 -21
- package/.framework/functions/cil-project.ts +659 -132
- package/.framework/functions/cil-validate.ts +198 -164
- package/.framework/functions/debug-auth.ts +57 -55
- package/.framework/functions/deliveries.ts +80 -21
- package/.framework/functions/embeddings.ts +1023 -318
- package/.framework/functions/eval-harness.ts +146 -108
- package/.framework/functions/integration-outbound.ts +205 -75
- package/.framework/functions/integration-routes.ts +128 -23
- package/.framework/functions/integrations.ts +125 -100
- package/.framework/functions/invites.ts +1095 -460
- package/.framework/functions/item-progress.ts +158 -102
- package/.framework/functions/kb.ts +34 -10
- package/.framework/functions/logs.ts +133 -133
- package/.framework/functions/observability.ts +152 -122
- package/.framework/functions/pipeline-executions.ts +147 -132
- package/.framework/functions/pipelines.ts +134 -119
- package/.framework/functions/prompt-configs.ts +96 -80
- package/.framework/functions/roles.ts +112 -82
- package/.framework/functions/security.ts +450 -0
- package/.framework/functions/system-cron.ts +117 -80
- package/.framework/functions/system.ts +158 -98
- package/.framework/functions/tests.ts +29 -29
- package/.framework/functions/timers.ts +94 -95
- package/.framework/functions/trigger-scheduler.ts +10 -0
- package/.framework/functions/triggers.ts +179 -149
- package/.framework/functions/types.ts +137 -125
- package/.framework/mcp/index.ts +133 -0
- package/.framework/mcp/load-env.ts +60 -0
- package/.framework/mcp/shared/app-manifest.ts +275 -0
- package/.framework/mcp/shared/db.ts +477 -0
- package/.framework/mcp/shared/kb.ts +118 -0
- package/.framework/mcp/tools/architect.ts +431 -0
- package/.framework/mcp/tools/cil/context.ts +345 -0
- package/.framework/mcp/tools/cil/graph.ts +242 -0
- package/.framework/mcp/tools/cil/ingest.ts +1217 -0
- package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
- package/.framework/mcp/tools/cil/pipeline.ts +767 -0
- package/.framework/mcp/tools/cil/project.ts +791 -0
- package/.framework/mcp/tools/cil/retrieval.ts +336 -0
- package/.framework/mcp/tools/cil/search-core.ts +454 -0
- package/.framework/mcp/tools/cil/search.ts +97 -0
- package/.framework/mcp/tools/cil/suggest.ts +186 -0
- package/.framework/mcp/tools/cil/validate.ts +1369 -0
- package/.framework/mcp/tools/kb/delete.ts +139 -0
- package/.framework/mcp/tools/kb/index.ts +52 -0
- package/.framework/mcp/tools/kb/ingest.ts +84 -0
- package/.framework/mcp/tools/kb/list-types.ts +102 -0
- package/.framework/mcp/tools/kb/publish.ts +100 -0
- package/.framework/mcp/tools/kb/reindex.ts +86 -0
- package/.framework/mcp/tools/kb/revoke.ts +85 -0
- package/.framework/mcp/tools/kb/search.ts +101 -0
- package/.framework/mcp/tools/kb/upsert.ts +125 -0
- package/.framework/mcp/tools/observability.ts +510 -0
- package/.framework/migrations/001_core_schema.sql +15 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
- package/.framework/migrations/003_core_system_data.sql +16 -1
- package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
- package/.framework/migrations/005_core_observability.sql +17 -1
- package/.framework/migrations/006_security_hardening_rls.sql +15 -0
- package/.framework/migrations/007_kb_article_list.sql +17 -1
- package/.framework/migrations/008_items_target.sql +15 -0
- package/.framework/migrations/009_roles_slug_unique.sql +15 -0
- package/.framework/migrations/010_auth_user_trigger.sql +15 -0
- package/.framework/migrations/011_spine_system_account.sql +16 -0
- package/.framework/migrations/012_service_role_grants.sql +16 -0
- package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
- package/.framework/migrations/014_apps_required_roles.sql +16 -0
- package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
- package/.framework/migrations/016_cil_types.sql +281 -0
- package/.framework/migrations/017_cil_stable_ids.sql +37 -0
- package/.framework/migrations/018_runtime_tables.sql +129 -0
- package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
- package/.framework/migrations/020_schema_reconciliation.sql +67 -0
- package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
- package/.framework/migrations/032_cil_status_migration.sql +73 -0
- package/.framework/migrations/033_cil_versioning.sql +73 -0
- package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
- package/.framework/migrations/035_rate_limits.sql +55 -0
- package/.framework/migrations/036_demo_record_flags.sql +72 -0
- package/.framework/migrations/037_kb_types_canonical.sql +244 -0
- package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
- package/.framework/migrations/042_registration_hierarchy.sql +309 -0
- package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
- package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
- package/.framework/migrations/045_security_critical_rls.sql +139 -0
- package/.framework/migrations/046_security_missing_rls.sql +79 -0
- package/.framework/migrations/047_people_updated_by.sql +27 -0
- package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
- package/.framework/migrations/049_security_blocklist.sql +148 -0
- package/.framework/migrations/050_notifications.sql +49 -0
- package/.framework/migrations/051_message_agent_fields.sql +74 -0
- package/.framework/migrations/052_registration_security.sql +421 -0
- package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
- package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
- package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
- package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
- package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
- package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
- package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
- package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
- package/.framework/migrations/061_fk_dedup.sql +32 -0
- package/.framework/public/spine-logo.svg +10 -3
- package/.framework/scripts/app-install-cli.ts +190 -93
- package/.framework/scripts/assemble-frontend.sh +127 -44
- package/.framework/scripts/assemble-functions.sh +128 -30
- package/.framework/scripts/boundary-check.sh +6 -2
- package/.framework/scripts/build-manifest.sh +24 -68
- package/.framework/scripts/check-core-integrity.sh +15 -76
- package/.framework/scripts/checksum-manifest.mts +343 -0
- package/.framework/scripts/cil-migrate-markers.ts +403 -0
- package/.framework/scripts/fix-cil-markers.mjs +176 -0
- package/.framework/scripts/verify-integrity.sh +21 -57
- package/.framework/scripts/verify-manifest.mts +305 -0
- package/.framework/seeds/types/funnel_signal_use.json +74 -21
- package/.framework/seeds/types/spine_instance.json +73 -21
- package/.framework/src/App.tsx +118 -72
- package/.framework/src/apps/admin/index.tsx +855 -58
- package/.framework/src/components/AppWrapper.tsx +43 -45
- package/.framework/src/components/CustomAppLoader.tsx +160 -116
- package/.framework/src/components/admin/AdminListPage.tsx +46 -44
- package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
- package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
- package/.framework/src/components/admin/PageInstructions.tsx +98 -2
- package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
- package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
- package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
- package/.framework/src/components/app-sidebar.tsx +42 -45
- package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
- package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
- package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
- package/.framework/src/components/kb/KBArticleList.tsx +251 -10
- package/.framework/src/components/layout/AppShell.tsx +51 -45
- package/.framework/src/components/layout/Header.tsx +42 -43
- package/.framework/src/components/layout/Layout.tsx +46 -46
- package/.framework/src/components/layout/Sidebar.tsx +196 -96
- package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
- package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
- package/.framework/src/components/runtime/DataFilters.tsx +49 -74
- package/.framework/src/components/runtime/DataHeader.tsx +53 -32
- package/.framework/src/components/runtime/DataListPage.tsx +51 -155
- package/.framework/src/components/runtime/DataStats.tsx +66 -44
- package/.framework/src/components/runtime/DataTable.tsx +49 -149
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
- package/.framework/src/components/runtime/index.ts +119 -16
- package/.framework/src/components/search-form.tsx +46 -29
- package/.framework/src/components/shared/AgentView.tsx +65 -48
- package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
- package/.framework/src/components/shared/InviteManager.tsx +207 -97
- package/.framework/src/components/shared/MemberList.tsx +97 -0
- package/.framework/src/components/shared/SchemaFields.tsx +107 -86
- package/.framework/src/components/ui/DataTable.tsx +80 -68
- package/.framework/src/components/ui/Form.tsx +157 -146
- package/.framework/src/components/ui/ItemCard.tsx +74 -67
- package/.framework/src/components/ui/ItemListView.tsx +73 -68
- package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
- package/.framework/src/components/ui/Modal.tsx +78 -68
- package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
- package/.framework/src/components/ui/accordion.tsx +85 -86
- package/.framework/src/components/ui/alert-dialog.tsx +197 -184
- package/.framework/src/components/ui/alert.tsx +105 -94
- package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
- package/.framework/src/components/ui/avatar.tsx +122 -107
- package/.framework/src/components/ui/badge.tsx +60 -55
- package/.framework/src/components/ui/breadcrumb.tsx +127 -128
- package/.framework/src/components/ui/button-group.tsx +86 -72
- package/.framework/src/components/ui/button.tsx +71 -50
- package/.framework/src/components/ui/calendar.tsx +72 -57
- package/.framework/src/components/ui/card.tsx +136 -129
- package/.framework/src/components/ui/carousel.tsx +226 -107
- package/.framework/src/components/ui/chart.tsx +252 -147
- package/.framework/src/components/ui/checkbox.tsx +43 -44
- package/.framework/src/components/ui/collapsible.tsx +86 -71
- package/.framework/src/components/ui/combobox.tsx +282 -249
- package/.framework/src/components/ui/command.tsx +158 -146
- package/.framework/src/components/ui/context-menu.tsx +239 -240
- package/.framework/src/components/ui/dialog.tsx +174 -157
- package/.framework/src/components/ui/direction.tsx +72 -56
- package/.framework/src/components/ui/drawer.tsx +168 -169
- package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
- package/.framework/src/components/ui/empty.tsx +131 -120
- package/.framework/src/components/ui/field.tsx +205 -173
- package/.framework/src/components/ui/hover-card.tsx +71 -72
- package/.framework/src/components/ui/input-group.tsx +148 -133
- package/.framework/src/components/ui/input-otp.tsx +99 -86
- package/.framework/src/components/ui/input.tsx +43 -41
- package/.framework/src/components/ui/item.tsx +207 -185
- package/.framework/src/components/ui/kbd.tsx +57 -56
- package/.framework/src/components/ui/label.tsx +45 -41
- package/.framework/src/components/ui/menubar.tsx +268 -236
- package/.framework/src/components/ui/native-select.tsx +85 -86
- package/.framework/src/components/ui/navigation-menu.tsx +166 -156
- package/.framework/src/components/ui/pagination.tsx +131 -141
- package/.framework/src/components/ui/popover.tsx +125 -128
- package/.framework/src/components/ui/progress.tsx +47 -44
- package/.framework/src/components/ui/radio-group.tsx +60 -55
- package/.framework/src/components/ui/resizable.tsx +85 -72
- package/.framework/src/components/ui/scroll-area.tsx +57 -58
- package/.framework/src/components/ui/select.tsx +182 -169
- package/.framework/src/components/ui/separator.tsx +42 -43
- package/.framework/src/components/ui/sheet.tsx +170 -159
- package/.framework/src/components/ui/sidebar.tsx +395 -398
- package/.framework/src/components/ui/skeleton.tsx +42 -43
- package/.framework/src/components/ui/slider.tsx +61 -44
- package/.framework/src/components/ui/sonner.tsx +44 -44
- package/.framework/src/components/ui/spinner.tsx +47 -42
- package/.framework/src/components/ui/switch.tsx +56 -42
- package/.framework/src/components/ui/table-primitives.tsx +272 -132
- package/.framework/src/components/ui/table.tsx +140 -142
- package/.framework/src/components/ui/tabs.tsx +110 -93
- package/.framework/src/components/ui/textarea.tsx +43 -44
- package/.framework/src/components/ui/toggle-group.tsx +87 -71
- package/.framework/src/components/ui/toggle.tsx +56 -56
- package/.framework/src/components/ui/tooltip.tsx +99 -85
- package/.framework/src/contexts/AppContext.tsx +166 -114
- package/.framework/src/contexts/AuthContext.tsx +232 -137
- package/.framework/src/hooks/use-mobile.ts +43 -44
- package/.framework/src/hooks/useApi.ts +185 -172
- package/.framework/src/hooks/useAppPath.ts +31 -29
- package/.framework/src/hooks/useApps.ts +77 -42
- package/.framework/src/hooks/useEntityList.ts +66 -29
- package/.framework/src/hooks/useEntityRecord.ts +76 -32
- package/.framework/src/hooks/useForm.ts +62 -30
- package/.framework/src/hooks/useListSchema.ts +60 -43
- package/.framework/src/hooks/useSchemaRecord.ts +115 -95
- package/.framework/src/lib/api.ts +258 -134
- package/.framework/src/lib/registration.ts +181 -0
- package/.framework/src/lib/supabase.ts +118 -81
- package/.framework/src/lib/utils.ts +266 -266
- package/.framework/src/main.tsx +43 -44
- package/.framework/src/pages/DashboardPage.tsx +44 -43
- package/.framework/src/pages/NoAppPage.tsx +50 -0
- package/.framework/src/pages/NotFoundPage.tsx +32 -29
- package/.framework/src/pages/SetupPage.tsx +34 -33
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
- package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
- package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
- package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
- package/.framework/src/pages/admin/AppsPage.tsx +45 -42
- package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
- package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
- package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
- package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
- package/.framework/src/pages/admin/LogsPage.tsx +87 -137
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
- package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
- package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
- package/.framework/src/pages/admin/RolesPage.tsx +47 -164
- package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
- package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
- package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
- package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
- package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
- package/.framework/src/pages/admin/TimersPage.tsx +44 -42
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
- package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
- package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
- package/.framework/src/pages/admin/TypesPage.tsx +45 -42
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
- package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
- package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
- package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
- package/.framework/src/pages/auth/LoginPage.tsx +38 -32
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
- package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
- package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
- package/.framework/src/types/auth.ts +101 -93
- package/.framework/src/types/types.ts +283 -262
- package/.framework/templates/project.json +87 -0
- package/.framework/templates/spine.config.neutral.json +7 -0
- package/.framework/tests/api/api-surface.test.ts +381 -0
- package/.framework/tests/fixtures/seed.ts +427 -0
- package/.framework/tests/fixtures/teardown.ts +228 -0
- package/.framework/tests/reporter.ts +351 -0
- package/.framework/tests/setup.ts +135 -0
- package/.framework/tests/ui/ui-sweep.ts +278 -0
- package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
- package/.framework/tests/unit/agent-runner.test.ts +2389 -0
- package/.framework/tests/unit/ai-interactions.test.ts +81 -0
- package/.framework/tests/unit/app-manifest.test.ts +359 -0
- package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
- package/.framework/tests/unit/cil-determinism.test.ts +85 -0
- package/.framework/tests/unit/core-isolation.test.ts +153 -0
- package/.framework/tests/unit/funnel-signals.test.ts +135 -0
- package/.framework/tests/unit/install-app.test.ts +1759 -0
- package/.framework/tests/unit/invites-security.test.ts +572 -0
- package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
- package/.framework/tests/unit/kb-search.test.ts +119 -0
- package/.framework/tests/unit/migrate.test.ts +509 -0
- package/.framework/tests/unit/notify.test.ts +136 -0
- package/.framework/tests/unit/permissions.test.ts +269 -0
- package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
- package/.framework/tests/unit/principal-cache.test.ts +138 -0
- package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
- package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
- package/.framework/tests/unit/schema-utils.test.ts +225 -0
- package/.framework/tests/unit/trigger-engine.test.ts +513 -0
- package/.framework/tests/unit/validate-app.test.ts +527 -0
- package/README.md +34 -3
- package/bin/spine-framework.cjs +1 -0
- package/config/tailwind.config.cjs +7 -0
- package/config/tsconfig.functions.json +42 -0
- package/config/tsconfig.json +37 -9
- package/config/vite.config.ts +31 -2
- package/netlify.toml +31 -3
- package/package.json +46 -29
- package/scripts/assemble-frontend.sh +127 -44
- package/scripts/assemble-functions.sh +127 -29
- package/scripts/boundary-check.sh +6 -2
- package/scripts/build-manifest.sh +24 -68
- package/scripts/checksum-manifest.mts +345 -0
- package/scripts/dev-clean.sh +86 -0
- package/scripts/dev-netlify.sh +49 -0
- package/scripts/netlify-dev-wrapper.sh +2 -0
- package/scripts/verify-install.ts +358 -0
- package/scripts/verify-integrity.sh +21 -57
- package/scripts/verify-manifest.mts +305 -0
- package/templates/project/gitignore +45 -0
- package/{config → templates/project}/package-lock.json +22335 -9366
- package/vitest.config.ts +46 -0
- package/.framework/public/spine.config.json +0 -91
- package/config/deno.lock +0 -108
- package/config/tsconfig.node.tsbuildinfo +0 -1
- package/config/tsconfig.tsbuildinfo +0 -1
- package/config/vite.config.d.ts +0 -2
- package/custom/.devin/AGENT.md +0 -357
- package/custom/.devin/skills/install-app/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
- package/custom/.devin/workflows/app-install.yaml +0 -83
- package/custom/README.md +0 -79
- package/docs/README.md +0 -15
- package/scripts/app-install-cli.ts +0 -286
- package/scripts/check-core-integrity.sh +0 -82
- package/scripts/ingest-chunks.cjs +0 -202
- package/scripts/kb-chunk-parser.cjs +0 -312
- package/scripts/kb-chunk-parser.ts +0 -330
- package/scripts/kb-ingest-docs.ts +0 -203
- package/scripts/load-test-app-install.ts +0 -484
- package/scripts/test-login.js +0 -33
- package/spine.config.json +0 -91
|
@@ -1,45 +1,130 @@
|
|
|
1
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Module header and imports for the pipeline function"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Expose the function imports and mark the module entry point"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="functions" layer="infrastructure" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="None" outputs="None" errors="None" side_effects="None"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Import shared middleware, database client, and CIL helpers" notable_decisions="[]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="engineers"]
|
|
10
|
+
|
|
1
11
|
import { createHandler } from './_shared/middleware'
|
|
2
12
|
import { adminDb } from './_shared/db'
|
|
13
|
+
import { pipelineRank } from './_shared/cil'
|
|
14
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Module header and imports for the pipeline function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
15
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
16
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
17
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
18
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
19
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
20
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:module_header:module_header"]
|
|
21
|
+
|
|
3
22
|
|
|
23
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:PIPELINE_STEPS:constant" type="constant" identity="PIPELINE_STEPS" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
24
|
+
// CIL[DOC-MACRO purpose="Define the PIPELINE_STEPS constant"]
|
|
25
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the PIPELINE_STEPS constant for the CIL pipeline"]
|
|
26
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
27
|
+
// CIL[DOC-CONTRACT inputs="None" outputs="PIPELINE_STEPS constant definition" errors="None" side_effects="None"]
|
|
28
|
+
// CIL[DOC-MICRO logic_summary="Implements the PIPELINE_STEPS constant" notable_decisions="[]"]
|
|
29
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
30
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
4
31
|
const PIPELINE_STEPS = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
32
|
+
0: { name: 'discover', prerequisites: [], target_status: '0-discovered' },
|
|
33
|
+
1: { name: 'select', prerequisites: [0], target_status: '1-selected' },
|
|
34
|
+
2: { name: 'chunk', prerequisites: [1], target_status: '2-chunked' },
|
|
35
|
+
3: { name: 'document', prerequisites: [2], target_status: '3-documented' },
|
|
36
|
+
4: { name: 'validate-chunks', prerequisites: [3], target_status: '4-chunk-validated' },
|
|
37
|
+
5: { name: 'validate-docs', prerequisites: [4], target_status: '5-doc-validated' },
|
|
38
|
+
6: { name: 'enrich', prerequisites: [5], target_status: '6-enriched' },
|
|
39
|
+
7: { name: 'embed-and-map', prerequisites: [6], target_status: '7-embedded-mapped' },
|
|
40
|
+
8: { name: 'publish', prerequisites: [7], target_status: '8-published' },
|
|
12
41
|
} as const
|
|
42
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the PIPELINE_STEPS constant'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.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
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
47
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
48
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:PIPELINE_STEPS:constant"]
|
|
49
|
+
|
|
13
50
|
|
|
51
|
+
// CIL[DOC-STABILITY stability="internal"]
|
|
52
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
53
|
+
// CIL[DOC-CONTEXT module="unknown" layer="unknown" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
54
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:PipelineStep:type" type="type" identity="PipelineStep" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
55
|
+
// CIL[DOC-MACRO purpose="Define the PipelineStep type"]
|
|
56
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the PipelineStep type for the CIL pipeline"]
|
|
57
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
58
|
+
// CIL[DOC-CONTRACT inputs="None" outputs="PipelineStep type definition" errors="None" side_effects="None"]
|
|
59
|
+
// CIL[DOC-MICRO logic_summary="Implements the PipelineStep type" notable_decisions="[]"]
|
|
60
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
61
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
14
62
|
type PipelineStep = keyof typeof PIPELINE_STEPS
|
|
63
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the PipelineStep type'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
64
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
65
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
66
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
67
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
68
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
69
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:PipelineStep:type"]
|
|
15
70
|
|
|
71
|
+
|
|
72
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getProject:function" type="function" identity="getProject" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
73
|
+
// CIL[DOC-MACRO purpose="Define the getProject function"]
|
|
74
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the getProject function for the CIL pipeline"]
|
|
75
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
76
|
+
// CIL[DOC-CONTRACT inputs="project_id: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
77
|
+
// CIL[DOC-MICRO logic_summary="Implements the getProject function" notable_decisions="[]"]
|
|
78
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
79
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
16
80
|
async function getProject(project_id: string) {
|
|
17
81
|
const { data: project } = await adminDb.from('items').select('data')
|
|
18
82
|
.eq('id', project_id).maybeSingle()
|
|
19
83
|
if (!project) throw new Error(`Project not found: ${project_id}`)
|
|
20
84
|
return project
|
|
21
85
|
}
|
|
86
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the getProject function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
87
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
88
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
89
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
90
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
91
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
92
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getProject:function"]
|
|
93
|
+
|
|
22
94
|
|
|
95
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getCompletedSteps:function" type="function" identity="getCompletedSteps" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
96
|
+
// CIL[DOC-MACRO purpose="Define the getCompletedSteps function"]
|
|
97
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the getCompletedSteps function for the CIL pipeline"]
|
|
98
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
99
|
+
// CIL[DOC-CONTRACT inputs="status: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
100
|
+
// CIL[DOC-MICRO logic_summary="Implements the getCompletedSteps function" notable_decisions="[]"]
|
|
101
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
102
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
23
103
|
function getCompletedSteps(status: string): PipelineStep[] {
|
|
24
|
-
const
|
|
25
|
-
'4-chunked': 4,
|
|
26
|
-
'5-documented': 5,
|
|
27
|
-
'6-embedded': 6,
|
|
28
|
-
'7-mapped': 7,
|
|
29
|
-
'7.5-selected': 7,
|
|
30
|
-
'8-enriched': 8,
|
|
31
|
-
'9-embedded': 9,
|
|
32
|
-
'10-mapped': 10,
|
|
33
|
-
}
|
|
104
|
+
const rank = pipelineRank(status)
|
|
34
105
|
const completed: PipelineStep[] = []
|
|
35
|
-
for (const
|
|
36
|
-
if (
|
|
37
|
-
completed.push(stepNum)
|
|
38
|
-
}
|
|
106
|
+
for (const step of Object.keys(PIPELINE_STEPS) as PipelineStep[]) {
|
|
107
|
+
if (Number(step) <= rank) completed.push(step)
|
|
39
108
|
}
|
|
40
109
|
return completed
|
|
41
110
|
}
|
|
111
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the getCompletedSteps function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
112
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
113
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
114
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
115
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
116
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
117
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getCompletedSteps:function"]
|
|
42
118
|
|
|
119
|
+
|
|
120
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getReadySteps:function" type="function" identity="getReadySteps" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
121
|
+
// CIL[DOC-MACRO purpose="Define the getReadySteps function"]
|
|
122
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the getReadySteps function for the CIL pipeline"]
|
|
123
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
124
|
+
// CIL[DOC-CONTRACT inputs="status: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
125
|
+
// CIL[DOC-MICRO logic_summary="Implements the getReadySteps function" notable_decisions="[]"]
|
|
126
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
127
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
43
128
|
function getReadySteps(status: string): PipelineStep[] {
|
|
44
129
|
const completed = getCompletedSteps(status)
|
|
45
130
|
const ready: PipelineStep[] = []
|
|
@@ -51,7 +136,26 @@ function getReadySteps(status: string): PipelineStep[] {
|
|
|
51
136
|
}
|
|
52
137
|
return ready
|
|
53
138
|
}
|
|
139
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the getReadySteps function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
140
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
141
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
142
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
143
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
144
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
145
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getReadySteps:function"]
|
|
146
|
+
|
|
147
|
+
// CIL[DOC-STABILITY stability="internal"]
|
|
148
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
149
|
+
// CIL[DOC-CONTEXT module="unknown" layer="unknown" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
54
150
|
|
|
151
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getBlockedSteps:function" type="function" identity="getBlockedSteps" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
152
|
+
// CIL[DOC-MACRO purpose="Define the getBlockedSteps function"]
|
|
153
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the getBlockedSteps function for the CIL pipeline"]
|
|
154
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
155
|
+
// CIL[DOC-CONTRACT inputs="status: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
156
|
+
// CIL[DOC-MICRO logic_summary="Implements the getBlockedSteps function" notable_decisions="[]"]
|
|
157
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
158
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
55
159
|
function getBlockedSteps(status: string): PipelineStep[] {
|
|
56
160
|
const completed = getCompletedSteps(status)
|
|
57
161
|
const blocked: PipelineStep[] = []
|
|
@@ -63,13 +167,45 @@ function getBlockedSteps(status: string): PipelineStep[] {
|
|
|
63
167
|
}
|
|
64
168
|
return blocked
|
|
65
169
|
}
|
|
170
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the getBlockedSteps function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
171
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
172
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
173
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
174
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
175
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
176
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getBlockedSteps:function"]
|
|
66
177
|
|
|
178
|
+
|
|
179
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:calculateProgress:function" type="function" identity="calculateProgress" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
180
|
+
// CIL[DOC-MACRO purpose="Define the calculateProgress function"]
|
|
181
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the calculateProgress function for the CIL pipeline"]
|
|
182
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
183
|
+
// CIL[DOC-CONTRACT inputs="status: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
184
|
+
// CIL[DOC-MICRO logic_summary="Implements the calculateProgress function" notable_decisions="[]"]
|
|
185
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
186
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
67
187
|
function calculateProgress(status: string): number {
|
|
68
188
|
const completed = getCompletedSteps(status)
|
|
69
189
|
const totalSteps = Object.keys(PIPELINE_STEPS).length
|
|
70
190
|
return (completed.length / totalSteps) * 100
|
|
71
191
|
}
|
|
192
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the calculateProgress function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
193
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
194
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
195
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
196
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
197
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
198
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:calculateProgress:function"]
|
|
199
|
+
|
|
72
200
|
|
|
201
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getBlockingReasons:function" type="function" identity="getBlockingReasons" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
202
|
+
// CIL[DOC-MACRO purpose="Define the getBlockingReasons function"]
|
|
203
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the getBlockingReasons function for the CIL pipeline"]
|
|
204
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
205
|
+
// CIL[DOC-CONTRACT inputs="status: string, step: PipelineStep" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
206
|
+
// CIL[DOC-MICRO logic_summary="Implements the getBlockingReasons function" notable_decisions="[]"]
|
|
207
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
208
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
73
209
|
function getBlockingReasons(status: string, step: PipelineStep): string[] {
|
|
74
210
|
const completed = getCompletedSteps(status)
|
|
75
211
|
const reasons: string[] = []
|
|
@@ -80,7 +216,23 @@ function getBlockingReasons(status: string, step: PipelineStep): string[] {
|
|
|
80
216
|
}
|
|
81
217
|
return reasons
|
|
82
218
|
}
|
|
219
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the getBlockingReasons function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
220
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
221
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
222
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
223
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
224
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
225
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getBlockingReasons:function"]
|
|
226
|
+
|
|
83
227
|
|
|
228
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getStepBlockingReasons:function" type="function" identity="getStepBlockingReasons" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
229
|
+
// CIL[DOC-MACRO purpose="Define the getStepBlockingReasons function"]
|
|
230
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the getStepBlockingReasons function for the CIL pipeline"]
|
|
231
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
232
|
+
// CIL[DOC-CONTRACT inputs="files: Array<[string, string]>, step: PipelineStep" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
233
|
+
// CIL[DOC-MICRO logic_summary="Implements the getStepBlockingReasons function" notable_decisions="[]"]
|
|
234
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
235
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
84
236
|
function getStepBlockingReasons(files: Array<[string, string]>, step: PipelineStep): string[] {
|
|
85
237
|
const blockingReasons: string[] = []
|
|
86
238
|
for (const [file_path, status] of files) {
|
|
@@ -95,7 +247,23 @@ function getStepBlockingReasons(files: Array<[string, string]>, step: PipelineSt
|
|
|
95
247
|
}
|
|
96
248
|
return [...new Set(blockingReasons)]
|
|
97
249
|
}
|
|
250
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the getStepBlockingReasons function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
251
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
252
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
253
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
254
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
255
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
256
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getStepBlockingReasons:function"]
|
|
98
257
|
|
|
258
|
+
|
|
259
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getOptimalProcessingOrder:function" type="function" identity="getOptimalProcessingOrder" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
260
|
+
// CIL[DOC-MACRO purpose="Define the getOptimalProcessingOrder function"]
|
|
261
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the getOptimalProcessingOrder function for the CIL pipeline"]
|
|
262
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
263
|
+
// CIL[DOC-CONTRACT inputs="files: Array<[string, string]>" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
264
|
+
// CIL[DOC-MICRO logic_summary="Implements the getOptimalProcessingOrder function" notable_decisions="[]"]
|
|
265
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
266
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
99
267
|
function getOptimalProcessingOrder(files: Array<[string, string]>): Array<{file_path: string, suggested_next_step: PipelineStep | null}> {
|
|
100
268
|
const fileStates = files.map(([file_path, status]) => ({
|
|
101
269
|
file_path,
|
|
@@ -115,7 +283,23 @@ function getOptimalProcessingOrder(files: Array<[string, string]>): Array<{file_
|
|
|
115
283
|
suggested_next_step: ready_for[0] || null
|
|
116
284
|
}))
|
|
117
285
|
}
|
|
286
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the getOptimalProcessingOrder function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
287
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
288
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
289
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
290
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
291
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
292
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getOptimalProcessingOrder:function"]
|
|
293
|
+
|
|
118
294
|
|
|
295
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getPipelineStatus:function" type="function" identity="getPipelineStatus" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
296
|
+
// CIL[DOC-MACRO purpose="Define the getPipelineStatus function"]
|
|
297
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the getPipelineStatus function for the CIL pipeline"]
|
|
298
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
299
|
+
// CIL[DOC-CONTRACT inputs="project_id: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
300
|
+
// CIL[DOC-MICRO logic_summary="Implements the getPipelineStatus function" notable_decisions="[]"]
|
|
301
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
302
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
119
303
|
async function getPipelineStatus(project_id: string) {
|
|
120
304
|
const project = await getProject(project_id)
|
|
121
305
|
const fileStatuses: Record<string, string> = project.data?.file_statuses || {}
|
|
@@ -144,7 +328,23 @@ async function getPipelineStatus(project_id: string) {
|
|
|
144
328
|
overall_progress: Math.round(overallProgress)
|
|
145
329
|
}
|
|
146
330
|
}
|
|
331
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the getPipelineStatus function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
332
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
333
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
334
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
335
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
336
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
337
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getPipelineStatus:function"]
|
|
147
338
|
|
|
339
|
+
|
|
340
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getFilesReadyForStep:function" type="function" identity="getFilesReadyForStep" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
341
|
+
// CIL[DOC-MACRO purpose="Define the getFilesReadyForStep function"]
|
|
342
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the getFilesReadyForStep function for the CIL pipeline"]
|
|
343
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
344
|
+
// CIL[DOC-CONTRACT inputs="project_id: string, step: number, include_blocking_info: boolean" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
345
|
+
// CIL[DOC-MICRO logic_summary="Implements the getFilesReadyForStep function" notable_decisions="[]"]
|
|
346
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
347
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
148
348
|
async function getFilesReadyForStep(project_id: string, step: number, include_blocking_info: boolean) {
|
|
149
349
|
const stepKey = step as PipelineStep
|
|
150
350
|
if (!PIPELINE_STEPS[stepKey]) {
|
|
@@ -194,7 +394,23 @@ async function getFilesReadyForStep(project_id: string, step: number, include_bl
|
|
|
194
394
|
files
|
|
195
395
|
}
|
|
196
396
|
}
|
|
397
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the getFilesReadyForStep function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
398
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
399
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
400
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
401
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
402
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
403
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getFilesReadyForStep:function"]
|
|
404
|
+
|
|
197
405
|
|
|
406
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:updateFilePipelineState:function" type="function" identity="updateFilePipelineState" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
407
|
+
// CIL[DOC-MACRO purpose="Define the updateFilePipelineState function"]
|
|
408
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the updateFilePipelineState function for the CIL pipeline"]
|
|
409
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
410
|
+
// CIL[DOC-CONTRACT inputs="project_id: string, file_path: string, step_completed: number, new_status: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
411
|
+
// CIL[DOC-MICRO logic_summary="Implements the updateFilePipelineState function" notable_decisions="[]"]
|
|
412
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
413
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
198
414
|
async function updateFilePipelineState(
|
|
199
415
|
project_id: string,
|
|
200
416
|
file_path: string,
|
|
@@ -226,7 +442,23 @@ async function updateFilePipelineState(
|
|
|
226
442
|
progress_percentage: calculateProgress(new_status)
|
|
227
443
|
}
|
|
228
444
|
}
|
|
445
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the updateFilePipelineState function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
446
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
447
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
448
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
449
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
450
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
451
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:updateFilePipelineState:function"]
|
|
229
452
|
|
|
453
|
+
|
|
454
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getPipelineBottlenecks:function" type="function" identity="getPipelineBottlenecks" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
455
|
+
// CIL[DOC-MACRO purpose="Define the getPipelineBottlenecks function"]
|
|
456
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the getPipelineBottlenecks function for the CIL pipeline"]
|
|
457
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
458
|
+
// CIL[DOC-CONTRACT inputs="project_id: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
|
|
459
|
+
// CIL[DOC-MICRO logic_summary="Implements the getPipelineBottlenecks function" notable_decisions="[]"]
|
|
460
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
461
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
230
462
|
async function getPipelineBottlenecks(project_id: string) {
|
|
231
463
|
const project = await getProject(project_id)
|
|
232
464
|
const fileStatuses: Record<string, string> = project.data?.file_statuses || {}
|
|
@@ -274,7 +506,23 @@ async function getPipelineBottlenecks(project_id: string) {
|
|
|
274
506
|
}
|
|
275
507
|
}
|
|
276
508
|
}
|
|
509
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the getPipelineBottlenecks function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
510
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
511
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
512
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
513
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
514
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
515
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getPipelineBottlenecks:function"]
|
|
516
|
+
|
|
277
517
|
|
|
518
|
+
// CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:handler:constant" type="constant" identity="handler" parent="~/.framework/functions/cil-pipeline.ts"]
|
|
519
|
+
// CIL[DOC-MACRO purpose="Define the handler constant"]
|
|
520
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide the handler constant for the CIL pipeline"]
|
|
521
|
+
// CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
|
|
522
|
+
// CIL[DOC-CONTRACT inputs="None" outputs="handler constant definition" errors="None" side_effects="None"]
|
|
523
|
+
// CIL[DOC-MICRO logic_summary="Implements the handler constant" notable_decisions="[]"]
|
|
524
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
|
|
525
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
278
526
|
export const handler = createHandler(async (ctx, body) => {
|
|
279
527
|
const action = ctx.query?.action
|
|
280
528
|
if (!action) throw new Error('action is required')
|
|
@@ -316,3 +564,10 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
316
564
|
|
|
317
565
|
throw new Error(`Unknown action: ${action}`)
|
|
318
566
|
})
|
|
567
|
+
// CIL[DOC-VECTOR type="context" content="purpose='Define the handler constant'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
|
|
568
|
+
// CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
|
|
569
|
+
// CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
|
|
570
|
+
// CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
|
|
571
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
572
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
573
|
+
// CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:handler:constant"]
|