spine-framework 0.3.145 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/.env.example +76 -0
  2. package/.framework/.spine-manifest.json +19 -0
  3. package/.framework/cli/commands/agents.ts +61 -33
  4. package/.framework/cli/commands/auth.ts +60 -28
  5. package/.framework/cli/commands/create-app.ts +212 -80
  6. package/.framework/cli/commands/dev.ts +184 -68
  7. package/.framework/cli/commands/doctor.ts +324 -152
  8. package/.framework/cli/commands/generate.ts +119 -68
  9. package/.framework/cli/commands/init.ts +141 -242
  10. package/.framework/cli/commands/install-app.ts +1336 -314
  11. package/.framework/cli/commands/items.ts +31 -29
  12. package/.framework/cli/commands/migrate.ts +299 -156
  13. package/.framework/cli/commands/migrations.ts +62 -30
  14. package/.framework/cli/commands/pipelines.ts +31 -29
  15. package/.framework/cli/commands/status.ts +105 -45
  16. package/.framework/cli/commands/system.ts +47 -42
  17. package/.framework/cli/commands/test.ts +161 -102
  18. package/.framework/cli/commands/upgrade.ts +260 -0
  19. package/.framework/cli/commands/validate-app.ts +517 -161
  20. package/.framework/cli/context.ts +117 -85
  21. package/.framework/cli/env-loader.ts +74 -43
  22. package/.framework/cli/index.ts +70 -46
  23. package/.framework/cli/lib/project-files.ts +404 -0
  24. package/.framework/docs/guides/testing-guide.md +1 -1
  25. package/.framework/docs/runtime-types.md +72 -72
  26. package/.framework/functions/_shared/access.ts +84 -0
  27. package/.framework/functions/_shared/agent-runner.ts +5051 -1026
  28. package/.framework/functions/_shared/app-manifest.ts +214 -94
  29. package/.framework/functions/_shared/ast.ts +214 -0
  30. package/.framework/functions/_shared/audit.ts +91 -55
  31. package/.framework/functions/_shared/cil.ts +368 -127
  32. package/.framework/functions/_shared/db.ts +337 -68
  33. package/.framework/functions/_shared/funnel.ts +228 -0
  34. package/.framework/functions/_shared/geo.ts +105 -0
  35. package/.framework/functions/_shared/hash-api-key.ts +94 -17
  36. package/.framework/functions/_shared/index.ts +22 -224
  37. package/.framework/functions/_shared/kb.ts +832 -58
  38. package/.framework/functions/_shared/llm.ts +118 -18
  39. package/.framework/functions/_shared/logging.ts +317 -19
  40. package/.framework/functions/_shared/middleware.ts +701 -131
  41. package/.framework/functions/_shared/notify.ts +70 -0
  42. package/.framework/functions/_shared/outcomes.ts +34 -19
  43. package/.framework/functions/_shared/permissions.ts +501 -315
  44. package/.framework/functions/_shared/pipeline-runner.ts +704 -155
  45. package/.framework/functions/_shared/principal.ts +436 -263
  46. package/.framework/functions/_shared/rate-limit.ts +233 -0
  47. package/.framework/functions/_shared/resolve-credentials.ts +86 -19
  48. package/.framework/functions/_shared/resolve-ids.ts +203 -139
  49. package/.framework/functions/_shared/retry-deliveries.ts +51 -16
  50. package/.framework/functions/_shared/schema-utils.ts +602 -521
  51. package/.framework/functions/_shared/security.ts +345 -0
  52. package/.framework/functions/_shared/testing.ts +197 -172
  53. package/.framework/functions/_shared/tracing.ts +351 -21
  54. package/.framework/functions/_shared/trigger-engine.ts +425 -136
  55. package/.framework/functions/_shared/webhook-registration.ts +71 -70
  56. package/.framework/functions/_shared/webhook-registry.ts +126 -83
  57. package/.framework/functions/account-nodes.ts +30 -30
  58. package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
  59. package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
  60. package/.framework/functions/adapters/openai-outbound.ts +15 -16
  61. package/.framework/functions/admin-data.ts +596 -173
  62. package/.framework/functions/admin-funnel.ts +64 -60
  63. package/.framework/functions/admin-install-funnel.ts +84 -66
  64. package/.framework/functions/admin-signals.ts +69 -51
  65. package/.framework/functions/ai-agents.ts +431 -106
  66. package/.framework/functions/ai-interactions.ts +186 -112
  67. package/.framework/functions/api-keys.ts +107 -107
  68. package/.framework/functions/apps.ts +154 -136
  69. package/.framework/functions/auth.ts +83 -65
  70. package/.framework/functions/cil-agent-ingest.ts +189 -232
  71. package/.framework/functions/cil-agent.ts +433 -177
  72. package/.framework/functions/cil-callmap.ts +642 -430
  73. package/.framework/functions/cil-config.ts +139 -135
  74. package/.framework/functions/cil-context.ts +214 -127
  75. package/.framework/functions/cil-doc.ts +587 -458
  76. package/.framework/functions/cil-embeddings.ts +453 -364
  77. package/.framework/functions/cil-graph.ts +427 -142
  78. package/.framework/functions/cil-ingest.ts +1418 -1154
  79. package/.framework/functions/cil-pipeline.ts +276 -21
  80. package/.framework/functions/cil-project.ts +659 -132
  81. package/.framework/functions/cil-validate.ts +198 -164
  82. package/.framework/functions/debug-auth.ts +57 -55
  83. package/.framework/functions/deliveries.ts +80 -21
  84. package/.framework/functions/embeddings.ts +1023 -318
  85. package/.framework/functions/eval-harness.ts +146 -108
  86. package/.framework/functions/integration-outbound.ts +205 -75
  87. package/.framework/functions/integration-routes.ts +128 -23
  88. package/.framework/functions/integrations.ts +125 -100
  89. package/.framework/functions/invites.ts +1095 -460
  90. package/.framework/functions/item-progress.ts +158 -102
  91. package/.framework/functions/kb.ts +34 -10
  92. package/.framework/functions/logs.ts +133 -133
  93. package/.framework/functions/observability.ts +152 -122
  94. package/.framework/functions/pipeline-executions.ts +147 -132
  95. package/.framework/functions/pipelines.ts +134 -119
  96. package/.framework/functions/prompt-configs.ts +96 -80
  97. package/.framework/functions/roles.ts +112 -82
  98. package/.framework/functions/security.ts +450 -0
  99. package/.framework/functions/system-cron.ts +117 -80
  100. package/.framework/functions/system.ts +158 -98
  101. package/.framework/functions/tests.ts +29 -29
  102. package/.framework/functions/timers.ts +94 -95
  103. package/.framework/functions/trigger-scheduler.ts +10 -0
  104. package/.framework/functions/triggers.ts +179 -149
  105. package/.framework/functions/types.ts +137 -125
  106. package/.framework/mcp/index.ts +133 -0
  107. package/.framework/mcp/load-env.ts +60 -0
  108. package/.framework/mcp/shared/app-manifest.ts +275 -0
  109. package/.framework/mcp/shared/db.ts +477 -0
  110. package/.framework/mcp/shared/kb.ts +118 -0
  111. package/.framework/mcp/tools/architect.ts +431 -0
  112. package/.framework/mcp/tools/cil/context.ts +345 -0
  113. package/.framework/mcp/tools/cil/graph.ts +242 -0
  114. package/.framework/mcp/tools/cil/ingest.ts +1217 -0
  115. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
  116. package/.framework/mcp/tools/cil/pipeline.ts +767 -0
  117. package/.framework/mcp/tools/cil/project.ts +791 -0
  118. package/.framework/mcp/tools/cil/retrieval.ts +336 -0
  119. package/.framework/mcp/tools/cil/search-core.ts +454 -0
  120. package/.framework/mcp/tools/cil/search.ts +97 -0
  121. package/.framework/mcp/tools/cil/suggest.ts +186 -0
  122. package/.framework/mcp/tools/cil/validate.ts +1369 -0
  123. package/.framework/mcp/tools/kb/delete.ts +139 -0
  124. package/.framework/mcp/tools/kb/index.ts +52 -0
  125. package/.framework/mcp/tools/kb/ingest.ts +84 -0
  126. package/.framework/mcp/tools/kb/list-types.ts +102 -0
  127. package/.framework/mcp/tools/kb/publish.ts +100 -0
  128. package/.framework/mcp/tools/kb/reindex.ts +86 -0
  129. package/.framework/mcp/tools/kb/revoke.ts +85 -0
  130. package/.framework/mcp/tools/kb/search.ts +101 -0
  131. package/.framework/mcp/tools/kb/upsert.ts +125 -0
  132. package/.framework/mcp/tools/observability.ts +510 -0
  133. package/.framework/migrations/001_core_schema.sql +15 -0
  134. package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
  135. package/.framework/migrations/003_core_system_data.sql +16 -1
  136. package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
  137. package/.framework/migrations/005_core_observability.sql +17 -1
  138. package/.framework/migrations/006_security_hardening_rls.sql +15 -0
  139. package/.framework/migrations/007_kb_article_list.sql +17 -1
  140. package/.framework/migrations/008_items_target.sql +15 -0
  141. package/.framework/migrations/009_roles_slug_unique.sql +15 -0
  142. package/.framework/migrations/010_auth_user_trigger.sql +15 -0
  143. package/.framework/migrations/011_spine_system_account.sql +16 -0
  144. package/.framework/migrations/012_service_role_grants.sql +16 -0
  145. package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
  146. package/.framework/migrations/014_apps_required_roles.sql +16 -0
  147. package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
  148. package/.framework/migrations/016_cil_types.sql +281 -0
  149. package/.framework/migrations/017_cil_stable_ids.sql +37 -0
  150. package/.framework/migrations/018_runtime_tables.sql +129 -0
  151. package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
  152. package/.framework/migrations/020_schema_reconciliation.sql +67 -0
  153. package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
  154. package/.framework/migrations/032_cil_status_migration.sql +73 -0
  155. package/.framework/migrations/033_cil_versioning.sql +73 -0
  156. package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
  157. package/.framework/migrations/035_rate_limits.sql +55 -0
  158. package/.framework/migrations/036_demo_record_flags.sql +72 -0
  159. package/.framework/migrations/037_kb_types_canonical.sql +244 -0
  160. package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
  161. package/.framework/migrations/042_registration_hierarchy.sql +309 -0
  162. package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
  163. package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
  164. package/.framework/migrations/045_security_critical_rls.sql +139 -0
  165. package/.framework/migrations/046_security_missing_rls.sql +79 -0
  166. package/.framework/migrations/047_people_updated_by.sql +27 -0
  167. package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
  168. package/.framework/migrations/049_security_blocklist.sql +148 -0
  169. package/.framework/migrations/050_notifications.sql +49 -0
  170. package/.framework/migrations/051_message_agent_fields.sql +74 -0
  171. package/.framework/migrations/052_registration_security.sql +421 -0
  172. package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
  173. package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
  174. package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
  175. package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
  176. package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
  177. package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
  178. package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
  179. package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
  180. package/.framework/migrations/061_fk_dedup.sql +32 -0
  181. package/.framework/public/spine-logo.svg +10 -3
  182. package/.framework/scripts/app-install-cli.ts +190 -93
  183. package/.framework/scripts/assemble-frontend.sh +127 -44
  184. package/.framework/scripts/assemble-functions.sh +128 -30
  185. package/.framework/scripts/boundary-check.sh +6 -2
  186. package/.framework/scripts/build-manifest.sh +24 -68
  187. package/.framework/scripts/check-core-integrity.sh +15 -76
  188. package/.framework/scripts/checksum-manifest.mts +343 -0
  189. package/.framework/scripts/cil-migrate-markers.ts +403 -0
  190. package/.framework/scripts/fix-cil-markers.mjs +176 -0
  191. package/.framework/scripts/verify-integrity.sh +21 -57
  192. package/.framework/scripts/verify-manifest.mts +305 -0
  193. package/.framework/seeds/types/funnel_signal_use.json +74 -21
  194. package/.framework/seeds/types/spine_instance.json +73 -21
  195. package/.framework/src/App.tsx +118 -72
  196. package/.framework/src/apps/admin/index.tsx +855 -58
  197. package/.framework/src/components/AppWrapper.tsx +43 -45
  198. package/.framework/src/components/CustomAppLoader.tsx +160 -116
  199. package/.framework/src/components/admin/AdminListPage.tsx +46 -44
  200. package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
  201. package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
  202. package/.framework/src/components/admin/PageInstructions.tsx +98 -2
  203. package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
  204. package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
  205. package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
  206. package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
  207. package/.framework/src/components/app-sidebar.tsx +42 -45
  208. package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
  209. package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
  210. package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
  211. package/.framework/src/components/kb/KBArticleList.tsx +251 -10
  212. package/.framework/src/components/layout/AppShell.tsx +51 -45
  213. package/.framework/src/components/layout/Header.tsx +42 -43
  214. package/.framework/src/components/layout/Layout.tsx +46 -46
  215. package/.framework/src/components/layout/Sidebar.tsx +196 -96
  216. package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
  217. package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
  218. package/.framework/src/components/runtime/DataFilters.tsx +49 -74
  219. package/.framework/src/components/runtime/DataHeader.tsx +53 -32
  220. package/.framework/src/components/runtime/DataListPage.tsx +51 -155
  221. package/.framework/src/components/runtime/DataStats.tsx +66 -44
  222. package/.framework/src/components/runtime/DataTable.tsx +49 -149
  223. package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
  224. package/.framework/src/components/runtime/index.ts +119 -16
  225. package/.framework/src/components/search-form.tsx +46 -29
  226. package/.framework/src/components/shared/AgentView.tsx +65 -48
  227. package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
  228. package/.framework/src/components/shared/InviteManager.tsx +207 -97
  229. package/.framework/src/components/shared/MemberList.tsx +97 -0
  230. package/.framework/src/components/shared/SchemaFields.tsx +107 -86
  231. package/.framework/src/components/ui/DataTable.tsx +80 -68
  232. package/.framework/src/components/ui/Form.tsx +157 -146
  233. package/.framework/src/components/ui/ItemCard.tsx +74 -67
  234. package/.framework/src/components/ui/ItemListView.tsx +73 -68
  235. package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
  236. package/.framework/src/components/ui/Modal.tsx +78 -68
  237. package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
  238. package/.framework/src/components/ui/accordion.tsx +85 -86
  239. package/.framework/src/components/ui/alert-dialog.tsx +197 -184
  240. package/.framework/src/components/ui/alert.tsx +105 -94
  241. package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
  242. package/.framework/src/components/ui/avatar.tsx +122 -107
  243. package/.framework/src/components/ui/badge.tsx +60 -55
  244. package/.framework/src/components/ui/breadcrumb.tsx +127 -128
  245. package/.framework/src/components/ui/button-group.tsx +86 -72
  246. package/.framework/src/components/ui/button.tsx +71 -50
  247. package/.framework/src/components/ui/calendar.tsx +72 -57
  248. package/.framework/src/components/ui/card.tsx +136 -129
  249. package/.framework/src/components/ui/carousel.tsx +226 -107
  250. package/.framework/src/components/ui/chart.tsx +252 -147
  251. package/.framework/src/components/ui/checkbox.tsx +43 -44
  252. package/.framework/src/components/ui/collapsible.tsx +86 -71
  253. package/.framework/src/components/ui/combobox.tsx +282 -249
  254. package/.framework/src/components/ui/command.tsx +158 -146
  255. package/.framework/src/components/ui/context-menu.tsx +239 -240
  256. package/.framework/src/components/ui/dialog.tsx +174 -157
  257. package/.framework/src/components/ui/direction.tsx +72 -56
  258. package/.framework/src/components/ui/drawer.tsx +168 -169
  259. package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
  260. package/.framework/src/components/ui/empty.tsx +131 -120
  261. package/.framework/src/components/ui/field.tsx +205 -173
  262. package/.framework/src/components/ui/hover-card.tsx +71 -72
  263. package/.framework/src/components/ui/input-group.tsx +148 -133
  264. package/.framework/src/components/ui/input-otp.tsx +99 -86
  265. package/.framework/src/components/ui/input.tsx +43 -41
  266. package/.framework/src/components/ui/item.tsx +207 -185
  267. package/.framework/src/components/ui/kbd.tsx +57 -56
  268. package/.framework/src/components/ui/label.tsx +45 -41
  269. package/.framework/src/components/ui/menubar.tsx +268 -236
  270. package/.framework/src/components/ui/native-select.tsx +85 -86
  271. package/.framework/src/components/ui/navigation-menu.tsx +166 -156
  272. package/.framework/src/components/ui/pagination.tsx +131 -141
  273. package/.framework/src/components/ui/popover.tsx +125 -128
  274. package/.framework/src/components/ui/progress.tsx +47 -44
  275. package/.framework/src/components/ui/radio-group.tsx +60 -55
  276. package/.framework/src/components/ui/resizable.tsx +85 -72
  277. package/.framework/src/components/ui/scroll-area.tsx +57 -58
  278. package/.framework/src/components/ui/select.tsx +182 -169
  279. package/.framework/src/components/ui/separator.tsx +42 -43
  280. package/.framework/src/components/ui/sheet.tsx +170 -159
  281. package/.framework/src/components/ui/sidebar.tsx +395 -398
  282. package/.framework/src/components/ui/skeleton.tsx +42 -43
  283. package/.framework/src/components/ui/slider.tsx +61 -44
  284. package/.framework/src/components/ui/sonner.tsx +44 -44
  285. package/.framework/src/components/ui/spinner.tsx +47 -42
  286. package/.framework/src/components/ui/switch.tsx +56 -42
  287. package/.framework/src/components/ui/table-primitives.tsx +272 -132
  288. package/.framework/src/components/ui/table.tsx +140 -142
  289. package/.framework/src/components/ui/tabs.tsx +110 -93
  290. package/.framework/src/components/ui/textarea.tsx +43 -44
  291. package/.framework/src/components/ui/toggle-group.tsx +87 -71
  292. package/.framework/src/components/ui/toggle.tsx +56 -56
  293. package/.framework/src/components/ui/tooltip.tsx +99 -85
  294. package/.framework/src/contexts/AppContext.tsx +166 -114
  295. package/.framework/src/contexts/AuthContext.tsx +232 -137
  296. package/.framework/src/hooks/use-mobile.ts +43 -44
  297. package/.framework/src/hooks/useApi.ts +185 -172
  298. package/.framework/src/hooks/useAppPath.ts +31 -29
  299. package/.framework/src/hooks/useApps.ts +77 -42
  300. package/.framework/src/hooks/useEntityList.ts +66 -29
  301. package/.framework/src/hooks/useEntityRecord.ts +76 -32
  302. package/.framework/src/hooks/useForm.ts +62 -30
  303. package/.framework/src/hooks/useListSchema.ts +60 -43
  304. package/.framework/src/hooks/useSchemaRecord.ts +115 -95
  305. package/.framework/src/lib/api.ts +258 -134
  306. package/.framework/src/lib/registration.ts +181 -0
  307. package/.framework/src/lib/supabase.ts +118 -81
  308. package/.framework/src/lib/utils.ts +266 -266
  309. package/.framework/src/main.tsx +43 -44
  310. package/.framework/src/pages/DashboardPage.tsx +44 -43
  311. package/.framework/src/pages/NoAppPage.tsx +50 -0
  312. package/.framework/src/pages/NotFoundPage.tsx +32 -29
  313. package/.framework/src/pages/SetupPage.tsx +34 -33
  314. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
  315. package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
  316. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
  317. package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
  318. package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
  319. package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
  320. package/.framework/src/pages/admin/AppsPage.tsx +45 -42
  321. package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
  322. package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
  323. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
  324. package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
  325. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
  326. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
  327. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
  328. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
  329. package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
  330. package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
  331. package/.framework/src/pages/admin/LogsPage.tsx +87 -137
  332. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
  333. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
  334. package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
  335. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
  336. package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
  337. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
  338. package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
  339. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
  340. package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
  341. package/.framework/src/pages/admin/RolesPage.tsx +47 -164
  342. package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
  343. package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
  344. package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
  345. package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
  346. package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
  347. package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
  348. package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
  349. package/.framework/src/pages/admin/TimersPage.tsx +44 -42
  350. package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
  351. package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
  352. package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
  353. package/.framework/src/pages/admin/TypesPage.tsx +45 -42
  354. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
  355. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
  356. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
  357. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
  358. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
  359. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
  360. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
  361. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
  362. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
  363. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
  364. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
  365. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
  366. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  367. package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
  368. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
  369. package/.framework/src/pages/auth/LoginPage.tsx +38 -32
  370. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
  371. package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
  372. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
  373. package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
  374. package/.framework/src/types/auth.ts +101 -93
  375. package/.framework/src/types/types.ts +283 -262
  376. package/.framework/templates/project.json +87 -0
  377. package/.framework/templates/spine.config.neutral.json +7 -0
  378. package/.framework/tests/api/api-surface.test.ts +381 -0
  379. package/.framework/tests/fixtures/seed.ts +427 -0
  380. package/.framework/tests/fixtures/teardown.ts +228 -0
  381. package/.framework/tests/reporter.ts +351 -0
  382. package/.framework/tests/setup.ts +135 -0
  383. package/.framework/tests/ui/ui-sweep.ts +278 -0
  384. package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
  385. package/.framework/tests/unit/agent-runner.test.ts +2389 -0
  386. package/.framework/tests/unit/ai-interactions.test.ts +81 -0
  387. package/.framework/tests/unit/app-manifest.test.ts +359 -0
  388. package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
  389. package/.framework/tests/unit/cil-determinism.test.ts +85 -0
  390. package/.framework/tests/unit/core-isolation.test.ts +153 -0
  391. package/.framework/tests/unit/funnel-signals.test.ts +135 -0
  392. package/.framework/tests/unit/install-app.test.ts +1759 -0
  393. package/.framework/tests/unit/invites-security.test.ts +572 -0
  394. package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
  395. package/.framework/tests/unit/kb-search.test.ts +119 -0
  396. package/.framework/tests/unit/migrate.test.ts +509 -0
  397. package/.framework/tests/unit/notify.test.ts +136 -0
  398. package/.framework/tests/unit/permissions.test.ts +269 -0
  399. package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
  400. package/.framework/tests/unit/principal-cache.test.ts +138 -0
  401. package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
  402. package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
  403. package/.framework/tests/unit/schema-utils.test.ts +225 -0
  404. package/.framework/tests/unit/trigger-engine.test.ts +513 -0
  405. package/.framework/tests/unit/validate-app.test.ts +527 -0
  406. package/README.md +34 -3
  407. package/bin/spine-framework.cjs +1 -0
  408. package/config/tailwind.config.cjs +7 -0
  409. package/config/tsconfig.functions.json +42 -0
  410. package/config/tsconfig.json +37 -9
  411. package/config/vite.config.ts +31 -2
  412. package/netlify.toml +31 -3
  413. package/package.json +46 -29
  414. package/scripts/assemble-frontend.sh +127 -44
  415. package/scripts/assemble-functions.sh +127 -29
  416. package/scripts/boundary-check.sh +6 -2
  417. package/scripts/build-manifest.sh +24 -68
  418. package/scripts/checksum-manifest.mts +345 -0
  419. package/scripts/dev-clean.sh +86 -0
  420. package/scripts/dev-netlify.sh +49 -0
  421. package/scripts/netlify-dev-wrapper.sh +2 -0
  422. package/scripts/verify-install.ts +358 -0
  423. package/scripts/verify-integrity.sh +21 -57
  424. package/scripts/verify-manifest.mts +305 -0
  425. package/templates/project/gitignore +45 -0
  426. package/{config → templates/project}/package-lock.json +22335 -9366
  427. package/vitest.config.ts +46 -0
  428. package/.framework/public/spine.config.json +0 -91
  429. package/config/deno.lock +0 -108
  430. package/config/tsconfig.node.tsbuildinfo +0 -1
  431. package/config/tsconfig.tsbuildinfo +0 -1
  432. package/config/vite.config.d.ts +0 -2
  433. package/custom/.devin/AGENT.md +0 -357
  434. package/custom/.devin/skills/install-app/SKILL.md +0 -39
  435. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
  436. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
  437. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
  438. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
  439. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
  440. package/custom/.devin/workflows/app-install.yaml +0 -83
  441. package/custom/README.md +0 -79
  442. package/docs/README.md +0 -15
  443. package/scripts/app-install-cli.ts +0 -286
  444. package/scripts/check-core-integrity.sh +0 -82
  445. package/scripts/ingest-chunks.cjs +0 -202
  446. package/scripts/kb-chunk-parser.cjs +0 -312
  447. package/scripts/kb-chunk-parser.ts +0 -330
  448. package/scripts/kb-ingest-docs.ts +0 -203
  449. package/scripts/load-test-app-install.ts +0 -484
  450. package/scripts/test-login.js +0 -33
  451. package/spine.config.json +0 -91
@@ -1,22 +1,17 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/TypeDetailPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/pages/admin/TypeDetailPage.tsx"]
2
+ // CIL[DOC-MACRO purpose="Admin type detail page for viewing, creating, and editing Spine type schemas"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Imports React hooks, shared UI components, and exports the TypeDetailPage component"]
4
+ // CIL[DOC-CONTEXT module="admin" layer="page" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/Modal.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/checkbox.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="rendered admin page module" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Top-level module header that wires dependencies for the type detail page" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="human, ai"]
10
+
1
11
 
2
12
 
3
13
 
4
14
 
5
- // CIL[BEGIN chunk_id="typedetailpage_moduleheader_1783664706" type="module_header" identity="module_header" parent="none"]
6
- // CIL[DOC-MACRO purpose="Import dependencies for TypeDetailPage component"]
7
- // CIL[DOC-RESPONSIBILITY responsibility="Provide all external dependencies and UI components"]
8
- // CIL[DOC-CONTEXT module="TypeDetailPage" layer="frontend-page" related_files="[\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
9
- // CIL[DOC-CONTRACT inputs="none" outputs="React components and utilities" errors="none" side_effects="none"]
10
- // CIL[DOC-MICRO logic_summary="Imports React hooks, navigation, API utilities, and UI components" notable_decisions="[]"]
11
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
12
- // CIL[DOC-STABILITY stability="stable"]
13
- // CIL[DOC-AUDIENCE audience="developer"]
14
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
15
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
16
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
17
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
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
15
  import React, { useState, useEffect } from 'react'
21
16
  import { useParams, useNavigate } from 'react-router-dom'
22
17
  import { useApi } from '../../hooks/useApi'
@@ -37,21 +32,22 @@ import { DataTable } from '../../components/ui/DataTable'
37
32
  import { ArrowLeft, Pencil, Trash2, AlertCircle } from 'lucide-react'
38
33
  import { formatDateTime } from '../../lib/utils'
39
34
  import { PageInstructions } from '../../components/admin/PageInstructions'
40
- // CIL[END chunk_id="typedetailpage_moduleheader_1783664706"]
41
- // CIL[BEGIN chunk_id="typedetailpage_type_1783664706" type="interface" identity="Type" parent="none"]
42
- // CIL[DOC-MACRO purpose="Define the Type data structure for type management"]
43
- // CIL[DOC-RESPONSIBILITY responsibility="Provide type definition for item/account/person types"]
44
- // CIL[DOC-CONTEXT module="TypeDetailPage" layer="frontend-page" related_files="[\".framework/migrations/025_retype_threads_messages.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
45
- // CIL[DOC-CONTRACT inputs="none" outputs="Type interface" errors="none" side_effects="none"]
46
- // CIL[DOC-MICRO logic_summary="Defines comprehensive type structure with design schema and permissions" notable_decisions="[]"]
47
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
48
- // CIL[DOC-STABILITY stability="stable"]
49
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 1. Direct calls: 0. Related files: .framework/migrations/025_retype_threads_messages.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/schema-utils.ts, \."]
50
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
51
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
52
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
35
+
36
+ // CIL[DOC-VECTOR type="context" content="purpose='Admin type detail page for viewing, creating, and editing Spine type schemas'; No verified external callers; imports: .framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/components/ui/button.tsx"]
37
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
38
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
39
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
53
40
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
54
41
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
42
+ // CIL[END stable_id="~/.framework/src/pages/admin/TypeDetailPage.tsx:module_header:module_header"]
43
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/TypeDetailPage.tsx:Type:interface" type="interface" identity="Type" parent="~/.framework/src/pages/admin/TypeDetailPage.tsx"]
44
+ // CIL[DOC-MACRO purpose="Shape of a Spine type record used by the admin detail page"]
45
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the Type data structure including design_schema, validation_schema, view_config, ownership, and timestamps"]
46
+ // CIL[DOC-CONTEXT module="admin" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/Modal.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/checkbox.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/TypeDetailPage.tsx"]
47
+ // CIL[DOC-CONTRACT inputs="API or form data" outputs="Type-typed object" errors="none" side_effects="none"]
48
+ // CIL[DOC-MICRO logic_summary="Interface describing a configurable runtime record type with schemas and metadata" notable_decisions="[]"]
49
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
50
+ // CIL[DOC-STABILITY stability="stable"]
55
51
  interface Type {
56
52
  id: string
57
53
  name: string
@@ -73,21 +69,22 @@ interface Type {
73
69
  created_at: string
74
70
  updated_at: string
75
71
  }
76
- // CIL[END chunk_id="typedetailpage_type_1783664706"]
77
- // CIL[BEGIN chunk_id="typedetailpage_typeitem_1783664706" type="interface" identity="TypeItem" parent="none"]
78
- // CIL[DOC-MACRO purpose="Define the TypeItem data structure for item instances"]
79
- // CIL[DOC-RESPONSIBILITY responsibility="Provide type definition for type item records"]
80
- // CIL[DOC-CONTEXT module="TypeDetailPage" layer="frontend-page" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
81
- // CIL[DOC-CONTRACT inputs="none" outputs="TypeItem interface" errors="none" side_effects="none"]
82
- // CIL[DOC-MICRO logic_summary="Defines item structure with data, metadata, and ownership" 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-page. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
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."]
72
+ // CIL[DOC-VECTOR type="context" content="purpose='Shape of a Spine type record used by the admin detail page'; No verified external callers; imports: .framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/components/ui/button.tsx"]
73
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
74
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
75
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
89
76
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
90
77
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
78
+ // CIL[END stable_id="~/.framework/src/pages/admin/TypeDetailPage.tsx:Type:interface"]
79
+
80
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/TypeDetailPage.tsx:TypeItem:interface" type="interface" identity="TypeItem" parent="~/.framework/src/pages/admin/TypeDetailPage.tsx"]
81
+ // CIL[DOC-MACRO purpose="Shape of a runtime item that belongs to a Spine type"]
82
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the TypeItem data structure with data, metadata, and audit fields"]
83
+ // CIL[DOC-CONTEXT module="admin" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/Modal.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/checkbox.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/TypeDetailPage.tsx"]
84
+ // CIL[DOC-CONTRACT inputs="admin-data API response" outputs="TypeItem-typed array" errors="none" side_effects="none"]
85
+ // CIL[DOC-MICRO logic_summary="Interface describing a single runtime record of a type" notable_decisions="[]"]
86
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
87
+ // CIL[DOC-STABILITY stability="stable"]
91
88
  interface TypeItem {
92
89
  id: string
93
90
  item_type_id: string
@@ -98,21 +95,22 @@ interface TypeItem {
98
95
  created_by: string
99
96
  account_id: string
100
97
  }
101
- // CIL[END chunk_id="typedetailpage_typeitem_1783664706"]
102
- // CIL[BEGIN chunk_id="typedetailpage_typedetailpage_1783664706" type="function" identity="TypeDetailPage" parent="none"]
103
- // CIL[DOC-MACRO purpose="Create/view/edit/delete page for single type records"]
104
- // CIL[DOC-RESPONSIBILITY responsibility="Manage type CRUD operations with form handling and validation"]
105
- // CIL[DOC-CONTEXT module="TypeDetailPage" layer="frontend-page" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
106
- // CIL[DOC-CONTRACT inputs="none" outputs="React component with type form" errors="API failures, validation errors" side_effects="API calls, navigation"]
107
- // CIL[DOC-MICRO logic_summary="Complex form handling with schema validation and item management" notable_decisions="[]"]
108
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
109
- // CIL[DOC-STABILITY stability="stable"]
110
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
111
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
112
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
113
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
98
+ // CIL[DOC-VECTOR type="context" content="purpose='Shape of a runtime item that belongs to a Spine type'; No verified external callers; imports: .framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/components/ui/button.tsx"]
99
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
100
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
101
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
114
102
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
115
103
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
104
+ // CIL[END stable_id="~/.framework/src/pages/admin/TypeDetailPage.tsx:TypeItem:interface"]
105
+
106
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/TypeDetailPage.tsx:TypeDetailPage:component" type="component" identity="TypeDetailPage" parent="~/.framework/src/pages/admin/TypeDetailPage.tsx"]
107
+ // CIL[DOC-MACRO purpose="Render and manage the admin type detail page with create, edit, view, and delete flows"]
108
+ // CIL[DOC-RESPONSIBILITY responsibility="Fetch type and item data, validate JSON schemas, and present edit/read UI"]
109
+ // CIL[DOC-CONTEXT module="admin" layer="page" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/Modal.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/checkbox.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/TypeDetailPage.tsx"]
110
+ // CIL[DOC-CONTRACT inputs="id and kind route params, available apps list, user interactions" outputs="Rendered admin UI, API save/delete requests" errors="Fetch failures, invalid JSON, save errors" side_effects="Browser alert, navigation, useState updates, API calls"]
111
+ // CIL[DOC-MICRO logic_summary="Component loads a type by id or slug, allows editing design/view JSON, lists related items, and supports deletion" notable_decisions="[]"]
112
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
113
+ // CIL[DOC-STABILITY stability="stable"]
116
114
  export function TypeDetailPage() {
117
115
  const { id, kind } = useParams<{ id: string, kind: string }>()
118
116
  const navigate = useNavigate()
@@ -352,24 +350,42 @@ export function TypeDetailPage() {
352
350
  <AlertTitle>Failed to load type details</AlertTitle>
353
351
  <AlertDescription>{error || 'Type not found'}</AlertDescription>
354
352
  <Button onClick={() => refetch()} variant="outline" className="mt-4">Retry</Button>
353
+
355
354
  </Alert>
356
355
  )
357
356
  }
358
357
 
358
+
359
+
360
+
361
+
359
362
  const itemColumns = [
360
363
  {
361
364
  key: 'id' as keyof TypeItem,
362
365
  title: 'ID',
363
366
  render: (row: any) => (
364
367
  <span className="font-mono text-xs">{row.id?.slice(0, 8)}...</span>
368
+
369
+
370
+
365
371
  )
366
372
  },
367
373
  {
368
374
  key: 'data' as keyof TypeItem,
369
375
  title: 'Data',
370
376
  render: (row: any) => {
377
+
378
+
379
+
380
+
371
381
  const firstFieldKey = Object.keys(type?.design_schema?.fields || {})[0]
382
+
383
+
384
+
385
+
386
+
372
387
  const displayValue = firstFieldKey ? row.data?.[firstFieldKey] : 'No data'
388
+
373
389
  return (
374
390
  <div>
375
391
  <div className="font-medium">{displayValue}</div>
@@ -379,6 +395,13 @@ export function TypeDetailPage() {
379
395
  </div>
380
396
  )
381
397
  }
398
+
399
+
400
+
401
+
402
+
403
+
404
+
382
405
  },
383
406
  {
384
407
  key: 'created_at' as keyof TypeItem,
@@ -452,7 +475,10 @@ export function TypeDetailPage() {
452
475
  <li><strong>Kind</strong> — select. item, account, person, thread, or message. Determines which runtime table the type governs.</li>
453
476
  <li><strong>Ownership</strong> — select. system, app, or tenant. Controls the data scope and who can manage the type.</li>
454
477
  <li><strong>Is Active</strong> — checkbox. Inactive types cannot have records created.</li>
478
+
479
+ ]
455
480
  <li><strong>App ID</strong> — select. Optional owning app. None means a system type. Selecting an app scopes the type to that app.</li>
481
+ ]
456
482
  <li><strong>Icon</strong> — string. An icon name for the UI stored in the types row.</li>
457
483
  <li><strong>Color</strong> — select. The theme color for the type stored in the types row.</li>
458
484
  <li><strong>Created / Updated</strong> — read-only timestamps.</li>
@@ -476,7 +502,10 @@ export function TypeDetailPage() {
476
502
  <li>Delete is disabled for system-owned types. Delete opens a confirmation modal for others.</li>
477
503
  </ol> },
478
504
  { title: 'Common mistakes', content: <ul className="list-disc pl-4 space-y-1">
505
+
506
+ ]
479
507
  <li>Reusing a slug for the same kind, which breaks type resolution.</li>
508
+ ]
480
509
  <li>Missing default_list or default_detail in the design schema, causing the generic UI to fail.</li>
481
510
  <li>Using an unknown data_type or display_type, leading to validation or rendering errors.</li>
482
511
  </ul> },
@@ -814,4 +843,11 @@ export function TypeDetailPage() {
814
843
  </div>
815
844
  )
816
845
  }
817
- // CIL[END chunk_id="typedetailpage_typedetailpage_1783664706"]
846
+
847
+ // CIL[DOC-VECTOR type="context" content="purpose='Render and manage the admin type detail page with create, edit, view, and delete flows'; No verified external callers; imports: .framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/components/ui/button.tsx"]
848
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
849
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
850
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
851
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
852
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
853
+ // CIL[END stable_id="~/.framework/src/pages/admin/TypeDetailPage.tsx:TypeDetailPage:component"]
@@ -1,21 +1,16 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/TypesPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/pages/admin/TypesPage.tsx"]
2
+ // CIL[DOC-MACRO purpose="Admin Types page header and module imports for the Spine admin configuration UI."]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the module scope, organize imports, and provide the entry point for the admin Types management page."]
4
+ // CIL[DOC-CONTEXT module="admin.types" layer="presentation" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Contains module-level imports for React, local hooks, API client, UI components, and utilities used by TypesPage." notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="developer"]
10
+
1
11
 
2
12
 
3
13
 
4
- // CIL[BEGIN chunk_id="typespage_moduleheader_1783664706" type="module_header" identity="module_header" parent="none"]
5
- // CIL[DOC-MACRO purpose="Import dependencies for TypesPage component"]
6
- // CIL[DOC-RESPONSIBILITY responsibility="Provide all external dependencies and UI components"]
7
- // CIL[DOC-CONTEXT module="TypesPage" layer="frontend-page" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/portal/pages/CoursesPage.tsx\",\"\\\"]"]
8
- // CIL[DOC-CONTRACT inputs="none" outputs="React components and utilities" errors="none" side_effects="none"]
9
- // CIL[DOC-MICRO logic_summary="Imports React hooks, API utilities, icons, and UI components" notable_decisions="[]"]
10
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
11
- // CIL[DOC-STABILITY stability="stable"]
12
- // CIL[DOC-AUDIENCE audience="developer"]
13
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/portal/pages/CoursesPage.tsx, \."]
14
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
15
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
16
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
17
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
18
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
19
14
  import React, { useState } from 'react'
20
15
  import { useApi } from '../../hooks/useApi'
21
16
  import { apiFetch } from '../../lib/api'
@@ -32,21 +27,22 @@ import { Button } from '../../components/ui/button'
32
27
  import { AdminListPage } from '../../components/admin/AdminListPage'
33
28
  import { SortableTableHeader } from '../../components/admin/SortableTableHeader'
34
29
  import { formatDateTime } from '../../lib/utils'
35
- // CIL[END chunk_id="typespage_moduleheader_1783664706"]
36
- // CIL[BEGIN chunk_id="typespage_type_1783664706" type="interface" identity="Type" parent="none"]
37
- // CIL[DOC-MACRO purpose="Define the Type data structure for type management"]
38
- // CIL[DOC-RESPONSIBILITY responsibility="Provide type definition for item/account/person types"]
39
- // CIL[DOC-CONTEXT module="TypesPage" layer="frontend-page" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
40
- // CIL[DOC-CONTRACT inputs="none" outputs="Type interface" errors="none" side_effects="none"]
41
- // CIL[DOC-MICRO logic_summary="Defines comprehensive type structure with metadata and schema" notable_decisions="[]"]
42
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
43
- // CIL[DOC-STABILITY stability="stable"]
44
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/migrations/025_retype_threads_messages.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/schema-utils.ts, \."]
45
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
46
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
47
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
30
+
31
+ // CIL[DOC-VECTOR type="context" content="purpose='Admin Types page header and module imports for the Spine admin configuration UI.'; No verified external callers; imports: .framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/components/ui/LoadingSpinner.tsx"]
32
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
33
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
34
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
48
35
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
49
36
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
37
+ // CIL[END stable_id="~/.framework/src/pages/admin/TypesPage.tsx:module_header:module_header"]
38
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/TypesPage.tsx:Type:interface" type="interface" identity="Type" parent="~/.framework/src/pages/admin/TypesPage.tsx"]
39
+ // CIL[DOC-MACRO purpose="Describe the shape of a Type record for the admin Types list."]
40
+ // CIL[DOC-RESPONSIBILITY responsibility="Define the Type TypeScript interface used across the TypesPage and related consumers."]
41
+ // CIL[DOC-CONTEXT module="admin.types" layer="presentation" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/TypesPage.tsx"]
42
+ // CIL[DOC-CONTRACT inputs="none" outputs="Type type definition" errors="none" side_effects="none"]
43
+ // CIL[DOC-MICRO logic_summary="Declares fields including id, name, slug, kind, schema fields, ownership, timestamps, and optional app." notable_decisions="[]"]
44
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
45
+ // CIL[DOC-STABILITY stability="stable"]
50
46
  interface Type {
51
47
  id: string
52
48
  name: string
@@ -70,21 +66,22 @@ interface Type {
70
66
  app_id?: string | null
71
67
  app?: any
72
68
  }
73
- // CIL[END chunk_id="typespage_type_1783664706"]
74
- // CIL[BEGIN chunk_id="typespage_typespage_1783664706" type="function" identity="TypesPage" parent="none"]
75
- // CIL[DOC-MACRO purpose="Admin list page for managing item/account/person types"]
76
- // CIL[DOC-RESPONSIBILITY responsibility="Fetch, filter, sort, and display types with navigation"]
77
- // CIL[DOC-CONTEXT module="TypesPage" layer="frontend-page" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/CoursesPage.tsx\",\"\\\"]"]
78
- // CIL[DOC-CONTRACT inputs="none" outputs="React component with type list" errors="API failures" side_effects="API calls, navigation"]
79
- // CIL[DOC-MICRO logic_summary="Client-side filtering, sorting, and stats calculation for types" notable_decisions="[]"]
80
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
81
- // CIL[DOC-STABILITY stability="stable"]
82
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-page. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/CoursesPage.tsx, \."]
83
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
84
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
85
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
69
+ // CIL[DOC-VECTOR type="context" content="purpose='Describe the shape of a Type record for the admin Types list.'; No verified external callers; imports: .framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/components/ui/LoadingSpinner.tsx"]
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"]
86
73
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
87
74
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
75
+ // CIL[END stable_id="~/.framework/src/pages/admin/TypesPage.tsx:Type:interface"]
76
+
77
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/TypesPage.tsx:TypesPage:component" type="component" identity="TypesPage" parent="~/.framework/src/pages/admin/TypesPage.tsx"]
78
+ // CIL[DOC-MACRO purpose="Render the admin Types list with search, category filters, sorting, stats, and navigation."]
79
+ // CIL[DOC-RESPONSIBILITY responsibility="Display and manage Type records; handle user interactions for search, filter, sort, and row navigation."]
80
+ // CIL[DOC-CONTEXT module="admin.types" layer="presentation" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/TypesPage.tsx"]
81
+ // CIL[DOC-CONTRACT inputs="none" outputs="JSX admin list page rendering Type rows" errors="Network or fetch errors are surfaced by useApi" side_effects="Navigates to type detail and new pages; sets React state for search, sort, and filter."]
82
+ // CIL[DOC-MICRO logic_summary="Fetches types via useApi, filters by search and category, sorts by selected key, computes stats cards, and renders an AdminListPage with a sortable table of types." notable_decisions="[]"]
83
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
84
+ // CIL[DOC-STABILITY stability="stable"]
88
85
  export function TypesPage() {
89
86
  const [searchTerm, setSearchTerm] = useState('')
90
87
  const [selectedCategory, setSelectedCategory] = useState('all')
@@ -320,4 +317,10 @@ export function TypesPage() {
320
317
  </AdminListPage>
321
318
  )
322
319
  }
323
- // CIL[END chunk_id="typespage_typespage_1783664706"]
320
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the admin Types list with search, category filters, sorting, stats, and navigation.'; No verified external callers; imports: .framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/components/ui/LoadingSpinner.tsx"]
321
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
322
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
323
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
324
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
325
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
326
+ // CIL[END stable_id="~/.framework/src/pages/admin/TypesPage.tsx:TypesPage:component"]