spine-framework 0.3.145 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/.env.example +76 -0
  2. package/.framework/.spine-manifest.json +19 -0
  3. package/.framework/cli/commands/agents.ts +61 -33
  4. package/.framework/cli/commands/auth.ts +60 -28
  5. package/.framework/cli/commands/create-app.ts +212 -80
  6. package/.framework/cli/commands/dev.ts +184 -68
  7. package/.framework/cli/commands/doctor.ts +324 -152
  8. package/.framework/cli/commands/generate.ts +119 -68
  9. package/.framework/cli/commands/init.ts +141 -242
  10. package/.framework/cli/commands/install-app.ts +1336 -314
  11. package/.framework/cli/commands/items.ts +31 -29
  12. package/.framework/cli/commands/migrate.ts +299 -156
  13. package/.framework/cli/commands/migrations.ts +62 -30
  14. package/.framework/cli/commands/pipelines.ts +31 -29
  15. package/.framework/cli/commands/status.ts +105 -45
  16. package/.framework/cli/commands/system.ts +47 -42
  17. package/.framework/cli/commands/test.ts +161 -102
  18. package/.framework/cli/commands/upgrade.ts +260 -0
  19. package/.framework/cli/commands/validate-app.ts +517 -161
  20. package/.framework/cli/context.ts +117 -85
  21. package/.framework/cli/env-loader.ts +74 -43
  22. package/.framework/cli/index.ts +70 -46
  23. package/.framework/cli/lib/project-files.ts +404 -0
  24. package/.framework/docs/guides/testing-guide.md +1 -1
  25. package/.framework/docs/runtime-types.md +72 -72
  26. package/.framework/functions/_shared/access.ts +84 -0
  27. package/.framework/functions/_shared/agent-runner.ts +5051 -1026
  28. package/.framework/functions/_shared/app-manifest.ts +214 -94
  29. package/.framework/functions/_shared/ast.ts +214 -0
  30. package/.framework/functions/_shared/audit.ts +91 -55
  31. package/.framework/functions/_shared/cil.ts +368 -127
  32. package/.framework/functions/_shared/db.ts +337 -68
  33. package/.framework/functions/_shared/funnel.ts +228 -0
  34. package/.framework/functions/_shared/geo.ts +105 -0
  35. package/.framework/functions/_shared/hash-api-key.ts +94 -17
  36. package/.framework/functions/_shared/index.ts +22 -224
  37. package/.framework/functions/_shared/kb.ts +832 -58
  38. package/.framework/functions/_shared/llm.ts +118 -18
  39. package/.framework/functions/_shared/logging.ts +317 -19
  40. package/.framework/functions/_shared/middleware.ts +701 -131
  41. package/.framework/functions/_shared/notify.ts +70 -0
  42. package/.framework/functions/_shared/outcomes.ts +34 -19
  43. package/.framework/functions/_shared/permissions.ts +501 -315
  44. package/.framework/functions/_shared/pipeline-runner.ts +704 -155
  45. package/.framework/functions/_shared/principal.ts +436 -263
  46. package/.framework/functions/_shared/rate-limit.ts +233 -0
  47. package/.framework/functions/_shared/resolve-credentials.ts +86 -19
  48. package/.framework/functions/_shared/resolve-ids.ts +203 -139
  49. package/.framework/functions/_shared/retry-deliveries.ts +51 -16
  50. package/.framework/functions/_shared/schema-utils.ts +602 -521
  51. package/.framework/functions/_shared/security.ts +345 -0
  52. package/.framework/functions/_shared/testing.ts +197 -172
  53. package/.framework/functions/_shared/tracing.ts +351 -21
  54. package/.framework/functions/_shared/trigger-engine.ts +425 -136
  55. package/.framework/functions/_shared/webhook-registration.ts +71 -70
  56. package/.framework/functions/_shared/webhook-registry.ts +126 -83
  57. package/.framework/functions/account-nodes.ts +30 -30
  58. package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
  59. package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
  60. package/.framework/functions/adapters/openai-outbound.ts +15 -16
  61. package/.framework/functions/admin-data.ts +596 -173
  62. package/.framework/functions/admin-funnel.ts +64 -60
  63. package/.framework/functions/admin-install-funnel.ts +84 -66
  64. package/.framework/functions/admin-signals.ts +69 -51
  65. package/.framework/functions/ai-agents.ts +431 -106
  66. package/.framework/functions/ai-interactions.ts +186 -112
  67. package/.framework/functions/api-keys.ts +107 -107
  68. package/.framework/functions/apps.ts +154 -136
  69. package/.framework/functions/auth.ts +83 -65
  70. package/.framework/functions/cil-agent-ingest.ts +189 -232
  71. package/.framework/functions/cil-agent.ts +433 -177
  72. package/.framework/functions/cil-callmap.ts +642 -430
  73. package/.framework/functions/cil-config.ts +139 -135
  74. package/.framework/functions/cil-context.ts +214 -127
  75. package/.framework/functions/cil-doc.ts +587 -458
  76. package/.framework/functions/cil-embeddings.ts +453 -364
  77. package/.framework/functions/cil-graph.ts +427 -142
  78. package/.framework/functions/cil-ingest.ts +1418 -1154
  79. package/.framework/functions/cil-pipeline.ts +276 -21
  80. package/.framework/functions/cil-project.ts +659 -132
  81. package/.framework/functions/cil-validate.ts +198 -164
  82. package/.framework/functions/debug-auth.ts +57 -55
  83. package/.framework/functions/deliveries.ts +80 -21
  84. package/.framework/functions/embeddings.ts +1023 -318
  85. package/.framework/functions/eval-harness.ts +146 -108
  86. package/.framework/functions/integration-outbound.ts +205 -75
  87. package/.framework/functions/integration-routes.ts +128 -23
  88. package/.framework/functions/integrations.ts +125 -100
  89. package/.framework/functions/invites.ts +1095 -460
  90. package/.framework/functions/item-progress.ts +158 -102
  91. package/.framework/functions/kb.ts +34 -10
  92. package/.framework/functions/logs.ts +133 -133
  93. package/.framework/functions/observability.ts +152 -122
  94. package/.framework/functions/pipeline-executions.ts +147 -132
  95. package/.framework/functions/pipelines.ts +134 -119
  96. package/.framework/functions/prompt-configs.ts +96 -80
  97. package/.framework/functions/roles.ts +112 -82
  98. package/.framework/functions/security.ts +450 -0
  99. package/.framework/functions/system-cron.ts +117 -80
  100. package/.framework/functions/system.ts +158 -98
  101. package/.framework/functions/tests.ts +29 -29
  102. package/.framework/functions/timers.ts +94 -95
  103. package/.framework/functions/trigger-scheduler.ts +10 -0
  104. package/.framework/functions/triggers.ts +179 -149
  105. package/.framework/functions/types.ts +137 -125
  106. package/.framework/mcp/index.ts +133 -0
  107. package/.framework/mcp/load-env.ts +60 -0
  108. package/.framework/mcp/shared/app-manifest.ts +275 -0
  109. package/.framework/mcp/shared/db.ts +477 -0
  110. package/.framework/mcp/shared/kb.ts +118 -0
  111. package/.framework/mcp/tools/architect.ts +431 -0
  112. package/.framework/mcp/tools/cil/context.ts +345 -0
  113. package/.framework/mcp/tools/cil/graph.ts +242 -0
  114. package/.framework/mcp/tools/cil/ingest.ts +1217 -0
  115. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
  116. package/.framework/mcp/tools/cil/pipeline.ts +767 -0
  117. package/.framework/mcp/tools/cil/project.ts +791 -0
  118. package/.framework/mcp/tools/cil/retrieval.ts +336 -0
  119. package/.framework/mcp/tools/cil/search-core.ts +454 -0
  120. package/.framework/mcp/tools/cil/search.ts +97 -0
  121. package/.framework/mcp/tools/cil/suggest.ts +186 -0
  122. package/.framework/mcp/tools/cil/validate.ts +1369 -0
  123. package/.framework/mcp/tools/kb/delete.ts +139 -0
  124. package/.framework/mcp/tools/kb/index.ts +52 -0
  125. package/.framework/mcp/tools/kb/ingest.ts +84 -0
  126. package/.framework/mcp/tools/kb/list-types.ts +102 -0
  127. package/.framework/mcp/tools/kb/publish.ts +100 -0
  128. package/.framework/mcp/tools/kb/reindex.ts +86 -0
  129. package/.framework/mcp/tools/kb/revoke.ts +85 -0
  130. package/.framework/mcp/tools/kb/search.ts +101 -0
  131. package/.framework/mcp/tools/kb/upsert.ts +125 -0
  132. package/.framework/mcp/tools/observability.ts +510 -0
  133. package/.framework/migrations/001_core_schema.sql +15 -0
  134. package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
  135. package/.framework/migrations/003_core_system_data.sql +16 -1
  136. package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
  137. package/.framework/migrations/005_core_observability.sql +17 -1
  138. package/.framework/migrations/006_security_hardening_rls.sql +15 -0
  139. package/.framework/migrations/007_kb_article_list.sql +17 -1
  140. package/.framework/migrations/008_items_target.sql +15 -0
  141. package/.framework/migrations/009_roles_slug_unique.sql +15 -0
  142. package/.framework/migrations/010_auth_user_trigger.sql +15 -0
  143. package/.framework/migrations/011_spine_system_account.sql +16 -0
  144. package/.framework/migrations/012_service_role_grants.sql +16 -0
  145. package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
  146. package/.framework/migrations/014_apps_required_roles.sql +16 -0
  147. package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
  148. package/.framework/migrations/016_cil_types.sql +281 -0
  149. package/.framework/migrations/017_cil_stable_ids.sql +37 -0
  150. package/.framework/migrations/018_runtime_tables.sql +129 -0
  151. package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
  152. package/.framework/migrations/020_schema_reconciliation.sql +67 -0
  153. package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
  154. package/.framework/migrations/032_cil_status_migration.sql +73 -0
  155. package/.framework/migrations/033_cil_versioning.sql +73 -0
  156. package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
  157. package/.framework/migrations/035_rate_limits.sql +55 -0
  158. package/.framework/migrations/036_demo_record_flags.sql +72 -0
  159. package/.framework/migrations/037_kb_types_canonical.sql +244 -0
  160. package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
  161. package/.framework/migrations/042_registration_hierarchy.sql +309 -0
  162. package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
  163. package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
  164. package/.framework/migrations/045_security_critical_rls.sql +139 -0
  165. package/.framework/migrations/046_security_missing_rls.sql +79 -0
  166. package/.framework/migrations/047_people_updated_by.sql +27 -0
  167. package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
  168. package/.framework/migrations/049_security_blocklist.sql +148 -0
  169. package/.framework/migrations/050_notifications.sql +49 -0
  170. package/.framework/migrations/051_message_agent_fields.sql +74 -0
  171. package/.framework/migrations/052_registration_security.sql +421 -0
  172. package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
  173. package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
  174. package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
  175. package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
  176. package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
  177. package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
  178. package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
  179. package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
  180. package/.framework/migrations/061_fk_dedup.sql +32 -0
  181. package/.framework/public/spine-logo.svg +10 -3
  182. package/.framework/scripts/app-install-cli.ts +190 -93
  183. package/.framework/scripts/assemble-frontend.sh +127 -44
  184. package/.framework/scripts/assemble-functions.sh +128 -30
  185. package/.framework/scripts/boundary-check.sh +6 -2
  186. package/.framework/scripts/build-manifest.sh +24 -68
  187. package/.framework/scripts/check-core-integrity.sh +15 -76
  188. package/.framework/scripts/checksum-manifest.mts +343 -0
  189. package/.framework/scripts/cil-migrate-markers.ts +403 -0
  190. package/.framework/scripts/fix-cil-markers.mjs +176 -0
  191. package/.framework/scripts/verify-integrity.sh +21 -57
  192. package/.framework/scripts/verify-manifest.mts +305 -0
  193. package/.framework/seeds/types/funnel_signal_use.json +74 -21
  194. package/.framework/seeds/types/spine_instance.json +73 -21
  195. package/.framework/src/App.tsx +118 -72
  196. package/.framework/src/apps/admin/index.tsx +855 -58
  197. package/.framework/src/components/AppWrapper.tsx +43 -45
  198. package/.framework/src/components/CustomAppLoader.tsx +160 -116
  199. package/.framework/src/components/admin/AdminListPage.tsx +46 -44
  200. package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
  201. package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
  202. package/.framework/src/components/admin/PageInstructions.tsx +98 -2
  203. package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
  204. package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
  205. package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
  206. package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
  207. package/.framework/src/components/app-sidebar.tsx +42 -45
  208. package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
  209. package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
  210. package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
  211. package/.framework/src/components/kb/KBArticleList.tsx +251 -10
  212. package/.framework/src/components/layout/AppShell.tsx +51 -45
  213. package/.framework/src/components/layout/Header.tsx +42 -43
  214. package/.framework/src/components/layout/Layout.tsx +46 -46
  215. package/.framework/src/components/layout/Sidebar.tsx +196 -96
  216. package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
  217. package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
  218. package/.framework/src/components/runtime/DataFilters.tsx +49 -74
  219. package/.framework/src/components/runtime/DataHeader.tsx +53 -32
  220. package/.framework/src/components/runtime/DataListPage.tsx +51 -155
  221. package/.framework/src/components/runtime/DataStats.tsx +66 -44
  222. package/.framework/src/components/runtime/DataTable.tsx +49 -149
  223. package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
  224. package/.framework/src/components/runtime/index.ts +119 -16
  225. package/.framework/src/components/search-form.tsx +46 -29
  226. package/.framework/src/components/shared/AgentView.tsx +65 -48
  227. package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
  228. package/.framework/src/components/shared/InviteManager.tsx +207 -97
  229. package/.framework/src/components/shared/MemberList.tsx +97 -0
  230. package/.framework/src/components/shared/SchemaFields.tsx +107 -86
  231. package/.framework/src/components/ui/DataTable.tsx +80 -68
  232. package/.framework/src/components/ui/Form.tsx +157 -146
  233. package/.framework/src/components/ui/ItemCard.tsx +74 -67
  234. package/.framework/src/components/ui/ItemListView.tsx +73 -68
  235. package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
  236. package/.framework/src/components/ui/Modal.tsx +78 -68
  237. package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
  238. package/.framework/src/components/ui/accordion.tsx +85 -86
  239. package/.framework/src/components/ui/alert-dialog.tsx +197 -184
  240. package/.framework/src/components/ui/alert.tsx +105 -94
  241. package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
  242. package/.framework/src/components/ui/avatar.tsx +122 -107
  243. package/.framework/src/components/ui/badge.tsx +60 -55
  244. package/.framework/src/components/ui/breadcrumb.tsx +127 -128
  245. package/.framework/src/components/ui/button-group.tsx +86 -72
  246. package/.framework/src/components/ui/button.tsx +71 -50
  247. package/.framework/src/components/ui/calendar.tsx +72 -57
  248. package/.framework/src/components/ui/card.tsx +136 -129
  249. package/.framework/src/components/ui/carousel.tsx +226 -107
  250. package/.framework/src/components/ui/chart.tsx +252 -147
  251. package/.framework/src/components/ui/checkbox.tsx +43 -44
  252. package/.framework/src/components/ui/collapsible.tsx +86 -71
  253. package/.framework/src/components/ui/combobox.tsx +282 -249
  254. package/.framework/src/components/ui/command.tsx +158 -146
  255. package/.framework/src/components/ui/context-menu.tsx +239 -240
  256. package/.framework/src/components/ui/dialog.tsx +174 -157
  257. package/.framework/src/components/ui/direction.tsx +72 -56
  258. package/.framework/src/components/ui/drawer.tsx +168 -169
  259. package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
  260. package/.framework/src/components/ui/empty.tsx +131 -120
  261. package/.framework/src/components/ui/field.tsx +205 -173
  262. package/.framework/src/components/ui/hover-card.tsx +71 -72
  263. package/.framework/src/components/ui/input-group.tsx +148 -133
  264. package/.framework/src/components/ui/input-otp.tsx +99 -86
  265. package/.framework/src/components/ui/input.tsx +43 -41
  266. package/.framework/src/components/ui/item.tsx +207 -185
  267. package/.framework/src/components/ui/kbd.tsx +57 -56
  268. package/.framework/src/components/ui/label.tsx +45 -41
  269. package/.framework/src/components/ui/menubar.tsx +268 -236
  270. package/.framework/src/components/ui/native-select.tsx +85 -86
  271. package/.framework/src/components/ui/navigation-menu.tsx +166 -156
  272. package/.framework/src/components/ui/pagination.tsx +131 -141
  273. package/.framework/src/components/ui/popover.tsx +125 -128
  274. package/.framework/src/components/ui/progress.tsx +47 -44
  275. package/.framework/src/components/ui/radio-group.tsx +60 -55
  276. package/.framework/src/components/ui/resizable.tsx +85 -72
  277. package/.framework/src/components/ui/scroll-area.tsx +57 -58
  278. package/.framework/src/components/ui/select.tsx +182 -169
  279. package/.framework/src/components/ui/separator.tsx +42 -43
  280. package/.framework/src/components/ui/sheet.tsx +170 -159
  281. package/.framework/src/components/ui/sidebar.tsx +395 -398
  282. package/.framework/src/components/ui/skeleton.tsx +42 -43
  283. package/.framework/src/components/ui/slider.tsx +61 -44
  284. package/.framework/src/components/ui/sonner.tsx +44 -44
  285. package/.framework/src/components/ui/spinner.tsx +47 -42
  286. package/.framework/src/components/ui/switch.tsx +56 -42
  287. package/.framework/src/components/ui/table-primitives.tsx +272 -132
  288. package/.framework/src/components/ui/table.tsx +140 -142
  289. package/.framework/src/components/ui/tabs.tsx +110 -93
  290. package/.framework/src/components/ui/textarea.tsx +43 -44
  291. package/.framework/src/components/ui/toggle-group.tsx +87 -71
  292. package/.framework/src/components/ui/toggle.tsx +56 -56
  293. package/.framework/src/components/ui/tooltip.tsx +99 -85
  294. package/.framework/src/contexts/AppContext.tsx +166 -114
  295. package/.framework/src/contexts/AuthContext.tsx +232 -137
  296. package/.framework/src/hooks/use-mobile.ts +43 -44
  297. package/.framework/src/hooks/useApi.ts +185 -172
  298. package/.framework/src/hooks/useAppPath.ts +31 -29
  299. package/.framework/src/hooks/useApps.ts +77 -42
  300. package/.framework/src/hooks/useEntityList.ts +66 -29
  301. package/.framework/src/hooks/useEntityRecord.ts +76 -32
  302. package/.framework/src/hooks/useForm.ts +62 -30
  303. package/.framework/src/hooks/useListSchema.ts +60 -43
  304. package/.framework/src/hooks/useSchemaRecord.ts +115 -95
  305. package/.framework/src/lib/api.ts +258 -134
  306. package/.framework/src/lib/registration.ts +181 -0
  307. package/.framework/src/lib/supabase.ts +118 -81
  308. package/.framework/src/lib/utils.ts +266 -266
  309. package/.framework/src/main.tsx +43 -44
  310. package/.framework/src/pages/DashboardPage.tsx +44 -43
  311. package/.framework/src/pages/NoAppPage.tsx +50 -0
  312. package/.framework/src/pages/NotFoundPage.tsx +32 -29
  313. package/.framework/src/pages/SetupPage.tsx +34 -33
  314. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
  315. package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
  316. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
  317. package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
  318. package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
  319. package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
  320. package/.framework/src/pages/admin/AppsPage.tsx +45 -42
  321. package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
  322. package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
  323. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
  324. package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
  325. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
  326. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
  327. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
  328. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
  329. package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
  330. package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
  331. package/.framework/src/pages/admin/LogsPage.tsx +87 -137
  332. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
  333. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
  334. package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
  335. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
  336. package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
  337. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
  338. package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
  339. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
  340. package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
  341. package/.framework/src/pages/admin/RolesPage.tsx +47 -164
  342. package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
  343. package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
  344. package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
  345. package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
  346. package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
  347. package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
  348. package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
  349. package/.framework/src/pages/admin/TimersPage.tsx +44 -42
  350. package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
  351. package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
  352. package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
  353. package/.framework/src/pages/admin/TypesPage.tsx +45 -42
  354. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
  355. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
  356. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
  357. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
  358. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
  359. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
  360. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
  361. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
  362. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
  363. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
  364. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
  365. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
  366. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  367. package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
  368. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
  369. package/.framework/src/pages/auth/LoginPage.tsx +38 -32
  370. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
  371. package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
  372. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
  373. package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
  374. package/.framework/src/types/auth.ts +101 -93
  375. package/.framework/src/types/types.ts +283 -262
  376. package/.framework/templates/project.json +87 -0
  377. package/.framework/templates/spine.config.neutral.json +7 -0
  378. package/.framework/tests/api/api-surface.test.ts +381 -0
  379. package/.framework/tests/fixtures/seed.ts +427 -0
  380. package/.framework/tests/fixtures/teardown.ts +228 -0
  381. package/.framework/tests/reporter.ts +351 -0
  382. package/.framework/tests/setup.ts +135 -0
  383. package/.framework/tests/ui/ui-sweep.ts +278 -0
  384. package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
  385. package/.framework/tests/unit/agent-runner.test.ts +2389 -0
  386. package/.framework/tests/unit/ai-interactions.test.ts +81 -0
  387. package/.framework/tests/unit/app-manifest.test.ts +359 -0
  388. package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
  389. package/.framework/tests/unit/cil-determinism.test.ts +85 -0
  390. package/.framework/tests/unit/core-isolation.test.ts +153 -0
  391. package/.framework/tests/unit/funnel-signals.test.ts +135 -0
  392. package/.framework/tests/unit/install-app.test.ts +1759 -0
  393. package/.framework/tests/unit/invites-security.test.ts +572 -0
  394. package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
  395. package/.framework/tests/unit/kb-search.test.ts +119 -0
  396. package/.framework/tests/unit/migrate.test.ts +509 -0
  397. package/.framework/tests/unit/notify.test.ts +136 -0
  398. package/.framework/tests/unit/permissions.test.ts +269 -0
  399. package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
  400. package/.framework/tests/unit/principal-cache.test.ts +138 -0
  401. package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
  402. package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
  403. package/.framework/tests/unit/schema-utils.test.ts +225 -0
  404. package/.framework/tests/unit/trigger-engine.test.ts +513 -0
  405. package/.framework/tests/unit/validate-app.test.ts +527 -0
  406. package/README.md +34 -3
  407. package/bin/spine-framework.cjs +1 -0
  408. package/config/tailwind.config.cjs +7 -0
  409. package/config/tsconfig.functions.json +42 -0
  410. package/config/tsconfig.json +37 -9
  411. package/config/vite.config.ts +31 -2
  412. package/netlify.toml +31 -3
  413. package/package.json +46 -29
  414. package/scripts/assemble-frontend.sh +127 -44
  415. package/scripts/assemble-functions.sh +127 -29
  416. package/scripts/boundary-check.sh +6 -2
  417. package/scripts/build-manifest.sh +24 -68
  418. package/scripts/checksum-manifest.mts +345 -0
  419. package/scripts/dev-clean.sh +86 -0
  420. package/scripts/dev-netlify.sh +49 -0
  421. package/scripts/netlify-dev-wrapper.sh +2 -0
  422. package/scripts/verify-install.ts +358 -0
  423. package/scripts/verify-integrity.sh +21 -57
  424. package/scripts/verify-manifest.mts +305 -0
  425. package/templates/project/gitignore +45 -0
  426. package/{config → templates/project}/package-lock.json +22335 -9366
  427. package/vitest.config.ts +46 -0
  428. package/.framework/public/spine.config.json +0 -91
  429. package/config/deno.lock +0 -108
  430. package/config/tsconfig.node.tsbuildinfo +0 -1
  431. package/config/tsconfig.tsbuildinfo +0 -1
  432. package/config/vite.config.d.ts +0 -2
  433. package/custom/.devin/AGENT.md +0 -357
  434. package/custom/.devin/skills/install-app/SKILL.md +0 -39
  435. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
  436. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
  437. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
  438. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
  439. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
  440. package/custom/.devin/workflows/app-install.yaml +0 -83
  441. package/custom/README.md +0 -79
  442. package/docs/README.md +0 -15
  443. package/scripts/app-install-cli.ts +0 -286
  444. package/scripts/check-core-integrity.sh +0 -82
  445. package/scripts/ingest-chunks.cjs +0 -202
  446. package/scripts/kb-chunk-parser.cjs +0 -312
  447. package/scripts/kb-chunk-parser.ts +0 -330
  448. package/scripts/kb-ingest-docs.ts +0 -203
  449. package/scripts/load-test-app-install.ts +0 -484
  450. package/scripts/test-login.js +0 -33
  451. package/spine.config.json +0 -91
@@ -1,3 +1,12 @@
1
+ // CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/functions/eval-harness.ts"]
2
+ // CIL[DOC-MACRO purpose="Eval harness module imports and entry re-export"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Import dependencies and expose the main eval handler for serverless function routing"]
4
+ // CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="none at module level" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Declares the shared imports and main handler re-export for the evaluation harness" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="developer"]
1
10
 
2
11
 
3
12
 
@@ -19,21 +28,6 @@
19
28
 
20
29
 
21
30
 
22
- // CIL[BEGIN chunk_id="eval-harness_moduleheader_1783969696" type="module_header" identity="imports" parent="none"]
23
- // CIL[DOC-MACRO purpose="Import dependencies for eval harness module"]
24
- // CIL[DOC-RESPONSIBILITY responsibility="Import middleware, database, utilities, and audit functions"]
25
- // CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
26
- // CIL[DOC-CONTRACT inputs="none" outputs="imported_modules" errors="none" side_effects="none"]
27
- // CIL[DOC-MICRO logic_summary="Import required dependencies for evaluation test harness" notable_decisions="[]"]
28
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
29
- // CIL[DOC-STABILITY stability="stable"]
30
- // CIL[DOC-AUDIENCE audience="developer"]
31
- // CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
32
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
33
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
34
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
35
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
36
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
37
31
 
38
32
  import { createHandler } from './_shared/middleware'
39
33
  import { adminDb } from './_shared/db'
@@ -41,44 +35,74 @@ import { resolveTypeId } from './_shared/resolve-ids'
41
35
  import { create } from './admin-data'
42
36
  import { emitLog } from './_shared/audit'
43
37
  import { callOpenAIEmbeddings } from './_shared/llm'
44
- // CIL[END chunk_id="eval-harness_moduleheader_1783969696"]
45
- // CIL[BEGIN chunk_id="eval-harness_constants_1783969696" type="function" identity="constants" parent="none"]
46
- // CIL[DOC-MACRO purpose="Define evaluation constants and types"]
47
- // CIL[DOC-RESPONSIBILITY responsibility="Configure test types and confidence tier thresholds"]
48
- // CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
49
- // CIL[DOC-CONTRACT inputs="none" outputs="constants" errors="none" side_effects="none"]
50
- // CIL[DOC-MICRO logic_summary="Define test categories and confidence score ranges for evaluation" notable_decisions="[]"]
51
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
52
- // CIL[DOC-STABILITY stability="stable"]
53
- // CIL[DOC-VECTOR type="context" content="Layer: backend_functions. 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/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
54
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
55
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
56
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
38
+ // CIL[DOC-VECTOR type="context" content="purpose='Eval harness module imports and entry re-export'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
39
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
40
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
41
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
57
42
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
58
43
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
44
+ // CIL[END stable_id="~/.framework/functions/eval-harness.ts:module_header:module_header"]
45
+ // CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:TEST_TYPES:constant" type="constant" identity="TEST_TYPES" parent="~/.framework/functions/eval-harness.ts"]
46
+ // CIL[DOC-MACRO purpose="Enumeration of supported evaluation test categories"]
47
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the canonical list of test_type values used in eval test cases and coverage"]
48
+ // CIL[DOC-STABILITY stability="internal"]
49
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
50
+ // CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
51
+ // CIL[DOC-CONTRACT inputs="none" outputs="readonly array of test type strings" errors="none" side_effects="none"]
52
+ // CIL[DOC-MICRO logic_summary="Static const array of eval test categories" notable_decisions="[]"]
59
53
  const TEST_TYPES = ['easy', 'medium', 'hard', 'security', 'hallucination', 'stale', 'account_gating'] as const
54
+ // CIL[END stable_id="~/.framework/functions/eval-harness.ts:TEST_TYPES:constant"]
55
+ // CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:TestType:type" type="type" identity="TestType" parent="~/.framework/functions/eval-harness.ts"]
56
+ // CIL[DOC-VECTOR type="context" content="purpose='Enumeration of supported evaluation test categories'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
57
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
58
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
59
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
60
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
61
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
62
+ // CIL[DOC-MACRO purpose="Type union derived from the TEST_TYPES array"]
63
+ // CIL[DOC-RESPONSIBILITY responsibility="Constrain test_type fields to the supported categories"]
64
+ // CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
65
+ // CIL[DOC-CONTRACT inputs="none" outputs="TestType union type" errors="none" side_effects="none"]
66
+ // CIL[DOC-MICRO logic_summary="Type alias derived from TEST_TYPES" notable_decisions="[]"]
67
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
68
+ // CIL[DOC-STABILITY stability="stable"]
60
69
  type TestType = typeof TEST_TYPES[number]
61
-
70
+ // CIL[DOC-VECTOR type="context" content="purpose='Type union derived from the TEST_TYPES array'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
71
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
72
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
73
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
74
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
75
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
76
+ // CIL[END stable_id="~/.framework/functions/eval-harness.ts:TestType:type"]
77
+
78
+ // CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:CONFIDENCE_TIERS:constant" type="constant" identity="CONFIDENCE_TIERS" parent="~/.framework/functions/eval-harness.ts"]
79
+ // CIL[DOC-MACRO purpose="Threshold map for categorizing confidence scores"]
80
+ // CIL[DOC-RESPONSIBILITY responsibility="Define min and max score boundaries for high, medium and low tiers"]
81
+ // CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
82
+ // CIL[DOC-CONTRACT inputs="none" outputs="constant tier threshold object" errors="none" side_effects="none"]
83
+ // CIL[DOC-MICRO logic_summary="Object mapping tier names to min and max similarity score ranges" notable_decisions="[]"]
84
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
85
+ // CIL[DOC-STABILITY stability="stable"]
62
86
  const CONFIDENCE_TIERS = {
63
87
  high: { min: 0.85, max: 1.00 },
64
88
  medium: { min: 0.60, max: 0.849 },
65
89
  low: { min: 0.00, max: 0.599 },
66
90
  }
67
- // CIL[END chunk_id="eval-harness_constants_1783969696"]
68
- // CIL[BEGIN chunk_id="eval-harness_createtestcase_1783969696" type="function" identity="createTestCase" parent="none"]
69
- // CIL[DOC-MACRO purpose="Create evaluation test case"]
70
- // CIL[DOC-RESPONSIBILITY responsibility="Create test case with question and expected outcomes"]
71
- // CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
72
- // CIL[DOC-CONTRACT inputs="none" outputs="created_test_case" errors="validation_errors,db_errors" side_effects="db_write"]
73
- // CIL[DOC-MICRO logic_summary="Validate input, resolve type ID, create test case item" notable_decisions="[]"]
74
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
75
- // CIL[DOC-STABILITY stability="stable"]
76
- // CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 1. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
77
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 2."]
78
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
79
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
91
+ // CIL[DOC-VECTOR type="context" content="purpose='Threshold map for categorizing confidence scores'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
92
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
93
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
94
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
80
95
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
81
96
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
97
+ // CIL[END stable_id="~/.framework/functions/eval-harness.ts:CONFIDENCE_TIERS:constant"]
98
+ // CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:createTestCase:constant" type="constant" identity="createTestCase" parent="~/.framework/functions/eval-harness.ts"]
99
+ // CIL[DOC-MACRO purpose="Create a new eval test case record"]
100
+ // CIL[DOC-RESPONSIBILITY responsibility="Validate input, resolve the eval_test_case type, and persist the test case item"]
101
+ // CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
102
+ // CIL[DOC-CONTRACT inputs="question, expected_tier, expected_escalate, expected_source_ids, excluded_source_ids, test_type" outputs="created item record" errors="throws if question missing or eval_test_case type not found" side_effects="inserts a new active item into the items table"]
103
+ // CIL[DOC-MICRO logic_summary="Resolves the eval_test_case type and inserts an item with the provided test parameters" notable_decisions="[]"]
104
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
105
+ // CIL[DOC-STABILITY stability="stable"]
82
106
  export const createTestCase = createHandler(async (ctx, body) => {
83
107
  const {
84
108
  question, expected_tier = 'medium', expected_escalate = false,
@@ -107,21 +131,21 @@ export const createTestCase = createHandler(async (ctx, body) => {
107
131
  },
108
132
  })
109
133
  })
110
- // CIL[END chunk_id="eval-harness_createtestcase_1783969696"]
111
- // CIL[BEGIN chunk_id="eval-harness_listtestcases_1783969696" type="function" identity="listTestCases" parent="none"]
112
- // CIL[DOC-MACRO purpose="List evaluation test cases"]
113
- // CIL[DOC-RESPONSIBILITY responsibility="Retrieve test cases with optional filtering"]
114
- // CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[\"\\\"]"]
115
- // CIL[DOC-CONTRACT inputs="none" outputs="test_cases" errors="db_errors" side_effects="none"]
116
- // CIL[DOC-MICRO logic_summary="Query test cases by type and test type, return paginated results" notable_decisions="[]"]
117
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
118
- // CIL[DOC-STABILITY stability="stable"]
119
- // CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: \."]
120
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
121
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
122
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
134
+ // CIL[DOC-VECTOR type="context" content="purpose='Create a new eval test case record'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
135
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
136
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
137
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
123
138
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
124
139
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
140
+ // CIL[END stable_id="~/.framework/functions/eval-harness.ts:createTestCase:constant"]
141
+ // CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:listTestCases:constant" type="constant" identity="listTestCases" parent="~/.framework/functions/eval-harness.ts"]
142
+ // CIL[DOC-MACRO purpose="List active eval test case records"]
143
+ // CIL[DOC-RESPONSIBILITY responsibility="Query active items for the eval_test_case type with optional test_type filter"]
144
+ // CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
145
+ // CIL[DOC-CONTRACT inputs="query: test_type, limit, offset" outputs="array of test case records" errors="throws on database error" side_effects="none"]
146
+ // CIL[DOC-MICRO logic_summary="Builds a query against items filtered by status, type and optional test_type" notable_decisions="[]"]
147
+ // CIL[DOC-STABILITY stability="internal"]
148
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
125
149
  export const listTestCases = createHandler(async (ctx, _body) => {
126
150
  const { test_type, limit = '200', offset = '0' } = ctx.query || {}
127
151
 
@@ -142,21 +166,21 @@ export const listTestCases = createHandler(async (ctx, _body) => {
142
166
  if (error) throw error
143
167
  return data || []
144
168
  })
145
- // CIL[END chunk_id="eval-harness_listtestcases_1783969696"]
146
- // CIL[BEGIN chunk_id="eval-harness_runeval_1783969696" type="function" identity="runEval" parent="none"]
147
- // CIL[DOC-MACRO purpose="Run evaluation test suite"]
148
- // CIL[DOC-RESPONSIBILITY responsibility="Execute test cases and measure retrieval performance"]
149
- // CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[\"\\\"]"]
150
- // CIL[DOC-CONTRACT inputs="none" outputs="eval_results" errors="api_errors,db_errors" side_effects="api_calls,db_write,audit_log"]
151
- // CIL[DOC-MICRO logic_summary="Run embeddings search, evaluate recall and boundary violations, store results" notable_decisions="[]"]
152
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="complex_logic,external_api"]
153
- // CIL[DOC-STABILITY stability="stable"]
154
- // CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: \."]
155
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
156
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
157
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
169
+ // CIL[END stable_id="~/.framework/functions/eval-harness.ts:listTestCases:constant"]
170
+ // CIL[DOC-VECTOR type="context" content="purpose='List active eval test case records'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
171
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
172
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
173
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
158
174
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
159
175
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
176
+ // CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:runEval:constant" type="constant" identity="runEval" parent="~/.framework/functions/eval-harness.ts"]
177
+ // CIL[DOC-MACRO purpose="Run an evaluation pass over active test cases and store results"]
178
+ // CIL[DOC-RESPONSIBILITY responsibility="Embed questions, retrieve similar documents, score recall, boundaries, tier correctness and record the execution"]
179
+ // CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
180
+ // CIL[DOC-CONTRACT inputs="body: test_type, similarity_threshold, match_count; requires account context" outputs="run summary and per-case results" errors="throws if account missing or database errors; skips cases on embed failure" side_effects="inserts a pipeline_executions row and emits an audit log"]
181
+ // CIL[DOC-MICRO logic_summary="For each test case, computes embeddings, calls match_embeddings, checks recall, boundaries, tier correctness, and writes the execution result" notable_decisions="[]"]
182
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
183
+ // CIL[DOC-STABILITY stability="stable"]
160
184
  export const runEval = createHandler(async (ctx, body) => {
161
185
  const { test_type, similarity_threshold = 0.15, match_count = 8 } = body || {}
162
186
  if (!ctx.accountId) throw new Error('Account context required')
@@ -182,6 +206,14 @@ export const runEval = createHandler(async (ctx, body) => {
182
206
  let passed = 0; let failed = 0; let skipped = 0
183
207
 
184
208
  for (const tc of testCases) {
209
+ // Cases created from a live ticket carry observed (diagnostic) sources but
210
+ // no human-approved expected_source_ids yet — exclude them from scoring
211
+ // until review promotes them to golden cases.
212
+ if (tc.data?.needs_source_review) {
213
+ skipped++
214
+ results.push({ id: tc.id, status: 'skipped', reason: 'needs_source_review' })
215
+ continue
216
+ }
185
217
  const question = tc.data?.question || tc.title
186
218
  const expectedSrcs = tc.data?.expected_source_ids || []
187
219
  const excludedSrcs = tc.data?.excluded_source_ids || []
@@ -285,21 +317,21 @@ export const runEval = createHandler(async (ctx, body) => {
285
317
 
286
318
  return { run_id: execRow?.id || null, summary, results }
287
319
  })
288
- // CIL[END chunk_id="eval-harness_runeval_1783969696"]
289
- // CIL[BEGIN chunk_id="eval-harness_getresults_1783969696" type="function" identity="getResults" parent="none"]
290
- // CIL[DOC-MACRO purpose="Get evaluation run results"]
291
- // CIL[DOC-RESPONSIBILITY responsibility="Retrieve recent evaluation execution results"]
292
- // CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[]"]
293
- // CIL[DOC-CONTRACT inputs="none" outputs="eval_results" errors="auth_errors,db_errors" side_effects="none"]
294
- // CIL[DOC-MICRO logic_summary="Query pipeline executions for eval runs, return summary and results" notable_decisions="[]"]
295
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
296
- // CIL[DOC-STABILITY stability="stable"]
297
- // CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
298
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
299
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
300
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
320
+ // CIL[END stable_id="~/.framework/functions/eval-harness.ts:runEval:constant"]
321
+ // CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:getResults:constant" type="constant" identity="getResults" parent="~/.framework/functions/eval-harness.ts"]
322
+ // CIL[DOC-MACRO purpose="Fetch recent eval run results"]
323
+ // CIL[DOC-VECTOR type="context" content="purpose='Run an evaluation pass over active test cases and store results'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
324
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
325
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
326
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
301
327
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
302
328
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
329
+ // CIL[DOC-RESPONSIBILITY responsibility="Return the latest pipeline_executions rows triggered by eval runs for the current account"]
330
+ // CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
331
+ // CIL[DOC-CONTRACT inputs="query limit" outputs="array of execution records" errors="throws on db error" side_effects="none"]
332
+ // CIL[DOC-MICRO logic_summary="Queries pipeline_executions for eval_run trigger data and returns recent records" notable_decisions="[]"]
333
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
334
+ // CIL[DOC-STABILITY stability="stable"]
303
335
  export const getResults = createHandler(async (ctx, _body) => {
304
336
  if (!ctx.accountId) throw new Error('Account context required')
305
337
 
@@ -316,21 +348,21 @@ export const getResults = createHandler(async (ctx, _body) => {
316
348
  if (error) throw error
317
349
  return data || []
318
350
  })
319
- // CIL[END chunk_id="eval-harness_getresults_1783969696"]
320
- // CIL[BEGIN chunk_id="eval-harness_getcoverage_1783969696" type="function" identity="getCoverage" parent="none"]
321
- // CIL[DOC-MACRO purpose="Get test case coverage analysis"]
322
- // CIL[DOC-RESPONSIBILITY responsibility="Analyze test case distribution across types"]
323
- // CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[]"]
324
- // CIL[DOC-CONTRACT inputs="none" outputs="coverage_report" errors="db_errors" side_effects="none"]
325
- // CIL[DOC-MICRO logic_summary="Count test cases by type, identify coverage gaps" notable_decisions="[]"]
326
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
327
- // CIL[DOC-STABILITY stability="stable"]
328
- // CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
329
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
330
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
331
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
351
+ // CIL[DOC-VECTOR type="context" content="purpose='Fetch recent eval run results'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
352
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
353
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
354
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
332
355
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
333
356
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
357
+ // CIL[END stable_id="~/.framework/functions/eval-harness.ts:getResults:constant"]
358
+ // CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:getCoverage:constant" type="constant" identity="getCoverage" parent="~/.framework/functions/eval-harness.ts"]
359
+ // CIL[DOC-MACRO purpose="Report how many test cases exist per test category"]
360
+ // CIL[DOC-RESPONSIBILITY responsibility="Count active eval test cases by test_type and list missing categories"]
361
+ // CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
362
+ // CIL[DOC-CONTRACT inputs="none" outputs="coverage summary and recommendations" errors="throws on db error" side_effects="none"]
363
+ // CIL[DOC-MICRO logic_summary="Counts cases per TEST_TYPES and returns totals and recommendations" notable_decisions="[]"]
364
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
365
+ // CIL[DOC-STABILITY stability="stable"]
334
366
  export const getCoverage = createHandler(async (ctx, _body) => {
335
367
  const { data: typeRow } = await adminDb
336
368
  .from('types').select('id').eq('slug', 'eval_test_case').eq('kind', 'item').maybeSingle()
@@ -361,21 +393,21 @@ export const getCoverage = createHandler(async (ctx, _body) => {
361
393
  recommendation: coverage.filter(c => !c.has_cases).map(c => c.test_type),
362
394
  }
363
395
  })
364
- // CIL[END chunk_id="eval-harness_getcoverage_1783969696"]
365
- // CIL[BEGIN chunk_id="eval-harness_handler_1783969696" type="function" identity="handler" parent="none"]
366
- // CIL[DOC-MACRO purpose="Route eval harness HTTP methods"]
367
- // CIL[DOC-RESPONSIBILITY responsibility="Dispatch requests to evaluation operations"]
368
- // CIL[DOC-CONTEXT module="eval-harness" layer="backend_functions" related_files="[]"]
369
- // CIL[DOC-CONTRACT inputs="none" outputs="function_responses" errors="method_errors" side_effects="none"]
370
- // CIL[DOC-MICRO logic_summary="Route based on action and method to specific eval functions" notable_decisions="[]"]
371
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
372
- // CIL[DOC-STABILITY stability="stable"]
373
- // CIL[DOC-VECTOR type="context" content="Layer: backend_functions. Direct callers: 0. Direct calls: 0. Related files: none."]
374
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
375
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
376
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
396
+ // CIL[DOC-VECTOR type="context" content="purpose='Report how many test cases exist per test category'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
397
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
398
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
399
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
377
400
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
378
401
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
402
+ // CIL[END stable_id="~/.framework/functions/eval-harness.ts:getCoverage:constant"]
403
+ // CIL[BEGIN stable_id="~/.framework/functions/eval-harness.ts:handler:constant" type="constant" identity="handler" parent="~/.framework/functions/eval-harness.ts"]
404
+ // CIL[DOC-MACRO purpose="Route incoming eval harness requests to the correct action"]
405
+ // CIL[DOC-RESPONSIBILITY responsibility="Dispatch based on action and method to create, list, run, or get eval operations"]
406
+ // CIL[DOC-CONTEXT module="eval-harness" layer="function" related_files=".framework/functions/_shared/audit.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/llm.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/eval-harness.ts"]
407
+ // CIL[DOC-CONTRACT inputs="ctx.query.action and method; body for POST actions" outputs="result of the chosen action or throws" errors="throws Invalid action or method for unsupported combinations" side_effects="none"]
408
+ // CIL[DOC-MICRO logic_summary="Switch on action, guard by method, and dispatch to internal handlers" notable_decisions="[]"]
409
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
410
+ // CIL[DOC-STABILITY stability="stable"]
379
411
  export const handler = createHandler(async (ctx, body) => {
380
412
  const { action } = ctx.query || {}
381
413
  const method = ctx.query?.method || 'GET'
@@ -402,4 +434,10 @@ export const handler = createHandler(async (ctx, body) => {
402
434
 
403
435
  throw new Error('Invalid action or method')
404
436
  })
405
- // CIL[END chunk_id="eval-harness_handler_1783969696"]
437
+ // CIL[DOC-VECTOR type="context" content="purpose='Route incoming eval harness requests to the correct action'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
438
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
439
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
440
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
441
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
442
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
443
+ // CIL[END stable_id="~/.framework/functions/eval-harness.ts:handler:constant"]