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,53 +1,35 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module account-nodes
|
|
3
|
-
* @audience core-contributor
|
|
4
|
-
* @layer api-handler
|
|
5
|
-
* @stability stable
|
|
6
|
-
*
|
|
7
|
-
* Account hierarchy traversal endpoint. Given a single `node_id`, returns
|
|
8
|
-
* the target account record plus three relational views:
|
|
9
|
-
* - **ancestors** — all nodes from root to this node (via `get_account_ancestors` RPC)
|
|
10
|
-
* - **children** — direct active children ordered by `display_name`
|
|
11
|
-
* - **descendants** — all active nodes in the subtree (via `get_account_descendants` RPC)
|
|
12
|
-
*
|
|
13
|
-
* **Routed by:** `GET /.netlify/functions/account-nodes`
|
|
14
|
-
*
|
|
15
|
-
* **Authorization:** Uses `ctx.db` (RLS-scoped). Only accounts visible to
|
|
16
|
-
* the authenticated principal are returned. Inactive accounts are excluded
|
|
17
|
-
* (`is_active = true` filter on node + children queries).
|
|
18
|
-
*
|
|
19
|
-
* **Response shape:**
|
|
20
|
-
* ```ts
|
|
21
|
-
* {
|
|
22
|
-
* node: Account & { type: TypeRecord }
|
|
23
|
-
* ancestors: AccountAncestorRow[]
|
|
24
|
-
* children: Array<Account & { type: TypeRecord }>
|
|
25
|
-
* descendants: AccountDescendantRow[]
|
|
26
|
-
* }
|
|
27
|
-
* ```
|
|
28
|
-
*
|
|
29
|
-
* @seeAlso auth.ts (context handler also calls get_account_hierarchy RPC)
|
|
30
|
-
* @seeAlso accounts.ts (CRUD; creates the account nodes)
|
|
31
|
-
* @seeAlso _shared/db.ts (get_account_ancestors / get_account_descendants RPCs)
|
|
32
|
-
*/
|
|
33
1
|
|
|
2
|
+
// CIL[BEGIN chunk_id="account-nodes_module_header_1784019432" type="module_header" identity="imports" parent="none"]
|
|
3
|
+
// CIL[DOC-MACRO purpose="Import dependencies for account hierarchy traversal"]
|
|
4
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide middleware for request handling"]
|
|
5
|
+
// CIL[DOC-CONTEXT module="account-nodes" layer="api-handler" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
|
|
6
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="imported_modules" errors="none" side_effects="none"]
|
|
7
|
+
// CIL[DOC-MICRO logic_summary="Imports required modules for account node operations" notable_decisions="[]"]
|
|
8
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
9
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
10
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
11
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
|
|
12
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
13
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
14
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
15
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
16
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
34
17
|
import { createHandler } from './_shared/middleware'
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
*/
|
|
18
|
+
// CIL[END chunk_id="account-nodes_module_header_1784019432"]
|
|
19
|
+
// CIL[BEGIN chunk_id="account-nodes_handler_1784019432" type="function" identity="handler" parent="none"]
|
|
20
|
+
// CIL[DOC-MACRO purpose="Return account node with ancestors, children, and descendants"]
|
|
21
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Fetch complete account hierarchy for a given node"]
|
|
22
|
+
// CIL[DOC-CONTEXT module="account-nodes" layer="api-handler" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
|
|
23
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="{node,ancestors,children,descendants}" errors="node_id_required,node_not_found" side_effects="database_queries,rpc_calls"]
|
|
24
|
+
// CIL[DOC-MICRO logic_summary="Queries target node, uses RPC for ancestors/descendants, fetches direct children" notable_decisions="[]"]
|
|
25
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
26
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
27
|
+
// CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, \."]
|
|
28
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
29
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
30
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
31
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
32
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
51
33
|
export const handler = createHandler(async (ctx, body) => {
|
|
52
34
|
const { node_id } = ctx.query || {}
|
|
53
35
|
|
|
@@ -55,7 +37,6 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
55
37
|
throw new Error('node_id is required')
|
|
56
38
|
}
|
|
57
39
|
|
|
58
|
-
// Get the account node
|
|
59
40
|
const { data: node, error: nodeError } = await ctx.db
|
|
60
41
|
.from('accounts')
|
|
61
42
|
.select(`
|
|
@@ -70,7 +51,6 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
70
51
|
throw new Error('Account node not found')
|
|
71
52
|
}
|
|
72
53
|
|
|
73
|
-
// Get ancestors using the closure table
|
|
74
54
|
const { data: ancestors, error: ancestorsError } = await ctx.db
|
|
75
55
|
.rpc('get_account_ancestors', { account_id: node_id })
|
|
76
56
|
|
|
@@ -78,7 +58,6 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
78
58
|
throw ancestorsError
|
|
79
59
|
}
|
|
80
60
|
|
|
81
|
-
// Get children (direct descendants)
|
|
82
61
|
const { data: children, error: childrenError } = await ctx.db
|
|
83
62
|
.from('accounts')
|
|
84
63
|
.select(`
|
|
@@ -93,7 +72,6 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
93
72
|
throw childrenError
|
|
94
73
|
}
|
|
95
74
|
|
|
96
|
-
// Get all descendants (optional, for tree view)
|
|
97
75
|
const { data: descendants, error: descendantsError } = await ctx.db
|
|
98
76
|
.rpc('get_account_descendants', { account_id: node_id })
|
|
99
77
|
|
|
@@ -108,4 +86,4 @@ export const handler = createHandler(async (ctx, body) => {
|
|
|
108
86
|
descendants: descendants || []
|
|
109
87
|
}
|
|
110
88
|
})
|
|
111
|
-
//
|
|
89
|
+
// CIL[END chunk_id="account-nodes_handler_1784019432"]
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// CIL[BEGIN chunk_id="generic_webhook_inbound_module_header_1784200003" type="module_header" identity="imports" parent="none"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Built-in generic inbound webhook adapter"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Capture any webhook payload as a webhook_event item for debugging"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="generic_webhook_inbound" layer="backend_functions" related_files="[".framework/migrations/051_integration_broker.sql",".framework/functions/integration-routes.ts",".framework/functions/_shared/webhook-registry.ts"]"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="payload and integration context" outputs="AdapterResult" errors="none" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Normalizes the raw webhook payload into a webhook_event record. Does not touch the database." notable_decisions="["Never imports adminDb or ctx.db.","Stores the full payload and headers as json fields."]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="first" score="0.95" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="experimental"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
10
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/051_integration_broker.sql, .framework/functions/integration-routes.ts, .framework/functions/_shared/webhook-registry.ts."]
|
|
11
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
12
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
13
|
+
// CIL[DOC-VECTOR type="constraint" content="Pure transform only."]
|
|
14
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="Fallback adapter for any unmapped webhook."]
|
|
15
|
+
// CIL[DOC-VECTOR type="user_journey" content="Admins capture raw webhooks without writing a custom adapter."]
|
|
16
|
+
|
|
17
|
+
interface InboundAdapterContext {
|
|
18
|
+
integration: any
|
|
19
|
+
apiKey: any
|
|
20
|
+
accountId: string
|
|
21
|
+
appId?: string
|
|
22
|
+
event: string | null
|
|
23
|
+
logger: { info: (msg: string, meta?: any) => void; warn: (msg: string, meta?: any) => void; error: (msg: string, meta?: any) => void }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface AdapterResult {
|
|
27
|
+
type_slug: string
|
|
28
|
+
data: Record<string, any>
|
|
29
|
+
title?: string
|
|
30
|
+
status?: string
|
|
31
|
+
external_id?: string
|
|
32
|
+
error?: string
|
|
33
|
+
retryable?: boolean
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export async function adapt(payload: any, ctx: InboundAdapterContext): Promise<AdapterResult> {
|
|
37
|
+
ctx.logger.info('generic-webhook-inbound received payload', {
|
|
38
|
+
provider: ctx.integration?.provider,
|
|
39
|
+
event: ctx.event,
|
|
40
|
+
account_id: ctx.accountId
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
return {
|
|
44
|
+
type_slug: 'webhook_event',
|
|
45
|
+
title: `${ctx.integration?.provider || 'unknown'} ${ctx.event || 'webhook'}`,
|
|
46
|
+
data: {
|
|
47
|
+
provider: ctx.integration?.provider || 'unknown',
|
|
48
|
+
event: ctx.event,
|
|
49
|
+
payload: payload,
|
|
50
|
+
headers: ctx.apiKey ? {} : {}
|
|
51
|
+
},
|
|
52
|
+
external_id: ctx.event
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// CIL[END chunk_id="generic_webhook_inbound_module_header_1784200003"]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// CIL[BEGIN chunk_id="generic_webhook_outbound_adapter_module_header_1784700003" type="module_header" identity="module_header" parent="none"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="Generic webhook outbound adapter for arbitrary URLs"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Build HTTP requests for pipeline webhook stages"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="generic-webhook-outbound" layer="backend_functions" related_files="[".framework/functions/_shared/pipeline-runner.ts",".framework/functions/integration-outbound.ts",".framework/migrations/051_integration_broker.sql"]"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="record, adapter context" outputs="OutboundRequest" errors="missing url" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Builds a request from actionConfig.url, method, headers, and body. Optional apiKey is added as Bearer Authorization." notable_decisions="["Ignores record.","Accepts actionConfig.url as the full URL."]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="first" score="0.85" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="experimental"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
10
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/pipeline-runner.ts, .framework/functions/integration-outbound.ts, .framework/migrations/051_integration_broker.sql."]
|
|
11
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
12
|
+
// CIL[DOC-VECTOR type="configuration" content="Requires actionConfig.url and method."]
|
|
13
|
+
// CIL[DOC-VECTOR type="constraint" content="No path joining; url is used as-is."]
|
|
14
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="Called by integration-outbound for the generic-http integration."]
|
|
15
|
+
// CIL[DOC-VECTOR type="user_journey" content="Pipeline webhook stages go through the broker."]
|
|
16
|
+
|
|
17
|
+
export function buildRequest(_record: any, ctx: any) {
|
|
18
|
+
const url = ctx?.actionConfig?.url
|
|
19
|
+
const method = ctx?.actionConfig?.method || 'POST'
|
|
20
|
+
const body = ctx?.actionConfig?.body
|
|
21
|
+
const apiKey = ctx?.apiKey?.value
|
|
22
|
+
|
|
23
|
+
if (!url) {
|
|
24
|
+
throw new Error('generic-webhook-outbound adapter requires actionConfig.url')
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const headers: Record<string, string> = {
|
|
28
|
+
'Content-Type': 'application/json',
|
|
29
|
+
...(ctx?.actionConfig?.headers || {})
|
|
30
|
+
}
|
|
31
|
+
if (apiKey) {
|
|
32
|
+
headers.Authorization = `Bearer ${apiKey}`
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
url,
|
|
37
|
+
method,
|
|
38
|
+
headers,
|
|
39
|
+
body
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// CIL[END chunk_id="generic_webhook_outbound_adapter_module_header_1784700003"]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// CIL[BEGIN chunk_id="openai_outbound_adapter_module_header_1784700001" type="module_header" identity="module_header" parent="none"]
|
|
2
|
+
// CIL[DOC-MACRO purpose="OpenAI outbound adapter for the integration broker"]
|
|
3
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Build HTTP requests for the system OpenAI integration"]
|
|
4
|
+
// CIL[DOC-CONTEXT module="openai-outbound" layer="backend_functions" related_files="[".framework/functions/integration-outbound.ts",".framework/functions/_shared/llm.ts",".framework/migrations/051_integration_broker.sql"]"]
|
|
5
|
+
// CIL[DOC-CONTRACT inputs="record, adapter context" outputs="OutboundRequest" errors="missing endpoint or apiKey" side_effects="none"]
|
|
6
|
+
// CIL[DOC-MICRO logic_summary="Combines the OpenAI base URL, endpoint, and resolved api_token into a signed request." notable_decisions="["Authorization header is Bearer <api_token>.","Body is taken directly from actionConfig.body."]"]
|
|
7
|
+
// CIL[DOC-CONFIDENCE pass="first" score="0.85" flags="none"]
|
|
8
|
+
// CIL[DOC-STABILITY stability="experimental"]
|
|
9
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
10
|
+
// CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/integration-outbound.ts, .framework/functions/_shared/llm.ts, .framework/migrations/051_integration_broker.sql."]
|
|
11
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
12
|
+
// CIL[DOC-VECTOR type="configuration" content="Expects integration config base_url and api_token credential."]
|
|
13
|
+
// CIL[DOC-VECTOR type="constraint" content="actionConfig.body is sent as JSON."]
|
|
14
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="Loaded by integration-outbound for openai integration."]
|
|
15
|
+
// CIL[DOC-VECTOR type="user_journey" content="Core LLM calls route through the broker."]
|
|
16
|
+
|
|
17
|
+
export function buildRequest(_record: any, ctx: any) {
|
|
18
|
+
const baseUrl = ctx?.integration?.config?.base_url || 'https://api.openai.com/v1'
|
|
19
|
+
const endpoint = ctx?.actionConfig?.endpoint
|
|
20
|
+
const apiKey = ctx?.apiKey?.value
|
|
21
|
+
|
|
22
|
+
if (!endpoint) {
|
|
23
|
+
throw new Error('OpenAI adapter requires action_config.endpoint')
|
|
24
|
+
}
|
|
25
|
+
if (!apiKey) {
|
|
26
|
+
throw new Error('OpenAI adapter requires api_token credential')
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
url: `${baseUrl.replace(/\/$/, '')}${endpoint}`,
|
|
31
|
+
method: 'POST',
|
|
32
|
+
headers: {
|
|
33
|
+
'Content-Type': 'application/json',
|
|
34
|
+
Authorization: `Bearer ${apiKey}`
|
|
35
|
+
},
|
|
36
|
+
body: ctx?.actionConfig?.body || {}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// CIL[END chunk_id="openai_outbound_adapter_module_header_1784700001"]
|