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,3 +1,13 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
2
+ // CIL[DOC-MACRO purpose="Sidebar layout module entry point"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Import dependencies and export Sidebar components and navigation constants"]
4
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="module exports, imports, and navigation constants" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Sets up the sidebar module and declares navigation arrays" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="engineers"]
10
+
1
11
 
2
12
 
3
13
 
@@ -5,21 +15,6 @@
5
15
 
6
16
 
7
17
 
8
- // CIL[BEGIN chunk_id="sidebar_moduleheader_1783929861" type="module_header" identity="imports" parent="none"]
9
- // CIL[DOC-MACRO purpose="Import React hooks, router, auth, UI components and navigation icons"]
10
- // CIL[DOC-RESPONSIBILITY responsibility="Provide all dependencies for sidebar navigation system"]
11
- // CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
12
- // CIL[DOC-CONTRACT inputs="none" outputs="React hooks, router, auth, UI components, icons" errors="none" side_effects="none"]
13
- // CIL[DOC-MICRO logic_summary="Imports useState, Link, useLocation, useAuth, Popover components and 20+ Lucide icons" notable_decisions="[]"]
14
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
15
- // CIL[DOC-STABILITY stability="stable"]
16
- // CIL[DOC-AUDIENCE audience="developer"]
17
- // 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/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
18
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
19
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
20
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
21
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
22
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
23
18
  import { useState } from 'react'
24
19
  import { Link, useLocation } from 'react-router-dom'
25
20
  import { useAuth } from '../../contexts/AuthContext'
@@ -51,44 +46,66 @@ import {
51
46
  Cpu,
52
47
  BookOpen
53
48
  } from 'lucide-react'
54
- // CIL[END chunk_id="sidebar_moduleheader_1783929861"]
55
- // CIL[BEGIN chunk_id="sidebar_sidebarprops_1783929861" type="interface" identity="SidebarProps" parent="none"]
56
- // CIL[DOC-MACRO purpose="Define props interface for mobile overlay Sidebar component"]
57
- // CIL[DOC-RESPONSIBILITY responsibility="Specify Sidebar component contract for mobile overlay"]
58
- // CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
59
- // CIL[DOC-CONTRACT inputs="none" outputs="SidebarProps interface" errors="none" side_effects="none"]
60
- // CIL[DOC-MICRO logic_summary="Interface with open state and close callback for mobile sidebar" notable_decisions="[]"]
61
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
62
- // CIL[DOC-STABILITY stability="stable"]
63
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-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/functions/_shared/principal.ts, \."]
64
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
65
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
66
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
49
+ // CIL[DOC-VECTOR type="context" content="purpose='Sidebar layout module entry point'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
50
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
51
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
52
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
67
53
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
68
54
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
55
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
56
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarprops:interface" type="interface" identity="sidebarprops" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
57
+ // CIL[DOC-MACRO purpose="Define Sidebar component props"]
58
+ // CIL[DOC-RESPONSIBILITY responsibility="Type-safe contract for Sidebar open state and close callback"]
59
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
60
+ // CIL[DOC-CONTRACT inputs="open boolean and onClose callback" outputs="SidebarProps interface" errors="none" side_effects="none"]
61
+ // CIL[DOC-MICRO logic_summary="Declares open and onClose fields for the Sidebar shell" notable_decisions="[]"]
62
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
63
+ // CIL[DOC-STABILITY stability="stable"]
69
64
  interface SidebarProps {
70
65
  open: boolean
71
66
  onClose: () => void
72
67
  }
73
- // CIL[END chunk_id="sidebar_sidebarprops_1783929861"]
74
- // CIL[BEGIN chunk_id="sidebar_constants_1783929861" type="constants" identity="navigation" parent="none"]
75
- // CIL[DOC-MACRO purpose="Define navigation arrays for sidebar menu sections and links"]
76
- // CIL[DOC-RESPONSIBILITY responsibility="Provide navigation structure for admin interface"]
77
- // CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
78
- // CIL[DOC-CONTRACT inputs="none" outputs="navigation constants arrays" errors="none" side_effects="none"]
79
- // CIL[DOC-MICRO logic_summary="Main nav, configs, observability, and runtime entity navigation arrays with icons" 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-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
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."]
68
+ // CIL[DOC-VECTOR type="context" content="purpose='Define Sidebar component props'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
69
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
70
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
71
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
86
72
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
87
73
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
74
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarprops:interface"]
75
+
76
+
77
+
78
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:navigation:constant" type="constant" identity="navigation" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
79
+ // CIL[DOC-MACRO purpose="Primary navigation links for the sidebar"]
80
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide top-level navigation item data"]
81
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
82
+ // CIL[DOC-CONTRACT inputs="none" outputs="array of navigation entries" errors="none" side_effects="none"]
83
+ // CIL[DOC-MICRO logic_summary="Static constant array of top-level navigation objects with name, href, and icon" notable_decisions="[]"]
84
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
85
+ // CIL[DOC-STABILITY stability="stable"]
88
86
  const navigation = [
89
87
  { name: 'Dashboard', href: '/spine-framework/admin/configs/types', icon: Home },
90
88
  ]
89
+ // CIL[DOC-VECTOR type="context" content="purpose='Primary navigation links for the sidebar'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
90
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
91
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
92
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
93
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
94
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
95
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:navigation:constant"]
96
+
97
+
98
+
91
99
 
100
+
101
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:configsnavigation:constant" type="constant" identity="configsnavigation" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
102
+ // CIL[DOC-MACRO purpose="Configuration section navigation links"]
103
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide navigation data for the admin configuration section"]
104
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
105
+ // CIL[DOC-CONTRACT inputs="none" outputs="array of config navigation entries" errors="none" side_effects="none"]
106
+ // CIL[DOC-MICRO logic_summary="Static array of config navigation items with dividers and icons" notable_decisions="[]"]
107
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
108
+ // CIL[DOC-STABILITY stability="stable"]
92
109
  const configsNavigation = [
93
110
  { name: 'Item Types', href: '/spine-framework/admin/configs/types', icon: Box },
94
111
  { divider: true },
@@ -106,58 +123,131 @@ const configsNavigation = [
106
123
  { name: 'API Keys', href: '/spine-framework/admin/configs/api-keys', icon: Key },
107
124
  { name: 'Deliveries', href: '/spine-framework/admin/configs/deliveries', icon: Truck },
108
125
  ] as const
126
+ // CIL[DOC-VECTOR type="context" content="purpose='Configuration section navigation links'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
127
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
128
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
129
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
130
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
131
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
132
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:configsnavigation:constant"]
133
+
134
+
135
+
136
+
109
137
 
138
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:observabilitynavigation:constant" type="constant" identity="observabilitynavigation" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
139
+ // CIL[DOC-MACRO purpose="Observability section navigation links"]
140
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide navigation data for the observability section"]
141
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
142
+ // CIL[DOC-CONTRACT inputs="none" outputs="array of observability navigation entries" errors="none" side_effects="none"]
143
+ // CIL[DOC-MICRO logic_summary="Static array of observability navigation items with icons" notable_decisions="[]"]
144
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
145
+ // CIL[DOC-STABILITY stability="stable"]
110
146
  const observabilityNavigation = [
111
147
  { name: 'Dashboard', href: '/spine-framework/admin/observability', icon: BarChart3 },
112
148
  { name: 'Alerts', href: '/spine-framework/admin/observability/alerts', icon: Bell },
113
149
  { name: 'Executions', href: '/spine-framework/admin/observability/executions', icon: FlaskConical },
114
150
  { name: 'Logs', href: '/spine-framework/admin/observability/logs', icon: FileText },
115
151
  ]
152
+ // CIL[DOC-VECTOR type="context" content="purpose='Observability section navigation links'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
153
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
154
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
155
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
156
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
157
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
158
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:observabilitynavigation:constant"]
159
+
116
160
 
161
+
162
+
163
+
164
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:runtimeentities:constant" type="constant" identity="runtimeentities" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
165
+ // CIL[DOC-MACRO purpose="Runtime entity navigation links"]
166
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide navigation data for runtime entities section"]
167
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
168
+ // CIL[DOC-CONTRACT inputs="none" outputs="array of runtime entity navigation entries" errors="none" side_effects="none"]
169
+ // CIL[DOC-MICRO logic_summary="Static array of runtime entity navigation items with icons" notable_decisions="[]"]
170
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
171
+ // CIL[DOC-STABILITY stability="stable"]
117
172
  const runtimeEntities = [
118
173
  { name: 'Items', href: '/spine-framework/admin/runtime/items', icon: Box },
119
174
  { name: 'Accounts', href: '/spine-framework/admin/runtime/accounts', icon: Building2 },
120
175
  { name: 'People', href: '/spine-framework/admin/runtime/people', icon: User },
121
176
  { name: 'Person Types', href: '/spine-framework/admin/runtime/person-types', icon: Users },
122
177
  ]
178
+ // CIL[DOC-VECTOR type="context" content="purpose='Runtime entity navigation links'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
179
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
180
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
181
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
182
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
183
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
184
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:runtimeentities:constant"]
185
+
186
+
123
187
 
188
+
189
+
190
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:kbenginenavigation:constant" type="constant" identity="kbenginenavigation" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
191
+ // CIL[DOC-MACRO purpose="Knowledge base engine navigation links"]
192
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide navigation data for the KB engine section"]
193
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
194
+ // CIL[DOC-CONTRACT inputs="none" outputs="array of KB engine navigation entries" errors="none" side_effects="none"]
195
+ // CIL[DOC-MICRO logic_summary="Static array of KB engine navigation items with icons" notable_decisions="[]"]
196
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
197
+ // CIL[DOC-STABILITY stability="stable"]
124
198
  const kbEngineNavigation = [
125
199
  { name: 'Knowledge Base', href: '/spine-framework/admin/kb/kb-spine-public', icon: BookOpen },
126
200
  { name: 'Embeddings', href: '/spine-framework/admin/kb/embeddings', icon: Cpu },
127
201
  ]
128
- // CIL[END chunk_id="sidebar_constants_1783929861"]
129
- // CIL[BEGIN chunk_id="sidebar_classnames_1783929861" type="function" identity="classNames" parent="none"]
130
- // CIL[DOC-MACRO purpose="Utility function to combine CSS class names, filtering falsy values"]
131
- // CIL[DOC-RESPONSIBILITY responsibility="Provide CSS class name concatenation utility"]
132
- // CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/migrations/025_retype_threads_messages.sql\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
133
- // CIL[DOC-CONTRACT inputs="none" outputs="concatenated class string" errors="none" side_effects="none"]
134
- // CIL[DOC-MICRO logic_summary="Filters Boolean values and joins with spaces for Tailwind CSS" notable_decisions="[]"]
135
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
136
- // CIL[DOC-STABILITY stability="stable"]
137
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 2. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/migrations/025_retype_threads_messages.sql, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, \."]
138
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 2."]
139
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
140
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
202
+ // CIL[DOC-VECTOR type="context" content="purpose='Knowledge base engine navigation links'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
203
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
204
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
205
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
141
206
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
142
207
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
208
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:kbenginenavigation:constant"]
209
+
210
+
211
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:classnames:function" type="function" identity="classnames" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
212
+ // CIL[DOC-MACRO purpose="Conditionally combine CSS class strings"]
213
+ // CIL[DOC-RESPONSIBILITY responsibility="Filter falsy class values and join remaining classes"]
214
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
215
+ // CIL[DOC-CONTRACT inputs="classes: (string | false | undefined)[]" outputs="space-delimited className string" errors="none" side_effects="none"]
216
+ // CIL[DOC-MICRO logic_summary="Filters truthy values from the input array and joins them with spaces" notable_decisions="[]"]
217
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
218
+ // CIL[DOC-STABILITY stability="stable"]
219
+ // CIL[DOC-NOTE type="param" content="classes: (string | false | undefined)[] - class values to combine"]
143
220
  function classNames(...classes: (string | false | undefined)[]) {
144
221
  return classes.filter(Boolean).join(' ')
145
222
  }
146
- // CIL[END chunk_id="sidebar_classnames_1783929861"]
147
- // CIL[BEGIN chunk_id="sidebar_sidebar_1783929861" type="function" identity="Sidebar" parent="none"]
148
- // CIL[DOC-MACRO purpose="Render mobile overlay sidebar with backdrop and close functionality"]
149
- // CIL[DOC-RESPONSIBILITY responsibility="Provide mobile sidebar overlay with backdrop and close button"]
150
- // CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
151
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX overlay sidebar" errors="none" side_effects="Calls onClose when backdrop or close button clicked"]
152
- // CIL[DOC-MICRO logic_summary="Conditional overlay with backdrop, close button, and SidebarContent" notable_decisions="[]"]
153
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
154
- // CIL[DOC-STABILITY stability="stable"]
155
- // 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/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, \."]
156
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
157
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
158
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
223
+
224
+
225
+
226
+
227
+
228
+ // CIL[DOC-VECTOR type="context" content="purpose='Conditionally combine CSS class strings'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
229
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
230
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
231
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
159
232
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
160
233
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
234
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:classnames:function"]
235
+
236
+
237
+
238
+
239
+
240
+
241
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebar:function" type="function" identity="sidebar" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
242
+ // CIL[DOC-MACRO purpose="Render responsive sidebar shell"]
243
+ // CIL[DOC-RESPONSIBILITY responsibility="Display a mobile-friendly sidebar overlay with close controls"]
244
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
245
+ // CIL[DOC-CONTRACT inputs="open: boolean, onClose: () => void" outputs="JSX sidebar overlay" errors="none" side_effects="renders DOM elements and attaches click handlers"]
246
+ // CIL[DOC-MICRO logic_summary="Renders a fixed overlay and panel when open is true, delegating content to SidebarContent" notable_decisions="[]"]
247
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
248
+ // CIL[DOC-STABILITY stability="stable"]
249
+ // CIL[DOC-NOTE type="param" content="open: boolean - whether the sidebar is open"]
250
+ // CIL[DOC-NOTE type="param" content="onClose: () => void - callback to close the sidebar"]
161
251
  export function Sidebar({ open, onClose }: SidebarProps) {
162
252
  return (
163
253
  <>
@@ -180,8 +270,9 @@ export function Sidebar({ open, onClose }: SidebarProps) {
180
270
  </button>
181
271
  </div>
182
272
  <div className="h-0 flex-1 overflow-y-auto pt-5">
183
- <div className="flex flex-shrink-0 items-center px-4">
184
- <span className="text-xl font-bold text-sidebar-foreground">Spine</span>
273
+ <div className="flex flex-shrink-0 items-center gap-2 px-4">
274
+ <img src="/spine-logo.svg" alt="Spine Framework" className="h-8 w-auto" />
275
+ <span className="text-xl font-bold text-sidebar-foreground whitespace-nowrap">Spine Framework</span>
185
276
  </div>
186
277
  <SidebarContent onNavClick={onClose} />
187
278
  </div>
@@ -192,39 +283,42 @@ export function Sidebar({ open, onClose }: SidebarProps) {
192
283
  </>
193
284
  )
194
285
  }
195
- // CIL[END chunk_id="sidebar_sidebar_1783929861"]
196
- // CIL[BEGIN chunk_id="sidebar_sidebarcontentprops_1783929861" type="interface" identity="SidebarContentProps" parent="none"]
197
- // CIL[DOC-MACRO purpose="Define props interface for SidebarContent navigation component"]
198
- // CIL[DOC-RESPONSIBILITY responsibility="Specify SidebarContent component contract"]
199
- // CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[]"]
200
- // CIL[DOC-CONTRACT inputs="none" outputs="SidebarContentProps interface" errors="none" side_effects="none"]
201
- // CIL[DOC-MICRO logic_summary="Interface with optional navigation click callback" notable_decisions="[]"]
202
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
203
- // CIL[DOC-STABILITY stability="stable"]
204
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
205
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
206
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
207
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
286
+ // CIL[DOC-VECTOR type="context" content="purpose='Render responsive sidebar shell'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
287
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
288
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
289
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
208
290
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
209
291
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
292
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebar:function"]
293
+
294
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarcontentprops:interface" type="interface" identity="sidebarcontentprops" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
295
+ // CIL[DOC-MACRO purpose="Define SidebarContent component props"]
296
+ // CIL[DOC-RESPONSIBILITY responsibility="Type-safe contract for optional navigation click handler"]
297
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
298
+ // CIL[DOC-CONTRACT inputs="optional onNavClick callback" outputs="SidebarContentProps interface" errors="none" side_effects="none"]
299
+ // CIL[DOC-MICRO logic_summary="Declares an optional onNavClick callback for navigation items" notable_decisions="[]"]
300
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
301
+ // CIL[DOC-STABILITY stability="stable"]
210
302
  interface SidebarContentProps {
211
303
  onNavClick?: () => void
212
304
  }
213
- // CIL[END chunk_id="sidebar_sidebarcontentprops_1783929861"]
214
- // CIL[BEGIN chunk_id="sidebar_sidebarcontent_1783929861" type="function" identity="SidebarContent" parent="none"]
215
- // CIL[DOC-MACRO purpose="Render main sidebar navigation with collapsible sections and user menu"]
216
- // CIL[DOC-RESPONSIBILITY responsibility="Provide complete sidebar navigation with admin sections and user controls"]
217
- // CIL[DOC-CONTEXT module="src/components/layout/Sidebar" layer="frontend-component" related_files="[]"]
218
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX navigation with collapsible sections" errors="none" side_effects="Manages section state, calls logout, triggers navigation"]
219
- // CIL[DOC-MICRO logic_summary="Collapsible admin sections (configs, data, observability) with role-based access and user popover" notable_decisions="[]"]
220
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
221
- // CIL[DOC-STABILITY stability="stable"]
222
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: none."]
223
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
224
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
225
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
305
+ // CIL[DOC-VECTOR type="context" content="purpose='Define SidebarContent component props'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
306
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
307
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
308
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
226
309
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
227
310
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
311
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarcontentprops:interface"]
312
+
313
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarcontent:function" type="function" identity="sidebarcontent" parent="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
314
+ // CIL[DOC-MACRO purpose="Render sidebar navigation content"]
315
+ // CIL[DOC-RESPONSIBILITY responsibility="Display navigation sections, user info, and logout action"]
316
+ // CIL[DOC-CONTEXT module=".framework/src/components/layout/Sidebar.tsx" layer="ui" related_files=".framework/src/components/layout/Sidebar.tsx,.framework/src/components/ui/popover.tsx,.framework/src/contexts/AuthContext.tsx"]
317
+ // CIL[DOC-CONTRACT inputs="onNavClick?: () => void" outputs="JSX sidebar navigation content" errors="none" side_effects="renders DOM elements, uses React hooks and auth context"]
318
+ // CIL[DOC-MICRO logic_summary="Builds navigation groups with collapsible sections and a user popover; uses useLocation, useAuth, and useState" notable_decisions="[]"]
319
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
320
+ // CIL[DOC-STABILITY stability="stable"]
321
+ // CIL[DOC-NOTE type="param" content="onNavClick?: () => void - optional click handler for navigation links"]
228
322
  export function SidebarContent({ onNavClick }: SidebarContentProps) {
229
323
  const location = useLocation()
230
324
  const { user, logout } = useAuth()
@@ -477,4 +571,10 @@ export function SidebarContent({ onNavClick }: SidebarContentProps) {
477
571
  </nav>
478
572
  )
479
573
  }
480
- // CIL[END chunk_id="sidebar_sidebarcontent_1783929861"]
574
+ // CIL[DOC-VECTOR type="context" content="purpose='Render sidebar navigation content'; No verified external callers; imports: .framework/src/contexts/AuthContext.tsx,.framework/src/components/ui/popover.tsx"]
575
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
576
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
577
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
578
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
579
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
580
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:sidebarcontent:function"]
@@ -1,24 +1,32 @@
1
-
2
-
3
- // CIL[BEGIN chunk_id="DataDetailHeader_module_header_1783929048" type="module_header" identity="imports_and_types" parent="none"]
4
- // CIL[DOC-MACRO purpose="Import dependencies and define detail header component types"]
5
- // CIL[DOC-RESPONSIBILITY responsibility="Manage imports and interface for detail header"]
6
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/components/ui/table-primitives.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\"\\\"]"]
7
- // CIL[DOC-CONTRACT inputs="none" outputs="types" errors="none" side_effects="none"]
8
- // CIL[DOC-MICRO logic_summary="Imports React, UI components, defines DataDetailHeaderProps" notable_decisions="[]"]
9
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/runtime/DataDetailHeader.tsx"]
2
+ // CIL[DOC-MACRO purpose="React component module for the data detail header"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Defines the DataDetailHeaderProps interface and the DataDetailHeader presentational component"]
4
+ // CIL[DOC-CONTEXT module="runtime" layer="presentation" related_files=".framework/src/components/ui/button.tsx"]
5
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="DataDetailHeaderProps and DataDetailHeader exports" errors="N/A" side_effects="N/A"]
6
+ // CIL[DOC-MICRO logic_summary="Imports dependencies, declares the props interface, and exports the detail header component" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
10
8
  // CIL[DOC-STABILITY stability="stable"]
11
- // CIL[DOC-AUDIENCE audience="developer"]
12
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/ui/table-primitives.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, .framework/migrations/015_simplify_apps_table.sql, \."]
13
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
14
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
15
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
16
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
17
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
9
+ // CIL[DOC-AUDIENCE audience="runtime-ui"]
10
+
18
11
  import React from 'react'
19
12
  import { Button } from '../ui/button'
20
13
  import * as Icons from 'lucide-react'
21
14
 
15
+ // CIL[DOC-VECTOR type="context" content="purpose='React component module for the data detail header'; No verified external callers; imports: .framework/src/components/ui/button.tsx"]
16
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
17
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
18
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
19
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
20
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
21
+ // CIL[END stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:module_header:module_header"]
22
+ // CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:datadetailheaderprops:interface" type="interface" identity="DataDetailHeaderProps" parent="~/.framework/src/components/runtime/DataDetailHeader.tsx"]
23
+ // CIL[DOC-MACRO purpose="Defines the prop contract for the DataDetailHeader component"]
24
+ // CIL[DOC-RESPONSIBILITY responsibility="Specifies all data and callback properties required to render and control the detail header"]
25
+ // CIL[DOC-CONTEXT module="runtime" layer="type" related_files=".framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/ui/button.tsx"]
26
+ // CIL[DOC-CONTRACT inputs="N/A" outputs="DataDetailHeaderProps TypeScript interface" errors="N/A" side_effects="N/A"]
27
+ // CIL[DOC-MICRO logic_summary="Interface with entity, icon, title, editing flags, and action handler props" notable_decisions="[]"]
28
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
29
+ // CIL[DOC-STABILITY stability="stable"]
22
30
  interface DataDetailHeaderProps {
23
31
  entity: string
24
32
  icon: string
@@ -32,21 +40,32 @@ interface DataDetailHeaderProps {
32
40
  saving?: boolean
33
41
  deleting?: boolean
34
42
  }
35
- // CIL[END chunk_id="DataDetailHeader_module_header_1783929048"]
36
- // CIL[BEGIN chunk_id="DataDetailHeader_datadetailheader_1783929048" type="function" identity="DataDetailHeader" parent="none"]
37
- // CIL[DOC-MACRO purpose="Render entity detail header with edit/save/delete buttons"]
38
- // CIL[DOC-RESPONSIBILITY responsibility="Display header with title, icon, and action buttons"]
39
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/components/ui/table-primitives.tsx\",\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
40
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX header" errors="none" side_effects="calls callbacks"]
41
- // CIL[DOC-MICRO logic_summary="Renders icon, title, and conditional edit/save/delete buttons" 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-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/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, custom/apps/portal/pages/ContentPage.tsx, \."]
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."]
43
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the prop contract for the DataDetailHeader component'; No verified external callers; imports: .framework/src/components/ui/button.tsx"]
44
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
45
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
46
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
48
47
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
49
48
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
49
+ // CIL[END stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:datadetailheaderprops:interface"]
50
+ // CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:datadetailheader:function" type="function" identity="DataDetailHeader" parent="~/.framework/src/components/runtime/DataDetailHeader.tsx"]
51
+ // CIL[DOC-MACRO purpose="Render a detail view header with icon, title, entity label, and action buttons"]
52
+ // CIL[DOC-RESPONSIBILITY responsibility="Display the entity header and dispatch user actions to the provided callback props"]
53
+ // CIL[DOC-CONTEXT module="runtime" layer="presentation" related_files=".framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/ui/button.tsx"]
54
+ // CIL[DOC-CONTRACT inputs="entity, icon, title, isEditing, isCreating, onEdit, onSave, onCancel, onDelete?, saving?, deleting?" outputs="JSX.Element" errors="N/A" side_effects="Invokes onEdit, onSave, onCancel, and onDelete callbacks when buttons are clicked"]
55
+ // CIL[DOC-MICRO logic_summary="Resolves the lucide icon, renders title and entity, conditionally shows save/cancel or edit/delete controls" notable_decisions="[]"]
56
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
57
+ // CIL[DOC-STABILITY stability="stable"]
58
+ // CIL[DOC-NOTE type="param" content="entity: string - entity collection or label shown in the header">
59
+ // CIL[DOC-NOTE type="param" content="icon: string - lucide-react icon key to display">
60
+ // CIL[DOC-NOTE type="param" content="title: string - page title rendered in the header">
61
+ // CIL[DOC-NOTE type="param" content="isEditing: boolean - whether the detail form is in editing mode">
62
+ // CIL[DOC-NOTE type="param" content="isCreating: boolean - whether a new record is being created">
63
+ // CIL[DOC-NOTE type="param" content="onEdit: () => void - callback to enter edit mode">
64
+ // CIL[DOC-NOTE type="param" content="onSave: () => void - callback to save the current record">
65
+ // CIL[DOC-NOTE type="param" content="onCancel: () => void - callback to cancel editing">
66
+ // CIL[DOC-NOTE type="param" content="onDelete?: () => void - optional callback to delete the record">
67
+ // CIL[DOC-NOTE type="param" content="saving?: boolean - optional flag indicating a save is in progress">
68
+ // CIL[DOC-NOTE type="param" content="deleting?: boolean - optional flag indicating a delete is in progress">
50
69
  export function DataDetailHeader({
51
70
  entity,
52
71
  icon,
@@ -106,4 +125,10 @@ export function DataDetailHeader({
106
125
  </div>
107
126
  )
108
127
  }
109
- // CIL[END chunk_id="DataDetailHeader_datadetailheader_1783929048"]
128
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a detail view header with icon, title, entity label, and action buttons'; No verified external callers; imports: .framework/src/components/ui/button.tsx"]
129
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
130
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
131
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
132
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
133
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
134
+ // CIL[END stable_id="~/.framework/src/components/runtime/DataDetailHeader.tsx:datadetailheader:function"]