spine-framework 0.3.124 → 0.3.126
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.framework/cli/commands/agents.ts +35 -37
- package/.framework/cli/commands/auth.ts +35 -34
- package/.framework/cli/commands/create-app.ts +104 -40
- package/.framework/cli/commands/dev.ts +104 -69
- package/.framework/cli/commands/doctor.ts +179 -69
- package/.framework/cli/commands/generate.ts +83 -143
- package/.framework/cli/commands/init.ts +72 -34
- package/.framework/cli/commands/install-app.ts +260 -125
- package/.framework/cli/commands/items.ts +33 -44
- package/.framework/cli/commands/migrate.ts +122 -40
- package/.framework/cli/commands/migrations.ts +33 -40
- package/.framework/cli/commands/pipelines.ts +31 -39
- package/.framework/cli/commands/status.ts +47 -23
- package/.framework/cli/commands/system.ts +47 -37
- package/.framework/cli/commands/test.ts +112 -68
- package/.framework/cli/commands/validate-app.ts +215 -121
- package/.framework/cli/context.ts +112 -130
- package/.framework/cli/env-loader.ts +47 -18
- package/.framework/cli/index.ts +81 -42
- package/.framework/docs/runtime-types.md +1024 -0
- package/.framework/functions/_shared/agent-runner.ts +1296 -961
- package/.framework/functions/_shared/app-manifest.ts +82 -68
- package/.framework/functions/_shared/audit.ts +135 -83
- package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
- package/.framework/functions/_shared/db.ts +80 -126
- package/.framework/functions/_shared/hash-api-key.ts +63 -0
- package/.framework/functions/_shared/index.ts +224 -335
- package/.framework/functions/_shared/kb.ts +319 -0
- package/.framework/functions/_shared/llm.ts +92 -0
- package/.framework/functions/_shared/logging.ts +288 -0
- package/.framework/functions/_shared/middleware.ts +329 -365
- package/.framework/functions/_shared/outcomes.ts +36 -0
- package/.framework/functions/_shared/permissions.ts +359 -643
- package/.framework/functions/_shared/pipeline-runner.ts +243 -316
- package/.framework/functions/_shared/principal.ts +376 -468
- package/.framework/functions/_shared/resolve-credentials.ts +102 -0
- package/.framework/functions/_shared/resolve-ids.ts +188 -16
- package/.framework/functions/_shared/retry-deliveries.ts +104 -0
- package/.framework/functions/_shared/schema-utils.ts +611 -373
- package/.framework/functions/_shared/testing.ts +207 -137
- package/.framework/functions/_shared/tracing.ts +276 -0
- package/.framework/functions/_shared/trigger-engine.ts +159 -211
- package/.framework/functions/_shared/webhook-registration.ts +95 -81
- package/.framework/functions/_shared/webhook-registry.ts +153 -75
- package/.framework/functions/account-nodes.ts +31 -53
- package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
- package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
- package/.framework/functions/adapters/openai-outbound.ts +40 -0
- package/.framework/functions/admin-data.ts +685 -537
- package/.framework/functions/admin-funnel.ts +31 -20
- package/.framework/functions/admin-install-funnel.ts +47 -28
- package/.framework/functions/admin-signals.ts +47 -29
- package/.framework/functions/ai-agents.ts +122 -147
- package/.framework/functions/ai-interactions.ts +180 -90
- package/.framework/functions/api-keys.ts +250 -192
- package/.framework/functions/apps.ts +203 -197
- package/.framework/functions/auth.ts +98 -91
- package/.framework/functions/cil-agent-ingest.ts +773 -0
- package/.framework/functions/cil-agent.ts +592 -0
- package/.framework/functions/cil-callmap.ts +1227 -0
- package/.framework/functions/cil-config.ts +583 -0
- package/.framework/functions/cil-context.ts +445 -0
- package/.framework/functions/cil-doc.ts +1752 -0
- package/.framework/functions/cil-embeddings.ts +1202 -0
- package/.framework/functions/cil-graph.ts +585 -0
- package/.framework/functions/cil-ingest.ts +2416 -0
- package/.framework/functions/cil-pipeline.ts +318 -0
- package/.framework/functions/cil-project.ts +499 -0
- package/.framework/functions/cil-validate.ts +469 -0
- package/.framework/functions/debug-auth.ts +73 -53
- package/.framework/functions/deliveries.ts +117 -0
- package/.framework/functions/embeddings.ts +528 -516
- package/.framework/functions/eval-harness.ts +158 -106
- package/.framework/functions/integration-outbound.ts +311 -0
- package/.framework/functions/integration-routes.ts +240 -466
- package/.framework/functions/integrations.ts +132 -140
- package/.framework/functions/invites.ts +401 -201
- package/.framework/functions/item-progress.ts +113 -53
- package/.framework/functions/kb.ts +28 -0
- package/.framework/functions/logs.ts +239 -222
- package/.framework/functions/observability.ts +308 -259
- package/.framework/functions/pipeline-executions.ts +179 -235
- package/.framework/functions/pipelines.ts +163 -205
- package/.framework/functions/prompt-configs.ts +109 -156
- package/.framework/functions/roles.ts +97 -147
- package/.framework/functions/system-cron.ts +132 -218
- package/.framework/functions/system.ts +112 -52
- package/.framework/functions/tests.ts +32 -28
- package/.framework/functions/timers.ts +162 -210
- package/.framework/functions/triggers.ts +282 -346
- package/.framework/functions/types.ts +283 -400
- package/.framework/migrations/001_core_schema.sql +630 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
- package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
- package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
- package/.framework/migrations/005_core_observability.sql +598 -0
- package/.framework/migrations/006_security_hardening_rls.sql +97 -0
- package/.framework/migrations/007_kb_article_list.sql +237 -0
- package/.framework/migrations/008_items_target.sql +8 -0
- package/.framework/migrations/009_roles_slug_unique.sql +11 -0
- package/.framework/public/spine.config.json +91 -0
- package/.framework/scripts/app-install-cli.ts +112 -98
- package/.framework/src/App.tsx +67 -20
- package/.framework/src/apps/admin/index.tsx +97 -27
- package/.framework/src/components/AppWrapper.tsx +50 -11
- package/.framework/src/components/CustomAppLoader.tsx +131 -22
- package/.framework/src/components/admin/AdminListPage.tsx +75 -8
- package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
- package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
- package/.framework/src/components/admin/PageInstructions.tsx +49 -0
- package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
- package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
- package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
- package/.framework/src/components/app-sidebar.tsx +50 -3
- package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
- package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
- package/.framework/src/components/kb/KBArticleList.tsx +557 -0
- package/.framework/src/components/layout/AppShell.tsx +54 -16
- package/.framework/src/components/layout/Header.tsx +50 -38
- package/.framework/src/components/layout/Layout.tsx +48 -32
- package/.framework/src/components/layout/Sidebar.tsx +167 -16
- package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
- package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
- package/.framework/src/components/runtime/DataFilters.tsx +78 -1
- package/.framework/src/components/runtime/DataHeader.tsx +32 -29
- package/.framework/src/components/runtime/DataListPage.tsx +161 -2
- package/.framework/src/components/runtime/DataStats.tsx +48 -1
- package/.framework/src/components/runtime/DataTable.tsx +153 -1
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
- package/.framework/src/components/runtime/index.ts +16 -9
- package/.framework/src/components/search-form.tsx +33 -1
- package/.framework/src/components/shared/AgentView.tsx +48 -51
- package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
- package/.framework/src/components/shared/InviteManager.tsx +113 -52
- package/.framework/src/components/shared/MemberList.tsx +182 -0
- package/.framework/src/components/shared/SchemaFields.tsx +96 -78
- package/.framework/src/components/ui/DataTable.tsx +86 -56
- package/.framework/src/components/ui/Form.tsx +188 -109
- package/.framework/src/components/ui/ItemCard.tsx +86 -58
- package/.framework/src/components/ui/ItemListView.tsx +88 -61
- package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
- package/.framework/src/components/ui/Modal.tsx +81 -4
- package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
- package/.framework/src/components/ui/accordion.tsx +97 -5
- package/.framework/src/components/ui/alert-dialog.tsx +225 -13
- package/.framework/src/components/ui/alert.tsx +113 -6
- package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
- package/.framework/src/components/ui/avatar.tsx +129 -7
- package/.framework/src/components/ui/badge.tsx +65 -3
- package/.framework/src/components/ui/breadcrumb.tsx +145 -8
- package/.framework/src/components/ui/button-group.tsx +81 -4
- package/.framework/src/components/ui/button.tsx +49 -2
- package/.framework/src/components/ui/calendar.tsx +65 -3
- package/.framework/src/components/ui/card.tsx +145 -8
- package/.framework/src/components/ui/carousel.tsx +129 -7
- package/.framework/src/components/ui/chart.tsx +161 -10
- package/.framework/src/components/ui/checkbox.tsx +49 -2
- package/.framework/src/components/ui/collapsible.tsx +81 -5
- package/.framework/src/components/ui/combobox.tsx +305 -20
- package/.framework/src/components/ui/command.tsx +177 -11
- package/.framework/src/components/ui/context-menu.tsx +273 -17
- package/.framework/src/components/ui/dialog.tsx +209 -27
- package/.framework/src/components/ui/direction.tsx +64 -4
- package/.framework/src/components/ui/drawer.tsx +193 -12
- package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
- package/.framework/src/components/ui/empty.tsx +145 -9
- package/.framework/src/components/ui/field.tsx +209 -14
- package/.framework/src/components/ui/hover-card.tsx +81 -4
- package/.framework/src/components/ui/input-group.tsx +162 -10
- package/.framework/src/components/ui/input-otp.tsx +98 -5
- package/.framework/src/components/ui/input.tsx +49 -2
- package/.framework/src/components/ui/item.tsx +225 -13
- package/.framework/src/components/ui/kbd.tsx +65 -3
- package/.framework/src/components/ui/label.tsx +49 -2
- package/.framework/src/components/ui/menubar.tsx +289 -17
- package/.framework/src/components/ui/native-select.tsx +97 -5
- package/.framework/src/components/ui/navigation-menu.tsx +177 -10
- package/.framework/src/components/ui/pagination.tsx +161 -9
- package/.framework/src/components/ui/popover.tsx +145 -8
- package/.framework/src/components/ui/progress.tsx +49 -2
- package/.framework/src/components/ui/radio-group.tsx +65 -3
- package/.framework/src/components/ui/resizable.tsx +82 -4
- package/.framework/src/components/ui/scroll-area.tsx +65 -3
- package/.framework/src/components/ui/select.tsx +193 -11
- package/.framework/src/components/ui/separator.tsx +49 -2
- package/.framework/src/components/ui/sheet.tsx +193 -11
- package/.framework/src/components/ui/sidebar.tsx +481 -38
- package/.framework/src/components/ui/skeleton.tsx +49 -2
- package/.framework/src/components/ui/slider.tsx +49 -2
- package/.framework/src/components/ui/sonner.tsx +49 -2
- package/.framework/src/components/ui/spinner.tsx +49 -2
- package/.framework/src/components/ui/switch.tsx +49 -2
- package/.framework/src/components/ui/table-primitives.tsx +160 -33
- package/.framework/src/components/ui/table.tsx +161 -9
- package/.framework/src/components/ui/tabs.tsx +113 -6
- package/.framework/src/components/ui/textarea.tsx +49 -2
- package/.framework/src/components/ui/toggle-group.tsx +81 -4
- package/.framework/src/components/ui/toggle.tsx +65 -3
- package/.framework/src/components/ui/tooltip.tsx +97 -5
- package/.framework/src/contexts/AppContext.tsx +129 -45
- package/.framework/src/contexts/AuthContext.tsx +187 -144
- package/.framework/src/hooks/use-mobile.ts +48 -2
- package/.framework/src/hooks/useApi.ts +208 -159
- package/.framework/src/hooks/useAppPath.ts +32 -23
- package/.framework/src/hooks/useApps.ts +51 -20
- package/.framework/src/hooks/useEntityList.ts +32 -78
- package/.framework/src/hooks/useEntityRecord.ts +35 -96
- package/.framework/src/hooks/useForm.ts +32 -92
- package/.framework/src/hooks/useListSchema.ts +49 -78
- package/.framework/src/hooks/useSchemaRecord.ts +114 -105
- package/.framework/src/lib/api.ts +195 -116
- package/.framework/src/lib/supabase.ts +98 -64
- package/.framework/src/lib/utils.ts +287 -151
- package/.framework/src/main.tsx +49 -3
- package/.framework/src/pages/DashboardPage.tsx +52 -29
- package/.framework/src/pages/NotFoundPage.tsx +32 -10
- package/.framework/src/pages/SetupPage.tsx +32 -12
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
- package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
- package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
- package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
- package/.framework/src/pages/admin/AppsPage.tsx +49 -2
- package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
- package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
- package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
- package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
- package/.framework/src/pages/admin/LogsPage.tsx +422 -75
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
- package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
- package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
- package/.framework/src/pages/admin/RolesPage.tsx +171 -18
- package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
- package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
- package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
- package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
- package/.framework/src/pages/admin/TimersPage.tsx +48 -20
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
- package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
- package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
- package/.framework/src/pages/admin/TypesPage.tsx +48 -20
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
- package/.framework/src/pages/auth/LoginPage.tsx +50 -23
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
- package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
- package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
- package/.framework/src/types/auth.ts +128 -71
- package/.framework/src/types/types.ts +373 -157
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
- package/docs/README.md +9 -130
- package/netlify.toml +5 -2
- package/package.json +13 -25
- package/scripts/kb-ingest-docs.ts +203 -0
- package/spine.config.json +65 -4
- package/.framework/migrations/001_schema.sql +0 -425
- package/.framework/migrations/002_rls_and_functions.sql +0 -763
- package/.framework/migrations/004_enhancements.sql +0 -43
- package/.framework/migrations/005_auth_user_trigger.sql +0 -105
- package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
- package/.framework/migrations/016_invites.sql +0 -27
- package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
- package/.framework/migrations/018_apps_required_roles.sql +0 -17
- package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
- package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
- package/.framework/migrations/021_app_domains.sql +0 -112
- package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
- package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
- package/.framework/migrations/024_messages_account_id.sql +0 -9
- package/.framework/migrations/025_retype_threads_messages.sql +0 -240
- package/.framework/migrations/026_fix_rls_policies.sql +0 -47
- package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
- package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
- package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
- package/.framework/migrations/030_messages_updated_by.sql +0 -6
- package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
- package/docs/APPS.md +0 -232
- package/docs/ARCHITECTURE.md +0 -246
- package/docs/INSTALL.md +0 -155
- package/docs/design-schema-spec.md +0 -1837
- package/docs/dev-guides/01-create-an-app.md +0 -183
- package/docs/dev-guides/02-create-a-function.md +0 -178
- package/docs/dev-guides/03-create-a-component.md +0 -178
- package/docs/dev-guides/04-webhook-handlers.md +0 -129
- package/docs/dev-guides/05-testing.md +0 -168
- package/docs/dev-guides/README.md +0 -40
- package/docs/npm-packages-plan.md +0 -288
- package/docs/spine-core--api-reference.md +0 -822
|
@@ -1,55 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
// CIL[BEGIN chunk_id="apps_moduleheader_1783969696" type="module_header" identity="imports" parent="none"]
|
|
37
|
+
// CIL[DOC-MACRO purpose="Import dependencies for apps module"]
|
|
38
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Import middleware, database, permissions, and logging utilities"]
|
|
39
|
+
// CIL[DOC-CONTEXT module="apps" layer="backend_functions" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
|
|
40
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="imported_modules" errors="none" side_effects="none"]
|
|
41
|
+
// CIL[DOC-MICRO logic_summary="Imports required dependencies for app management functions" notable_decisions="[]"]
|
|
42
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.96" flags="none"]
|
|
43
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
44
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
45
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
|
|
46
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
47
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
48
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
49
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
50
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
28
51
|
|
|
29
52
|
import { createHandler } from './_shared/middleware'
|
|
30
|
-
import {
|
|
53
|
+
import { adminDb } from './_shared/db'
|
|
31
54
|
import { emitLog } from './_shared/audit'
|
|
55
|
+
import { isSystemAdmin } from './_shared/principal'
|
|
32
56
|
import { PermissionEngine, sanitizeRecordData } from './_shared/permissions'
|
|
33
57
|
|
|
34
58
|
const permissions = PermissionEngine as any
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
* @tags apps, list, crud, rpc
|
|
52
|
-
*/
|
|
59
|
+
// CIL[END chunk_id="apps_moduleheader_1783969696"]
|
|
60
|
+
// CIL[BEGIN chunk_id="apps_list_1783969696" type="function" identity="list" parent="none"]
|
|
61
|
+
// CIL[DOC-LEARNING topic="apps_list:get_account_apps_filter" content="/api/apps?action=list calls get_account_apps, which filters by account ownership, is_active, and the requesting user's roles. An app missing from this list will never be rendered by AuthenticatedRouter."]
|
|
62
|
+
// CIL[DOC-MACRO purpose="List apps with filtering and permissions"]
|
|
63
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Retrieve and filter apps by account and user roles"]
|
|
64
|
+
// CIL[DOC-CONTEXT module="apps" layer="backend_functions" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
|
|
65
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="sanitized_app_list" errors="auth_errors,db_errors" side_effects="none"]
|
|
66
|
+
// CIL[DOC-MICRO logic_summary="Query apps by account with role-based filtering and data sanitization" notable_decisions="[]"]
|
|
67
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
68
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
69
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/pages/admin/RolesPage.tsx, \."]
|
|
70
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
71
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
72
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
73
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
74
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
53
75
|
export const list = createHandler(async (ctx, body) => {
|
|
54
76
|
const { include_system, include_inactive, account_id } = ctx.query || {}
|
|
55
77
|
|
|
@@ -59,12 +81,12 @@ export const list = createHandler(async (ctx, body) => {
|
|
|
59
81
|
throw new Error('Account context required')
|
|
60
82
|
}
|
|
61
83
|
|
|
62
|
-
|
|
63
|
-
|
|
84
|
+
const db = isSystemAdmin(ctx.principal) ? adminDb : ctx.db
|
|
85
|
+
|
|
64
86
|
const userRoles = ctx.principal?.roles || []
|
|
65
87
|
const isSysAdmin = userRoles.includes('system_admin')
|
|
66
88
|
|
|
67
|
-
const { data, error: err } = await
|
|
89
|
+
const { data, error: err } = await db
|
|
68
90
|
.rpc('get_account_apps', {
|
|
69
91
|
account_id: targetAccountId,
|
|
70
92
|
include_system: include_system !== 'false',
|
|
@@ -75,7 +97,7 @@ export const list = createHandler(async (ctx, body) => {
|
|
|
75
97
|
|
|
76
98
|
if (err) throw err
|
|
77
99
|
|
|
78
|
-
|
|
100
|
+
|
|
79
101
|
const sanitized = []
|
|
80
102
|
for (const app of data || []) {
|
|
81
103
|
sanitized.push(await sanitizeRecordData(ctx, app, 'app'))
|
|
@@ -83,23 +105,21 @@ export const list = createHandler(async (ctx, body) => {
|
|
|
83
105
|
|
|
84
106
|
return sanitized
|
|
85
107
|
})
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
* @tags apps, get, crud, single-record
|
|
102
|
-
*/
|
|
108
|
+
// CIL[END chunk_id="apps_list_1783969696"]
|
|
109
|
+
// CIL[BEGIN chunk_id="apps_get_1783969696" type="function" identity="get" parent="none"]
|
|
110
|
+
// CIL[DOC-MACRO purpose="Get single app by ID or slug"]
|
|
111
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Retrieve individual app record with owner details"]
|
|
112
|
+
// CIL[DOC-CONTEXT module="apps" layer="backend_functions" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
|
|
113
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="sanitized_app" errors="not_found,db_errors" side_effects="none"]
|
|
114
|
+
// CIL[DOC-MICRO logic_summary="Query app by ID or slug and sanitize data for response" notable_decisions="[]"]
|
|
115
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.96" flags="none"]
|
|
116
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
117
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/migrations/015_simplify_apps_table.sql, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
|
|
118
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
119
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
120
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
121
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
122
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
103
123
|
export const get = createHandler(async (ctx, body) => {
|
|
104
124
|
const { id, slug } = ctx.query || {}
|
|
105
125
|
|
|
@@ -107,9 +127,11 @@ export const get = createHandler(async (ctx, body) => {
|
|
|
107
127
|
throw new Error('App ID or slug is required')
|
|
108
128
|
}
|
|
109
129
|
|
|
110
|
-
|
|
130
|
+
const db = isSystemAdmin(ctx.principal) ? adminDb : ctx.db
|
|
131
|
+
|
|
132
|
+
let query = db
|
|
111
133
|
.from('apps')
|
|
112
|
-
.select(
|
|
134
|
+
.select('*')
|
|
113
135
|
.eq('is_active', true)
|
|
114
136
|
|
|
115
137
|
if (id) {
|
|
@@ -122,26 +144,24 @@ export const get = createHandler(async (ctx, body) => {
|
|
|
122
144
|
|
|
123
145
|
if (err) throw err
|
|
124
146
|
|
|
125
|
-
|
|
147
|
+
|
|
126
148
|
return await sanitizeRecordData(ctx, data, 'app')
|
|
127
149
|
})
|
|
128
|
-
//
|
|
129
|
-
|
|
130
|
-
//
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
* @tags apps, schema, rpc, configuration
|
|
144
|
-
*/
|
|
150
|
+
// CIL[END chunk_id="apps_get_1783969696"]
|
|
151
|
+
// CIL[BEGIN chunk_id="apps_getschema_1783969696" type="function" identity="getSchema" parent="none"]
|
|
152
|
+
// CIL[DOC-MACRO purpose="Get app schema configuration"]
|
|
153
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Retrieve schema definition for specific app"]
|
|
154
|
+
// CIL[DOC-CONTEXT module="apps" layer="backend_functions" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
155
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="app_schema" errors="not_found,db_errors" side_effects="none"]
|
|
156
|
+
// CIL[DOC-MICRO logic_summary="Call stored procedure to get app schema by slug" notable_decisions="[]"]
|
|
157
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="rpc_behavior_not_mapped"]
|
|
158
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
159
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 1. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/RolesPage.tsx, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
160
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
|
|
161
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
162
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
163
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
164
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
145
165
|
export const getSchema = createHandler(async (ctx, body) => {
|
|
146
166
|
const { slug } = ctx.query || {}
|
|
147
167
|
|
|
@@ -156,23 +176,21 @@ export const getSchema = createHandler(async (ctx, body) => {
|
|
|
156
176
|
|
|
157
177
|
return data
|
|
158
178
|
})
|
|
159
|
-
//
|
|
160
|
-
|
|
161
|
-
//
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
* @tags apps, create, crud, permissions, audit
|
|
175
|
-
*/
|
|
179
|
+
// CIL[END chunk_id="apps_getschema_1783969696"]
|
|
180
|
+
// CIL[BEGIN chunk_id="apps_create_1783969696" type="function" identity="create" parent="none"]
|
|
181
|
+
// CIL[DOC-MACRO purpose="Create new app with validation"]
|
|
182
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Create app record with permissions and audit logging"]
|
|
183
|
+
// CIL[DOC-CONTEXT module="apps" layer="backend_functions" related_files="[]"]
|
|
184
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="created_app" errors="validation_errors,permission_errors" side_effects="db_write,audit_log"]
|
|
185
|
+
// CIL[DOC-MICRO logic_summary="Validate permissions, check slug uniqueness, create app, log event" notable_decisions="[]"]
|
|
186
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
187
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
188
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
189
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
190
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
191
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
192
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
193
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
176
194
|
export const create = createHandler(async (ctx, body) => {
|
|
177
195
|
const { slug, name, description, icon, color, version, app_type, source, owner_account_id, config, nav_items, min_role, integration_deps, metadata, route_prefix, renderer } = body
|
|
178
196
|
|
|
@@ -184,7 +202,7 @@ export const create = createHandler(async (ctx, body) => {
|
|
|
184
202
|
throw new Error('User context (person and account) required')
|
|
185
203
|
}
|
|
186
204
|
|
|
187
|
-
|
|
205
|
+
|
|
188
206
|
if (!permissions.isSystemAdmin(ctx)) {
|
|
189
207
|
const perms = await permissions.resolveFirstSurfacePermissions(
|
|
190
208
|
ctx.principal.id,
|
|
@@ -198,7 +216,7 @@ export const create = createHandler(async (ctx, body) => {
|
|
|
198
216
|
}
|
|
199
217
|
}
|
|
200
218
|
|
|
201
|
-
|
|
219
|
+
|
|
202
220
|
const { data: existing } = await ctx.db
|
|
203
221
|
.from('apps')
|
|
204
222
|
.select('id')
|
|
@@ -240,23 +258,21 @@ export const create = createHandler(async (ctx, body) => {
|
|
|
240
258
|
|
|
241
259
|
return data
|
|
242
260
|
})
|
|
243
|
-
//
|
|
244
|
-
|
|
245
|
-
//
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
* @tags apps, update, crud, permissions, audit
|
|
259
|
-
*/
|
|
261
|
+
// CIL[END chunk_id="apps_create_1783969696"]
|
|
262
|
+
// CIL[BEGIN chunk_id="apps_update_1783969696" type="function" identity="update" parent="none"]
|
|
263
|
+
// CIL[DOC-MACRO purpose="Update existing app with permissions"]
|
|
264
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Update app record with field-level permission validation"]
|
|
265
|
+
// CIL[DOC-CONTEXT module="apps" layer="backend_functions" related_files="[]"]
|
|
266
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="updated_app" errors="not_found,permission_errors" side_effects="db_write,audit_log"]
|
|
267
|
+
// CIL[DOC-MICRO logic_summary="Validate update permissions, apply changes, log modification" notable_decisions="[]"]
|
|
268
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
269
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
270
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
271
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
272
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
273
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
274
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
275
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
260
276
|
export const update = createHandler(async (ctx, body) => {
|
|
261
277
|
const id = body?.id || ctx.query?.id
|
|
262
278
|
const { id: _bodyId, ...updates } = body || {}
|
|
@@ -269,7 +285,7 @@ export const update = createHandler(async (ctx, body) => {
|
|
|
269
285
|
throw new Error('User context (person and account) required')
|
|
270
286
|
}
|
|
271
287
|
|
|
272
|
-
|
|
288
|
+
|
|
273
289
|
const { data: current } = await ctx.db
|
|
274
290
|
.from('apps')
|
|
275
291
|
.select('*')
|
|
@@ -280,7 +296,7 @@ export const update = createHandler(async (ctx, body) => {
|
|
|
280
296
|
throw new Error('App not found')
|
|
281
297
|
}
|
|
282
298
|
|
|
283
|
-
|
|
299
|
+
|
|
284
300
|
const fieldValidation = await permissions.validateUpdatePermissions(
|
|
285
301
|
ctx,
|
|
286
302
|
updates,
|
|
@@ -308,23 +324,21 @@ export const update = createHandler(async (ctx, body) => {
|
|
|
308
324
|
|
|
309
325
|
return data
|
|
310
326
|
})
|
|
311
|
-
//
|
|
312
|
-
|
|
313
|
-
//
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
* @tags apps, remove, crud, audit
|
|
327
|
-
*/
|
|
327
|
+
// CIL[END chunk_id="apps_update_1783969696"]
|
|
328
|
+
// CIL[BEGIN chunk_id="apps_remove_1783969696" type="function" identity="remove" parent="none"]
|
|
329
|
+
// CIL[DOC-MACRO purpose="Soft delete app by deactivating"]
|
|
330
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Deactivate app record with audit logging"]
|
|
331
|
+
// CIL[DOC-CONTEXT module="apps" layer="backend_functions" related_files="[]"]
|
|
332
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="deactivated_app" errors="not_found,auth_errors" side_effects="db_write,audit_log"]
|
|
333
|
+
// CIL[DOC-MICRO logic_summary="Set is_active=false instead of hard delete, log removal" notable_decisions="[]"]
|
|
334
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.96" flags="none"]
|
|
335
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
336
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
337
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
338
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
339
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
340
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
341
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
328
342
|
export const remove = createHandler(async (ctx, body) => {
|
|
329
343
|
const id = body?.id || ctx.query?.id
|
|
330
344
|
|
|
@@ -336,7 +350,7 @@ export const remove = createHandler(async (ctx, body) => {
|
|
|
336
350
|
throw new Error('User context (person and account) required')
|
|
337
351
|
}
|
|
338
352
|
|
|
339
|
-
|
|
353
|
+
|
|
340
354
|
const { data: current } = await ctx.db
|
|
341
355
|
.from('apps')
|
|
342
356
|
.select('*')
|
|
@@ -363,23 +377,21 @@ export const remove = createHandler(async (ctx, body) => {
|
|
|
363
377
|
|
|
364
378
|
return data
|
|
365
379
|
})
|
|
366
|
-
//
|
|
367
|
-
|
|
368
|
-
//
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
* @tags apps, availability, rpc, check
|
|
382
|
-
*/
|
|
380
|
+
// CIL[END chunk_id="apps_remove_1783969696"]
|
|
381
|
+
// CIL[BEGIN chunk_id="apps_checkavailability_1783969696" type="function" identity="checkAvailability" parent="none"]
|
|
382
|
+
// CIL[DOC-MACRO purpose="Check if app slug is available"]
|
|
383
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Validate app slug uniqueness for account"]
|
|
384
|
+
// CIL[DOC-CONTEXT module="apps" layer="backend_functions" related_files="[]"]
|
|
385
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="availability_boolean" errors="validation_errors,db_errors" side_effects="none"]
|
|
386
|
+
// CIL[DOC-MICRO logic_summary="Call stored procedure to check slug availability in account" notable_decisions="[]"]
|
|
387
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="rpc_behavior_not_mapped"]
|
|
388
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
389
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
390
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
391
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
392
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
393
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
394
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
383
395
|
export const checkAvailability = createHandler(async (ctx, body) => {
|
|
384
396
|
const { slug } = ctx.query || {}
|
|
385
397
|
|
|
@@ -401,23 +413,21 @@ export const checkAvailability = createHandler(async (ctx, body) => {
|
|
|
401
413
|
|
|
402
414
|
return { available: data }
|
|
403
415
|
})
|
|
404
|
-
//
|
|
405
|
-
|
|
406
|
-
//
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
* @tags apps, version, update, rpc, audit
|
|
420
|
-
*/
|
|
416
|
+
// CIL[END chunk_id="apps_checkavailability_1783969696"]
|
|
417
|
+
// CIL[BEGIN chunk_id="apps_updateversion_1783969696" type="function" identity="updateVersion" parent="none"]
|
|
418
|
+
// CIL[DOC-MACRO purpose="Update app version number"]
|
|
419
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Change app version with audit logging"]
|
|
420
|
+
// CIL[DOC-CONTEXT module="apps" layer="backend_functions" related_files="[]"]
|
|
421
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="success_status" errors="validation_errors,db_errors" side_effects="db_write,audit_log"]
|
|
422
|
+
// CIL[DOC-MICRO logic_summary="Call stored procedure to update version, log change" notable_decisions="[]"]
|
|
423
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="rpc_behavior_not_mapped"]
|
|
424
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
425
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
426
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
427
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
428
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
429
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
430
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
421
431
|
export const updateVersion = createHandler(async (ctx, body) => {
|
|
422
432
|
const { id, version } = body
|
|
423
433
|
|
|
@@ -437,25 +447,21 @@ export const updateVersion = createHandler(async (ctx, body) => {
|
|
|
437
447
|
|
|
438
448
|
return { success: true }
|
|
439
449
|
})
|
|
440
|
-
//
|
|
441
|
-
|
|
442
|
-
//
|
|
443
|
-
|
|
444
|
-
//
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
* @depended-by [Netlify function routing]
|
|
456
|
-
* @side-effects [Delegates to appropriate handler]
|
|
457
|
-
* @tags apps, router, crud, netlify-function
|
|
458
|
-
*/
|
|
450
|
+
// CIL[END chunk_id="apps_updateversion_1783969696"]
|
|
451
|
+
// CIL[BEGIN chunk_id="apps_handler_1783969696" type="function" identity="handler" parent="none"]
|
|
452
|
+
// CIL[DOC-MACRO purpose="Route HTTP methods to app functions"]
|
|
453
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Dispatch requests to appropriate app operations"]
|
|
454
|
+
// CIL[DOC-CONTEXT module="apps" layer="backend_functions" related_files="[]"]
|
|
455
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="function_responses" errors="method_errors" side_effects="none"]
|
|
456
|
+
// CIL[DOC-MICRO logic_summary="Route based on HTTP method and query parameters to specific functions" notable_decisions="[]"]
|
|
457
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.97" flags="none"]
|
|
458
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
459
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
460
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
461
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
462
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
463
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
464
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
459
465
|
export const handler = createHandler(async (ctx, body) => {
|
|
460
466
|
const method = ctx.query?.method || 'GET'
|
|
461
467
|
|
|
@@ -486,4 +492,4 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
486
492
|
throw new Error(`Unsupported method: ${method}`)
|
|
487
493
|
}
|
|
488
494
|
})
|
|
489
|
-
//
|
|
495
|
+
// CIL[END chunk_id="apps_handler_1783969696"]
|