spine-framework 0.3.145 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/.env.example +76 -0
  2. package/.framework/.spine-manifest.json +19 -0
  3. package/.framework/cli/commands/agents.ts +61 -33
  4. package/.framework/cli/commands/auth.ts +60 -28
  5. package/.framework/cli/commands/create-app.ts +212 -80
  6. package/.framework/cli/commands/dev.ts +184 -68
  7. package/.framework/cli/commands/doctor.ts +324 -152
  8. package/.framework/cli/commands/generate.ts +119 -68
  9. package/.framework/cli/commands/init.ts +141 -242
  10. package/.framework/cli/commands/install-app.ts +1336 -314
  11. package/.framework/cli/commands/items.ts +31 -29
  12. package/.framework/cli/commands/migrate.ts +299 -156
  13. package/.framework/cli/commands/migrations.ts +62 -30
  14. package/.framework/cli/commands/pipelines.ts +31 -29
  15. package/.framework/cli/commands/status.ts +105 -45
  16. package/.framework/cli/commands/system.ts +47 -42
  17. package/.framework/cli/commands/test.ts +161 -102
  18. package/.framework/cli/commands/upgrade.ts +260 -0
  19. package/.framework/cli/commands/validate-app.ts +517 -161
  20. package/.framework/cli/context.ts +117 -85
  21. package/.framework/cli/env-loader.ts +74 -43
  22. package/.framework/cli/index.ts +70 -46
  23. package/.framework/cli/lib/project-files.ts +404 -0
  24. package/.framework/docs/guides/testing-guide.md +1 -1
  25. package/.framework/docs/runtime-types.md +72 -72
  26. package/.framework/functions/_shared/access.ts +84 -0
  27. package/.framework/functions/_shared/agent-runner.ts +5067 -1026
  28. package/.framework/functions/_shared/app-manifest.ts +214 -94
  29. package/.framework/functions/_shared/ast.ts +214 -0
  30. package/.framework/functions/_shared/audit.ts +91 -55
  31. package/.framework/functions/_shared/cil.ts +368 -127
  32. package/.framework/functions/_shared/db.ts +337 -68
  33. package/.framework/functions/_shared/funnel.ts +228 -0
  34. package/.framework/functions/_shared/geo.ts +105 -0
  35. package/.framework/functions/_shared/hash-api-key.ts +94 -17
  36. package/.framework/functions/_shared/index.ts +22 -224
  37. package/.framework/functions/_shared/kb.ts +832 -58
  38. package/.framework/functions/_shared/llm.ts +118 -18
  39. package/.framework/functions/_shared/logging.ts +317 -19
  40. package/.framework/functions/_shared/middleware.ts +701 -131
  41. package/.framework/functions/_shared/notify.ts +70 -0
  42. package/.framework/functions/_shared/outcomes.ts +34 -19
  43. package/.framework/functions/_shared/permissions.ts +501 -315
  44. package/.framework/functions/_shared/pipeline-runner.ts +704 -155
  45. package/.framework/functions/_shared/principal.ts +436 -263
  46. package/.framework/functions/_shared/rate-limit.ts +233 -0
  47. package/.framework/functions/_shared/resolve-credentials.ts +86 -19
  48. package/.framework/functions/_shared/resolve-ids.ts +203 -139
  49. package/.framework/functions/_shared/retry-deliveries.ts +51 -16
  50. package/.framework/functions/_shared/schema-utils.ts +602 -521
  51. package/.framework/functions/_shared/security.ts +345 -0
  52. package/.framework/functions/_shared/testing.ts +197 -172
  53. package/.framework/functions/_shared/tracing.ts +351 -21
  54. package/.framework/functions/_shared/trigger-engine.ts +425 -136
  55. package/.framework/functions/_shared/webhook-registration.ts +71 -70
  56. package/.framework/functions/_shared/webhook-registry.ts +126 -83
  57. package/.framework/functions/account-nodes.ts +30 -30
  58. package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
  59. package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
  60. package/.framework/functions/adapters/openai-outbound.ts +15 -16
  61. package/.framework/functions/admin-data.ts +596 -173
  62. package/.framework/functions/admin-funnel.ts +64 -60
  63. package/.framework/functions/admin-install-funnel.ts +84 -66
  64. package/.framework/functions/admin-signals.ts +69 -51
  65. package/.framework/functions/ai-agents.ts +431 -106
  66. package/.framework/functions/ai-interactions.ts +186 -112
  67. package/.framework/functions/api-keys.ts +107 -107
  68. package/.framework/functions/apps.ts +154 -136
  69. package/.framework/functions/auth.ts +83 -65
  70. package/.framework/functions/cil-agent-ingest.ts +189 -232
  71. package/.framework/functions/cil-agent.ts +433 -177
  72. package/.framework/functions/cil-callmap.ts +642 -430
  73. package/.framework/functions/cil-config.ts +139 -135
  74. package/.framework/functions/cil-context.ts +214 -127
  75. package/.framework/functions/cil-doc.ts +587 -458
  76. package/.framework/functions/cil-embeddings.ts +453 -364
  77. package/.framework/functions/cil-graph.ts +427 -142
  78. package/.framework/functions/cil-ingest.ts +1418 -1154
  79. package/.framework/functions/cil-pipeline.ts +276 -21
  80. package/.framework/functions/cil-project.ts +659 -132
  81. package/.framework/functions/cil-validate.ts +198 -164
  82. package/.framework/functions/debug-auth.ts +57 -55
  83. package/.framework/functions/deliveries.ts +80 -21
  84. package/.framework/functions/embeddings.ts +1023 -318
  85. package/.framework/functions/eval-harness.ts +146 -108
  86. package/.framework/functions/integration-outbound.ts +205 -75
  87. package/.framework/functions/integration-routes.ts +128 -23
  88. package/.framework/functions/integrations.ts +125 -100
  89. package/.framework/functions/invites.ts +1095 -460
  90. package/.framework/functions/item-progress.ts +158 -102
  91. package/.framework/functions/kb.ts +34 -10
  92. package/.framework/functions/logs.ts +133 -133
  93. package/.framework/functions/observability.ts +152 -122
  94. package/.framework/functions/pipeline-executions.ts +147 -132
  95. package/.framework/functions/pipelines.ts +134 -119
  96. package/.framework/functions/prompt-configs.ts +96 -80
  97. package/.framework/functions/roles.ts +112 -82
  98. package/.framework/functions/security.ts +450 -0
  99. package/.framework/functions/system-cron.ts +117 -80
  100. package/.framework/functions/system.ts +158 -98
  101. package/.framework/functions/tests.ts +29 -29
  102. package/.framework/functions/timers.ts +94 -95
  103. package/.framework/functions/trigger-scheduler.ts +10 -0
  104. package/.framework/functions/triggers.ts +179 -149
  105. package/.framework/functions/types.ts +137 -125
  106. package/.framework/mcp/index.ts +133 -0
  107. package/.framework/mcp/load-env.ts +60 -0
  108. package/.framework/mcp/shared/app-manifest.ts +275 -0
  109. package/.framework/mcp/shared/db.ts +477 -0
  110. package/.framework/mcp/shared/kb.ts +118 -0
  111. package/.framework/mcp/tools/architect.ts +431 -0
  112. package/.framework/mcp/tools/cil/context.ts +345 -0
  113. package/.framework/mcp/tools/cil/graph.ts +242 -0
  114. package/.framework/mcp/tools/cil/ingest.ts +1217 -0
  115. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
  116. package/.framework/mcp/tools/cil/pipeline.ts +767 -0
  117. package/.framework/mcp/tools/cil/project.ts +791 -0
  118. package/.framework/mcp/tools/cil/retrieval.ts +336 -0
  119. package/.framework/mcp/tools/cil/search-core.ts +454 -0
  120. package/.framework/mcp/tools/cil/search.ts +97 -0
  121. package/.framework/mcp/tools/cil/suggest.ts +186 -0
  122. package/.framework/mcp/tools/cil/validate.ts +1369 -0
  123. package/.framework/mcp/tools/kb/delete.ts +139 -0
  124. package/.framework/mcp/tools/kb/index.ts +52 -0
  125. package/.framework/mcp/tools/kb/ingest.ts +84 -0
  126. package/.framework/mcp/tools/kb/list-types.ts +102 -0
  127. package/.framework/mcp/tools/kb/publish.ts +100 -0
  128. package/.framework/mcp/tools/kb/reindex.ts +86 -0
  129. package/.framework/mcp/tools/kb/revoke.ts +85 -0
  130. package/.framework/mcp/tools/kb/search.ts +101 -0
  131. package/.framework/mcp/tools/kb/upsert.ts +125 -0
  132. package/.framework/mcp/tools/observability.ts +510 -0
  133. package/.framework/migrations/001_core_schema.sql +15 -0
  134. package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
  135. package/.framework/migrations/003_core_system_data.sql +16 -1
  136. package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
  137. package/.framework/migrations/005_core_observability.sql +17 -1
  138. package/.framework/migrations/006_security_hardening_rls.sql +15 -0
  139. package/.framework/migrations/007_kb_article_list.sql +17 -1
  140. package/.framework/migrations/008_items_target.sql +15 -0
  141. package/.framework/migrations/009_roles_slug_unique.sql +15 -0
  142. package/.framework/migrations/010_auth_user_trigger.sql +15 -0
  143. package/.framework/migrations/011_spine_system_account.sql +16 -0
  144. package/.framework/migrations/012_service_role_grants.sql +16 -0
  145. package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
  146. package/.framework/migrations/014_apps_required_roles.sql +16 -0
  147. package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
  148. package/.framework/migrations/016_cil_types.sql +281 -0
  149. package/.framework/migrations/017_cil_stable_ids.sql +37 -0
  150. package/.framework/migrations/018_runtime_tables.sql +129 -0
  151. package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
  152. package/.framework/migrations/020_schema_reconciliation.sql +67 -0
  153. package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
  154. package/.framework/migrations/032_cil_status_migration.sql +73 -0
  155. package/.framework/migrations/033_cil_versioning.sql +73 -0
  156. package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
  157. package/.framework/migrations/035_rate_limits.sql +55 -0
  158. package/.framework/migrations/036_demo_record_flags.sql +72 -0
  159. package/.framework/migrations/037_kb_types_canonical.sql +244 -0
  160. package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
  161. package/.framework/migrations/042_registration_hierarchy.sql +309 -0
  162. package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
  163. package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
  164. package/.framework/migrations/045_security_critical_rls.sql +139 -0
  165. package/.framework/migrations/046_security_missing_rls.sql +79 -0
  166. package/.framework/migrations/047_people_updated_by.sql +27 -0
  167. package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
  168. package/.framework/migrations/049_security_blocklist.sql +148 -0
  169. package/.framework/migrations/050_notifications.sql +49 -0
  170. package/.framework/migrations/051_message_agent_fields.sql +74 -0
  171. package/.framework/migrations/052_registration_security.sql +421 -0
  172. package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
  173. package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
  174. package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
  175. package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
  176. package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
  177. package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
  178. package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
  179. package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
  180. package/.framework/migrations/061_fk_dedup.sql +32 -0
  181. package/.framework/public/spine-logo.svg +10 -3
  182. package/.framework/scripts/app-install-cli.ts +190 -93
  183. package/.framework/scripts/assemble-frontend.sh +127 -44
  184. package/.framework/scripts/assemble-functions.sh +128 -30
  185. package/.framework/scripts/boundary-check.sh +6 -2
  186. package/.framework/scripts/build-manifest.sh +24 -68
  187. package/.framework/scripts/check-core-integrity.sh +15 -76
  188. package/.framework/scripts/checksum-manifest.mts +343 -0
  189. package/.framework/scripts/cil-migrate-markers.ts +403 -0
  190. package/.framework/scripts/fix-cil-markers.mjs +176 -0
  191. package/.framework/scripts/verify-integrity.sh +21 -57
  192. package/.framework/scripts/verify-manifest.mts +305 -0
  193. package/.framework/seeds/types/funnel_signal_use.json +74 -21
  194. package/.framework/seeds/types/spine_instance.json +73 -21
  195. package/.framework/src/App.tsx +118 -72
  196. package/.framework/src/apps/admin/index.tsx +855 -58
  197. package/.framework/src/components/AppWrapper.tsx +43 -45
  198. package/.framework/src/components/CustomAppLoader.tsx +160 -116
  199. package/.framework/src/components/admin/AdminListPage.tsx +46 -44
  200. package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
  201. package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
  202. package/.framework/src/components/admin/PageInstructions.tsx +98 -2
  203. package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
  204. package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
  205. package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
  206. package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
  207. package/.framework/src/components/app-sidebar.tsx +42 -45
  208. package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
  209. package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
  210. package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
  211. package/.framework/src/components/kb/KBArticleList.tsx +251 -10
  212. package/.framework/src/components/layout/AppShell.tsx +51 -45
  213. package/.framework/src/components/layout/Header.tsx +42 -43
  214. package/.framework/src/components/layout/Layout.tsx +46 -46
  215. package/.framework/src/components/layout/Sidebar.tsx +196 -96
  216. package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
  217. package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
  218. package/.framework/src/components/runtime/DataFilters.tsx +49 -74
  219. package/.framework/src/components/runtime/DataHeader.tsx +53 -32
  220. package/.framework/src/components/runtime/DataListPage.tsx +51 -155
  221. package/.framework/src/components/runtime/DataStats.tsx +66 -44
  222. package/.framework/src/components/runtime/DataTable.tsx +49 -149
  223. package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
  224. package/.framework/src/components/runtime/index.ts +119 -16
  225. package/.framework/src/components/search-form.tsx +46 -29
  226. package/.framework/src/components/shared/AgentView.tsx +65 -48
  227. package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
  228. package/.framework/src/components/shared/InviteManager.tsx +207 -97
  229. package/.framework/src/components/shared/MemberList.tsx +97 -0
  230. package/.framework/src/components/shared/SchemaFields.tsx +107 -86
  231. package/.framework/src/components/ui/DataTable.tsx +80 -68
  232. package/.framework/src/components/ui/Form.tsx +157 -146
  233. package/.framework/src/components/ui/ItemCard.tsx +74 -67
  234. package/.framework/src/components/ui/ItemListView.tsx +73 -68
  235. package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
  236. package/.framework/src/components/ui/Modal.tsx +78 -68
  237. package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
  238. package/.framework/src/components/ui/accordion.tsx +85 -86
  239. package/.framework/src/components/ui/alert-dialog.tsx +197 -184
  240. package/.framework/src/components/ui/alert.tsx +105 -94
  241. package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
  242. package/.framework/src/components/ui/avatar.tsx +122 -107
  243. package/.framework/src/components/ui/badge.tsx +60 -55
  244. package/.framework/src/components/ui/breadcrumb.tsx +127 -128
  245. package/.framework/src/components/ui/button-group.tsx +86 -72
  246. package/.framework/src/components/ui/button.tsx +71 -50
  247. package/.framework/src/components/ui/calendar.tsx +72 -57
  248. package/.framework/src/components/ui/card.tsx +136 -129
  249. package/.framework/src/components/ui/carousel.tsx +226 -107
  250. package/.framework/src/components/ui/chart.tsx +252 -147
  251. package/.framework/src/components/ui/checkbox.tsx +43 -44
  252. package/.framework/src/components/ui/collapsible.tsx +86 -71
  253. package/.framework/src/components/ui/combobox.tsx +282 -249
  254. package/.framework/src/components/ui/command.tsx +158 -146
  255. package/.framework/src/components/ui/context-menu.tsx +239 -240
  256. package/.framework/src/components/ui/dialog.tsx +174 -157
  257. package/.framework/src/components/ui/direction.tsx +72 -56
  258. package/.framework/src/components/ui/drawer.tsx +168 -169
  259. package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
  260. package/.framework/src/components/ui/empty.tsx +131 -120
  261. package/.framework/src/components/ui/field.tsx +205 -173
  262. package/.framework/src/components/ui/hover-card.tsx +71 -72
  263. package/.framework/src/components/ui/input-group.tsx +148 -133
  264. package/.framework/src/components/ui/input-otp.tsx +99 -86
  265. package/.framework/src/components/ui/input.tsx +43 -41
  266. package/.framework/src/components/ui/item.tsx +207 -185
  267. package/.framework/src/components/ui/kbd.tsx +57 -56
  268. package/.framework/src/components/ui/label.tsx +45 -41
  269. package/.framework/src/components/ui/menubar.tsx +268 -236
  270. package/.framework/src/components/ui/native-select.tsx +85 -86
  271. package/.framework/src/components/ui/navigation-menu.tsx +166 -156
  272. package/.framework/src/components/ui/pagination.tsx +131 -141
  273. package/.framework/src/components/ui/popover.tsx +125 -128
  274. package/.framework/src/components/ui/progress.tsx +47 -44
  275. package/.framework/src/components/ui/radio-group.tsx +60 -55
  276. package/.framework/src/components/ui/resizable.tsx +85 -72
  277. package/.framework/src/components/ui/scroll-area.tsx +57 -58
  278. package/.framework/src/components/ui/select.tsx +182 -169
  279. package/.framework/src/components/ui/separator.tsx +42 -43
  280. package/.framework/src/components/ui/sheet.tsx +170 -159
  281. package/.framework/src/components/ui/sidebar.tsx +395 -398
  282. package/.framework/src/components/ui/skeleton.tsx +42 -43
  283. package/.framework/src/components/ui/slider.tsx +61 -44
  284. package/.framework/src/components/ui/sonner.tsx +44 -44
  285. package/.framework/src/components/ui/spinner.tsx +47 -42
  286. package/.framework/src/components/ui/switch.tsx +56 -42
  287. package/.framework/src/components/ui/table-primitives.tsx +272 -132
  288. package/.framework/src/components/ui/table.tsx +140 -142
  289. package/.framework/src/components/ui/tabs.tsx +110 -93
  290. package/.framework/src/components/ui/textarea.tsx +43 -44
  291. package/.framework/src/components/ui/toggle-group.tsx +87 -71
  292. package/.framework/src/components/ui/toggle.tsx +56 -56
  293. package/.framework/src/components/ui/tooltip.tsx +99 -85
  294. package/.framework/src/contexts/AppContext.tsx +166 -114
  295. package/.framework/src/contexts/AuthContext.tsx +232 -137
  296. package/.framework/src/hooks/use-mobile.ts +43 -44
  297. package/.framework/src/hooks/useApi.ts +185 -172
  298. package/.framework/src/hooks/useAppPath.ts +31 -29
  299. package/.framework/src/hooks/useApps.ts +77 -42
  300. package/.framework/src/hooks/useEntityList.ts +66 -29
  301. package/.framework/src/hooks/useEntityRecord.ts +76 -32
  302. package/.framework/src/hooks/useForm.ts +62 -30
  303. package/.framework/src/hooks/useListSchema.ts +60 -43
  304. package/.framework/src/hooks/useSchemaRecord.ts +115 -95
  305. package/.framework/src/lib/api.ts +258 -134
  306. package/.framework/src/lib/registration.ts +181 -0
  307. package/.framework/src/lib/supabase.ts +118 -81
  308. package/.framework/src/lib/utils.ts +266 -266
  309. package/.framework/src/main.tsx +43 -44
  310. package/.framework/src/pages/DashboardPage.tsx +44 -43
  311. package/.framework/src/pages/NoAppPage.tsx +50 -0
  312. package/.framework/src/pages/NotFoundPage.tsx +32 -29
  313. package/.framework/src/pages/SetupPage.tsx +34 -33
  314. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
  315. package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
  316. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
  317. package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
  318. package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
  319. package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
  320. package/.framework/src/pages/admin/AppsPage.tsx +45 -42
  321. package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
  322. package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
  323. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
  324. package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
  325. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
  326. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
  327. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
  328. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
  329. package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
  330. package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
  331. package/.framework/src/pages/admin/LogsPage.tsx +87 -137
  332. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
  333. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
  334. package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
  335. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
  336. package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
  337. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
  338. package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
  339. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
  340. package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
  341. package/.framework/src/pages/admin/RolesPage.tsx +47 -164
  342. package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
  343. package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
  344. package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
  345. package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
  346. package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
  347. package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
  348. package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
  349. package/.framework/src/pages/admin/TimersPage.tsx +44 -42
  350. package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
  351. package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
  352. package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
  353. package/.framework/src/pages/admin/TypesPage.tsx +45 -42
  354. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
  355. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
  356. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
  357. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
  358. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
  359. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
  360. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
  361. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
  362. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
  363. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
  364. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
  365. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
  366. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  367. package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
  368. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
  369. package/.framework/src/pages/auth/LoginPage.tsx +38 -32
  370. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
  371. package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
  372. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
  373. package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
  374. package/.framework/src/types/auth.ts +101 -93
  375. package/.framework/src/types/types.ts +283 -262
  376. package/.framework/templates/project.json +87 -0
  377. package/.framework/templates/spine.config.neutral.json +7 -0
  378. package/.framework/tests/api/api-surface.test.ts +381 -0
  379. package/.framework/tests/fixtures/seed.ts +427 -0
  380. package/.framework/tests/fixtures/teardown.ts +228 -0
  381. package/.framework/tests/reporter.ts +351 -0
  382. package/.framework/tests/setup.ts +135 -0
  383. package/.framework/tests/ui/ui-sweep.ts +278 -0
  384. package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
  385. package/.framework/tests/unit/agent-runner.test.ts +2389 -0
  386. package/.framework/tests/unit/ai-interactions.test.ts +81 -0
  387. package/.framework/tests/unit/app-manifest.test.ts +359 -0
  388. package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
  389. package/.framework/tests/unit/cil-determinism.test.ts +85 -0
  390. package/.framework/tests/unit/core-isolation.test.ts +153 -0
  391. package/.framework/tests/unit/funnel-signals.test.ts +135 -0
  392. package/.framework/tests/unit/install-app.test.ts +1759 -0
  393. package/.framework/tests/unit/invites-security.test.ts +572 -0
  394. package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
  395. package/.framework/tests/unit/kb-search.test.ts +119 -0
  396. package/.framework/tests/unit/migrate.test.ts +509 -0
  397. package/.framework/tests/unit/notify.test.ts +136 -0
  398. package/.framework/tests/unit/permissions.test.ts +269 -0
  399. package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
  400. package/.framework/tests/unit/principal-cache.test.ts +138 -0
  401. package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
  402. package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
  403. package/.framework/tests/unit/schema-utils.test.ts +225 -0
  404. package/.framework/tests/unit/trigger-engine.test.ts +513 -0
  405. package/.framework/tests/unit/validate-app.test.ts +527 -0
  406. package/README.md +34 -3
  407. package/bin/spine-framework.cjs +1 -0
  408. package/config/tailwind.config.cjs +7 -0
  409. package/config/tsconfig.functions.json +42 -0
  410. package/config/tsconfig.json +37 -9
  411. package/config/vite.config.ts +31 -2
  412. package/netlify.toml +31 -3
  413. package/package.json +46 -29
  414. package/scripts/assemble-frontend.sh +127 -44
  415. package/scripts/assemble-functions.sh +127 -29
  416. package/scripts/boundary-check.sh +6 -2
  417. package/scripts/build-manifest.sh +24 -68
  418. package/scripts/checksum-manifest.mts +345 -0
  419. package/scripts/dev-clean.sh +86 -0
  420. package/scripts/dev-netlify.sh +49 -0
  421. package/scripts/netlify-dev-wrapper.sh +2 -0
  422. package/scripts/verify-install.ts +358 -0
  423. package/scripts/verify-integrity.sh +21 -57
  424. package/scripts/verify-manifest.mts +305 -0
  425. package/templates/project/gitignore +45 -0
  426. package/{config → templates/project}/package-lock.json +22335 -9366
  427. package/vitest.config.ts +46 -0
  428. package/.framework/public/spine.config.json +0 -91
  429. package/config/deno.lock +0 -108
  430. package/config/tsconfig.node.tsbuildinfo +0 -1
  431. package/config/tsconfig.tsbuildinfo +0 -1
  432. package/config/vite.config.d.ts +0 -2
  433. package/custom/.devin/AGENT.md +0 -357
  434. package/custom/.devin/skills/install-app/SKILL.md +0 -39
  435. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
  436. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
  437. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
  438. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
  439. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
  440. package/custom/.devin/workflows/app-install.yaml +0 -83
  441. package/custom/README.md +0 -79
  442. package/docs/README.md +0 -15
  443. package/scripts/app-install-cli.ts +0 -286
  444. package/scripts/check-core-integrity.sh +0 -82
  445. package/scripts/ingest-chunks.cjs +0 -202
  446. package/scripts/kb-chunk-parser.cjs +0 -312
  447. package/scripts/kb-chunk-parser.ts +0 -330
  448. package/scripts/kb-ingest-docs.ts +0 -203
  449. package/scripts/load-test-app-install.ts +0 -484
  450. package/scripts/test-login.js +0 -33
  451. package/spine.config.json +0 -91
@@ -1,39 +1,31 @@
1
-
2
-
3
-
4
- // CIL[BEGIN chunk_id="SortableTableHeader_module_header_1783931090" type="module_header" identity="imports" parent="none"]
5
- // CIL[DOC-MACRO purpose="Import React and UI components for sortable table header"]
6
- // CIL[DOC-RESPONSIBILITY responsibility="Manage all external module imports for sortable header"]
7
- // CIL[DOC-CONTEXT module="SortableTableHeader" layer="component" related_files="[\".framework/src/components/ui/table-primitives.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
8
- // CIL[DOC-CONTRACT inputs="none" outputs="Imported modules and icons" errors="Import failures" side_effects="Module loading"]
9
- // CIL[DOC-MICRO logic_summary="Imports React, chevron icons, and table head component" notable_decisions="[]"]
10
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/admin/SortableTableHeader.tsx:module_header:module_header" type="module_header" identity="module_header" parent=""]
2
+ // CIL[DOC-MACRO purpose="Module header for the SortableTableHeader component: imports React, ChevronUp/ChevronDown icons, and the TableHead UI primitive"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare module-level imports required by the SortableTableHeader component"]
4
+ // CIL[DOC-CONTEXT module="admin" layer="presentation" related_files=".framework/src/components/ui/table.tsx"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Imports React, ChevronUp/ChevronDown icons from lucide-react, and the TableHead component from shadcn table primitives" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
11
8
  // CIL[DOC-STABILITY stability="stable"]
12
- // CIL[DOC-AUDIENCE audience="developer"]
13
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/table-primitives.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.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"]
9
+ // CIL[DOC-AUDIENCE audience="admin developers"]
19
10
  import React from 'react'
20
11
  import { ChevronUp, ChevronDown } from 'lucide-react'
21
12
  import { TableHead } from '../ui/table'
22
- // CIL[END chunk_id="SortableTableHeader_module_header_1783931090"]
23
- // CIL[BEGIN chunk_id="SortableTableHeader_interface_1783931090" type="interface" identity="SortableTableHeaderProps" parent="none"]
24
- // CIL[DOC-MACRO purpose="Define props interface for SortableTableHeader component"]
25
- // CIL[DOC-RESPONSIBILITY responsibility="Type definition for sortable header properties"]
26
- // CIL[DOC-CONTEXT module="SortableTableHeader" layer="component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\"\\\"]"]
27
- // CIL[DOC-CONTRACT inputs="none" outputs="Type interface" errors="none" side_effects="none"]
28
- // CIL[DOC-MICRO logic_summary="Defines title, sort key, current sort state, and sort callback props" notable_decisions="[]"]
29
- // CIL[DOC-CONFIDENCE pass="second" score="1.00" flags="none"]
30
- // CIL[DOC-STABILITY stability="stable"]
31
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/table-primitives.tsx, \."]
32
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
33
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
34
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
13
+ // CIL[DOC-VECTOR type="context" content="purpose='Module header for the SortableTableHeader component: imports React, ChevronUp/ChevronDown icons, and the TableHead UI primitive'; No verified external callers; imports: .framework/src/components/ui/table.tsx"]
14
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
15
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
16
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
35
17
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
36
18
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
19
+ // CIL[END stable_id="~/.framework/src/components/admin/SortableTableHeader.tsx:module_header:module_header"]
20
+
21
+ // CIL[BEGIN stable_id="~/.framework/src/components/admin/SortableTableHeader.tsx:sortabletableheaderprops:interface" type="interface" identity="SortableTableHeaderProps" parent="SortableTableHeader"]
22
+ // CIL[DOC-MACRO purpose="Props interface for the SortableTableHeader clickable table header component"]
23
+ // CIL[DOC-RESPONSIBILITY responsibility="Define the typed contract consumed by SortableTableHeader"]
24
+ // CIL[DOC-CONTEXT module="admin" layer="presentation" related_files=".framework/src/components/admin/SortableTableHeader.tsx,.framework/src/components/ui/table.tsx"]
25
+ // CIL[DOC-CONTRACT inputs="title: string; sortKey: string; currentSortKey?: string; currentSortDirection?: 'asc' | 'desc'; onSort: (key: string) => void" outputs="interface type" errors="none" side_effects="none"]
26
+ // CIL[DOC-MICRO logic_summary="Describes props for a sortable column header including the current sort key, direction, and click handler" notable_decisions="[]"]
27
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
28
+ // CIL[DOC-STABILITY stability="stable"]
37
29
  interface SortableTableHeaderProps {
38
30
  title: string
39
31
  sortKey: string
@@ -41,21 +33,22 @@ interface SortableTableHeaderProps {
41
33
  currentSortDirection?: 'asc' | 'desc'
42
34
  onSort: (key: string) => void
43
35
  }
44
- // CIL[END chunk_id="SortableTableHeader_interface_1783931090"]
45
- // CIL[BEGIN chunk_id="SortableTableHeader_sortabletableheader_1783931090" type="function" identity="SortableTableHeader" parent="none"]
46
- // CIL[DOC-MACRO purpose="Sortable table header component with click-to-sort functionality"]
47
- // CIL[DOC-RESPONSIBILITY responsibility="Render header with sorting indicators and click handlers"]
48
- // CIL[DOC-CONTEXT module="SortableTableHeader" layer="component" related_files="[\".framework/src/components/ui/table-primitives.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
49
- // CIL[DOC-CONTRACT inputs="none" outputs="Sortable header JSX" errors="none" side_effects="Sort callback execution"]
50
- // CIL[DOC-MICRO logic_summary="Handles sort state, displays chevron indicators, manages click events" notable_decisions="['conditional_sort_indicators', 'click_to_sort']"]
51
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
52
- // CIL[DOC-STABILITY stability="stable"]
53
- // CIL[DOC-VECTOR type="context" content="Layer: component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/table-primitives.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/src/components/ui/dialog.tsx, \."]
54
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
55
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
56
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
36
+ // CIL[DOC-VECTOR type="context" content="purpose='Props interface for the SortableTableHeader clickable table header component'; No verified external callers; imports: .framework/src/components/ui/table.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"]
57
40
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
58
41
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
42
+ // CIL[END stable_id="~/.framework/src/components/admin/SortableTableHeader.tsx:sortabletableheaderprops:interface"]
43
+
44
+ // CIL[BEGIN stable_id="~/.framework/src/components/admin/SortableTableHeader.tsx:sortabletableheader:function" type="function" identity="SortableTableHeader" parent=""]
45
+ // CIL[DOC-MACRO purpose="Renders a clickable table header cell that shows an ascending or descending sort indicator when active"]
46
+ // CIL[DOC-RESPONSIBILITY responsibility="Render a sortable table column header with a visual direction indicator"]
47
+ // CIL[DOC-CONTEXT module="admin" layer="presentation" related_files=".framework/src/components/admin/SortableTableHeader.tsx,.framework/src/components/ui/table.tsx"]
48
+ // CIL[DOC-CONTRACT inputs="title: string, sortKey: string, currentSortKey?: string, currentSortDirection?: 'asc' | 'desc', onSort: (key: string) => void" outputs="JSX TableHead component with optional ChevronUp/ChevronDown icon" errors="none" side_effects="invokes onSort callback when the header is clicked"]
49
+ // CIL[DOC-MICRO logic_summary="Computes whether this column is the active sort and the current ascending state, then renders a clickable TableHead with a chevron icon when sorted" notable_decisions="[]"]
50
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
51
+ // CIL[DOC-STABILITY stability="stable"]
59
52
  export function SortableTableHeader({
60
53
  title,
61
54
  sortKey,
@@ -65,7 +58,7 @@ export function SortableTableHeader({
65
58
  }: SortableTableHeaderProps) {
66
59
  const isSorted = currentSortKey === sortKey
67
60
  const isAscending = currentSortDirection === 'asc'
68
-
61
+
69
62
  return (
70
63
  <TableHead
71
64
  className="cursor-pointer"
@@ -86,4 +79,10 @@ export function SortableTableHeader({
86
79
  </TableHead>
87
80
  )
88
81
  }
89
- // CIL[END chunk_id="SortableTableHeader_sortabletableheader_1783931090"]
82
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders a clickable table header cell that shows an ascending or descending sort indicator when active'; No verified external callers; imports: .framework/src/components/ui/table.tsx"]
83
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
84
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
85
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
86
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
87
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
88
+ // CIL[END stable_id="~/.framework/src/components/admin/SortableTableHeader.tsx:sortabletableheader:function"]
@@ -1,43 +1,33 @@
1
-
2
-
3
-
4
-
5
-
6
- // CIL[BEGIN chunk_id="genericappshell_module_header_1783930597" type="module_header" identity="imports" parent="none"]
7
- // CIL[DOC-MACRO purpose="Import React hooks and routing components for app shell"]
8
- // CIL[DOC-RESPONSIBILITY responsibility="Provide state management and routing dependencies"]
9
- // CIL[DOC-CONTEXT module="generic-app-shell" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
10
- // CIL[DOC-CONTRACT inputs="none" outputs="Imported modules" errors="none" side_effects="none"]
11
- // CIL[DOC-MICRO logic_summary="Imports React hooks, routing components, and app-specific pages" notable_decisions="[]"]
12
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/app-shell/GenericAppShell.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
2
+ // CIL[DOC-MACRO purpose="Module imports and re-exports for the GenericAppShell component"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide React hooks, router utilities, app types, and child page components used by the app shell"]
4
+ // CIL[DOC-CONTEXT module="app-shell" layer="ui" related_files=".framework/src/components/app-shell/GenericDetailPage.tsx,.framework/src/components/app-shell/GenericListPage.tsx,.framework/src/hooks/useApps.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="imported types and components" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Collects module-level imports (React hooks, react-router-dom, app record type, list/detail pages) that the GenericAppShell chunk consumes." notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
13
8
  // CIL[DOC-STABILITY stability="stable"]
14
- // CIL[DOC-AUDIENCE audience="developer"]
15
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/src/components/ui/dialog.tsx, \."]
16
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
17
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
18
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
19
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
20
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
9
+ // CIL[DOC-AUDIENCE audience="spine"]
21
10
  import { useState } from 'react'
22
11
  import { Routes, Route, Navigate, useNavigate, useLocation } from 'react-router-dom'
23
12
  import { AppRecord } from '../../hooks/useApps'
24
13
  import { GenericListPage } from './GenericListPage'
25
14
  import { GenericDetailPage } from './GenericDetailPage'
26
- // CIL[END chunk_id="genericappshell_module_header_1783930597"]
27
- // CIL[BEGIN chunk_id="genericappshell_navitem_1783930597" type="interface" identity="NavItem" parent="none"]
28
- // CIL[DOC-MACRO purpose="Define navigation item structure for app shell"]
29
- // CIL[DOC-RESPONSIBILITY responsibility="Specify navigation properties and routing metadata"]
30
- // CIL[DOC-CONTEXT module="generic-app-shell" layer="frontend-component" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
31
- // CIL[DOC-CONTRACT inputs="none" outputs="Type definition" errors="none" side_effects="none"]
32
- // CIL[DOC-MICRO logic_summary="Interface with id, label, path, and optional type/view metadata" 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-component. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, .framework/src/pages/admin/IntegrationsPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.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."]
15
+ // CIL[DOC-VECTOR type="context" content="purpose='Module imports and re-exports for the GenericAppShell component'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/components/app-shell/GenericListPage.tsx,.framework/src/components/app-shell/GenericDetailPage.tsx"]
16
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
17
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
18
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
39
19
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
40
20
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
21
+ // CIL[END stable_id="~/.framework/src/components/app-shell/GenericAppShell.tsx:module_header:module_header"]
22
+
23
+ // CIL[BEGIN stable_id="~/.framework/src/components/app-shell/GenericAppShell.tsx:NavItem:interface" type="interface" identity="NavItem" parent="~/.framework/src/components/app-shell/GenericAppShell.tsx:module_header:module_header"]
24
+ // CIL[DOC-MACRO purpose="Describe a single navigation item in the generic app shell"]
25
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the NavItem contract used by the sidebar and route generation"]
26
+ // CIL[DOC-CONTEXT module="app-shell" layer="ui" related_files=".framework/src/components/app-shell/GenericAppShell.tsx,.framework/src/components/app-shell/GenericDetailPage.tsx,.framework/src/components/app-shell/GenericListPage.tsx,.framework/src/hooks/useApps.ts"]
27
+ // CIL[DOC-CONTRACT inputs="none" outputs="NavItem interface" errors="none" side_effects="none"]
28
+ // CIL[DOC-MICRO logic_summary="TypeScript interface with id, label, icon, path, type_slug, view, and min_role fields that define a sidebar entry." notable_decisions="[]"]
29
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
30
+ // CIL[DOC-STABILITY stability="stable"]
41
31
  interface NavItem {
42
32
  id: string
43
33
  label: string
@@ -47,39 +37,41 @@ interface NavItem {
47
37
  view?: string
48
38
  min_role?: string
49
39
  }
50
- // CIL[END chunk_id="genericappshell_navitem_1783930597"]
51
- // CIL[BEGIN chunk_id="genericappshell_genericappshellprops_1783930597" type="interface" identity="GenericAppShellProps" parent="none"]
52
- // CIL[DOC-MACRO purpose="Define props interface for generic app shell component"]
53
- // CIL[DOC-RESPONSIBILITY responsibility="Specify app configuration input for shell"]
54
- // CIL[DOC-CONTEXT module="generic-app-shell" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
55
- // CIL[DOC-CONTRACT inputs="none" outputs="Type definition" errors="none" side_effects="none"]
56
- // CIL[DOC-MICRO logic_summary="Simple interface requiring app record with navigation configuration" notable_decisions="[]"]
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-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/migrations/015_simplify_apps_table.sql, .framework/functions/_shared/schema-utils.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
60
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
61
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
62
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
40
+ // CIL[DOC-VECTOR type="context" content="purpose='Describe a single navigation item in the generic app shell'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/components/app-shell/GenericListPage.tsx,.framework/src/components/app-shell/GenericDetailPage.tsx"]
41
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
42
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
43
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
63
44
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
64
45
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
46
+ // CIL[END stable_id="~/.framework/src/components/app-shell/GenericAppShell.tsx:NavItem:interface"]
47
+
48
+ // CIL[BEGIN stable_id="~/.framework/src/components/app-shell/GenericAppShell.tsx:GenericAppShellProps:interface" type="interface" identity="GenericAppShellProps" parent="~/.framework/src/components/app-shell/GenericAppShell.tsx:module_header:module_header"]
49
+ // CIL[DOC-MACRO purpose="Declare props for the GenericAppShell component"]
50
+ // CIL[DOC-RESPONSIBILITY responsibility="Type the app record passed to GenericAppShell"]
51
+ // CIL[DOC-CONTEXT module="app-shell" layer="ui" related_files=".framework/src/components/app-shell/GenericAppShell.tsx,.framework/src/components/app-shell/GenericDetailPage.tsx,.framework/src/components/app-shell/GenericListPage.tsx,.framework/src/hooks/useApps.ts"]
52
+ // CIL[DOC-CONTRACT inputs="none" outputs="GenericAppShellProps interface" errors="none" side_effects="none"]
53
+ // CIL[DOC-MICRO logic_summary="Contains a single app prop of type AppRecord consumed by GenericAppShell." notable_decisions="[]"]
54
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
55
+ // CIL[DOC-STABILITY stability="stable"]
65
56
  interface GenericAppShellProps {
66
57
  app: AppRecord
67
58
  }
68
- // CIL[END chunk_id="genericappshell_genericappshellprops_1783930597"]
69
- // CIL[BEGIN chunk_id="genericappshell_genericappshell_1783930597" type="function" identity="GenericAppShell" parent="none"]
70
- // CIL[DOC-MACRO purpose="Data-driven app shell with sidebar navigation and routing"]
71
- // CIL[DOC-RESPONSIBILITY responsibility="Create complete app layout from app configuration"]
72
- // CIL[DOC-CONTEXT module="generic-app-shell" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"\\\"]"]
73
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX app shell with routes" errors="none" side_effects="Renders navigation, handles routing, manages sidebar state"]
74
- // CIL[DOC-MICRO logic_summary="Builds sidebar from nav_items, generates routes for list/detail pages, handles mobile responsiveness" notable_decisions="[]"]
75
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
76
- // CIL[DOC-STABILITY stability="stable"]
77
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/migrations/015_simplify_apps_table.sql, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/cortex/functions/custom_cil-embeddings.ts, \."]
78
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
79
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
80
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
59
+ // CIL[DOC-VECTOR type="context" content="purpose='Declare props for the GenericAppShell component'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/components/app-shell/GenericListPage.tsx,.framework/src/components/app-shell/GenericDetailPage.tsx"]
60
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
61
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
62
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
81
63
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
82
64
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
65
+ // CIL[END stable_id="~/.framework/src/components/app-shell/GenericAppShell.tsx:GenericAppShellProps:interface"]
66
+
67
+ // CIL[BEGIN stable_id="~/.framework/src/components/app-shell/GenericAppShell.tsx:GenericAppShell:component" type="component" identity="GenericAppShell" parent="~/.framework/src/components/app-shell/GenericAppShell.tsx:module_header:module_header"]
68
+ // CIL[DOC-MACRO purpose="Render a responsive generic app shell with sidebar navigation and dynamic routes"]
69
+ // CIL[DOC-RESPONSIBILITY responsibility="Render the app layout, sidebar nav, and list/detail routes for a generic app record"]
70
+ // CIL[DOC-CONTEXT module="app-shell" layer="ui" related_files=".framework/src/components/app-shell/GenericAppShell.tsx,.framework/src/components/app-shell/GenericDetailPage.tsx,.framework/src/components/app-shell/GenericListPage.tsx,.framework/src/hooks/useApps.ts"]
71
+ // CIL[DOC-CONTRACT inputs="app: AppRecord" outputs="JSX layout with sidebar and Routes for list/new/detail" errors="none" side_effects="none"]
72
+ // CIL[DOC-MICRO logic_summary="Builds nav items from app.nav_items, detects active routes, manages mobile sidebar state, and generates Route components for list, new, and detail views." notable_decisions="[]"]
73
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
74
+ // CIL[DOC-STABILITY stability="stable"]
83
75
  export function GenericAppShell({ app }: GenericAppShellProps) {
84
76
  const navigate = useNavigate()
85
77
  const location = useLocation()
@@ -106,12 +98,7 @@ export function GenericAppShell({ app }: GenericAppShellProps) {
106
98
  ${sidebarOpen ? 'translate-x-0' : '-translate-x-full'}
107
99
  `}>
108
100
  <div className="flex items-center gap-3 h-16 px-6 border-b border-slate-200">
109
- {app.icon && (
110
- <div className={`w-8 h-8 rounded-lg flex items-center justify-center text-white text-sm font-bold`}
111
- style={{ backgroundColor: app.color || '#475569' }}>
112
- {app.name.charAt(0).toUpperCase()}
113
- </div>
114
- )}
101
+ <img src="/spine-logo.svg" alt="Spine Framework" className="h-8 w-auto shrink-0" />
115
102
  <div>
116
103
  <h2 className="font-semibold text-slate-900 text-sm">{app.name}</h2>
117
104
  {app.description && (
@@ -178,10 +165,14 @@ export function GenericAppShell({ app }: GenericAppShellProps) {
178
165
  {/* Generate list + detail routes for each nav item with type_slug */}
179
166
  {navItems.filter(item => item.type_slug).map(item => {
180
167
 
168
+
169
+
170
+
181
171
  const relativePath = item.path.startsWith(prefix)
182
172
  ? item.path.slice(prefix.length).replace(/^\//, '')
183
173
  : item.path.replace(/^\//, '')
184
174
 
175
+
185
176
  return [
186
177
  <Route
187
178
  key={`${item.id}-list`}
@@ -194,6 +185,8 @@ export function GenericAppShell({ app }: GenericAppShellProps) {
194
185
  detailPath={`${relativePath}`}
195
186
  />
196
187
  }
188
+
189
+
197
190
  />,
198
191
  <Route
199
192
  key={`${item.id}-new`}
@@ -236,4 +229,10 @@ export function GenericAppShell({ app }: GenericAppShellProps) {
236
229
  </div>
237
230
  )
238
231
  }
239
- // CIL[END chunk_id="genericappshell_genericappshell_1783930597"]
232
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a responsive generic app shell with sidebar navigation and dynamic routes'; No verified external callers; imports: .framework/src/hooks/useApps.ts,.framework/src/components/app-shell/GenericListPage.tsx,.framework/src/components/app-shell/GenericDetailPage.tsx"]
233
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
234
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
235
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
236
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
237
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
238
+ // CIL[END stable_id="~/.framework/src/components/app-shell/GenericAppShell.tsx:GenericAppShell:component"]
@@ -1,64 +1,55 @@
1
-
2
-
3
-
4
-
5
- // CIL[BEGIN chunk_id="genericdetailpage_module_header_1783930597" type="module_header" identity="imports" parent="none"]
6
- // CIL[DOC-MACRO purpose="Import React hooks and routing components for detail page"]
7
- // CIL[DOC-RESPONSIBILITY responsibility="Provide state management and navigation dependencies"]
8
- // CIL[DOC-CONTEXT module="generic-detail-page" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
9
- // CIL[DOC-CONTRACT inputs="none" outputs="Imported modules" errors="none" side_effects="none"]
10
- // CIL[DOC-MICRO logic_summary="Imports React hooks, routing components, and entity record hook" notable_decisions="[]"]
11
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/app-shell/GenericDetailPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/app-shell/GenericDetailPage.tsx"]
2
+ // CIL[DOC-MACRO purpose="Imports and module setup for the generic detail page"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide dependencies for GenericDetailPage rendering"]
4
+ // CIL[DOC-CONTEXT module="app-shell" layer="framework" related_files=".framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/runtime/SchemaDetailForm.tsx,.framework/src/hooks/useEntityRecord.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Imports hooks and UI subcomponents used by the detail page" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
12
8
  // CIL[DOC-STABILITY stability="stable"]
13
- // CIL[DOC-AUDIENCE audience="developer"]
14
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.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"]
9
+ // CIL[DOC-AUDIENCE audience="framework"]
10
+
20
11
  import { useState, useEffect } from 'react'
21
12
  import { useParams, useSearchParams, useNavigate } from 'react-router-dom'
22
13
  import { useEntityRecord } from '../../hooks/useEntityRecord'
23
14
  import { DataDetailHeader } from '../runtime/DataDetailHeader'
24
15
  import { SchemaDetailForm } from '../runtime/SchemaDetailForm'
25
- // CIL[END chunk_id="genericdetailpage_module_header_1783930597"]
26
- // CIL[BEGIN chunk_id="genericdetailpage_genericdetailpageprops_1783930597" type="interface" identity="GenericDetailPageProps" parent="none"]
27
- // CIL[DOC-MACRO purpose="Define props interface for generic detail page component"]
28
- // CIL[DOC-RESPONSIBILITY responsibility="Specify configuration for schema-driven detail display"]
29
- // CIL[DOC-CONTEXT module="generic-detail-page" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
30
- // CIL[DOC-CONTRACT inputs="none" outputs="Type definition" errors="none" side_effects="none"]
31
- // CIL[DOC-MICRO logic_summary="Interface with type slug, optional view, and creation mode flag" notable_decisions="[]"]
32
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
33
- // CIL[DOC-STABILITY stability="stable"]
34
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. 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/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
35
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
36
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
37
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
16
+ // CIL[DOC-VECTOR type="context" content="purpose='Imports and module setup for the generic detail page'; No verified external callers; imports: .framework/src/hooks/useEntityRecord.ts,.framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/runtime/SchemaDetailForm.tsx"]
17
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
18
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
19
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
38
20
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
39
21
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
22
+ // CIL[END stable_id="~/.framework/src/components/app-shell/GenericDetailPage.tsx:module_header:module_header"]
23
+ // CIL[BEGIN stable_id="~/.framework/src/components/app-shell/GenericDetailPage.tsx:GenericDetailPageProps:interface" type="interface" identity="GenericDetailPageProps" parent="~/.framework/src/components/app-shell/GenericDetailPage.tsx"]
24
+ // CIL[DOC-MACRO purpose="Props interface for GenericDetailPage"]
25
+ // CIL[DOC-RESPONSIBILITY responsibility="Define the expected props for the detail page"]
26
+ // CIL[DOC-CONTEXT module="app-shell" layer="framework" related_files=".framework/src/components/app-shell/GenericDetailPage.tsx,.framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/runtime/SchemaDetailForm.tsx,.framework/src/hooks/useEntityRecord.ts"]
27
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
28
+ // CIL[DOC-MICRO logic_summary="TypeScript interface describing typeSlug, viewSlug, and isCreating" notable_decisions="[]"]
29
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
30
+ // CIL[DOC-STABILITY stability="stable"]
40
31
  interface GenericDetailPageProps {
41
32
  typeSlug: string
42
33
  viewSlug?: string
43
34
  isCreating?: boolean
44
35
  }
45
- // CIL[END chunk_id="genericdetailpage_genericdetailpageprops_1783930597"]
46
- // CIL[BEGIN chunk_id="genericdetailpage_genericdetailpage_1783930597" type="function" identity="GenericDetailPage" parent="none"]
47
- // CIL[DOC-LEARNING topic="runtime-type:generic/detail_view" content="GenericDetailPage renders record.design_schema.views.default_detail.sections. Each section has a title and a fields map. field.system=true means the value is read from the record row; otherwise from record.data. FieldRenderer uses field.data_type and the view's display_type to choose the widget."]
48
- // CIL[DOC-NOTE type="design_schema_caveat" content="Without views.default_detail or fields missing from the schema, the detail page will be blank. The page falls back to useSchemaRecord defaults only for new records."]
49
- // CIL[DOC-MACRO purpose="Schema-driven detail page with form for create/edit/view"]
50
- // CIL[DOC-RESPONSIBILITY responsibility="Handle CRUD operations and form state for entity records"]
51
- // CIL[DOC-CONTEXT module="generic-detail-page" layer="frontend-component" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
52
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX detail page with form" errors="Loading/saving errors" side_effects="Data fetching, form state management, navigation"]
53
- // CIL[DOC-MICRO logic_summary="Manages record CRUD, form state, edit modes, renders runtime components" notable_decisions="[]"]
54
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
55
- // CIL[DOC-STABILITY stability="stable"]
56
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
57
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
58
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
59
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
36
+ // CIL[DOC-VECTOR type="context" content="purpose='Props interface for GenericDetailPage'; No verified external callers; imports: .framework/src/hooks/useEntityRecord.ts,.framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/runtime/SchemaDetailForm.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"]
60
40
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
61
41
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
42
+ // CIL[END stable_id="~/.framework/src/components/app-shell/GenericDetailPage.tsx:GenericDetailPageProps:interface"]
43
+
44
+
45
+ // CIL[BEGIN stable_id="~/.framework/src/components/app-shell/GenericDetailPage.tsx:GenericDetailPage:component" type="component" identity="GenericDetailPage" parent="~/.framework/src/components/app-shell/GenericDetailPage.tsx"]
46
+ // CIL[DOC-MACRO purpose="Render the generic detail page for an app type"]
47
+ // CIL[DOC-RESPONSIBILITY responsibility="Display, edit, create, and delete records driven by a design schema"]
48
+ // CIL[DOC-CONTEXT module="app-shell" layer="framework" related_files=".framework/src/components/app-shell/GenericDetailPage.tsx,.framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/runtime/SchemaDetailForm.tsx,.framework/src/hooks/useEntityRecord.ts"]
49
+ // CIL[DOC-CONTRACT inputs="typeSlug: string, viewSlug?: string, isCreating?: boolean" outputs="JSX.Element" errors="none" side_effects="none"]
50
+ // CIL[DOC-MICRO logic_summary="Load record with useEntityRecord, resolve detail view, initialize form data, and render DataDetailHeader and SchemaDetailForm" notable_decisions="[]"]
51
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
52
+ // CIL[DOC-STABILITY stability="stable"]
62
53
  export function GenericDetailPage({ typeSlug, viewSlug, isCreating: forceCreate }: GenericDetailPageProps) {
63
54
  const { id } = useParams<{ id: string }>()
64
55
  const navigate = useNavigate()
@@ -242,4 +233,10 @@ export function GenericDetailPage({ typeSlug, viewSlug, isCreating: forceCreate
242
233
  </div>
243
234
  )
244
235
  }
245
- // CIL[END chunk_id="genericdetailpage_genericdetailpage_1783930597"]
236
+ // CIL[DOC-VECTOR type="context" content="purpose='Render the generic detail page for an app type'; No verified external callers; imports: .framework/src/hooks/useEntityRecord.ts,.framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/runtime/SchemaDetailForm.tsx"]
237
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
238
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
239
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
240
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
241
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
242
+ // CIL[END stable_id="~/.framework/src/components/app-shell/GenericDetailPage.tsx:GenericDetailPage:component"]