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.
Files changed (319) hide show
  1. package/.framework/cli/commands/agents.ts +35 -37
  2. package/.framework/cli/commands/auth.ts +35 -34
  3. package/.framework/cli/commands/create-app.ts +104 -40
  4. package/.framework/cli/commands/dev.ts +104 -69
  5. package/.framework/cli/commands/doctor.ts +179 -69
  6. package/.framework/cli/commands/generate.ts +83 -143
  7. package/.framework/cli/commands/init.ts +72 -34
  8. package/.framework/cli/commands/install-app.ts +260 -125
  9. package/.framework/cli/commands/items.ts +33 -44
  10. package/.framework/cli/commands/migrate.ts +122 -40
  11. package/.framework/cli/commands/migrations.ts +33 -40
  12. package/.framework/cli/commands/pipelines.ts +31 -39
  13. package/.framework/cli/commands/status.ts +47 -23
  14. package/.framework/cli/commands/system.ts +47 -37
  15. package/.framework/cli/commands/test.ts +112 -68
  16. package/.framework/cli/commands/validate-app.ts +215 -121
  17. package/.framework/cli/context.ts +112 -130
  18. package/.framework/cli/env-loader.ts +47 -18
  19. package/.framework/cli/index.ts +81 -42
  20. package/.framework/docs/runtime-types.md +1024 -0
  21. package/.framework/functions/_shared/agent-runner.ts +1296 -961
  22. package/.framework/functions/_shared/app-manifest.ts +82 -68
  23. package/.framework/functions/_shared/audit.ts +135 -83
  24. package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
  25. package/.framework/functions/_shared/db.ts +80 -126
  26. package/.framework/functions/_shared/hash-api-key.ts +63 -0
  27. package/.framework/functions/_shared/index.ts +224 -335
  28. package/.framework/functions/_shared/kb.ts +319 -0
  29. package/.framework/functions/_shared/llm.ts +92 -0
  30. package/.framework/functions/_shared/logging.ts +288 -0
  31. package/.framework/functions/_shared/middleware.ts +329 -365
  32. package/.framework/functions/_shared/outcomes.ts +36 -0
  33. package/.framework/functions/_shared/permissions.ts +359 -643
  34. package/.framework/functions/_shared/pipeline-runner.ts +243 -316
  35. package/.framework/functions/_shared/principal.ts +376 -468
  36. package/.framework/functions/_shared/resolve-credentials.ts +102 -0
  37. package/.framework/functions/_shared/resolve-ids.ts +188 -16
  38. package/.framework/functions/_shared/retry-deliveries.ts +104 -0
  39. package/.framework/functions/_shared/schema-utils.ts +611 -373
  40. package/.framework/functions/_shared/testing.ts +207 -137
  41. package/.framework/functions/_shared/tracing.ts +276 -0
  42. package/.framework/functions/_shared/trigger-engine.ts +159 -211
  43. package/.framework/functions/_shared/webhook-registration.ts +95 -81
  44. package/.framework/functions/_shared/webhook-registry.ts +153 -75
  45. package/.framework/functions/account-nodes.ts +31 -53
  46. package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
  47. package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
  48. package/.framework/functions/adapters/openai-outbound.ts +40 -0
  49. package/.framework/functions/admin-data.ts +685 -537
  50. package/.framework/functions/admin-funnel.ts +31 -20
  51. package/.framework/functions/admin-install-funnel.ts +47 -28
  52. package/.framework/functions/admin-signals.ts +47 -29
  53. package/.framework/functions/ai-agents.ts +122 -147
  54. package/.framework/functions/ai-interactions.ts +180 -90
  55. package/.framework/functions/api-keys.ts +250 -192
  56. package/.framework/functions/apps.ts +203 -197
  57. package/.framework/functions/auth.ts +98 -91
  58. package/.framework/functions/cil-agent-ingest.ts +773 -0
  59. package/.framework/functions/cil-agent.ts +592 -0
  60. package/.framework/functions/cil-callmap.ts +1227 -0
  61. package/.framework/functions/cil-config.ts +583 -0
  62. package/.framework/functions/cil-context.ts +445 -0
  63. package/.framework/functions/cil-doc.ts +1752 -0
  64. package/.framework/functions/cil-embeddings.ts +1202 -0
  65. package/.framework/functions/cil-graph.ts +585 -0
  66. package/.framework/functions/cil-ingest.ts +2416 -0
  67. package/.framework/functions/cil-pipeline.ts +318 -0
  68. package/.framework/functions/cil-project.ts +499 -0
  69. package/.framework/functions/cil-validate.ts +469 -0
  70. package/.framework/functions/debug-auth.ts +73 -53
  71. package/.framework/functions/deliveries.ts +117 -0
  72. package/.framework/functions/embeddings.ts +528 -516
  73. package/.framework/functions/eval-harness.ts +158 -106
  74. package/.framework/functions/integration-outbound.ts +311 -0
  75. package/.framework/functions/integration-routes.ts +240 -466
  76. package/.framework/functions/integrations.ts +132 -140
  77. package/.framework/functions/invites.ts +401 -201
  78. package/.framework/functions/item-progress.ts +113 -53
  79. package/.framework/functions/kb.ts +28 -0
  80. package/.framework/functions/logs.ts +239 -222
  81. package/.framework/functions/observability.ts +308 -259
  82. package/.framework/functions/pipeline-executions.ts +179 -235
  83. package/.framework/functions/pipelines.ts +163 -205
  84. package/.framework/functions/prompt-configs.ts +109 -156
  85. package/.framework/functions/roles.ts +97 -147
  86. package/.framework/functions/system-cron.ts +132 -218
  87. package/.framework/functions/system.ts +112 -52
  88. package/.framework/functions/tests.ts +32 -28
  89. package/.framework/functions/timers.ts +162 -210
  90. package/.framework/functions/triggers.ts +282 -346
  91. package/.framework/functions/types.ts +283 -400
  92. package/.framework/migrations/001_core_schema.sql +630 -0
  93. package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
  94. package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
  95. package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
  96. package/.framework/migrations/005_core_observability.sql +598 -0
  97. package/.framework/migrations/006_security_hardening_rls.sql +97 -0
  98. package/.framework/migrations/007_kb_article_list.sql +237 -0
  99. package/.framework/migrations/008_items_target.sql +8 -0
  100. package/.framework/migrations/009_roles_slug_unique.sql +11 -0
  101. package/.framework/public/spine.config.json +91 -0
  102. package/.framework/scripts/app-install-cli.ts +112 -98
  103. package/.framework/src/App.tsx +67 -20
  104. package/.framework/src/apps/admin/index.tsx +97 -27
  105. package/.framework/src/components/AppWrapper.tsx +50 -11
  106. package/.framework/src/components/CustomAppLoader.tsx +131 -22
  107. package/.framework/src/components/admin/AdminListPage.tsx +75 -8
  108. package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
  109. package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
  110. package/.framework/src/components/admin/PageInstructions.tsx +49 -0
  111. package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
  112. package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
  113. package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
  114. package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
  115. package/.framework/src/components/app-sidebar.tsx +50 -3
  116. package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
  117. package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
  118. package/.framework/src/components/kb/KBArticleList.tsx +557 -0
  119. package/.framework/src/components/layout/AppShell.tsx +54 -16
  120. package/.framework/src/components/layout/Header.tsx +50 -38
  121. package/.framework/src/components/layout/Layout.tsx +48 -32
  122. package/.framework/src/components/layout/Sidebar.tsx +167 -16
  123. package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
  124. package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
  125. package/.framework/src/components/runtime/DataFilters.tsx +78 -1
  126. package/.framework/src/components/runtime/DataHeader.tsx +32 -29
  127. package/.framework/src/components/runtime/DataListPage.tsx +161 -2
  128. package/.framework/src/components/runtime/DataStats.tsx +48 -1
  129. package/.framework/src/components/runtime/DataTable.tsx +153 -1
  130. package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
  131. package/.framework/src/components/runtime/index.ts +16 -9
  132. package/.framework/src/components/search-form.tsx +33 -1
  133. package/.framework/src/components/shared/AgentView.tsx +48 -51
  134. package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
  135. package/.framework/src/components/shared/InviteManager.tsx +113 -52
  136. package/.framework/src/components/shared/MemberList.tsx +182 -0
  137. package/.framework/src/components/shared/SchemaFields.tsx +96 -78
  138. package/.framework/src/components/ui/DataTable.tsx +86 -56
  139. package/.framework/src/components/ui/Form.tsx +188 -109
  140. package/.framework/src/components/ui/ItemCard.tsx +86 -58
  141. package/.framework/src/components/ui/ItemListView.tsx +88 -61
  142. package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
  143. package/.framework/src/components/ui/Modal.tsx +81 -4
  144. package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
  145. package/.framework/src/components/ui/accordion.tsx +97 -5
  146. package/.framework/src/components/ui/alert-dialog.tsx +225 -13
  147. package/.framework/src/components/ui/alert.tsx +113 -6
  148. package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
  149. package/.framework/src/components/ui/avatar.tsx +129 -7
  150. package/.framework/src/components/ui/badge.tsx +65 -3
  151. package/.framework/src/components/ui/breadcrumb.tsx +145 -8
  152. package/.framework/src/components/ui/button-group.tsx +81 -4
  153. package/.framework/src/components/ui/button.tsx +49 -2
  154. package/.framework/src/components/ui/calendar.tsx +65 -3
  155. package/.framework/src/components/ui/card.tsx +145 -8
  156. package/.framework/src/components/ui/carousel.tsx +129 -7
  157. package/.framework/src/components/ui/chart.tsx +161 -10
  158. package/.framework/src/components/ui/checkbox.tsx +49 -2
  159. package/.framework/src/components/ui/collapsible.tsx +81 -5
  160. package/.framework/src/components/ui/combobox.tsx +305 -20
  161. package/.framework/src/components/ui/command.tsx +177 -11
  162. package/.framework/src/components/ui/context-menu.tsx +273 -17
  163. package/.framework/src/components/ui/dialog.tsx +209 -27
  164. package/.framework/src/components/ui/direction.tsx +64 -4
  165. package/.framework/src/components/ui/drawer.tsx +193 -12
  166. package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
  167. package/.framework/src/components/ui/empty.tsx +145 -9
  168. package/.framework/src/components/ui/field.tsx +209 -14
  169. package/.framework/src/components/ui/hover-card.tsx +81 -4
  170. package/.framework/src/components/ui/input-group.tsx +162 -10
  171. package/.framework/src/components/ui/input-otp.tsx +98 -5
  172. package/.framework/src/components/ui/input.tsx +49 -2
  173. package/.framework/src/components/ui/item.tsx +225 -13
  174. package/.framework/src/components/ui/kbd.tsx +65 -3
  175. package/.framework/src/components/ui/label.tsx +49 -2
  176. package/.framework/src/components/ui/menubar.tsx +289 -17
  177. package/.framework/src/components/ui/native-select.tsx +97 -5
  178. package/.framework/src/components/ui/navigation-menu.tsx +177 -10
  179. package/.framework/src/components/ui/pagination.tsx +161 -9
  180. package/.framework/src/components/ui/popover.tsx +145 -8
  181. package/.framework/src/components/ui/progress.tsx +49 -2
  182. package/.framework/src/components/ui/radio-group.tsx +65 -3
  183. package/.framework/src/components/ui/resizable.tsx +82 -4
  184. package/.framework/src/components/ui/scroll-area.tsx +65 -3
  185. package/.framework/src/components/ui/select.tsx +193 -11
  186. package/.framework/src/components/ui/separator.tsx +49 -2
  187. package/.framework/src/components/ui/sheet.tsx +193 -11
  188. package/.framework/src/components/ui/sidebar.tsx +481 -38
  189. package/.framework/src/components/ui/skeleton.tsx +49 -2
  190. package/.framework/src/components/ui/slider.tsx +49 -2
  191. package/.framework/src/components/ui/sonner.tsx +49 -2
  192. package/.framework/src/components/ui/spinner.tsx +49 -2
  193. package/.framework/src/components/ui/switch.tsx +49 -2
  194. package/.framework/src/components/ui/table-primitives.tsx +160 -33
  195. package/.framework/src/components/ui/table.tsx +161 -9
  196. package/.framework/src/components/ui/tabs.tsx +113 -6
  197. package/.framework/src/components/ui/textarea.tsx +49 -2
  198. package/.framework/src/components/ui/toggle-group.tsx +81 -4
  199. package/.framework/src/components/ui/toggle.tsx +65 -3
  200. package/.framework/src/components/ui/tooltip.tsx +97 -5
  201. package/.framework/src/contexts/AppContext.tsx +129 -45
  202. package/.framework/src/contexts/AuthContext.tsx +187 -144
  203. package/.framework/src/hooks/use-mobile.ts +48 -2
  204. package/.framework/src/hooks/useApi.ts +208 -159
  205. package/.framework/src/hooks/useAppPath.ts +32 -23
  206. package/.framework/src/hooks/useApps.ts +51 -20
  207. package/.framework/src/hooks/useEntityList.ts +32 -78
  208. package/.framework/src/hooks/useEntityRecord.ts +35 -96
  209. package/.framework/src/hooks/useForm.ts +32 -92
  210. package/.framework/src/hooks/useListSchema.ts +49 -78
  211. package/.framework/src/hooks/useSchemaRecord.ts +114 -105
  212. package/.framework/src/lib/api.ts +195 -116
  213. package/.framework/src/lib/supabase.ts +98 -64
  214. package/.framework/src/lib/utils.ts +287 -151
  215. package/.framework/src/main.tsx +49 -3
  216. package/.framework/src/pages/DashboardPage.tsx +52 -29
  217. package/.framework/src/pages/NotFoundPage.tsx +32 -10
  218. package/.framework/src/pages/SetupPage.tsx +32 -12
  219. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
  220. package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
  221. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
  222. package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
  223. package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
  224. package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
  225. package/.framework/src/pages/admin/AppsPage.tsx +49 -2
  226. package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
  227. package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
  228. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
  229. package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
  230. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
  231. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
  232. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
  233. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
  234. package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
  235. package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
  236. package/.framework/src/pages/admin/LogsPage.tsx +422 -75
  237. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
  238. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
  239. package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
  240. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
  241. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
  242. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
  243. package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
  244. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
  245. package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
  246. package/.framework/src/pages/admin/RolesPage.tsx +171 -18
  247. package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
  248. package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
  249. package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
  250. package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
  251. package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
  252. package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
  253. package/.framework/src/pages/admin/TimersPage.tsx +48 -20
  254. package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
  255. package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
  256. package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
  257. package/.framework/src/pages/admin/TypesPage.tsx +48 -20
  258. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
  259. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
  260. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
  261. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
  262. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
  263. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
  264. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
  265. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
  266. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
  267. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  268. package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
  269. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
  270. package/.framework/src/pages/auth/LoginPage.tsx +50 -23
  271. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
  272. package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
  273. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
  274. package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
  275. package/.framework/src/types/auth.ts +128 -71
  276. package/.framework/src/types/types.ts +373 -157
  277. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
  278. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
  279. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
  280. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
  281. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
  282. package/docs/README.md +9 -130
  283. package/netlify.toml +5 -2
  284. package/package.json +13 -25
  285. package/scripts/kb-ingest-docs.ts +203 -0
  286. package/spine.config.json +65 -4
  287. package/.framework/migrations/001_schema.sql +0 -425
  288. package/.framework/migrations/002_rls_and_functions.sql +0 -763
  289. package/.framework/migrations/004_enhancements.sql +0 -43
  290. package/.framework/migrations/005_auth_user_trigger.sql +0 -105
  291. package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
  292. package/.framework/migrations/016_invites.sql +0 -27
  293. package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
  294. package/.framework/migrations/018_apps_required_roles.sql +0 -17
  295. package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
  296. package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
  297. package/.framework/migrations/021_app_domains.sql +0 -112
  298. package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
  299. package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
  300. package/.framework/migrations/024_messages_account_id.sql +0 -9
  301. package/.framework/migrations/025_retype_threads_messages.sql +0 -240
  302. package/.framework/migrations/026_fix_rls_policies.sql +0 -47
  303. package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
  304. package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
  305. package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
  306. package/.framework/migrations/030_messages_updated_by.sql +0 -6
  307. package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
  308. package/docs/APPS.md +0 -232
  309. package/docs/ARCHITECTURE.md +0 -246
  310. package/docs/INSTALL.md +0 -155
  311. package/docs/design-schema-spec.md +0 -1837
  312. package/docs/dev-guides/01-create-an-app.md +0 -183
  313. package/docs/dev-guides/02-create-a-function.md +0 -178
  314. package/docs/dev-guides/03-create-a-component.md +0 -178
  315. package/docs/dev-guides/04-webhook-handlers.md +0 -129
  316. package/docs/dev-guides/05-testing.md +0 -168
  317. package/docs/dev-guides/README.md +0 -40
  318. package/docs/npm-packages-plan.md +0 -288
  319. 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
- // ─── CHUNK_START: ACCOUNT_NODES_HANDLER ──────────────────────────────────────────────
37
- /**
38
- * @chunk-id ACCOUNT_NODES_HANDLER_1_0_0
39
- * @version 1.0.0
40
- * @hash 0778bcec10cfbe1a79177e4352706270194cf80cd0baa39c6ed615c73c7c7695
41
- * @macro Account Hierarchy Handler
42
- * @micro Returns account node with ancestors, children, and descendants
43
- * @inputs ctx: CoreContext — Request context with principal and database
44
- * @inputs body: any — Request body (unused for GET)
45
- * @outputs {node, ancestors, children, descendants} — Complete hierarchy data
46
- * @depends-on [createHandler, get_account_ancestors, get_account_descendants]
47
- * @depended-by [Netlify function routing]
48
- * @side-effects [DB queries, RPC calls]
49
- * @tags account, hierarchy, netlify-function, api
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
- // ─── CHUNK_END: ACCOUNT_NODES_HANDLER ────────────────────────────────────────────────
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"]