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,21 +1,37 @@
1
- /**
2
- * @module admin-funnel
3
- * @audience system-admin
4
- * @layer api-handler
5
- * @stability stable
6
- *
7
- * Admin API for funnel metrics and analytics
8
- */
9
1
 
2
+ // CIL[BEGIN chunk_id="admin-funnel_module_header_1784019432" type="module_header" identity="imports" parent="none"]
3
+ // CIL[DOC-MACRO purpose="Import dependencies for funnel metrics"]
4
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide middleware and admin database access"]
5
+ // CIL[DOC-CONTEXT module="admin-funnel" 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 funnel analytics" 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"]
10
17
  import { createHandler } from './_shared/middleware'
11
18
  import { adminDb } from './_shared/db'
12
-
13
- // ============================================
14
- // FUNNEL METRICS
15
- // ============================================
16
-
19
+ // CIL[END chunk_id="admin-funnel_module_header_1784019432"]
20
+ // CIL[BEGIN chunk_id="admin-funnel_metrics_1784019432" type="function" identity="metrics" parent="none"]
21
+ // CIL[DOC-MACRO purpose="Calculate funnel metrics and conversion rates"]
22
+ // CIL[DOC-RESPONSIBILITY responsibility="Aggregate funnel data across visitor journey stages"]
23
+ // CIL[DOC-CONTEXT module="admin-funnel" layer="api-handler" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
24
+ // CIL[DOC-CONTRACT inputs="none" outputs="funnel_metrics_object" errors="types_not_found" side_effects="database_queries,aggregation_calculations"]
25
+ // CIL[DOC-MICRO logic_summary="Queries signals, sessions, instances; calculates conversion rates and stage distribution" notable_decisions="[]"]
26
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="external_symbols_unknown"]
27
+ // CIL[DOC-STABILITY stability="stable"]
28
+ // 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, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/functions/_shared/principal.ts, \."]
29
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
30
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
31
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
32
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
33
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
17
34
  export const metrics = createHandler(async (ctx, body) => {
18
- // Get type IDs
19
35
  const { data: signalType } = await adminDb
20
36
  .from('item_type_registry')
21
37
  .select('id')
@@ -38,7 +54,6 @@ export const metrics = createHandler(async (ctx, body) => {
38
54
  throw new Error('Required types not found')
39
55
  }
40
56
 
41
- // Count by stage
42
57
  const { data: stageData } = await adminDb
43
58
  .from('items')
44
59
  .select('data->>stage, account_id')
@@ -55,7 +70,6 @@ export const metrics = createHandler(async (ctx, body) => {
55
70
 
56
71
  const totalStageSignals = Object.values(stageCounts).reduce((sum, count) => sum + count, 0)
57
72
 
58
- // Anonymous visitors (sessions without account)
59
73
  const { count: anonymousSessions } = await adminDb
60
74
  .from('items')
61
75
  .select('*', { count: 'exact', head: true })
@@ -63,7 +77,6 @@ export const metrics = createHandler(async (ctx, body) => {
63
77
  .is('data->lifecycle->>stitched_to_account_id', null)
64
78
  .gte('created_at', new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString())
65
79
 
66
- // Identified users (unique accounts with signals)
67
80
  const { data: accountData } = await adminDb
68
81
  .from('items')
69
82
  .select('account_id')
@@ -73,21 +86,18 @@ export const metrics = createHandler(async (ctx, body) => {
73
86
 
74
87
  const uniqueAccounts = new Set(accountData?.map(item => item.account_id)).size
75
88
 
76
- // Installed instances
77
89
  const { count: installedInstances } = await adminDb
78
90
  .from('items')
79
91
  .select('*', { count: 'exact', head: true })
80
92
  .eq('type_id', instanceType.id)
81
93
  .not('data->>claimed_by_person_id', 'is', null)
82
94
 
83
- // Stage distribution with percentages
84
95
  const stageDistribution = Object.entries(stageCounts).map(([stage, count]) => ({
85
96
  stage,
86
97
  count,
87
98
  percentage: totalStageSignals > 0 ? (count / totalStageSignals) * 100 : 0
88
99
  }))
89
100
 
90
- // Conversion rates (simplified)
91
101
  const anonymousToIdentified = anonymousSessions > 0 ? (uniqueAccounts / anonymousSessions) * 100 : 0
92
102
  const identifiedToInstalled = uniqueAccounts > 0 ? (installedInstances / uniqueAccounts) * 100 : 0
93
103
 
@@ -102,3 +112,4 @@ export const metrics = createHandler(async (ctx, body) => {
102
112
  stage_distribution: stageDistribution
103
113
  }
104
114
  })
115
+ // CIL[END chunk_id="admin-funnel_metrics_1784019432"]
@@ -1,21 +1,38 @@
1
- /**
2
- * @module admin-install-funnel
3
- * @audience system-admin
4
- * @layer api-handler
5
- * @stability stable
6
- *
7
- * Admin API for install funnel metrics and analytics
8
- */
9
1
 
2
+
3
+ // CIL[BEGIN chunk_id="admin-install-funnel_module_header_1784019432" type="module_header" identity="imports" parent="none"]
4
+ // CIL[DOC-MACRO purpose="Import dependencies for install funnel analytics"]
5
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide middleware and admin database access"]
6
+ // CIL[DOC-CONTEXT module="admin-install-funnel" layer="api-handler" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
7
+ // CIL[DOC-CONTRACT inputs="none" outputs="imported_modules" errors="none" side_effects="none"]
8
+ // CIL[DOC-MICRO logic_summary="Imports required modules for install funnel processing" notable_decisions="[]"]
9
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
10
+ // CIL[DOC-STABILITY stability="stable"]
11
+ // CIL[DOC-AUDIENCE audience="developer"]
12
+ // 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/src/components/layout/Sidebar.tsx, .framework/functions/_shared/schema-utils.ts, \."]
13
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
14
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
15
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
16
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
17
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
10
18
  import { createHandler } from './_shared/middleware'
11
19
  import { adminDb } from './_shared/db'
12
-
13
- // ============================================
14
- // INSTALL FUNNEL METRICS
15
- // ============================================
16
-
20
+ // CIL[END chunk_id="admin-install-funnel_module_header_1784019432"]
21
+ // CIL[BEGIN chunk_id="admin-install-funnel_metrics_1784019432" type="function" identity="metrics" parent="none"]
22
+ // CIL[DOC-MACRO purpose="Calculate install funnel metrics and trends"]
23
+ // CIL[DOC-RESPONSIBILITY responsibility="Aggregate install data with conversion rates and version analytics"]
24
+ // CIL[DOC-CONTEXT module="admin-install-funnel" layer="api-handler" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
25
+ // CIL[DOC-CONTRACT inputs="none" outputs="install_metrics_object" errors="funnel_signal_type_not_found" side_effects="database_queries,aggregation_calculations,trend_analysis"]
26
+ // CIL[DOC-MICRO logic_summary="Counts downloads/installs, calculates conversion rates, analyzes versions, tracks trends" notable_decisions="[]"]
27
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="external_symbols_unknown"]
28
+ // CIL[DOC-STABILITY stability="stable"]
29
+ // 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, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
30
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
31
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
32
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
33
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
34
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
17
35
  export const metrics = createHandler(async (ctx, body) => {
18
- // Get type IDs
19
36
  const { data: signalType } = await adminDb
20
37
  .from('item_type_registry')
21
38
  .select('id')
@@ -26,7 +43,6 @@ export const metrics = createHandler(async (ctx, body) => {
26
43
  throw new Error('funnel_signal type not found')
27
44
  }
28
45
 
29
- // Total downloads (signals with source='inst' and action_type='download')
30
46
  const { count: totalDownloads } = await adminDb
31
47
  .from('items')
32
48
  .select('*', { count: 'exact', head: true })
@@ -34,7 +50,6 @@ export const metrics = createHandler(async (ctx, body) => {
34
50
  .eq('data->>source', 'inst')
35
51
  .eq('data->>action_type', 'download')
36
52
 
37
- // Unique installers (unique serial numbers from install signals)
38
53
  const { data: installerData } = await adminDb
39
54
  .from('items')
40
55
  .select('data->>serial')
@@ -44,7 +59,6 @@ export const metrics = createHandler(async (ctx, body) => {
44
59
 
45
60
  const uniqueInstallers = new Set(installerData?.map(item => item.data?.serial)).size
46
61
 
47
- // Active instances (install signals with serial in last 7 days)
48
62
  const sevenDaysAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString()
49
63
  const { count: activeInstances } = await adminDb
50
64
  .from('items')
@@ -54,7 +68,6 @@ export const metrics = createHandler(async (ctx, body) => {
54
68
  .not('data->>serial', 'is', null)
55
69
  .gte('created_at', sevenDaysAgo)
56
70
 
57
- // Conversion funnel counts
58
71
  const { count: installations } = await adminDb
59
72
  .from('items')
60
73
  .select('*', { count: 'exact', head: true })
@@ -76,7 +89,6 @@ export const metrics = createHandler(async (ctx, body) => {
76
89
  .eq('data->>source', 'inst')
77
90
  .not('data->>claimed_by_person_id', 'is', null)
78
91
 
79
- // Recent installs with account info
80
92
  const { data: recentInstalls } = await adminDb
81
93
  .from('items')
82
94
  .select(`
@@ -111,7 +123,6 @@ export const metrics = createHandler(async (ctx, body) => {
111
123
  person_email: instance.people?.email
112
124
  }))
113
125
 
114
- // Version distribution
115
126
  const { data: versionData } = await adminDb
116
127
  .from('items')
117
128
  .select('data->>version')
@@ -133,7 +144,6 @@ export const metrics = createHandler(async (ctx, body) => {
133
144
  percentage: totalVersions > 0 ? (count / totalVersions) * 100 : 0
134
145
  }))
135
146
 
136
- // Install trends (last 30 days)
137
147
  const thirtyDaysAgo = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000)
138
148
  const installTrends = []
139
149
 
@@ -183,13 +193,22 @@ export const metrics = createHandler(async (ctx, body) => {
183
193
  top_versions: topVersions
184
194
  }
185
195
  })
186
-
187
- // ============================================
188
- // INSTALL FUNNEL EXPORT
189
- // ============================================
190
-
196
+ // CIL[END chunk_id="admin-install-funnel_metrics_1784019432"]
197
+ // CIL[BEGIN chunk_id="admin-install-funnel_exportdata_1784019432" type="function" identity="exportData" parent="none"]
198
+ // CIL[DOC-MACRO purpose="Export all install instances with full details"]
199
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide complete install data for analysis and reporting"]
200
+ // CIL[DOC-CONTEXT module="admin-install-funnel" layer="api-handler" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
201
+ // CIL[DOC-CONTRACT inputs="none" outputs="export_data_object" errors="funnel_signal_type_not_found" side_effects="database_query,data_export"]
202
+ // CIL[DOC-MICRO logic_summary="Queries all install instances with full details and metadata" notable_decisions="[]"]
203
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
204
+ // CIL[DOC-STABILITY stability="stable"]
205
+ // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/layout/Sidebar.tsx, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
206
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
207
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
208
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
209
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
210
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
191
211
  export const exportData = createHandler(async (ctx, body) => {
192
- // Get type IDs
193
212
  const { data: signalType } = await adminDb
194
213
  .from('item_type_registry')
195
214
  .select('id')
@@ -200,7 +219,6 @@ export const exportData = createHandler(async (ctx, body) => {
200
219
  throw new Error('funnel_signal type not found')
201
220
  }
202
221
 
203
- // Export all instances with full details
204
222
  const { data: instances } = await adminDb
205
223
  .from('items')
206
224
  .select(`
@@ -223,3 +241,4 @@ export const exportData = createHandler(async (ctx, body) => {
223
241
  total_count: instances?.length || 0
224
242
  }
225
243
  })
244
+ // CIL[END chunk_id="admin-install-funnel_exportdata_1784019432"]
@@ -1,25 +1,42 @@
1
- /**
2
- * @module admin-signals
3
- * @audience system-admin
4
- * @layer api-handler
5
- * @stability stable
6
- *
7
- * Admin API for signal analytics and audit functionality
8
- */
9
1
 
2
+
3
+ // CIL[BEGIN chunk_id="admin-signals_module_header_1784019432" type="module_header" identity="imports" parent="none"]
4
+ // CIL[DOC-MACRO purpose="Import dependencies for signal analytics"]
5
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide middleware and admin database access"]
6
+ // CIL[DOC-CONTEXT module="admin-signals" 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\",\"\\\"]"]
7
+ // CIL[DOC-CONTRACT inputs="none" outputs="imported_modules" errors="none" side_effects="none"]
8
+ // CIL[DOC-MICRO logic_summary="Imports required modules for signal processing" notable_decisions="[]"]
9
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
10
+ // CIL[DOC-STABILITY stability="stable"]
11
+ // CIL[DOC-AUDIENCE audience="developer"]
12
+ // 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, \."]
13
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
14
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
15
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
16
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
17
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
10
18
  import { createHandler } from './_shared/middleware'
11
19
  import { adminDb } from './_shared/db'
12
-
13
- // ============================================
14
- // SIGNAL METRICS
15
- // ============================================
16
-
20
+ // CIL[END chunk_id="admin-signals_module_header_1784019432"]
21
+ // CIL[BEGIN chunk_id="admin-signals_metrics_1784019432" type="function" identity="metrics" parent="none"]
22
+ // CIL[DOC-MACRO purpose="Calculate signal metrics and analytics"]
23
+ // CIL[DOC-RESPONSIBILITY responsibility="Aggregate signal data with conversion rates and trends"]
24
+ // CIL[DOC-CONTEXT module="admin-signals" layer="api-handler" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
25
+ // CIL[DOC-CONTRACT inputs="none" outputs="signal_metrics_object" errors="funnel_signal_type_not_found" side_effects="database_queries,aggregation_calculations"]
26
+ // CIL[DOC-MICRO logic_summary="Counts signals by time periods, calculates sources, formats recent signals, computes conversion rates" notable_decisions="[]"]
27
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="external_symbols_unknown"]
28
+ // CIL[DOC-STABILITY stability="stable"]
29
+ // 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, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/functions/_shared/principal.ts, \."]
30
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
31
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
32
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
33
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
34
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
17
35
  export const metrics = createHandler(async (ctx, body) => {
18
36
  const now = new Date()
19
37
  const today = now.toISOString().split('T')[0]
20
38
  const weekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000).toISOString()
21
39
 
22
- // Get funnel_signal type ID
23
40
  const { data: signalType } = await adminDb
24
41
  .from('item_type_registry')
25
42
  .select('id')
@@ -30,27 +47,23 @@ export const metrics = createHandler(async (ctx, body) => {
30
47
  throw new Error('funnel_signal type not found')
31
48
  }
32
49
 
33
- // Total signals
34
50
  const { count: totalSignals } = await adminDb
35
51
  .from('items')
36
52
  .select('*', { count: 'exact', head: true })
37
53
  .eq('type_id', signalType.id)
38
54
 
39
- // Signals today
40
55
  const { count: signalsToday } = await adminDb
41
56
  .from('items')
42
57
  .select('*', { count: 'exact', head: true })
43
58
  .eq('type_id', signalType.id)
44
59
  .gte('created_at', today)
45
60
 
46
- // Signals this week
47
61
  const { count: signalsThisWeek } = await adminDb
48
62
  .from('items')
49
63
  .select('*', { count: 'exact', head: true })
50
64
  .eq('type_id', signalType.id)
51
65
  .gte('created_at', weekAgo)
52
66
 
53
- // Top sources
54
67
  const { data: sourceData } = await adminDb
55
68
  .from('items')
56
69
  .select('data->>source')
@@ -68,7 +81,6 @@ export const metrics = createHandler(async (ctx, body) => {
68
81
  .slice(0, 10)
69
82
  .map(([source, count]) => ({ source, count }))
70
83
 
71
- // Recent signals with account info
72
84
  const { data: recentSignals } = await adminDb
73
85
  .from('items')
74
86
  .select(`
@@ -95,7 +107,6 @@ export const metrics = createHandler(async (ctx, body) => {
95
107
  rating: parseInt(signal.data?.rating || '1')
96
108
  }))
97
109
 
98
- // Calculate conversion rate (simplified - signals with rating >= 4)
99
110
  const { count: highValueSignals } = await adminDb
100
111
  .from('items')
101
112
  .select('*', { count: 'exact', head: true })
@@ -114,11 +125,21 @@ export const metrics = createHandler(async (ctx, body) => {
114
125
  recent_signals: formattedSignals || []
115
126
  }
116
127
  })
117
-
118
- // ============================================
119
- // SIGNAL AUDIT
120
- // ============================================
121
-
128
+ // CIL[END chunk_id="admin-signals_metrics_1784019432"]
129
+ // CIL[BEGIN chunk_id="admin-signals_audit_1784019432" type="function" identity="audit" parent="none"]
130
+ // CIL[DOC-MACRO purpose="Audit and export signal data with filtering"]
131
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide searchable, filterable signal audit trail"]
132
+ // CIL[DOC-CONTEXT module="admin-signals" layer="api-handler" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/db.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
133
+ // CIL[DOC-CONTRACT inputs="none" outputs="paginated_signals_or_export_data" errors="funnel_signal_type_not_found" side_effects="database_queries,data_formatting"]
134
+ // CIL[DOC-MICRO logic_summary="Builds filtered query, applies pagination, formats signal data for audit/export" notable_decisions="[]"]
135
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="external_symbols_unknown"]
136
+ // CIL[DOC-STABILITY stability="stable"]
137
+ // CIL[DOC-VECTOR type="context" content="Layer: api-handler. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/db.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/schema-utils.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
138
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
139
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
140
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
141
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
142
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
122
143
  export const audit = createHandler(async (ctx, body) => {
123
144
  const {
124
145
  page = '1',
@@ -134,7 +155,6 @@ export const audit = createHandler(async (ctx, body) => {
134
155
  export: exportData
135
156
  } = ctx.query || {}
136
157
 
137
- // Get funnel_signal type ID
138
158
  const { data: signalType } = await adminDb
139
159
  .from('item_type_registry')
140
160
  .select('id')
@@ -145,7 +165,6 @@ export const audit = createHandler(async (ctx, body) => {
145
165
  throw new Error('funnel_signal type not found')
146
166
  }
147
167
 
148
- // Build query
149
168
  let query = adminDb
150
169
  .from('items')
151
170
  .select(`
@@ -169,7 +188,6 @@ export const audit = createHandler(async (ctx, body) => {
169
188
  `, { count: 'exact' })
170
189
  .eq('type_id', signalType.id)
171
190
 
172
- // Apply filters
173
191
  if (date_from) {
174
192
  query = query.gte('created_at', date_from)
175
193
  }
@@ -195,7 +213,6 @@ export const audit = createHandler(async (ctx, body) => {
195
213
  query = query.or(`accounts.name.ilike.%${search}%,people.email.ilike.%${search}%,data->attribution->>first_touch_referrer_domain.ilike.%${search}%`)
196
214
  }
197
215
 
198
- // Order and paginate
199
216
  const offset = (parseInt(page) - 1) * parseInt(limit)
200
217
  query = query.order('created_at', { ascending: false })
201
218
 
@@ -239,3 +256,4 @@ export const audit = createHandler(async (ctx, body) => {
239
256
  limit: parseInt(limit)
240
257
  }
241
258
  })
259
+ // CIL[END chunk_id="admin-signals_audit_1784019432"]