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,43 +1,55 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useListSchema.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/hooks/useListSchema.ts"]
2
+ // CIL[DOC-AUDIENCE audience="frontend"]
3
+ // CIL[DOC-CONTEXT module="useListSchema" layer="hooks" related_files=".framework/src/lib/api.ts,.framework/src/types/types.ts"]
4
+ // CIL[DOC-CONTRACT inputs="none" outputs="React hooks, apiFetch and DesignSchema/View imports available to the module" errors="none" side_effects="none"]
5
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
6
+ // CIL[DOC-MACRO purpose="React hook module for loading entity list design schemas"]
7
+ // CIL[DOC-MICRO logic_summary="Imports useState, useEffect, apiFetch and local DesignSchema/View types" notable_decisions="[]"]
8
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide the useListSchema hook and its option/result type definitions"]
9
+ // CIL[DOC-STABILITY stability="stable"]
10
+
1
11
  import { useState, useEffect } from 'react'
2
12
  import { apiFetch } from '../lib/api'
3
13
  import { DesignSchema, View } from '../types/types'
14
+ // CIL[DOC-VECTOR type="context" content="purpose='React hook module for loading entity list design schemas'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
15
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
16
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
17
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
18
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
19
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
20
+ // CIL[END stable_id="~/.framework/src/hooks/useListSchema.ts:module_header:module_header"]
4
21
 
5
22
 
6
23
 
7
- // CIL[BEGIN chunk_id="uselistschema_module_header_1783718716" type="module_header" identity="module_header" parent="none"]
8
- // CIL[DOC-MACRO purpose="Define options interface for useListSchema hook"]
9
- // CIL[DOC-RESPONSIBILITY responsibility="Own the UseListSchemaOptions interface definition"]
10
- // CIL[DOC-CONTEXT module="useListSchema" layer="frontend-hook" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
11
- // CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
12
- // CIL[DOC-MICRO logic_summary="Simple interface with entity and optional viewSlug" notable_decisions="[]"]
13
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
24
+
25
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useListSchema.ts:UseListSchemaOptions:interface" type="interface" identity="UseListSchemaOptions" parent="~/.framework/src/hooks/useListSchema.ts"]
26
+ // CIL[DOC-MACRO purpose="Defines the input options for the useListSchema hook"]
27
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare entity and optional viewSlug used to resolve the list schema"]
28
+ // CIL[DOC-CONTEXT module="useListSchema" layer="hooks" related_files=".framework/src/hooks/useListSchema.ts,.framework/src/lib/api.ts,.framework/src/types/types.ts"]
29
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="N/A" errors="N/A" side_effects="N/A"]
30
+ // CIL[DOC-MICRO logic_summary="entity: string and viewSlug?: string" notable_decisions="[]"]
31
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
14
32
  // CIL[DOC-STABILITY stability="stable"]
15
- // CIL[DOC-AUDIENCE audience="developer"]
16
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
17
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
18
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
19
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
20
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
21
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
22
33
  interface UseListSchemaOptions {
23
34
  entity: string
24
35
  viewSlug?: string
25
36
  }
26
- // CIL[END chunk_id="uselistschema_module_header_1783718716"]
27
- // CIL[BEGIN chunk_id="uselistschema_useresult_1783718716" type="interface" identity="UseListSchemaResult" parent="none"]
28
- // CIL[DOC-MACRO purpose="Define return type for useListSchema hook"]
29
- // CIL[DOC-RESPONSIBILITY responsibility="Own the UseListSchemaResult interface definition"]
30
- // CIL[DOC-CONTEXT module="useListSchema" layer="frontend-hook" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/db.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
31
- // CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
32
- // CIL[DOC-MICRO logic_summary="Interface with schema, view, loading, error, and refetch fields" notable_decisions="[]"]
33
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
34
- // CIL[DOC-STABILITY stability="stable"]
35
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, .framework/functions/_shared/db.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
36
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
37
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
38
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
37
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the input options for the useListSchema hook'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
38
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
39
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
40
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
39
41
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
40
42
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
43
+ // CIL[END stable_id="~/.framework/src/hooks/useListSchema.ts:UseListSchemaOptions:interface"]
44
+
45
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useListSchema.ts:UseListSchemaResult:interface" type="interface" identity="UseListSchemaResult" parent="~/.framework/src/hooks/useListSchema.ts"]
46
+ // CIL[DOC-MACRO purpose="Defines the return shape of the useListSchema hook"]
47
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare schema, view, loading state, error and refetch callback"]
48
+ // CIL[DOC-CONTEXT module="useListSchema" layer="hooks" related_files=".framework/src/hooks/useListSchema.ts,.framework/src/lib/api.ts,.framework/src/types/types.ts"]
49
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="N/A" errors="N/A" side_effects="N/A"]
50
+ // CIL[DOC-MICRO logic_summary="schema, view, loading, error and refetch fields" notable_decisions="[]"]
51
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
52
+ // CIL[DOC-STABILITY stability="stable"]
41
53
  interface UseListSchemaResult {
42
54
  schema: DesignSchema | null
43
55
  view: View | null
@@ -45,23 +57,22 @@ interface UseListSchemaResult {
45
57
  error: string | null
46
58
  refetch: () => void
47
59
  }
48
- // CIL[END chunk_id="uselistschema_useresult_1783718716"]
49
- // CIL[BEGIN chunk_id="uselistschema_usefunction_1783718716" type="function" identity="useListSchema" parent="none"]
50
- // CIL[DOC-LEARNING topic="runtime-type:generic/list_schema" content="useListSchema first tries to use a sample record's stamped design_schema and views.default_list. If the sample lacks a schema, it falls back to the types table for the current entity's type."]
51
- // CIL[DOC-NOTE type="design_schema_caveat" content="Falling back to the types table only works when a single type is selected. Multiple types in a list require every type to define a compatible default_list view."]
52
- // CIL[DOC-MACRO purpose="Resolve DesignSchema and View for list pages with fallback strategy"]
53
- // CIL[DOC-RESPONSIBILITY responsibility="Fetch schema with two-stage fallback and manage React state"]
54
- // CIL[DOC-CONTEXT module="useListSchema" layer="frontend-hook" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
55
- // CIL[DOC-CONTRACT inputs="none" outputs="resolved schema and view" errors="network errors, auth errors" side_effects="React state mutations, network requests, setTimeout"]
56
- // CIL[DOC-MICRO logic_summary="Fetch sample record, use stamped schema or fallback to types table, handle auth retry with 300ms delay" notable_decisions="['auth_retry_delay', 'fallback_schema_for_empty_data']"]
57
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
58
- // CIL[DOC-STABILITY stability="stable"]
59
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 3. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
60
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 3. Total affected: 5."]
61
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
62
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
60
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the return shape of the useListSchema hook'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
61
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
62
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
63
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
63
64
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
64
65
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
66
+ // CIL[END stable_id="~/.framework/src/hooks/useListSchema.ts:UseListSchemaResult:interface"]
67
+
68
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useListSchema.ts:useListSchema:hook" type="hook" identity="useListSchema" parent="~/.framework/src/hooks/useListSchema.ts"]
69
+ // CIL[DOC-CONTEXT module="useListSchema" layer="hooks" related_files=".framework/src/hooks/useListSchema.ts,.framework/src/lib/api.ts,.framework/src/types/types.ts"]
70
+ // CIL[DOC-CONTRACT inputs="options: UseListSchemaOptions" outputs="UseListSchemaResult" errors="Network or API errors set the error string" side_effects="Calls apiFetch on mount and when entity/viewSlug changes; updates local state"]
71
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
72
+ // CIL[DOC-MACRO purpose="React hook that loads the design schema and view definition for an entity list"]
73
+ // CIL[DOC-MICRO logic_summary="Fetches a sample record to read stamped design_schema; falls back to type lookup and generic fallback views; supports JWT retry" notable_decisions="[]"]
74
+ // CIL[DOC-RESPONSIBILITY responsibility="Fetch and resolve the list design schema and selected view for a given entity"]
75
+ // CIL[DOC-STABILITY stability="stable"]
65
76
  export function useListSchema(options: UseListSchemaOptions): UseListSchemaResult {
66
77
  const { entity, viewSlug = 'default_list' } = options
67
78
 
@@ -232,4 +243,10 @@ export function useListSchema(options: UseListSchemaOptions): UseListSchemaResul
232
243
  refetch: fetchSchema
233
244
  }
234
245
  }
235
- // CIL[END chunk_id="uselistschema_usefunction_1783718716"]
246
+ // CIL[DOC-VECTOR type="context" content="purpose='React hook that loads the design schema and view definition for an entity list'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
247
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
248
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
249
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
250
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
251
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
252
+ // CIL[END stable_id="~/.framework/src/hooks/useListSchema.ts:useListSchema:hook"]
@@ -1,28 +1,38 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useSchemaRecord.ts:module_header:module_header"]
2
+ // CIL[DOC-MACRO purpose="Provides React hooks and TypeScript interfaces for managing schema records and type selection in the Spine framework UI."]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Define shared data shapes and reusable hooks for schema record editing and type selection."]
4
+ // CIL[DOC-CONTEXT module="framework hooks" layer="ui" related_files=".framework/src/lib/api.ts,.framework/src/types/types.ts"]
5
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="N/A" errors="N/A" side_effects="N/A"]
6
+ // CIL[DOC-MICRO logic_summary="Module-level header; no runtime logic." notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="framework-ui"]
1
10
  import { useState, useEffect, useCallback } from 'react'
2
11
  import { apiFetch } from '../lib/api'
3
12
  import { FieldDefinition, ItemType } from '../types/types'
4
13
 
14
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides React hooks and TypeScript interfaces for managing schema records and type selection in the Spine framework UI.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
15
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
16
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
17
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
18
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
19
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
20
+ // CIL[END stable_id="~/.framework/src/hooks/useSchemaRecord.ts:module_header:module_header"]
5
21
 
6
22
 
7
23
 
8
24
 
9
25
 
10
26
 
11
- // CIL[BEGIN chunk_id="uschemarecord_module_header_1783718716" type="module_header" identity="module_header" parent="none"]
12
- // CIL[DOC-MACRO purpose="Define SchemaType interface for type records"]
13
- // CIL[DOC-RESPONSIBILITY responsibility="Own the SchemaType interface definition"]
14
- // CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/db.ts\",\"\\\"]"]
15
- // CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
16
- // CIL[DOC-MICRO logic_summary="Interface with id, name, slug, optional fields, and design_schema" notable_decisions="[]"]
17
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
27
+
28
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useSchemaRecord.ts:schematype:interface"]
29
+ // CIL[DOC-MACRO purpose="Describe the shape of a schema type definition."]
30
+ // CIL[DOC-RESPONSIBILITY responsibility="Strongly type schema type metadata including design schema fields."]
31
+ // CIL[DOC-CONTEXT module="framework hooks" layer="ui" related_files=".framework/src/hooks/useSchemaRecord.ts,.framework/src/lib/api.ts,.framework/src/types/types.ts"]
32
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="SchemaType interface" errors="N/A" side_effects="N/A"]
33
+ // CIL[DOC-MICRO logic_summary="Interface with optional and required fields for a type definition." notable_decisions="[]"]
34
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
18
35
  // CIL[DOC-STABILITY stability="stable"]
19
- // CIL[DOC-AUDIENCE audience="developer"]
20
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/schema-utils.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/db.ts, \."]
21
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
22
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
23
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
24
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
25
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
26
36
  export interface SchemaType {
27
37
  id: string
28
38
  name: string
@@ -33,21 +43,22 @@ export interface SchemaType {
33
43
  app_id?: string
34
44
  design_schema: ItemType['design_schema']
35
45
  }
36
- // CIL[END chunk_id="uschemarecord_module_header_1783718716"]
37
- // CIL[BEGIN chunk_id="uschemarecord_schemarecord_1783718716" type="interface" identity="SchemaRecord" parent="none"]
38
- // CIL[DOC-MACRO purpose="Define SchemaRecord interface for generic records"]
39
- // CIL[DOC-RESPONSIBILITY responsibility="Own the SchemaRecord interface definition"]
40
- // CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
41
- // CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
42
- // CIL[DOC-MICRO logic_summary="Interface with id, optional type_id/type, data JSONB, and index signature" notable_decisions="[]"]
43
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
44
- // CIL[DOC-STABILITY stability="stable"]
45
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
46
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
47
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
48
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
46
+ // CIL[DOC-VECTOR type="context" content="purpose='Describe the shape of a schema type definition.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
47
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
48
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
49
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
49
50
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
50
51
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
52
+ // CIL[END stable_id="~/.framework/src/hooks/useSchemaRecord.ts:schematype:interface"]
53
+
54
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useSchemaRecord.ts:schemarecord:interface"]
55
+ // CIL[DOC-MACRO purpose="Describe a runtime record of a schema type."]
56
+ // CIL[DOC-RESPONSIBILITY responsibility="Type the data container that holds record values and optional resolved type."]
57
+ // CIL[DOC-CONTEXT module="framework hooks" layer="ui" related_files=".framework/src/hooks/useSchemaRecord.ts,.framework/src/lib/api.ts,.framework/src/types/types.ts"]
58
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="SchemaRecord interface" errors="N/A" side_effects="N/A"]
59
+ // CIL[DOC-MICRO logic_summary="Interface includes dynamic key index for legacy field access." notable_decisions="[]"]
60
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
61
+ // CIL[DOC-STABILITY stability="stable"]
51
62
  export interface SchemaRecord {
52
63
  id: string
53
64
  type_id?: string
@@ -55,39 +66,41 @@ export interface SchemaRecord {
55
66
  data: Record<string, any>
56
67
  [key: string]: any
57
68
  }
58
- // CIL[END chunk_id="uschemarecord_schemarecord_1783718716"]
59
- // CIL[BEGIN chunk_id="uschemarecord_options_1783718716" type="interface" identity="UseSchemaRecordOptions" parent="none"]
60
- // CIL[DOC-MACRO purpose="Define options interface for useSchemaRecord hook"]
61
- // CIL[DOC-RESPONSIBILITY responsibility="Own the UseSchemaRecordOptions interface definition"]
62
- // CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
63
- // CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
64
- // CIL[DOC-MICRO logic_summary="Simple interface with typeApiKind field" notable_decisions="[]"]
65
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
66
- // CIL[DOC-STABILITY stability="stable"]
67
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
68
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
69
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
70
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
69
+ // CIL[DOC-VECTOR type="context" content="purpose='Describe a runtime record of a schema type.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
70
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
71
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
72
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
71
73
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
72
74
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
75
+ // CIL[END stable_id="~/.framework/src/hooks/useSchemaRecord.ts:schemarecord:interface"]
76
+
77
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useSchemaRecord.ts:useschemarecordoptions:interface"]
78
+ // CIL[DOC-MACRO purpose="Configure the useSchemaRecord hook."]
79
+ // CIL[DOC-RESPONSIBILITY responsibility="Type the required kind argument for type resolution."]
80
+ // CIL[DOC-CONTEXT module="framework hooks" layer="ui" related_files=".framework/src/hooks/useSchemaRecord.ts,.framework/src/lib/api.ts,.framework/src/types/types.ts"]
81
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="UseSchemaRecordOptions interface" errors="N/A" side_effects="N/A"]
82
+ // CIL[DOC-MICRO logic_summary="Single-property options interface." notable_decisions="[]"]
83
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
84
+ // CIL[DOC-STABILITY stability="stable"]
73
85
  export interface UseSchemaRecordOptions {
74
86
  typeApiKind: string
75
87
  }
76
- // CIL[END chunk_id="uschemarecord_options_1783718716"]
77
- // CIL[BEGIN chunk_id="uschemarecord_result_1783718716" type="interface" identity="UseSchemaRecordResult" parent="none"]
78
- // CIL[DOC-MACRO purpose="Define return type for useSchemaRecord hook"]
79
- // CIL[DOC-RESPONSIBILITY responsibility="Own the UseSchemaRecordResult interface definition"]
80
- // CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/db.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
81
- // CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
82
- // CIL[DOC-MICRO logic_summary="Interface with fields array, managed data, setters, and metadata" notable_decisions="[]"]
83
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
84
- // CIL[DOC-STABILITY stability="stable"]
85
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, .framework/functions/_shared/db.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
86
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
87
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
88
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
88
+ // CIL[DOC-VECTOR type="context" content="purpose='Configure the useSchemaRecord hook.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
89
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
90
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
91
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
89
92
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
90
93
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
94
+ // CIL[END stable_id="~/.framework/src/hooks/useSchemaRecord.ts:useschemarecordoptions:interface"]
95
+
96
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useSchemaRecord.ts:useschemarecordresult:interface"]
97
+ // CIL[DOC-MACRO purpose="Return value shape of the useSchemaRecord hook."]
98
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose record data, field definitions, setters, and metadata to consumers."]
99
+ // CIL[DOC-CONTEXT module="framework hooks" layer="ui" related_files=".framework/src/hooks/useSchemaRecord.ts,.framework/src/lib/api.ts,.framework/src/types/types.ts"]
100
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="UseSchemaRecordResult interface" errors="N/A" side_effects="N/A"]
101
+ // CIL[DOC-MICRO logic_summary="Return object for useSchemaRecord." notable_decisions="[]"]
102
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
103
+ // CIL[DOC-STABILITY stability="stable"]
91
104
  export interface UseSchemaRecordResult {
92
105
  fields: FieldDefinition[]
93
106
  data: Record<string, any>
@@ -97,23 +110,22 @@ export interface UseSchemaRecordResult {
97
110
  loading: boolean
98
111
  error: string | null
99
112
  }
100
- // CIL[END chunk_id="uschemarecord_result_1783718716"]
101
- // CIL[BEGIN chunk_id="uschemarecord_usefunction_1783718716" type="function" identity="useSchemaRecord" parent="none"]
102
- // CIL[DOC-LEARNING topic="runtime-type:generic/schema_defaults" content="useSchemaRecord seeds empty record state from schemaType.design_schema.fields using each field's default value. It provides the schema used by GenericDetailPage for new records."]
103
- // CIL[DOC-NOTE type="design_schema_caveat" content="A field missing a default will be undefined. The hook depends on the type record being loaded from the types table, which can fail if the type slug or kind is wrong."]
104
- // CIL[DOC-MACRO purpose="Manage record data state with schema defaults and field definitions"]
105
- // CIL[DOC-RESPONSIBILITY responsibility="Provide derived state management for record data and fields"]
106
- // CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[]"]
107
- // CIL[DOC-CONTRACT inputs="none" outputs="managed data, field definitions, setters" errors="none" side_effects="React state mutations"]
108
- // CIL[DOC-MICRO logic_summary="Seed data from record.data with schema defaults, provide field setters, re-seed only on record/type change" notable_decisions="['reseed_on_id_change_only', 'default_value_seeding']"]
109
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
110
- // CIL[DOC-STABILITY stability="stable"]
111
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
112
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
113
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
114
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
113
+ // CIL[DOC-VECTOR type="context" content="purpose='Return value shape of the useSchemaRecord hook.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
114
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
115
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
116
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
115
117
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
116
118
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
119
+ // CIL[END stable_id="~/.framework/src/hooks/useSchemaRecord.ts:useschemarecordresult:interface"]
120
+
121
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useSchemaRecord.ts:useschemarecord:function"]
122
+ // CIL[DOC-MACRO purpose="Manage local record data state and default values from a schema type."]
123
+ // CIL[DOC-RESPONSIBILITY responsibility="Synchronize record data with schema defaults and expose field setters."]
124
+ // CIL[DOC-CONTEXT module="framework hooks" layer="ui" related_files=".framework/src/hooks/useSchemaRecord.ts,.framework/src/lib/api.ts,.framework/src/types/types.ts"]
125
+ // CIL[DOC-CONTRACT inputs="record: SchemaRecord | null, schemaType: SchemaType | null" outputs="UseSchemaRecordResult" errors="Returns null schemaType and empty data on missing inputs" side_effects="Calls React setState during initial sync and field updates"]
126
+ // CIL[DOC-MICRO logic_summary="Initializes data from record and applies per-field defaults from schemaType.design_schema.fields; exposes setData and setField callbacks." notable_decisions="[]"]
127
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
128
+ // CIL[DOC-STABILITY stability="stable"]
117
129
  export function useSchemaRecord(
118
130
  record: SchemaRecord | null,
119
131
  schemaType: SchemaType | null
@@ -161,21 +173,22 @@ export function useSchemaRecord(
161
173
  error: null
162
174
  }
163
175
  }
164
- // CIL[END chunk_id="uschemarecord_usefunction_1783718716"]
165
- // CIL[BEGIN chunk_id="uschemarecord_typeselectionresult_1783718716" type="interface" identity="UseTypeSelectionResult" parent="none"]
166
- // CIL[DOC-MACRO purpose="Define return type for useTypeSelection hook"]
167
- // CIL[DOC-RESPONSIBILITY responsibility="Own the UseTypeSelectionResult interface definition"]
168
- // CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[]"]
169
- // CIL[DOC-CONTRACT inputs="none" outputs="interface definition" errors="none" side_effects="none"]
170
- // CIL[DOC-MICRO logic_summary="Interface with types array, selected type/id, setters, and loading state" notable_decisions="[]"]
171
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
172
- // CIL[DOC-STABILITY stability="stable"]
173
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
174
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
175
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
176
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
176
+ // CIL[DOC-VECTOR type="context" content="purpose='Manage local record data state and default values from a schema type.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
177
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
178
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
179
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
177
180
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
178
181
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
182
+ // CIL[END stable_id="~/.framework/src/hooks/useSchemaRecord.ts:useschemarecord:function"]
183
+
184
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useSchemaRecord.ts:usetypeselectionresult:interface"]
185
+ // CIL[DOC-MACRO purpose="Return value shape of the useTypeSelection hook."]
186
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose loaded types, selected type, and selection controls."]
187
+ // CIL[DOC-CONTEXT module="framework hooks" layer="ui" related_files=".framework/src/hooks/useSchemaRecord.ts,.framework/src/lib/api.ts,.framework/src/types/types.ts"]
188
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="UseTypeSelectionResult interface" errors="N/A" side_effects="N/A"]
189
+ // CIL[DOC-MICRO logic_summary="Return object for useTypeSelection." notable_decisions="[]"]
190
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
191
+ // CIL[DOC-STABILITY stability="stable"]
179
192
  export interface UseTypeSelectionResult {
180
193
  types: SchemaType[]
181
194
  selectedType: SchemaType | null
@@ -184,21 +197,22 @@ export interface UseTypeSelectionResult {
184
197
  loading: boolean
185
198
  error: string | null
186
199
  }
187
- // CIL[END chunk_id="uschemarecord_typeselectionresult_1783718716"]
188
- // CIL[BEGIN chunk_id="uschemarecord_typeselection_1783718716" type="function" identity="useTypeSelection" parent="none"]
189
- // CIL[DOC-MACRO purpose="Fetch and manage type selection for create flows"]
190
- // CIL[DOC-RESPONSIBILITY responsibility="Fetch active types by kind and manage selection state"]
191
- // CIL[DOC-CONTEXT module="useSchemaRecord" layer="frontend-hook" related_files="[]"]
192
- // CIL[DOC-CONTRACT inputs="none" outputs="types array, selected type, selection state" errors="network errors" side_effects="Network requests, React state mutations"]
193
- // CIL[DOC-MICRO logic_summary="Fetch active types by kind on mount and kind change, manage selectedTypeId state, resolve selectedType by id" notable_decisions="['controlled_selection_state', 'fetch_on_kind_change']"]
194
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
195
- // CIL[DOC-STABILITY stability="stable"]
196
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: none."]
197
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
198
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
199
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
200
+ // CIL[DOC-VECTOR type="context" content="purpose='Return value shape of the useTypeSelection hook.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
201
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
202
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
203
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
200
204
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
201
205
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
206
+ // CIL[END stable_id="~/.framework/src/hooks/useSchemaRecord.ts:usetypeselectionresult:interface"]
207
+
208
+ // CIL[BEGIN stable_id="~/.framework/src/hooks/useSchemaRecord.ts:usetypeselection:function"]
209
+ // CIL[DOC-MACRO purpose="Load and select a schema type by kind for the current context."]
210
+ // CIL[DOC-RESPONSIBILITY responsibility="Fetch active types from the API and maintain selection state."]
211
+ // CIL[DOC-CONTEXT module="framework hooks" layer="ui" related_files=".framework/src/hooks/useSchemaRecord.ts,.framework/src/lib/api.ts,.framework/src/types/types.ts"]
212
+ // CIL[DOC-CONTRACT inputs="kind: string" outputs="UseTypeSelectionResult" errors="Sets error state on API failures" side_effects="Fetches /api/types on mount and kind changes; uses React state"]
213
+ // CIL[DOC-MICRO logic_summary="Fetches active types for a kind, tracks selected type ID, and memoizes the selected type." notable_decisions="[]"]
214
+ // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
215
+ // CIL[DOC-STABILITY stability="stable"]
202
216
  export function useTypeSelection(kind: string): UseTypeSelectionResult {
203
217
  const [types, setTypes] = useState<SchemaType[]>([])
204
218
  const [selectedTypeId, setSelectedTypeId] = useState('')
@@ -229,4 +243,10 @@ export function useTypeSelection(kind: string): UseTypeSelectionResult {
229
243
 
230
244
  return { types, selectedType, selectedTypeId, setSelectedTypeId, loading, error }
231
245
  }
232
- // CIL[END chunk_id="uschemarecord_typeselection_1783718716"]
246
+ // CIL[DOC-VECTOR type="context" content="purpose='Load and select a schema type by kind for the current context.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/types/types.ts"]
247
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
248
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
249
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
250
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
251
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
252
+ // CIL[END stable_id="~/.framework/src/hooks/useSchemaRecord.ts:usetypeselection:function"]