spine-framework 0.3.145 → 0.4.1

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 +5067 -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,45 +1,130 @@
1
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/functions/cil-pipeline.ts"]
2
+ // CIL[DOC-MACRO purpose="Module header and imports for the pipeline function"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose the function imports and mark the module entry point"]
4
+ // CIL[DOC-CONTEXT module="functions" layer="infrastructure" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts"]
5
+ // CIL[DOC-CONTRACT inputs="None" outputs="None" errors="None" side_effects="None"]
6
+ // CIL[DOC-MICRO logic_summary="Import shared middleware, database client, and CIL helpers" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="engineers"]
10
+
1
11
  import { createHandler } from './_shared/middleware'
2
12
  import { adminDb } from './_shared/db'
13
+ import { pipelineRank } from './_shared/cil'
14
+ // CIL[DOC-VECTOR type="context" content="purpose='Module header and imports for the pipeline function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
15
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
16
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
17
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
18
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
19
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
20
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:module_header:module_header"]
21
+
3
22
 
23
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:PIPELINE_STEPS:constant" type="constant" identity="PIPELINE_STEPS" parent="~/.framework/functions/cil-pipeline.ts"]
24
+ // CIL[DOC-MACRO purpose="Define the PIPELINE_STEPS constant"]
25
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the PIPELINE_STEPS constant for the CIL pipeline"]
26
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
27
+ // CIL[DOC-CONTRACT inputs="None" outputs="PIPELINE_STEPS constant definition" errors="None" side_effects="None"]
28
+ // CIL[DOC-MICRO logic_summary="Implements the PIPELINE_STEPS constant" notable_decisions="[]"]
29
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
30
+ // CIL[DOC-STABILITY stability="stable"]
4
31
  const PIPELINE_STEPS = {
5
- 4: { name: 'chunk', prerequisites: [], target_status: '4-chunked' },
6
- 5: { name: 'document', prerequisites: [4], target_status: '5-documented' },
7
- 6: { name: 'embed-1st-pass', prerequisites: [5], target_status: '6-embedded' },
8
- 7: { name: 'map-1st-pass', prerequisites: [6], target_status: '7-mapped' },
9
- 8: { name: 'enrich', prerequisites: [7], target_status: '8-enriched' },
10
- 9: { name: 'embed-2nd-pass', prerequisites: [8], target_status: '9-embedded' },
11
- 10: { name: 'map-2nd-pass', prerequisites: [9], target_status: '10-mapped' },
32
+ 0: { name: 'discover', prerequisites: [], target_status: '0-discovered' },
33
+ 1: { name: 'select', prerequisites: [0], target_status: '1-selected' },
34
+ 2: { name: 'chunk', prerequisites: [1], target_status: '2-chunked' },
35
+ 3: { name: 'document', prerequisites: [2], target_status: '3-documented' },
36
+ 4: { name: 'validate-chunks', prerequisites: [3], target_status: '4-chunk-validated' },
37
+ 5: { name: 'validate-docs', prerequisites: [4], target_status: '5-doc-validated' },
38
+ 6: { name: 'enrich', prerequisites: [5], target_status: '6-enriched' },
39
+ 7: { name: 'embed-and-map', prerequisites: [6], target_status: '7-embedded-mapped' },
40
+ 8: { name: 'publish', prerequisites: [7], target_status: '8-published' },
12
41
  } as const
42
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the PIPELINE_STEPS constant'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
43
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
44
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
45
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
46
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
47
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
48
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:PIPELINE_STEPS:constant"]
49
+
13
50
 
51
+ // CIL[DOC-STABILITY stability="internal"]
52
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
53
+ // CIL[DOC-CONTEXT module="unknown" layer="unknown" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
54
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:PipelineStep:type" type="type" identity="PipelineStep" parent="~/.framework/functions/cil-pipeline.ts"]
55
+ // CIL[DOC-MACRO purpose="Define the PipelineStep type"]
56
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the PipelineStep type for the CIL pipeline"]
57
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
58
+ // CIL[DOC-CONTRACT inputs="None" outputs="PipelineStep type definition" errors="None" side_effects="None"]
59
+ // CIL[DOC-MICRO logic_summary="Implements the PipelineStep type" notable_decisions="[]"]
60
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
61
+ // CIL[DOC-STABILITY stability="stable"]
14
62
  type PipelineStep = keyof typeof PIPELINE_STEPS
63
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the PipelineStep type'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
64
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
65
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
66
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
67
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
68
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
69
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:PipelineStep:type"]
15
70
 
71
+
72
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getProject:function" type="function" identity="getProject" parent="~/.framework/functions/cil-pipeline.ts"]
73
+ // CIL[DOC-MACRO purpose="Define the getProject function"]
74
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the getProject function for the CIL pipeline"]
75
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
76
+ // CIL[DOC-CONTRACT inputs="project_id: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
77
+ // CIL[DOC-MICRO logic_summary="Implements the getProject function" notable_decisions="[]"]
78
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
79
+ // CIL[DOC-STABILITY stability="stable"]
16
80
  async function getProject(project_id: string) {
17
81
  const { data: project } = await adminDb.from('items').select('data')
18
82
  .eq('id', project_id).maybeSingle()
19
83
  if (!project) throw new Error(`Project not found: ${project_id}`)
20
84
  return project
21
85
  }
86
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the getProject function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
87
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
88
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
89
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
90
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
91
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
92
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getProject:function"]
93
+
22
94
 
95
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getCompletedSteps:function" type="function" identity="getCompletedSteps" parent="~/.framework/functions/cil-pipeline.ts"]
96
+ // CIL[DOC-MACRO purpose="Define the getCompletedSteps function"]
97
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the getCompletedSteps function for the CIL pipeline"]
98
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
99
+ // CIL[DOC-CONTRACT inputs="status: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
100
+ // CIL[DOC-MICRO logic_summary="Implements the getCompletedSteps function" notable_decisions="[]"]
101
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
102
+ // CIL[DOC-STABILITY stability="stable"]
23
103
  function getCompletedSteps(status: string): PipelineStep[] {
24
- const stepMap: Record<string, PipelineStep> = {
25
- '4-chunked': 4,
26
- '5-documented': 5,
27
- '6-embedded': 6,
28
- '7-mapped': 7,
29
- '7.5-selected': 7,
30
- '8-enriched': 8,
31
- '9-embedded': 9,
32
- '10-mapped': 10,
33
- }
104
+ const rank = pipelineRank(status)
34
105
  const completed: PipelineStep[] = []
35
- for (const [statusName, stepNum] of Object.entries(stepMap)) {
36
- if (status === statusName) {
37
- completed.push(stepNum)
38
- }
106
+ for (const step of Object.keys(PIPELINE_STEPS) as PipelineStep[]) {
107
+ if (Number(step) <= rank) completed.push(step)
39
108
  }
40
109
  return completed
41
110
  }
111
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the getCompletedSteps function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
112
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
113
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
114
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
115
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
116
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
117
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getCompletedSteps:function"]
42
118
 
119
+
120
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getReadySteps:function" type="function" identity="getReadySteps" parent="~/.framework/functions/cil-pipeline.ts"]
121
+ // CIL[DOC-MACRO purpose="Define the getReadySteps function"]
122
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the getReadySteps function for the CIL pipeline"]
123
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
124
+ // CIL[DOC-CONTRACT inputs="status: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
125
+ // CIL[DOC-MICRO logic_summary="Implements the getReadySteps function" notable_decisions="[]"]
126
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
127
+ // CIL[DOC-STABILITY stability="stable"]
43
128
  function getReadySteps(status: string): PipelineStep[] {
44
129
  const completed = getCompletedSteps(status)
45
130
  const ready: PipelineStep[] = []
@@ -51,7 +136,26 @@ function getReadySteps(status: string): PipelineStep[] {
51
136
  }
52
137
  return ready
53
138
  }
139
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the getReadySteps function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
140
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
141
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
142
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
143
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
144
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
145
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getReadySteps:function"]
146
+
147
+ // CIL[DOC-STABILITY stability="internal"]
148
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
149
+ // CIL[DOC-CONTEXT module="unknown" layer="unknown" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
54
150
 
151
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getBlockedSteps:function" type="function" identity="getBlockedSteps" parent="~/.framework/functions/cil-pipeline.ts"]
152
+ // CIL[DOC-MACRO purpose="Define the getBlockedSteps function"]
153
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the getBlockedSteps function for the CIL pipeline"]
154
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
155
+ // CIL[DOC-CONTRACT inputs="status: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
156
+ // CIL[DOC-MICRO logic_summary="Implements the getBlockedSteps function" notable_decisions="[]"]
157
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
158
+ // CIL[DOC-STABILITY stability="stable"]
55
159
  function getBlockedSteps(status: string): PipelineStep[] {
56
160
  const completed = getCompletedSteps(status)
57
161
  const blocked: PipelineStep[] = []
@@ -63,13 +167,45 @@ function getBlockedSteps(status: string): PipelineStep[] {
63
167
  }
64
168
  return blocked
65
169
  }
170
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the getBlockedSteps function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.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"]
174
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
175
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
176
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getBlockedSteps:function"]
66
177
 
178
+
179
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:calculateProgress:function" type="function" identity="calculateProgress" parent="~/.framework/functions/cil-pipeline.ts"]
180
+ // CIL[DOC-MACRO purpose="Define the calculateProgress function"]
181
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the calculateProgress function for the CIL pipeline"]
182
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
183
+ // CIL[DOC-CONTRACT inputs="status: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
184
+ // CIL[DOC-MICRO logic_summary="Implements the calculateProgress function" notable_decisions="[]"]
185
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
186
+ // CIL[DOC-STABILITY stability="stable"]
67
187
  function calculateProgress(status: string): number {
68
188
  const completed = getCompletedSteps(status)
69
189
  const totalSteps = Object.keys(PIPELINE_STEPS).length
70
190
  return (completed.length / totalSteps) * 100
71
191
  }
192
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the calculateProgress function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
193
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
194
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
195
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
196
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
197
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
198
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:calculateProgress:function"]
199
+
72
200
 
201
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getBlockingReasons:function" type="function" identity="getBlockingReasons" parent="~/.framework/functions/cil-pipeline.ts"]
202
+ // CIL[DOC-MACRO purpose="Define the getBlockingReasons function"]
203
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the getBlockingReasons function for the CIL pipeline"]
204
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
205
+ // CIL[DOC-CONTRACT inputs="status: string, step: PipelineStep" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
206
+ // CIL[DOC-MICRO logic_summary="Implements the getBlockingReasons function" notable_decisions="[]"]
207
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
208
+ // CIL[DOC-STABILITY stability="stable"]
73
209
  function getBlockingReasons(status: string, step: PipelineStep): string[] {
74
210
  const completed = getCompletedSteps(status)
75
211
  const reasons: string[] = []
@@ -80,7 +216,23 @@ function getBlockingReasons(status: string, step: PipelineStep): string[] {
80
216
  }
81
217
  return reasons
82
218
  }
219
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the getBlockingReasons function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
220
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
221
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
222
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
223
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
224
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
225
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getBlockingReasons:function"]
226
+
83
227
 
228
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getStepBlockingReasons:function" type="function" identity="getStepBlockingReasons" parent="~/.framework/functions/cil-pipeline.ts"]
229
+ // CIL[DOC-MACRO purpose="Define the getStepBlockingReasons function"]
230
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the getStepBlockingReasons function for the CIL pipeline"]
231
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
232
+ // CIL[DOC-CONTRACT inputs="files: Array<[string, string]>, step: PipelineStep" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
233
+ // CIL[DOC-MICRO logic_summary="Implements the getStepBlockingReasons function" notable_decisions="[]"]
234
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
235
+ // CIL[DOC-STABILITY stability="stable"]
84
236
  function getStepBlockingReasons(files: Array<[string, string]>, step: PipelineStep): string[] {
85
237
  const blockingReasons: string[] = []
86
238
  for (const [file_path, status] of files) {
@@ -95,7 +247,23 @@ function getStepBlockingReasons(files: Array<[string, string]>, step: PipelineSt
95
247
  }
96
248
  return [...new Set(blockingReasons)]
97
249
  }
250
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the getStepBlockingReasons function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
251
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
252
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
253
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
254
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
255
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
256
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getStepBlockingReasons:function"]
98
257
 
258
+
259
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getOptimalProcessingOrder:function" type="function" identity="getOptimalProcessingOrder" parent="~/.framework/functions/cil-pipeline.ts"]
260
+ // CIL[DOC-MACRO purpose="Define the getOptimalProcessingOrder function"]
261
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the getOptimalProcessingOrder function for the CIL pipeline"]
262
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
263
+ // CIL[DOC-CONTRACT inputs="files: Array<[string, string]>" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
264
+ // CIL[DOC-MICRO logic_summary="Implements the getOptimalProcessingOrder function" notable_decisions="[]"]
265
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
266
+ // CIL[DOC-STABILITY stability="stable"]
99
267
  function getOptimalProcessingOrder(files: Array<[string, string]>): Array<{file_path: string, suggested_next_step: PipelineStep | null}> {
100
268
  const fileStates = files.map(([file_path, status]) => ({
101
269
  file_path,
@@ -115,7 +283,23 @@ function getOptimalProcessingOrder(files: Array<[string, string]>): Array<{file_
115
283
  suggested_next_step: ready_for[0] || null
116
284
  }))
117
285
  }
286
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the getOptimalProcessingOrder function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
287
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
288
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
289
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
290
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
291
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
292
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getOptimalProcessingOrder:function"]
293
+
118
294
 
295
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getPipelineStatus:function" type="function" identity="getPipelineStatus" parent="~/.framework/functions/cil-pipeline.ts"]
296
+ // CIL[DOC-MACRO purpose="Define the getPipelineStatus function"]
297
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the getPipelineStatus function for the CIL pipeline"]
298
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
299
+ // CIL[DOC-CONTRACT inputs="project_id: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
300
+ // CIL[DOC-MICRO logic_summary="Implements the getPipelineStatus function" notable_decisions="[]"]
301
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
302
+ // CIL[DOC-STABILITY stability="stable"]
119
303
  async function getPipelineStatus(project_id: string) {
120
304
  const project = await getProject(project_id)
121
305
  const fileStatuses: Record<string, string> = project.data?.file_statuses || {}
@@ -144,7 +328,23 @@ async function getPipelineStatus(project_id: string) {
144
328
  overall_progress: Math.round(overallProgress)
145
329
  }
146
330
  }
331
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the getPipelineStatus function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
332
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
333
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
334
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
335
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
336
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
337
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getPipelineStatus:function"]
147
338
 
339
+
340
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getFilesReadyForStep:function" type="function" identity="getFilesReadyForStep" parent="~/.framework/functions/cil-pipeline.ts"]
341
+ // CIL[DOC-MACRO purpose="Define the getFilesReadyForStep function"]
342
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the getFilesReadyForStep function for the CIL pipeline"]
343
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
344
+ // CIL[DOC-CONTRACT inputs="project_id: string, step: number, include_blocking_info: boolean" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
345
+ // CIL[DOC-MICRO logic_summary="Implements the getFilesReadyForStep function" notable_decisions="[]"]
346
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
347
+ // CIL[DOC-STABILITY stability="stable"]
148
348
  async function getFilesReadyForStep(project_id: string, step: number, include_blocking_info: boolean) {
149
349
  const stepKey = step as PipelineStep
150
350
  if (!PIPELINE_STEPS[stepKey]) {
@@ -194,7 +394,23 @@ async function getFilesReadyForStep(project_id: string, step: number, include_bl
194
394
  files
195
395
  }
196
396
  }
397
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the getFilesReadyForStep function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
398
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
399
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
400
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
401
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
402
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
403
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getFilesReadyForStep:function"]
404
+
197
405
 
406
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:updateFilePipelineState:function" type="function" identity="updateFilePipelineState" parent="~/.framework/functions/cil-pipeline.ts"]
407
+ // CIL[DOC-MACRO purpose="Define the updateFilePipelineState function"]
408
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the updateFilePipelineState function for the CIL pipeline"]
409
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
410
+ // CIL[DOC-CONTRACT inputs="project_id: string, file_path: string, step_completed: number, new_status: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
411
+ // CIL[DOC-MICRO logic_summary="Implements the updateFilePipelineState function" notable_decisions="[]"]
412
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
413
+ // CIL[DOC-STABILITY stability="stable"]
198
414
  async function updateFilePipelineState(
199
415
  project_id: string,
200
416
  file_path: string,
@@ -226,7 +442,23 @@ async function updateFilePipelineState(
226
442
  progress_percentage: calculateProgress(new_status)
227
443
  }
228
444
  }
445
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the updateFilePipelineState function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
446
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
447
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
448
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
449
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
450
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
451
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:updateFilePipelineState:function"]
229
452
 
453
+
454
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:getPipelineBottlenecks:function" type="function" identity="getPipelineBottlenecks" parent="~/.framework/functions/cil-pipeline.ts"]
455
+ // CIL[DOC-MACRO purpose="Define the getPipelineBottlenecks function"]
456
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the getPipelineBottlenecks function for the CIL pipeline"]
457
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
458
+ // CIL[DOC-CONTRACT inputs="project_id: string" outputs="See implementation" errors="May throw on invalid inputs or missing data" side_effects="May query or update project records"]
459
+ // CIL[DOC-MICRO logic_summary="Implements the getPipelineBottlenecks function" notable_decisions="[]"]
460
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
461
+ // CIL[DOC-STABILITY stability="stable"]
230
462
  async function getPipelineBottlenecks(project_id: string) {
231
463
  const project = await getProject(project_id)
232
464
  const fileStatuses: Record<string, string> = project.data?.file_statuses || {}
@@ -274,7 +506,23 @@ async function getPipelineBottlenecks(project_id: string) {
274
506
  }
275
507
  }
276
508
  }
509
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the getPipelineBottlenecks function'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
510
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
511
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
512
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
513
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
514
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
515
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:getPipelineBottlenecks:function"]
516
+
277
517
 
518
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-pipeline.ts:handler:constant" type="constant" identity="handler" parent="~/.framework/functions/cil-pipeline.ts"]
519
+ // CIL[DOC-MACRO purpose="Define the handler constant"]
520
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the handler constant for the CIL pipeline"]
521
+ // CIL[DOC-CONTEXT module="cil-pipeline" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/cil-pipeline.ts"]
522
+ // CIL[DOC-CONTRACT inputs="None" outputs="handler constant definition" errors="None" side_effects="None"]
523
+ // CIL[DOC-MICRO logic_summary="Implements the handler constant" notable_decisions="[]"]
524
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
525
+ // CIL[DOC-STABILITY stability="stable"]
278
526
  export const handler = createHandler(async (ctx, body) => {
279
527
  const action = ctx.query?.action
280
528
  if (!action) throw new Error('action is required')
@@ -316,3 +564,10 @@ export const handler = createHandler(async (ctx, body) => {
316
564
 
317
565
  throw new Error(`Unknown action: ${action}`)
318
566
  })
567
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the handler constant'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/cil.ts"]
568
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
569
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
570
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
571
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
572
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
573
+ // CIL[END stable_id="~/.framework/functions/cil-pipeline.ts:handler:constant"]