spine-framework 0.3.144 → 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 +20 -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,91 +1,115 @@
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
- // CIL[BEGIN chunk_id="AppContext_module_header_1783749485" type="module_header" identity="module_header" parent="none"]
10
- // CIL[DOC-MACRO purpose="Module imports and type definitions"]
11
- // CIL[DOC-RESPONSIBILITY responsibility="Define React context types and import dependencies"]
12
- // CIL[DOC-CONTEXT module="AppContext" layer="frontend-context" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/db.ts\",\"\\\"]"]
13
- // CIL[DOC-CONTRACT inputs="none" outputs="type definitions" errors="none" side_effects="none"]
14
- // CIL[DOC-MICRO logic_summary="Sets up imports and context interfaces for app management" notable_decisions="[]"]
15
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/contexts/AppContext.tsx"]
2
+ // CIL[DOC-MACRO purpose="Defines React contexts and hooks for the current app and app registry"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide AppContext and AppsRegistryContext along with their consumers and providers"]
4
+ // CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Module-level header with imports" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
16
8
  // CIL[DOC-STABILITY stability="stable"]
17
- // CIL[DOC-AUDIENCE audience="developer"]
18
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-context. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/db.ts, \."]
19
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
20
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
21
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
22
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
23
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
9
+ // CIL[DOC-AUDIENCE audience="developers"]
10
+
24
11
  import React, { createContext, useContext, useState, useEffect, useRef, useCallback } from 'react'
25
12
  import { AppRecord } from '../hooks/useApps'
26
13
  import { apiFetch } from '../lib/api'
27
14
  import { useAuth } from './AuthContext'
15
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines React contexts and hooks for the current app and app registry'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
16
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
17
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
18
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
19
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
20
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
21
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:module_header:module_header"]
22
+
23
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppContextType:interface" type="interface" identity="AppContextType" parent="~/.framework/src/contexts/AppContext.tsx"]
24
+ // CIL[DOC-MACRO purpose="Type definition for the AppContext value"]
25
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the shape of the AppContext value"]
26
+ // CIL[DOC-CONTEXT module="contexts" layer="type" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
27
+ // CIL[DOC-CONTRACT inputs="none" outputs="AppContextType interface" errors="none" side_effects="none"]
28
+ // CIL[DOC-MICRO logic_summary="Declares an app field of type AppRecord" notable_decisions="[]"]
29
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
30
+ // CIL[DOC-STABILITY stability="stable"]
28
31
  interface AppContextType {
29
32
  app: AppRecord
30
33
  }
34
+ // CIL[DOC-VECTOR type="context" content="purpose='Type definition for the AppContext value'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
35
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
36
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
37
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
38
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
39
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
40
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppContextType:interface"]
31
41
 
32
- const AppContext = createContext<AppContextType | undefined>(undefined)
33
- // CIL[END chunk_id="AppContext_module_header_1783749485"]
34
- // CIL[BEGIN chunk_id="AppContext_usecurrentapp_1783749485" type="function" identity="useCurrentApp" parent="none"]
35
- // CIL[DOC-MACRO purpose="Access current app from context"]
36
- // CIL[DOC-RESPONSIBILITY responsibility="Provide current app record to components"]
37
- // CIL[DOC-CONTEXT module="AppContext" layer="frontend-hook" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
38
- // CIL[DOC-CONTRACT inputs="none" outputs="AppRecord" errors="throws if no provider" side_effects="none"]
39
- // CIL[DOC-MICRO logic_summary="Returns app from React context with safety check" notable_decisions="[]"]
40
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
42
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppContext:constant" type="constant" identity="AppContext" parent="~/.framework/src/contexts/AppContext.tsx"]
43
+ // CIL[DOC-MACRO purpose="Creates the React context for the current app"]
44
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a context object that holds the current AppRecord"]
45
+ // CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
46
+ // CIL[DOC-CONTRACT inputs="AppContextType default undefined" outputs="AppContext object" errors="none" side_effects="none"]
47
+ // CIL[DOC-MICRO logic_summary="createContext with undefined default" notable_decisions="[]"]
48
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
41
49
  // CIL[DOC-STABILITY stability="stable"]
42
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 1. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
43
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 8."]
44
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
45
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
50
+ const AppContext = createContext<AppContextType | undefined>(undefined)
51
+ // CIL[DOC-VECTOR type="context" content="purpose='Creates the React context for the current app'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
52
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
53
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
54
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
46
55
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
47
56
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
57
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppContext:constant"]
58
+
59
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:useCurrentApp:hook" type="hook" identity="useCurrentApp" parent="~/.framework/src/contexts/AppContext.tsx"]
60
+ // CIL[DOC-MACRO purpose="Consumes AppContext and returns the current app record"]
61
+ // CIL[DOC-RESPONSIBILITY responsibility="Return the current app from AppContext, throwing if used outside a provider"]
62
+ // CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
63
+ // CIL[DOC-CONTRACT inputs="none" outputs="AppRecord" errors="throws Error if context undefined" side_effects="none"]
64
+ // CIL[DOC-MICRO logic_summary="useContext check and return the app field" notable_decisions="[]"]
65
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
66
+ // CIL[DOC-STABILITY stability="stable"]
48
67
  export function useCurrentApp(): AppRecord {
49
68
  const context = useContext(AppContext)
50
69
  if (context === undefined) {
51
70
  throw new Error('useCurrentApp must be used within an AppProvider')
52
71
  }
72
+
73
+
74
+
53
75
  return context.app
54
76
  }
55
- // CIL[END chunk_id="AppContext_usecurrentapp_1783749485"]
56
- // CIL[BEGIN chunk_id="AppContext_appproviderprops_1783749485" type="interface" identity="AppProviderProps" parent="none"]
57
- // CIL[DOC-MACRO purpose="Define provider props interface"]
58
- // CIL[DOC-RESPONSIBILITY responsibility="Type definition for AppProvider component"]
59
- // CIL[DOC-CONTEXT module="AppContext" layer="frontend-types" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
60
- // CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
61
- // CIL[DOC-MICRO logic_summary="Simple props interface with app and children" notable_decisions="[]"]
62
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
63
- // CIL[DOC-STABILITY stability="stable"]
64
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-types. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
65
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
66
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
67
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
77
+ // CIL[DOC-VECTOR type="context" content="purpose='Consumes AppContext and returns the current app record'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
78
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
79
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
80
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
68
81
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
69
82
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
83
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:useCurrentApp:hook"]
84
+
85
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppProviderProps:interface" type="interface" identity="AppProviderProps" parent="~/.framework/src/contexts/AppContext.tsx"]
86
+ // CIL[DOC-MACRO purpose="Props type for the AppProvider component"]
87
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare app and children props"]
88
+ // CIL[DOC-CONTEXT module="contexts" layer="type" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
89
+ // CIL[DOC-CONTRACT inputs="none" outputs="AppProviderProps interface" errors="none" side_effects="none"]
90
+ // CIL[DOC-MICRO logic_summary="Declares app AppRecord and children ReactNode" notable_decisions="[]"]
91
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
92
+ // CIL[DOC-STABILITY stability="stable"]
70
93
  interface AppProviderProps {
71
94
  app: AppRecord
72
95
  children: React.ReactNode
73
96
  }
74
- // CIL[END chunk_id="AppContext_appproviderprops_1783749485"]
75
- // CIL[BEGIN chunk_id="AppContext_appprovider_1783749485" type="function" identity="AppProvider" parent="none"]
76
- // CIL[DOC-MACRO purpose="Provide current app context"]
77
- // CIL[DOC-RESPONSIBILITY responsibility="Wrap components with app context"]
78
- // CIL[DOC-CONTEXT module="AppContext" layer="frontend-provider" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
79
- // CIL[DOC-CONTRACT inputs="none" outputs="Provider component" errors="none" side_effects="context provider"]
80
- // CIL[DOC-MICRO logic_summary="Simple React context provider wrapper" notable_decisions="[]"]
81
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
82
- // CIL[DOC-STABILITY stability="stable"]
83
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-provider. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
84
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
85
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
86
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
97
+ // CIL[DOC-VECTOR type="context" content="purpose='Props type for the AppProvider component'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
98
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
99
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
100
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
87
101
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
88
102
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
103
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppProviderProps:interface"]
104
+
105
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppProvider:component" type="component" identity="AppProvider" parent="~/.framework/src/contexts/AppContext.tsx"]
106
+ // CIL[DOC-MACRO purpose="Provides the current app context to children"]
107
+ // CIL[DOC-RESPONSIBILITY responsibility="Wrap children in AppContext.Provider with the provided app"]
108
+ // CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
109
+ // CIL[DOC-CONTRACT inputs="app: AppRecord, children: React.ReactNode" outputs="JSX" errors="none" side_effects="none"]
110
+ // CIL[DOC-MICRO logic_summary="Renders AppContext.Provider with a value object" notable_decisions="[]"]
111
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
112
+ // CIL[DOC-STABILITY stability="stable"]
89
113
  export function AppProvider({ app, children }: AppProviderProps) {
90
114
  return (
91
115
  <AppContext.Provider value={{ app }}>
@@ -93,21 +117,22 @@ export function AppProvider({ app, children }: AppProviderProps) {
93
117
  </AppContext.Provider>
94
118
  )
95
119
  }
96
- // CIL[END chunk_id="AppContext_appprovider_1783749485"]
97
- // CIL[BEGIN chunk_id="AppContext_appsregistrycontexttype_1783749485" type="interface" identity="AppsRegistryContextType" parent="none"]
98
- // CIL[DOC-MACRO purpose="Define apps registry context type"]
99
- // CIL[DOC-RESPONSIBILITY responsibility="Type definition for apps registry context"]
100
- // CIL[DOC-CONTEXT module="AppContext" layer="frontend-types" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
101
- // CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
102
- // CIL[DOC-MICRO logic_summary="Defines shape of apps registry context with apps list and loading state" notable_decisions="[]"]
103
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
104
- // CIL[DOC-STABILITY stability="stable"]
105
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-types. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
106
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
107
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
108
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
120
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides the current app context to children'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
121
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
122
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
123
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
109
124
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
110
125
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
126
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppProvider:component"]
127
+
128
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryContextType:interface" type="interface" identity="AppsRegistryContextType" parent="~/.framework/src/contexts/AppContext.tsx"]
129
+ // CIL[DOC-MACRO purpose="Type definition for the apps registry context value"]
130
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the shape of apps registry state and actions"]
131
+ // CIL[DOC-CONTEXT module="contexts" layer="type" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
132
+ // CIL[DOC-CONTRACT inputs="none" outputs="AppsRegistryContextType interface" errors="none" side_effects="none"]
133
+ // CIL[DOC-MICRO logic_summary="Declares apps, routableApps, loading, error, and refetch fields" notable_decisions="[]"]
134
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
135
+ // CIL[DOC-STABILITY stability="stable"]
111
136
  interface AppsRegistryContextType {
112
137
  apps: AppRecord[]
113
138
  routableApps: AppRecord[]
@@ -115,63 +140,84 @@ interface AppsRegistryContextType {
115
140
  error: string | null
116
141
  refetch: () => void
117
142
  }
143
+ // CIL[DOC-VECTOR type="context" content="purpose='Type definition for the apps registry context value'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
144
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
145
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
146
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
147
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
148
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
149
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryContextType:interface"]
118
150
 
119
- const AppsRegistryContext = createContext<AppsRegistryContextType | undefined>(undefined)
120
- // CIL[END chunk_id="AppContext_appsregistrycontexttype_1783749485"]
121
- // CIL[BEGIN chunk_id="AppContext_useappsregistry_1783749485" type="function" identity="useAppsRegistry" parent="none"]
122
- // CIL[DOC-MACRO purpose="Access apps registry from context"]
123
- // CIL[DOC-RESPONSIBILITY responsibility="Provide apps registry data to components"]
124
- // CIL[DOC-CONTEXT module="AppContext" layer="frontend-hook" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
125
- // CIL[DOC-CONTRACT inputs="none" outputs="AppsRegistryContextType" errors="throws if no provider" side_effects="none"]
126
- // CIL[DOC-MICRO logic_summary="Returns apps registry context with safety check" notable_decisions="[]"]
127
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
151
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryContext:constant" type="constant" identity="AppsRegistryContext" parent="~/.framework/src/contexts/AppContext.tsx"]
152
+ // CIL[DOC-MACRO purpose="Creates the React context for the apps registry"]
153
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a context object for the apps registry"]
154
+ // CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
155
+ // CIL[DOC-CONTRACT inputs="none" outputs="AppsRegistryContext object" errors="none" side_effects="none"]
156
+ // CIL[DOC-MICRO logic_summary="createContext with undefined default" notable_decisions="[]"]
157
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
128
158
  // CIL[DOC-STABILITY stability="stable"]
129
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 1. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
130
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
131
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
132
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
159
+ const AppsRegistryContext = createContext<AppsRegistryContextType | undefined>(undefined)
160
+ // CIL[DOC-VECTOR type="context" content="purpose='Creates the React context for the apps registry'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
161
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
162
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
163
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
133
164
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
134
165
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
166
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryContext:constant"]
167
+
168
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:useAppsRegistry:hook" type="hook" identity="useAppsRegistry" parent="~/.framework/src/contexts/AppContext.tsx"]
169
+ // CIL[DOC-MACRO purpose="Consumes AppsRegistryContext and returns the registry state"]
170
+ // CIL[DOC-RESPONSIBILITY responsibility="Return the apps registry context, throwing if used outside a provider"]
171
+ // CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
172
+ // CIL[DOC-CONTRACT inputs="none" outputs="AppsRegistryContextType" errors="throws Error if context undefined" side_effects="none"]
173
+ // CIL[DOC-MICRO logic_summary="useContext check and return the context object" notable_decisions="[]"]
174
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
175
+ // CIL[DOC-STABILITY stability="stable"]
135
176
  export function useAppsRegistry(): AppsRegistryContextType {
136
177
  const context = useContext(AppsRegistryContext)
137
178
  if (context === undefined) {
138
179
  throw new Error('useAppsRegistry must be used within an AppsRegistryProvider')
139
180
  }
181
+
182
+
183
+
140
184
  return context
141
185
  }
142
- // CIL[END chunk_id="AppContext_useappsregistry_1783749485"]
143
- // CIL[BEGIN chunk_id="AppContext_appsregistryproviderprops_1783749485" type="interface" identity="AppsRegistryProviderProps" parent="none"]
144
- // CIL[DOC-MACRO purpose="Define registry provider props interface"]
145
- // CIL[DOC-RESPONSIBILITY responsibility="Type definition for AppsRegistryProvider component"]
146
- // CIL[DOC-CONTEXT module="AppContext" layer="frontend-types" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
147
- // CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
148
- // CIL[DOC-MICRO logic_summary="Simple props interface with only children" notable_decisions="[]"]
149
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
150
- // CIL[DOC-STABILITY stability="stable"]
151
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-types. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
152
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
153
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
154
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
186
+ // CIL[DOC-VECTOR type="context" content="purpose='Consumes AppsRegistryContext and returns the registry state'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
187
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
188
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
189
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
155
190
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
156
191
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
192
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:useAppsRegistry:hook"]
193
+
194
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryProviderProps:interface" type="interface" identity="AppsRegistryProviderProps" parent="~/.framework/src/contexts/AppContext.tsx"]
195
+ // CIL[DOC-MACRO purpose="Props type for the AppsRegistryProvider component"]
196
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the children prop"]
197
+ // CIL[DOC-CONTEXT module="contexts" layer="type" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
198
+ // CIL[DOC-CONTRACT inputs="none" outputs="AppsRegistryProviderProps interface" errors="none" side_effects="none"]
199
+ // CIL[DOC-MICRO logic_summary="Declares children ReactNode" notable_decisions="[]"]
200
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
201
+ // CIL[DOC-STABILITY stability="stable"]
157
202
  interface AppsRegistryProviderProps {
158
203
  children: React.ReactNode
159
204
  }
160
- // CIL[END chunk_id="AppContext_appsregistryproviderprops_1783749485"]
161
- // CIL[BEGIN chunk_id="AppContext_appsregistryprovider_1783749485" type="function" identity="AppsRegistryProvider" parent="none"]
162
- // CIL[DOC-MACRO purpose="Fetch and provide apps registry"]
163
- // CIL[DOC-RESPONSIBILITY responsibility="Manage apps registry state and API calls"]
164
- // CIL[DOC-CONTEXT module="AppContext" layer="frontend-provider" related_files="[]"]
165
- // CIL[DOC-CONTRACT inputs="none" outputs="Provider component" errors="network errors" side_effects="API calls, state updates"]
166
- // CIL[DOC-MICRO logic_summary="Fetches apps list, filters by domain, provides registry context" notable_decisions="[]"]
167
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
168
- // CIL[DOC-STABILITY stability="stable"]
169
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-provider. Direct callers: 0. Direct calls: 0. Related files: none."]
170
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
171
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
172
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
205
+ // CIL[DOC-VECTOR type="context" content="purpose='Props type for the AppsRegistryProvider component'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
206
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
207
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
208
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
173
209
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
174
210
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
211
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryProviderProps:interface"]
212
+
213
+ // CIL[BEGIN stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryProvider:component" type="component" identity="AppsRegistryProvider" parent="~/.framework/src/contexts/AppContext.tsx"]
214
+ // CIL[DOC-MACRO purpose="Fetches and provides the list of apps for the current user"]
215
+ // CIL[DOC-RESPONSIBILITY responsibility="Load accessible apps, derive routable apps, and expose registry state"]
216
+ // CIL[DOC-CONTEXT module="contexts" layer="presentation" related_files=".framework/src/contexts/AppContext.tsx,.framework/src/contexts/AuthContext.tsx,.framework/src/hooks/useApps.ts,.framework/src/lib/api.ts"]
217
+ // CIL[DOC-CONTRACT inputs="children: React.ReactNode" outputs="JSX" errors="network or auth errors surface as error string" side_effects="fetches /api/apps, manages an AbortController, and updates React state"]
218
+ // CIL[DOC-MICRO logic_summary="Fetches apps when the user changes, filters routable apps by domain and route, and provides the registry value" notable_decisions="[]"]
219
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
220
+ // CIL[DOC-STABILITY stability="stable"]
175
221
  export function AppsRegistryProvider({ children }: AppsRegistryProviderProps) {
176
222
  const { user } = useAuth()
177
223
  const [apps, setApps] = useState<AppRecord[]>([])
@@ -253,4 +299,10 @@ export function AppsRegistryProvider({ children }: AppsRegistryProviderProps) {
253
299
  </AppsRegistryContext.Provider>
254
300
  )
255
301
  }
256
- // CIL[END chunk_id="AppContext_appsregistryprovider_1783749485"]
302
+ // CIL[DOC-VECTOR type="context" content="purpose='Fetches and provides the list of apps for the current user'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/lib/api.ts,.framework/src/contexts/AuthContext.tsx"]
303
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
304
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
305
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
306
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
307
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
308
+ // CIL[END stable_id="~/.framework/src/contexts/AppContext.tsx:AppsRegistryProvider:component"]