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,22 +1,12 @@
1
- // CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_config_module_header_1784235266" type="module_header" identity="module_header" parent="none"]
2
- // CIL[DOC-MACRO purpose="Module header and top-level exports for cortex.functions.custom_cil-config"]
3
- // CIL[DOC-RESPONSIBILITY responsibility="Own module-level imports, exports, and configuration for cortex.functions.custom_cil-config"]
4
- // CIL[DOC-CONTEXT module="cortex.functions.custom_cil-config" layer="function" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
5
- // CIL[DOC-CONTRACT inputs="none" outputs="module exports and side effects" errors="none" side_effects="none"]
6
- // CIL[DOC-MICRO logic_summary="Declares module scope, imports dependencies, and exports public surface of cortex.functions.custom_cil-config" notable_decisions="[]"]
7
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-config.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/functions/cil-config.ts"]
2
+ // CIL[DOC-MACRO purpose="Configuration extraction and link-pass handler for CIL config knowledge items"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Provides endpoints to scan repo config files, extract fields, persist cil_config items, and link them to source code chunks"]
4
+ // CIL[DOC-CONTEXT module="framework/functions" layer="functions" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts"]
5
+ // CIL[DOC-CONTRACT inputs="HTTP request with action, project_id, optional repo_path/file_path/selected_paths/selected_extensions/force" outputs="JSON status/extraction/link result" errors="project_id or repo_path missing/invalid, DB or FS errors" side_effects="Reads repo files; creates/updates items and links in adminDb"]
6
+ // CIL[DOC-MICRO logic_summary="Imports shared utilities and defines the Netlify-style handler" notable_decisions="Uses adminDb and admin-data CRUD helpers; keeps file scanning and field extraction in the same module"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
8
  // CIL[DOC-STABILITY stability="stable"]
9
- // CIL[DOC-AUDIENCE audience="developer"]
10
- // CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
11
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
12
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
13
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
14
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
15
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
16
-
17
-
18
-
19
-
9
+ // CIL[DOC-AUDIENCE audience="spine-cil,framework-maintainers"]
20
10
 
21
11
  import { createHandler } from './_shared/middleware'
22
12
  import { adminDb } from './_shared/db'
@@ -25,6 +15,13 @@ import { create as adminCreate, update as adminUpdate } from './admin-data'
25
15
  import { isSelectedPath } from './_shared/cil'
26
16
  import * as fs from 'fs'
27
17
  import * as path from 'path'
18
+ // CIL[DOC-VECTOR type="context" content="purpose='Configuration extraction and link-pass handler for CIL config knowledge items'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
19
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
20
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
21
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
22
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
23
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
24
+ // CIL[END stable_id="~/.framework/functions/cil-config.ts:module_header:module_header"]
28
25
 
29
26
 
30
27
 
@@ -32,23 +29,14 @@ import * as path from 'path'
32
29
 
33
30
 
34
31
 
35
-
36
-
37
- // CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_config_module_header_1784235266"]
38
- // CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_config_extractedconfigfield_1784235266" type="interface" identity="extractedconfigfield" parent="none"]
39
- // CIL[DOC-MACRO purpose="Defines the extractedconfigfield type contract in cortex.functions.custom_cil-config"]
40
- // CIL[DOC-RESPONSIBILITY responsibility="Describe the shape and allowed fields for extractedconfigfield"]
41
- // CIL[DOC-CONTEXT module="cortex.functions.custom_cil-config" layer="function" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
42
- // CIL[DOC-CONTRACT inputs="none" outputs="type definition for extractedconfigfield" errors="none" side_effects="none"]
43
- // CIL[DOC-MICRO logic_summary="Declares TypeScript type/interface extractedconfigfield with member definitions" notable_decisions="[]"]
44
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
32
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-config.ts:ExtractedConfigField:interface" type="interface" identity="ExtractedConfigField" parent="~/.framework/functions/cil-config.ts"]
33
+ // CIL[DOC-MACRO purpose="Data shape for a single configuration field extracted from a repo file"]
34
+ // CIL[DOC-RESPONSIBILITY responsibility="Defines the typed record used by JSON/ENV/SQL extractors"]
35
+ // CIL[DOC-CONTEXT module="framework/functions" layer="domain" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-config.ts"]
36
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="TypeScript interface definition" errors="N/A" side_effects="N/A"]
37
+ // CIL[DOC-MICRO logic_summary="Contract for config field metadata including name, type, default, description, source file and source type" notable_decisions="Restricted to known source types and a closed field_type union"]
38
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
45
39
  // CIL[DOC-STABILITY stability="stable"]
46
- // CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
47
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
48
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
49
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
50
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
51
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
52
40
  interface ExtractedConfigField {
53
41
  field_name: string
54
42
  field_type: 'string' | 'number' | 'boolean' | 'json' | 'env' | 'unknown'
@@ -57,6 +45,13 @@ interface ExtractedConfigField {
57
45
  source_file: string
58
46
  source_type: 'json' | 'env' | 'sql' | 'ts'
59
47
  }
48
+ // CIL[DOC-VECTOR type="context" content="purpose='Data shape for a single configuration field extracted from a repo file'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
49
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
50
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
51
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
52
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
53
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
54
+ // CIL[END stable_id="~/.framework/functions/cil-config.ts:ExtractedConfigField:interface"]
60
55
 
61
56
 
62
57
 
@@ -67,21 +62,14 @@ interface ExtractedConfigField {
67
62
 
68
63
 
69
64
 
70
- // CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_config_extractedconfigfield_1784235266"]
71
- // CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_config_config_file_patterns_1784235266" type="variable" identity="config_file_patterns" parent="none"]
72
- // CIL[DOC-MACRO purpose="Defines config_file_patterns configuration or state in cortex.functions.custom_cil-config"]
73
- // CIL[DOC-RESPONSIBILITY responsibility="Hold the value and default configuration for config_file_patterns"]
74
- // CIL[DOC-CONTEXT module="cortex.functions.custom_cil-config" layer="function" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
75
- // CIL[DOC-CONTRACT inputs="none" outputs="value of config_file_patterns" errors="none" side_effects="none"]
76
- // CIL[DOC-MICRO logic_summary="Declares config_file_patterns with initial value or constant binding used by cortex.functions.custom_cil-config" notable_decisions="[]"]
77
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
78
- // CIL[DOC-STABILITY stability="stable"]
79
- // CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/pages/admin/IntegrationsPage.tsx, custom/apps/portal/pages/ContentPage.tsx, \."]
80
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
81
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
82
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
83
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
84
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
65
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-config.ts:CONFIG_FILE_PATTERNS:constant" type="constant" identity="CONFIG_FILE_PATTERNS" parent="~/.framework/functions/cil-config.ts"]
66
+ // CIL[DOC-MACRO purpose="Regex patterns that identify config files to scan in a repo"]
67
+ // CIL[DOC-RESPONSIBILITY responsibility="Defines the file glob regexes and associated source types used by the file walker"]
68
+ // CIL[DOC-CONTEXT module="framework/functions" layer="config" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-config.ts"]
69
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="Array of glob/source_type pairs" errors="N/A" side_effects="N/A"]
70
+ // CIL[DOC-STABILITY stability="internal"]
71
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
72
+ // CIL[DOC-MICRO logic_summary="Static list of regexes for JSON/ENV/SQL config files and migrations" notable_decisions="Uses RegExp.test against relative repo paths; excludes dotfiles except .env variants"]
85
73
  const CONFIG_FILE_PATTERNS: { glob: RegExp; source_type: ExtractedConfigField['source_type'] }[] = [
86
74
  { glob: /spine\.config\.json$/, source_type: 'json' },
87
75
  { glob: /\.env(\.example|\.local|\.prod)?$/, source_type: 'env' },
@@ -91,7 +79,14 @@ const CONFIG_FILE_PATTERNS: { glob: RegExp; source_type: ExtractedConfigField['s
91
79
  { glob: /tsconfig[^/]*\.json$/, source_type: 'json' },
92
80
  { glob: /migrations\/\d+_.*\.sql$/, source_type: 'sql' },
93
81
  ]
82
+ // CIL[END stable_id="~/.framework/functions/cil-config.ts:CONFIG_FILE_PATTERNS:constant"]
94
83
 
84
+ // CIL[DOC-VECTOR type="context" content="purpose='Regex patterns that identify config files to scan in a repo'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
85
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
86
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
87
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
88
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
89
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
95
90
 
96
91
 
97
92
 
@@ -100,21 +95,14 @@ const CONFIG_FILE_PATTERNS: { glob: RegExp; source_type: ExtractedConfigField['s
100
95
 
101
96
 
102
97
 
103
- // CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_config_config_file_patterns_1784235266"]
104
- // CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_config_extractfromjson_1784235266" type="function" identity="extractfromjson" parent="none"]
105
- // CIL[DOC-MACRO purpose="Implements extractfromjson logic in cortex.functions.custom_cil-config"]
106
- // CIL[DOC-RESPONSIBILITY responsibility="Execute extractfromjson and return its computed result"]
107
- // CIL[DOC-CONTEXT module="cortex.functions.custom_cil-config" layer="function" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"\\\"]"]
108
- // CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
109
- // CIL[DOC-MICRO logic_summary="Provides extractfromjson with extractFromJson(content: string, sourceFile: string inputs, handling internal flow and returning a result" notable_decisions="[]"]
110
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
98
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-config.ts:extractFromJson:function" type="function" identity="extractFromJson" parent="~/.framework/functions/cil-config.ts"]
99
+ // CIL[DOC-MACRO purpose="Walk a JSON object and emit flat configuration fields"]
100
+ // CIL[DOC-RESPONSIBILITY responsibility="Converts a JSON file's top-level object into ExtractedConfigField records, recursing shallow nested objects"]
101
+ // CIL[DOC-CONTEXT module="framework/functions" layer="extraction" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-config.ts"]
102
+ // CIL[DOC-CONTRACT inputs="content: string, sourceFile: string" outputs="ExtractedConfigField[]" errors="Swallowed JSON parse failures" side_effects="N/A"]
103
+ // CIL[DOC-MICRO logic_summary="Parses JSON and walks object keys, assigning primitive types and stringified defaults, recursing one level of nested objects" notable_decisions="Cap default JSON object values at 200 chars; type 'unknown' for null; recursion depth capped at prefix.length < 2"]
104
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
111
105
  // CIL[DOC-STABILITY stability="stable"]
112
- // CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/migrations/015_simplify_apps_table.sql, \."]
113
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
114
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
115
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
116
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
117
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
118
106
  function extractFromJson(content: string, sourceFile: string): ExtractedConfigField[] {
119
107
  const fields: ExtractedConfigField[] = []
120
108
  try {
@@ -148,24 +136,26 @@ function extractFromJson(content: string, sourceFile: string): ExtractedConfigFi
148
136
  }
149
137
  return fields
150
138
  }
139
+ // CIL[DOC-VECTOR type="context" content="purpose='Walk a JSON object and emit flat configuration fields'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.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-config.ts:extractFromJson:function"]
151
146
 
152
147
 
153
148
 
154
- // CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_config_extractfromjson_1784235266"]
155
- // CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_config_extractfromenv_1784235266" type="function" identity="extractfromenv" parent="none"]
156
- // CIL[DOC-MACRO purpose="Implements extractfromenv logic in cortex.functions.custom_cil-config"]
157
- // CIL[DOC-RESPONSIBILITY responsibility="Execute extractfromenv and return its computed result"]
158
- // CIL[DOC-CONTEXT module="cortex.functions.custom_cil-config" layer="function" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\"]"]
159
- // CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
160
- // CIL[DOC-MICRO logic_summary="Provides extractfromenv with extractFromEnv(content: string, sourceFile: string inputs, handling internal flow and returning a result" notable_decisions="[]"]
161
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
162
- // CIL[DOC-STABILITY stability="stable"]
163
- // CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/migrations/015_simplify_apps_table.sql."]
164
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
165
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
166
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
167
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
168
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
149
+
150
+
151
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-config.ts:extractFromEnv:function" type="function" identity="extractFromEnv" parent="~/.framework/functions/cil-config.ts"]
152
+ // CIL[DOC-MACRO purpose="Parse an env-style file into configuration fields"]
153
+ // CIL[DOC-RESPONSIBILITY responsibility="Reads KEY=VALUE lines, skipping blanks and comments, and returns env-typed fields"]
154
+ // CIL[DOC-CONTEXT module="framework/functions" layer="extraction" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-config.ts"]
155
+ // CIL[DOC-STABILITY stability="internal"]
156
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
157
+ // CIL[DOC-CONTRACT inputs="content: string, sourceFile: string" outputs="ExtractedConfigField[]" errors="N/A" side_effects="N/A"]
158
+ // CIL[DOC-MICRO logic_summary="Splits content by newline, trims, ignores blanks/comments, splits on first '=' and records key/value pairs" notable_decisions="Env values are stored verbatim; missing value becomes empty string"]
169
159
  function extractFromEnv(content: string, sourceFile: string): ExtractedConfigField[] {
170
160
  const fields: ExtractedConfigField[] = []
171
161
  const lines = content.split('\n')
@@ -188,24 +178,26 @@ function extractFromEnv(content: string, sourceFile: string): ExtractedConfigFie
188
178
  }
189
179
  return fields
190
180
  }
181
+ // CIL[END stable_id="~/.framework/functions/cil-config.ts:extractFromEnv:function"]
182
+
183
+ // CIL[DOC-VECTOR type="context" content="purpose='Parse an env-style file into configuration fields'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
184
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
185
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
186
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
187
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
188
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
191
189
 
192
190
 
191
+ // 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/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-config.ts"]
193
192
 
194
- // CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_config_extractfromenv_1784235266"]
195
- // CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_config_extractfromsql_1784235266" type="function" identity="extractfromsql" parent="none"]
196
- // CIL[DOC-MACRO purpose="Implements extractfromsql logic in cortex.functions.custom_cil-config"]
197
- // CIL[DOC-RESPONSIBILITY responsibility="Execute extractfromsql and return its computed result"]
198
- // CIL[DOC-CONTEXT module="cortex.functions.custom_cil-config" layer="function" related_files="[]"]
199
- // CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
200
- // CIL[DOC-MICRO logic_summary="Provides extractfromsql with extractFromSql(content: string, sourceFile: string inputs, handling internal flow and returning a result" notable_decisions="[]"]
201
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
193
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-config.ts:extractFromSql:function" type="function" identity="extractFromSql" parent="~/.framework/functions/cil-config.ts"]
194
+ // CIL[DOC-MACRO purpose="Extract table.column definitions from SQL CREATE TABLE statements"]
195
+ // CIL[DOC-RESPONSIBILITY responsibility="Parses SQL migration files for column names to generate config field slugs"]
196
+ // CIL[DOC-CONTEXT module="framework/functions" layer="extraction" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-config.ts"]
197
+ // CIL[DOC-CONTRACT inputs="content: string, sourceFile: string" outputs="ExtractedConfigField[]" errors="N/A" side_effects="N/A"]
198
+ // CIL[DOC-MICRO logic_summary="Regex matches CREATE TABLE blocks and column lines, filters out constraints/indexes, emits table.column fields" notable_decisions="Uses case-insensitive regex; skips columns named like constraint keywords"]
199
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
202
200
  // CIL[DOC-STABILITY stability="stable"]
203
- // CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
204
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
205
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
206
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
207
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
208
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
209
201
  function extractFromSql(content: string, sourceFile: string): ExtractedConfigField[] {
210
202
 
211
203
  const fields: ExtractedConfigField[] = []
@@ -231,26 +223,28 @@ function extractFromSql(content: string, sourceFile: string): ExtractedConfigFie
231
223
  }
232
224
  return fields
233
225
  }
226
+ // CIL[DOC-VECTOR type="context" content="purpose='Extract table.column definitions from SQL CREATE TABLE statements'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
227
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
228
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
229
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
230
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
231
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
232
+ // CIL[END stable_id="~/.framework/functions/cil-config.ts:extractFromSql:function"]
233
+
234
+
234
235
 
235
236
 
236
237
 
237
238
 
238
239
 
239
- // CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_config_extractfromsql_1784235266"]
240
- // CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_config_walkforconfigfiles_1784235266" type="function" identity="walkforconfigfiles" parent="none"]
241
- // CIL[DOC-MACRO purpose="Implements walkforconfigfiles logic in cortex.functions.custom_cil-config"]
242
- // CIL[DOC-RESPONSIBILITY responsibility="Execute walkforconfigfiles and return its computed result"]
243
- // CIL[DOC-CONTEXT module="cortex.functions.custom_cil-config" layer="function" related_files="[]"]
244
- // CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
245
- // CIL[DOC-MICRO logic_summary="Provides walkforconfigfiles with walkForConfigFiles(repoPath: string, maxDepth = 3 inputs, handling internal flow and returning a result" notable_decisions="[]"]
246
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
240
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-config.ts:walkForConfigFiles:function" type="function" identity="walkForConfigFiles" parent="~/.framework/functions/cil-config.ts"]
241
+ // CIL[DOC-MACRO purpose="Recursively discover potential config files within a repository"]
242
+ // CIL[DOC-RESPONSIBILITY responsibility="Walks repo directories up to maxDepth and returns matching relative paths"]
243
+ // CIL[DOC-CONTEXT module="framework/functions" layer="extraction" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-config.ts"]
244
+ // CIL[DOC-CONTRACT inputs="repoPath: string, maxDepth: number=3" outputs="string[]" errors="Silently skips unreadable directories" side_effects="Reads directory listings via fs"]
245
+ // CIL[DOC-MICRO logic_summary="Recursive fs.readdirSync traversal that excludes dotfiles, build folders and node_modules, then regex-matches rel paths against CONFIG_FILE_PATTERNS" notable_decisions="Depth limit starts at 0 and compares > maxDepth; .env files allowed despite leading dot"]
246
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
247
247
  // CIL[DOC-STABILITY stability="stable"]
248
- // CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
249
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
250
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
251
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
252
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
253
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
254
248
  function walkForConfigFiles(repoPath: string, maxDepth = 3): string[] {
255
249
  const results: string[] = []
256
250
  const walk = (dir: string, depth: number) => {
@@ -276,26 +270,28 @@ function walkForConfigFiles(repoPath: string, maxDepth = 3): string[] {
276
270
  walk(repoPath, 0)
277
271
  return results
278
272
  }
273
+ // CIL[DOC-VECTOR type="context" content="purpose='Recursively discover potential config files within a repository'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
274
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
275
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
276
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
277
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
278
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
279
+ // CIL[END stable_id="~/.framework/functions/cil-config.ts:walkForConfigFiles:function"]
280
+
279
281
 
280
282
 
281
283
 
282
284
 
283
285
 
284
- // CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_config_walkforconfigfiles_1784235266"]
285
- // CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_config_handler_1784235266" type="variable" identity="handler" parent="none"]
286
- // CIL[DOC-MACRO purpose="Defines handler configuration or state in cortex.functions.custom_cil-config"]
287
- // CIL[DOC-RESPONSIBILITY responsibility="Hold the value and default configuration for handler"]
288
- // CIL[DOC-CONTEXT module="cortex.functions.custom_cil-config" layer="function" related_files="[]"]
289
- // CIL[DOC-CONTRACT inputs="none" outputs="value of handler" errors="none" side_effects="none"]
290
- // CIL[DOC-MICRO logic_summary="Declares handler with initial value or constant binding used by cortex.functions.custom_cil-config" notable_decisions="[]"]
291
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
286
+
287
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-config.ts:handler:constant" type="constant" identity="handler" parent="~/.framework/functions/cil-config.ts"]
288
+ // CIL[DOC-MACRO purpose="Netlify-style function handler for config extraction and CIL config linking"]
289
+ // CIL[DOC-RESPONSIBILITY responsibility="Dispatches status/extract/run/link actions, persists cil_config items and creates configures links"]
290
+ // CIL[DOC-CONTEXT module="framework/functions" layer="functions" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-config.ts"]
291
+ // CIL[DOC-CONTRACT inputs="ctx, body: {action, project_id, repo_path?, file_path?, selected_paths?, selected_extensions?, force?}" outputs="JSON result for status/extract/run/link" errors="Throws on missing project_id/repo_path, unknown action, or DB/FS failures" side_effects="Queries and inserts/updates items and links in adminDb"]
292
+ // CIL[DOC-MICRO logic_summary="createHandler wrapper that dispatches actions: status counts items, extract/run scans files and upserts cil_config items, link calls runLinkPass" notable_decisions="Uses resolveTypeId for 'item'; resolves 'cil_configures' link type; supports force to overwrite existing config; batches links in 500 ID chunks"]
293
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
292
294
  // CIL[DOC-STABILITY stability="stable"]
293
- // CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
294
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
295
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
296
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
297
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
298
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
299
295
  export const handler = createHandler(async (ctx, body) => {
300
296
  const action = ctx.query?.action || body?.action || 'run'
301
297
  const projectId = ctx.query?.project_id || body?.project_id
@@ -473,26 +469,28 @@ export const handler = createHandler(async (ctx, body) => {
473
469
 
474
470
  throw new Error(`Unknown action: ${action}. Valid: extract, link, run, status`)
475
471
  })
472
+ // CIL[DOC-VECTOR type="context" content="purpose='Netlify-style function handler for config extraction and CIL config linking'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
473
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
474
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
475
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
476
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
477
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
478
+ // CIL[END stable_id="~/.framework/functions/cil-config.ts:handler:constant"]
476
479
 
477
480
 
478
481
 
479
482
 
480
483
 
481
- // CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_config_handler_1784235266"]
482
- // CIL[BEGIN chunk_id="custom_apps_cortex_functions_custom_cil_config_runlinkpass_1784235266" type="function" identity="runlinkpass" parent="none"]
483
- // CIL[DOC-MACRO purpose="Implements runlinkpass logic in cortex.functions.custom_cil-config"]
484
- // CIL[DOC-RESPONSIBILITY responsibility="Execute runlinkpass and return its computed result"]
485
- // CIL[DOC-CONTEXT module="cortex.functions.custom_cil-config" layer="function" related_files="[]"]
486
- // CIL[DOC-CONTRACT inputs="none" outputs="return value from function execution" errors="throws on invalid input or runtime failure" side_effects="none"]
487
- // CIL[DOC-MICRO logic_summary="Provides runlinkpass with runLinkPass( inputs, handling internal flow and returning a result" notable_decisions="[]"]
488
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
484
+
485
+
486
+ // CIL[BEGIN stable_id="~/.framework/functions/cil-config.ts:runLinkPass:function" type="function" identity="runLinkPass" parent="~/.framework/functions/cil-config.ts"]
487
+ // CIL[DOC-MACRO purpose="Create cil_configures links between config items and code chunks"]
488
+ // CIL[DOC-RESPONSIBILITY responsibility="Matches config field names against chunk code content and inserts missing links"]
489
+ // CIL[DOC-CONTEXT module="framework/functions" layer="functions" related_files=".framework/functions/_shared/cil.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/middleware.ts,.framework/functions/_shared/resolve-ids.ts,.framework/functions/admin-data.ts,.framework/functions/cil-config.ts"]
490
+ // CIL[DOC-CONTRACT inputs="ctx, projectId: string, errors: string[]" outputs="{configures_links_created: number}" errors="N/A" side_effects="Inserts links into adminDb"]
491
+ // CIL[DOC-MICRO logic_summary="Fetches config and chunk items, searches chunk code for field or env patterns, deduplicates against existing links, inserts new links" notable_decisions="Env fields match process.env.<name>; non-env match short name word boundary; 500 ID IN limit for existing link checks"]
492
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
489
493
  // CIL[DOC-STABILITY stability="stable"]
490
- // CIL[DOC-VECTOR type="context" content="Layer: function. Direct callers: 0. Direct calls: 0. Related files: none."]
491
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
492
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
493
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
494
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
495
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
496
494
  async function runLinkPass(
497
495
  ctx: any,
498
496
  projectId: string,
@@ -576,8 +574,14 @@ async function runLinkPass(
576
574
 
577
575
  return { configures_links_created: linksCreated }
578
576
  }
577
+ // CIL[DOC-VECTOR type="context" content="purpose='Create cil_configures links between config items and code chunks'; No verified external callers; imports: .framework/functions/_shared/middleware.ts,.framework/functions/_shared/db.ts,.framework/functions/_shared/resolve-ids.ts"]
578
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
579
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
580
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
581
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
582
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
583
+ // CIL[END stable_id="~/.framework/functions/cil-config.ts:runLinkPass:function"]
579
584
 
580
585
 
581
586
 
582
587
 
583
- // CIL[END chunk_id="custom_apps_cortex_functions_custom_cil_config_runlinkpass_1784235266"]