spine-framework 0.4.3 → 0.5.0-rc.4

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 (320) hide show
  1. package/.env.example +13 -3
  2. package/.framework/cli/commands/bootstrap.ts +392 -0
  3. package/.framework/cli/commands/dev.ts +91 -218
  4. package/.framework/cli/commands/doctor.ts +132 -26
  5. package/.framework/cli/commands/generate.ts +38 -298
  6. package/.framework/cli/commands/init.ts +20 -1
  7. package/.framework/cli/commands/migrate.ts +36 -30
  8. package/.framework/cli/commands/migrations.ts +16 -56
  9. package/.framework/cli/commands/upgrade.ts +35 -0
  10. package/.framework/cli/commands/validate-schema.ts +147 -0
  11. package/.framework/cli/context.ts +223 -110
  12. package/.framework/cli/index.ts +6 -0
  13. package/.framework/cli/lib/project-files.ts +241 -1
  14. package/.framework/functions/_shared/agent-runner.ts +1000 -81
  15. package/.framework/functions/_shared/cil.ts +2 -1
  16. package/.framework/functions/_shared/db.ts +3 -6
  17. package/.framework/functions/_shared/hash-api-key.ts +183 -79
  18. package/.framework/functions/_shared/kb.ts +61 -7
  19. package/.framework/functions/_shared/logging.ts +562 -224
  20. package/.framework/functions/_shared/message-sequence.ts +53 -0
  21. package/.framework/functions/_shared/middleware.ts +47 -44
  22. package/.framework/functions/_shared/pipeline-runner.ts +150 -37
  23. package/.framework/functions/_shared/principal.ts +9 -6
  24. package/.framework/functions/_shared/trigger-engine.ts +149 -40
  25. package/.framework/functions/admin-data.ts +48 -31
  26. package/.framework/functions/ai-agents.ts +103 -33
  27. package/.framework/functions/api-keys.ts +301 -122
  28. package/.framework/functions/apps.ts +43 -26
  29. package/.framework/functions/cil-ingest.ts +48 -15
  30. package/.framework/functions/debug-auth.ts +14 -8
  31. package/.framework/functions/deliveries.ts +39 -12
  32. package/.framework/functions/embeddings.ts +145 -76
  33. package/.framework/functions/integration-outbound.ts +67 -27
  34. package/.framework/functions/integrations.ts +254 -127
  35. package/.framework/functions/logs.ts +273 -133
  36. package/.framework/functions/observability.ts +277 -147
  37. package/.framework/functions/pipeline-executions.ts +1 -1
  38. package/.framework/functions/pipeline-runner-background.ts +120 -0
  39. package/.framework/functions/pipelines.ts +14 -9
  40. package/.framework/functions/prompt-configs.ts +7 -4
  41. package/.framework/functions/roles.ts +8 -5
  42. package/.framework/functions/security.ts +30 -17
  43. package/.framework/functions/system-cron.ts +250 -128
  44. package/.framework/functions/tests.ts +7 -6
  45. package/.framework/functions/timers.ts +310 -107
  46. package/.framework/functions/trigger-scheduler.ts +65 -5
  47. package/.framework/functions/triggers.ts +28 -13
  48. package/.framework/functions/types.ts +13 -10
  49. package/.framework/migrations/064_episode_leases.sql +196 -0
  50. package/.framework/migrations/065_execution_tables_updated_at.sql +20 -0
  51. package/.framework/migrations/066_episode_steal_thread_merge.sql +148 -0
  52. package/.framework/migrations/067_episode_lease_stale_steal.sql +93 -0
  53. package/.framework/migrations/068_cron_schedule_timer_rpcs.sql +251 -0
  54. package/.framework/migrations/069_log_stats_window.sql +54 -0
  55. package/.framework/migrations/070_app_type_schema_rpcs.sql +166 -0
  56. package/.framework/migrations/071_timer_interval_keys.sql +96 -0
  57. package/.framework/migrations/072_slug_autofill.sql +77 -0
  58. package/.framework/migrations/073_seed_member_roles.sql +26 -0
  59. package/.framework/schemas/spine.config.schema.json +62 -0
  60. package/.framework/src/App.tsx +3 -1
  61. package/.framework/src/apps/admin/index.tsx +1141 -775
  62. package/.framework/src/components/ErrorBoundary.tsx +136 -0
  63. package/.framework/src/components/admin/AdminListPage.tsx +81 -73
  64. package/.framework/src/components/admin/AdminSidebar.tsx +92 -81
  65. package/.framework/src/components/admin/EntitySelect.tsx +181 -0
  66. package/.framework/src/components/admin/PageInstructions.tsx +86 -127
  67. package/.framework/src/components/app-shell/GenericAppShell.tsx +3 -1
  68. package/.framework/src/components/app-shell/GenericDetailPage.tsx +37 -13
  69. package/.framework/src/components/app-shell/GenericListPage.tsx +28 -32
  70. package/.framework/src/components/auth/TurnstileWidget.tsx +9 -6
  71. package/.framework/src/components/kb/KBArticleEditor.tsx +49 -6
  72. package/.framework/src/components/layout/Layout.tsx +4 -2
  73. package/.framework/src/components/layout/Sidebar.tsx +304 -179
  74. package/.framework/src/components/runtime/DataDetailPage.tsx +67 -35
  75. package/.framework/src/components/runtime/DataHeader.tsx +96 -48
  76. package/.framework/src/components/runtime/DataListPage.tsx +3 -26
  77. package/.framework/src/components/runtime/DataStats.tsx +10 -10
  78. package/.framework/src/components/runtime/DataTable.tsx +12 -10
  79. package/.framework/src/components/ui/sheet.tsx +24 -26
  80. package/.framework/src/components/ui/textarea.tsx +74 -48
  81. package/.framework/src/hooks/useBranding.ts +47 -0
  82. package/.framework/src/hooks/useEntityList.ts +12 -9
  83. package/.framework/src/hooks/useListSchema.ts +108 -58
  84. package/.framework/src/instructions/README.md +57 -0
  85. package/.framework/src/instructions/ai-agents.md +69 -0
  86. package/.framework/src/instructions/alerts.md +80 -0
  87. package/.framework/src/instructions/api-keys.md +87 -0
  88. package/.framework/src/instructions/apps.md +77 -0
  89. package/.framework/src/instructions/concepts/ai-and-prompts.md +150 -0
  90. package/.framework/src/instructions/concepts/apps-and-renderers.md +162 -0
  91. package/.framework/src/instructions/concepts/auth-and-api-keys.md +133 -0
  92. package/.framework/src/instructions/concepts/automation.md +186 -0
  93. package/.framework/src/instructions/concepts/concurrency-and-idempotency.md +125 -0
  94. package/.framework/src/instructions/concepts/core-vs-custom.md +124 -0
  95. package/.framework/src/instructions/concepts/design-schema.md +152 -0
  96. package/.framework/src/instructions/concepts/integrations-and-webhooks.md +127 -0
  97. package/.framework/src/instructions/concepts/observability.md +116 -0
  98. package/.framework/src/instructions/concepts/permissions.md +150 -0
  99. package/.framework/src/instructions/concepts/runtime-records.md +111 -0
  100. package/.framework/src/instructions/concepts/scope-and-accounts.md +112 -0
  101. package/.framework/src/instructions/concepts/spine-way.md +172 -0
  102. package/.framework/src/instructions/deliveries.md +59 -0
  103. package/.framework/src/instructions/guide/00-orientation.md +106 -0
  104. package/.framework/src/instructions/guide/01-install-and-first-run.md +253 -0
  105. package/.framework/src/instructions/guide/02-project-map.md +147 -0
  106. package/.framework/src/instructions/guide/03-domain-model.md +223 -0
  107. package/.framework/src/instructions/guide/04-first-app.md +227 -0
  108. package/.framework/src/instructions/guide/05-glossary.md +183 -0
  109. package/.framework/src/instructions/integrations.md +96 -0
  110. package/.framework/src/instructions/internal/cil-markers.md +83 -0
  111. package/.framework/src/instructions/invites.md +60 -0
  112. package/.framework/src/instructions/kb.md +80 -0
  113. package/.framework/src/instructions/logs.md +77 -0
  114. package/.framework/src/instructions/observability.md +61 -0
  115. package/.framework/src/instructions/operations/deployment.md +115 -0
  116. package/.framework/src/instructions/operations/migrations.md +125 -0
  117. package/.framework/src/instructions/operations/security-checklist.md +148 -0
  118. package/.framework/src/instructions/operations/troubleshooting.md +170 -0
  119. package/.framework/src/instructions/operations/upgrade.md +116 -0
  120. package/.framework/src/instructions/pipeline-executions.md +62 -0
  121. package/.framework/src/instructions/pipelines.md +78 -0
  122. package/.framework/src/instructions/prompts.md +95 -0
  123. package/.framework/src/instructions/reference/api/admin-data.md +162 -0
  124. package/.framework/src/instructions/reference/api/auth.md +113 -0
  125. package/.framework/src/instructions/reference/api/errors-and-envelopes.md +113 -0
  126. package/.framework/src/instructions/reference/app-manifest.md +150 -0
  127. package/.framework/src/instructions/reference/cli.md +124 -0
  128. package/.framework/src/instructions/reference/database.md +132 -0
  129. package/.framework/src/instructions/reference/design-schema.md +280 -0
  130. package/.framework/src/instructions/reference/env-vars.md +133 -0
  131. package/.framework/src/instructions/reference/functions/account-nodes.md +75 -0
  132. package/.framework/src/instructions/reference/functions/admin-data.md +195 -0
  133. package/.framework/src/instructions/reference/functions/admin-funnel.md +90 -0
  134. package/.framework/src/instructions/reference/functions/admin-install-funnel.md +107 -0
  135. package/.framework/src/instructions/reference/functions/admin-signals.md +102 -0
  136. package/.framework/src/instructions/reference/functions/ai-agents.md +148 -0
  137. package/.framework/src/instructions/reference/functions/ai-interactions.md +156 -0
  138. package/.framework/src/instructions/reference/functions/api-keys.md +130 -0
  139. package/.framework/src/instructions/reference/functions/apps.md +140 -0
  140. package/.framework/src/instructions/reference/functions/auth.md +99 -0
  141. package/.framework/src/instructions/reference/functions/debug-auth.md +91 -0
  142. package/.framework/src/instructions/reference/functions/deliveries.md +110 -0
  143. package/.framework/src/instructions/reference/functions/embeddings.md +166 -0
  144. package/.framework/src/instructions/reference/functions/eval-harness.md +149 -0
  145. package/.framework/src/instructions/reference/functions/index.md +103 -0
  146. package/.framework/src/instructions/reference/functions/integration-outbound.md +200 -0
  147. package/.framework/src/instructions/reference/functions/integration-routes.md +151 -0
  148. package/.framework/src/instructions/reference/functions/integrations.md +130 -0
  149. package/.framework/src/instructions/reference/functions/invites.md +182 -0
  150. package/.framework/src/instructions/reference/functions/item-progress.md +107 -0
  151. package/.framework/src/instructions/reference/functions/kb.md +166 -0
  152. package/.framework/src/instructions/reference/functions/logs.md +141 -0
  153. package/.framework/src/instructions/reference/functions/observability.md +105 -0
  154. package/.framework/src/instructions/reference/functions/pipeline-executions.md +132 -0
  155. package/.framework/src/instructions/reference/functions/pipeline-runner-background.md +121 -0
  156. package/.framework/src/instructions/reference/functions/pipelines.md +136 -0
  157. package/.framework/src/instructions/reference/functions/prompt-configs.md +121 -0
  158. package/.framework/src/instructions/reference/functions/roles.md +121 -0
  159. package/.framework/src/instructions/reference/functions/security.md +140 -0
  160. package/.framework/src/instructions/reference/functions/system-cron.md +136 -0
  161. package/.framework/src/instructions/reference/functions/system.md +106 -0
  162. package/.framework/src/instructions/reference/functions/tests.md +97 -0
  163. package/.framework/src/instructions/reference/functions/timers.md +117 -0
  164. package/.framework/src/instructions/reference/functions/trigger-scheduler.md +102 -0
  165. package/.framework/src/instructions/reference/functions/triggers.md +140 -0
  166. package/.framework/src/instructions/reference/functions/types.md +146 -0
  167. package/.framework/src/instructions/reference/seeds.md +126 -0
  168. package/.framework/src/instructions/reference/shared-modules.md +127 -0
  169. package/.framework/src/instructions/reference/spine-config.md +114 -0
  170. package/.framework/src/instructions/roles.md +80 -0
  171. package/.framework/src/instructions/runtime-detail.md +70 -0
  172. package/.framework/src/instructions/runtime-list.md +77 -0
  173. package/.framework/src/instructions/security.md +67 -0
  174. package/.framework/src/instructions/tasks/add-a-pipeline.md +110 -0
  175. package/.framework/src/instructions/tasks/add-a-role.md +96 -0
  176. package/.framework/src/instructions/tasks/add-a-timer.md +114 -0
  177. package/.framework/src/instructions/tasks/add-a-trigger.md +106 -0
  178. package/.framework/src/instructions/tasks/add-a-type.md +151 -0
  179. package/.framework/src/instructions/tasks/add-a-webhook.md +108 -0
  180. package/.framework/src/instructions/tasks/add-an-ai-agent.md +108 -0
  181. package/.framework/src/instructions/tasks/add-an-integration.md +124 -0
  182. package/.framework/src/instructions/tasks/build-a-custom-page.md +118 -0
  183. package/.framework/src/instructions/tasks/package-and-install-an-app.md +127 -0
  184. package/.framework/src/instructions/tasks/test-your-code.md +108 -0
  185. package/.framework/src/instructions/tasks/write-a-function.md +132 -0
  186. package/.framework/src/instructions/tasks/write-a-migration.md +110 -0
  187. package/.framework/src/instructions/testing.md +59 -0
  188. package/.framework/src/instructions/timers.md +82 -0
  189. package/.framework/src/instructions/triggers.md +69 -0
  190. package/.framework/src/instructions/types.md +93 -0
  191. package/.framework/src/lib/branding.ts +128 -0
  192. package/.framework/src/pages/NoAppPage.tsx +3 -1
  193. package/.framework/src/pages/NotFoundPage.tsx +62 -31
  194. package/.framework/src/pages/SetupPage.tsx +5 -2
  195. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +117 -106
  196. package/.framework/src/pages/admin/AIAgentsPage.tsx +86 -48
  197. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +153 -152
  198. package/.framework/src/pages/admin/APIKeysPage.tsx +91 -90
  199. package/.framework/src/pages/admin/AlertsConfigPage.tsx +29 -18
  200. package/.framework/src/pages/admin/AppDetailPage.tsx +6 -60
  201. package/.framework/src/pages/admin/AppsPage.tsx +104 -66
  202. package/.framework/src/pages/admin/DeliveriesPage.tsx +5 -5
  203. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +5 -23
  204. package/.framework/src/pages/admin/EmbeddingsPage.tsx +5 -26
  205. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +7 -7
  206. package/.framework/src/pages/admin/IntegrationsPage.tsx +85 -43
  207. package/.framework/src/pages/admin/LogsPage.tsx +144 -76
  208. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +223 -140
  209. package/.framework/src/pages/admin/PipelineDetailPage.tsx +134 -113
  210. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +108 -45
  211. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -115
  212. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +96 -98
  213. package/.framework/src/pages/admin/PromptConfigsPage.tsx +101 -59
  214. package/.framework/src/pages/admin/RoleDetailPage.tsx +90 -79
  215. package/.framework/src/pages/admin/RolesPage.tsx +86 -43
  216. package/.framework/src/pages/admin/SecurityPage.tsx +1 -1
  217. package/.framework/src/pages/admin/TestingDashboard.tsx +16 -28
  218. package/.framework/src/pages/admin/TimerDetailPage.tsx +117 -100
  219. package/.framework/src/pages/admin/TimersPage.tsx +90 -62
  220. package/.framework/src/pages/admin/TriggerDetailPage.tsx +90 -83
  221. package/.framework/src/pages/admin/TriggersPage.tsx +124 -99
  222. package/.framework/src/pages/admin/TypeDetailPage.tsx +152 -138
  223. package/.framework/src/pages/admin/TypesPage.tsx +90 -48
  224. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +17 -25
  225. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +17 -27
  226. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +72 -40
  227. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +321 -129
  228. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +18 -29
  229. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +26 -38
  230. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +34 -46
  231. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +189 -103
  232. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +246 -136
  233. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +11 -22
  234. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +9 -20
  235. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +26 -38
  236. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +7 -26
  237. package/.framework/src/pages/auth/AuthConfirmPage.tsx +3 -1
  238. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +3 -1
  239. package/.framework/src/pages/auth/LoginPage.tsx +4 -2
  240. package/.framework/src/pages/auth/RegisterPage.tsx +3 -1
  241. package/.framework/templates/agent/AGENTS.md +150 -0
  242. package/.framework/templates/agent/skills/spine-add-ai-agent/SKILL.md +58 -0
  243. package/.framework/templates/agent/skills/spine-add-automation/SKILL.md +62 -0
  244. package/.framework/templates/agent/skills/spine-add-integration/SKILL.md +63 -0
  245. package/.framework/templates/agent/skills/spine-architect/SKILL.md +86 -0
  246. package/.framework/templates/agent/skills/spine-install-app/SKILL.md +72 -0
  247. package/.framework/templates/agent/skills/spine-migration/SKILL.md +75 -0
  248. package/.framework/templates/agent/skills/spine-new-app/SKILL.md +67 -0
  249. package/.framework/templates/agent/skills/spine-new-function/SKILL.md +65 -0
  250. package/.framework/templates/agent/skills/spine-new-type/SKILL.md +65 -0
  251. package/.framework/templates/agent/skills/spine-schema/SKILL.md +77 -0
  252. package/.framework/templates/agent/skills/spine-test/SKILL.md +67 -0
  253. package/.framework/templates/agent/skills/spine-troubleshoot/SKILL.md +74 -0
  254. package/.framework/templates/agent/skills/spine-upgrade/SKILL.md +69 -0
  255. package/.framework/templates/project.json +5 -1
  256. package/.framework/tests/unit/account-scoping-gates.test.ts +392 -0
  257. package/.framework/tests/unit/agent-files.test.ts +355 -0
  258. package/.framework/tests/unit/agent-runner.test.ts +496 -47
  259. package/.framework/tests/unit/api-keys-create-scope-gate.test.ts +160 -0
  260. package/.framework/tests/unit/api-keys-omit-secret-fields.test.ts +38 -0
  261. package/.framework/tests/unit/bootstrap.test.ts +242 -0
  262. package/.framework/tests/unit/cli-context-api-key.test.ts +114 -0
  263. package/.framework/tests/unit/debug-auth.test.ts +38 -0
  264. package/.framework/tests/unit/deliveries-account-scoping.test.ts +185 -0
  265. package/.framework/tests/unit/episode-lease.test.ts +695 -0
  266. package/.framework/tests/unit/integration-outbound-credentials.test.ts +167 -0
  267. package/.framework/tests/unit/integrations-audit-redaction.test.ts +130 -0
  268. package/.framework/tests/unit/kb-ingest-lease.test.ts +19 -0
  269. package/.framework/tests/unit/logging-app-id.test.ts +75 -0
  270. package/.framework/tests/unit/pipeline-runner-background.test.ts +120 -0
  271. package/.framework/tests/unit/pipeline-runner.test.ts +153 -1
  272. package/.framework/tests/unit/principal-cache.test.ts +15 -0
  273. package/.framework/tests/unit/system-context-denial.test.ts +145 -0
  274. package/.framework/tests/unit/system-cron.test.ts +240 -0
  275. package/.framework/tests/unit/timers.test.ts +159 -0
  276. package/.framework/tests/unit/trigger-engine.test.ts +278 -91
  277. package/.framework/tests/unit/trigger-scheduler.test.ts +78 -0
  278. package/README.md +125 -166
  279. package/config/tsconfig.cli.json +2 -2
  280. package/netlify.toml +5 -0
  281. package/package.json +15 -4
  282. package/templates/project/package-lock.json +2 -2
  283. package/.framework/docs/admin-routes.md +0 -76
  284. package/.framework/docs/api-docs-progress.md +0 -38
  285. package/.framework/docs/api-governance.md +0 -146
  286. package/.framework/docs/api-testing-results.md +0 -212
  287. package/.framework/docs/assembly-launch-guide.md +0 -138
  288. package/.framework/docs/audit-results.md +0 -590
  289. package/.framework/docs/db-api-inventory.md +0 -95
  290. package/.framework/docs/gap-remediation-backlog.md +0 -103
  291. package/.framework/docs/ui-adoption-verification.md +0 -111
  292. package/.framework/docs/ui-api-coverage.md +0 -84
  293. package/.framework/docs/v2-compatibility-audit.md +0 -228
  294. package/.framework/mcp/index.ts +0 -133
  295. package/.framework/mcp/load-env.ts +0 -60
  296. package/.framework/mcp/shared/app-manifest.ts +0 -275
  297. package/.framework/mcp/shared/db.ts +0 -477
  298. package/.framework/mcp/shared/kb.ts +0 -118
  299. package/.framework/mcp/tools/architect.ts +0 -431
  300. package/.framework/mcp/tools/cil/context.ts +0 -345
  301. package/.framework/mcp/tools/cil/graph.ts +0 -242
  302. package/.framework/mcp/tools/cil/ingest.ts +0 -1217
  303. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +0 -693
  304. package/.framework/mcp/tools/cil/pipeline.ts +0 -767
  305. package/.framework/mcp/tools/cil/project.ts +0 -791
  306. package/.framework/mcp/tools/cil/retrieval.ts +0 -336
  307. package/.framework/mcp/tools/cil/search-core.ts +0 -454
  308. package/.framework/mcp/tools/cil/search.ts +0 -97
  309. package/.framework/mcp/tools/cil/suggest.ts +0 -186
  310. package/.framework/mcp/tools/cil/validate.ts +0 -1369
  311. package/.framework/mcp/tools/kb/delete.ts +0 -139
  312. package/.framework/mcp/tools/kb/index.ts +0 -52
  313. package/.framework/mcp/tools/kb/ingest.ts +0 -84
  314. package/.framework/mcp/tools/kb/list-types.ts +0 -102
  315. package/.framework/mcp/tools/kb/publish.ts +0 -100
  316. package/.framework/mcp/tools/kb/reindex.ts +0 -86
  317. package/.framework/mcp/tools/kb/revoke.ts +0 -85
  318. package/.framework/mcp/tools/kb/search.ts +0 -101
  319. package/.framework/mcp/tools/kb/upsert.ts +0 -125
  320. package/.framework/mcp/tools/observability.ts +0 -510
@@ -1,12 +1,28 @@
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"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/layout/Sidebar.tsx"]
2
+ /**
3
+ * @module Sidebar
4
+ * @audience both
5
+ * @layer shared-core
6
+ * @stability stable
7
+ *
8
+ * The Sidebar component provides a navigational interface for users, allowing them to access various sections of the application. It integrates with authentication and branding contexts to dynamically render links based on user permissions and branding settings.
9
+ * INVARIANT: The user must be authenticated to access certain links.
10
+ *
11
+ * @seeAlso AuthContext.tsx (provides authentication context for user access control).
12
+ * @seeAlso useBranding.ts (handles branding logic for the application).
13
+ * @seeAlso Popover.tsx (used for displaying additional options in the sidebar).
14
+ *
15
+ * @cil-generated
16
+ */
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
10
26
 
11
27
 
12
28
 
@@ -18,8 +34,10 @@
18
34
  import { useState } from 'react'
19
35
  import { Link, useLocation } from 'react-router-dom'
20
36
  import { useAuth } from '../../contexts/AuthContext'
37
+ import { useBranding } from '../../hooks/useBranding'
21
38
  import { Popover, PopoverTrigger, PopoverContent } from '../ui/popover'
22
39
  import {
40
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:module_header:module_header"]
23
41
  Home,
24
42
  Box,
25
43
  Users,
@@ -46,66 +64,92 @@ import {
46
64
  Cpu,
47
65
  BookOpen
48
66
  } from 'lucide-react'
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"]
53
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
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"]
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:SidebarProps:interface" type="interface" identity="SidebarProps" parent="~/.framework/src/components/layout/Sidebar.tsx"]
83
+ /**
84
+ * SidebarProps defines the properties required for the Sidebar component, managing its open state and close action. This interface ensures that the Sidebar can be controlled effectively by its parent component.
85
+ *
86
+ * @sideEffects none
87
+ * @stability internal
88
+ * @cil-generated
89
+ */
64
90
  interface SidebarProps {
65
91
  open: boolean
66
92
  onClose: () => void
67
93
  }
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"]
72
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
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"]
94
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:SidebarProps:interface"]
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:navigation:constant" type="constant" identity="navigation" parent="~/.framework/src/components/layout/Sidebar.tsx"]
114
+ /**
115
+ * The 'navigation' constant defines the structure of the sidebar navigation items for the application. It provides a consistent way to manage and render navigation links within the sidebar component.
116
+ *
117
+ * @sideEffects none
118
+ * @stability internal
119
+ * @cil-generated
120
+ */
86
121
  const navigation = [
87
122
  { name: 'Dashboard', href: '/spine-framework/admin/configs/types', icon: Home },
88
123
  ]
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
124
  // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:navigation:constant"]
96
125
 
97
126
 
98
127
 
99
128
 
100
129
 
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"]
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:configsNavigation:constant" type="constant" identity="configsNavigation" parent="~/.framework/src/components/layout/Sidebar.tsx"]
146
+ /**
147
+ * The 'configsNavigation' constant defines a structured navigation menu for the admin configuration section of the application. It organizes various configuration items into a list, including dividers for better visual separation.
148
+ *
149
+ * @sideEffects none
150
+ * @stability internal
151
+ * @cil-generated
152
+ */
109
153
  const configsNavigation = [
110
154
  { name: 'Item Types', href: '/spine-framework/admin/configs/types', icon: Box },
111
155
  { divider: true },
@@ -123,135 +167,193 @@ const configsNavigation = [
123
167
  { name: 'API Keys', href: '/spine-framework/admin/configs/api-keys', icon: Key },
124
168
  { name: 'Deliveries', href: '/spine-framework/admin/configs/deliveries', icon: Truck },
125
169
  ] 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"]
170
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:configsNavigation:constant"]
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
133
179
 
134
180
 
135
181
 
136
182
 
137
183
 
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"]
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:observabilityNavigation:constant" type="constant" identity="observabilityNavigation" parent="~/.framework/src/components/layout/Sidebar.tsx"]
192
+ /**
193
+ * The 'observabilityNavigation' constant defines a structured array of navigation items for the observability section of the application. It provides links to various observability features such as Dashboard, Alerts, Executions, and Logs.
194
+ *
195
+ * @sideEffects none
196
+ * @stability internal
197
+ * @cil-generated
198
+ */
146
199
  const observabilityNavigation = [
147
200
  { name: 'Dashboard', href: '/spine-framework/admin/observability', icon: BarChart3 },
148
201
  { name: 'Alerts', href: '/spine-framework/admin/observability/alerts', icon: Bell },
149
202
  { name: 'Executions', href: '/spine-framework/admin/observability/executions', icon: FlaskConical },
150
203
  { name: 'Logs', href: '/spine-framework/admin/observability/logs', icon: FileText },
151
204
  ]
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"]
205
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:observabilityNavigation:constant"]
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+
159
221
 
160
222
 
161
223
 
162
224
 
163
225
 
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"]
226
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:runtimeEntities:constant" type="constant" identity="runtimeEntities" parent="~/.framework/src/components/layout/Sidebar.tsx"]
227
+ /**
228
+ * The constant 'runtimeEntities' defines a list of navigational items for the sidebar in the application. Each item includes a name, a link, and an associated icon for user interface representation.
229
+ *
230
+ * @sideEffects none
231
+ * @stability internal
232
+ * @cil-generated
233
+ */
172
234
  const runtimeEntities = [
173
235
  { name: 'Items', href: '/spine-framework/admin/runtime/items', icon: Box },
174
236
  { name: 'Accounts', href: '/spine-framework/admin/runtime/accounts', icon: Building2 },
175
237
  { name: 'People', href: '/spine-framework/admin/runtime/people', icon: User },
176
- { name: 'Person Types', href: '/spine-framework/admin/runtime/person-types', icon: Users },
177
238
  ]
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"]
239
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:runtimeEntities:constant"]
185
240
 
186
241
 
187
242
 
188
243
 
189
244
 
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"]
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:kbEngineNavigation:constant" type="constant" identity="kbEngineNavigation" parent="~/.framework/src/components/layout/Sidebar.tsx"]
261
+ /**
262
+ * The constant 'kbEngineNavigation' defines a navigation structure for the Knowledge Base section of the application. It provides links to key resources within the admin interface.
263
+ *
264
+ * @sideEffects none
265
+ * @stability internal
266
+ * @cil-generated
267
+ */
198
268
  const kbEngineNavigation = [
199
269
  { name: 'Knowledge Base', href: '/spine-framework/admin/kb/kb-spine-public', icon: BookOpen },
200
270
  { name: 'Embeddings', href: '/spine-framework/admin/kb/embeddings', icon: Cpu },
201
271
  ]
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"]
206
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
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"]
272
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:kbEngineNavigation:constant"]
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:classNames:function" type="function" identity="classNames" parent="~/.framework/src/components/layout/Sidebar.tsx"]
292
+ /**
293
+ * The classNames function constructs a single string from an array of class names, filtering out any falsy values. This utility is useful for dynamically generating class attribute values in JSX components.
294
+ *
295
+ * @macro Utility function for generating a concatenated class name string.
296
+ * @micro Filters out falsy values from the input array before joining the remaining class names.
297
+ * @inputSpec
298
+ * - classes: (string | false | undefined)[] (required) — an array of class names that may include falsy values.
299
+ * @outputSpec string — a single string of class names separated by spaces.
300
+ * @sideEffects none
301
+ * @stability internal
302
+ * @cil-generated
303
+ */
220
304
  function classNames(...classes: (string | false | undefined)[]) {
221
305
  return classes.filter(Boolean).join(' ')
222
306
  }
307
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:classNames:function"]
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+
223
320
 
224
321
 
225
322
 
226
323
 
227
324
 
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"]
232
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
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
325
 
236
326
 
237
327
 
238
328
 
239
329
 
240
330
 
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"]
331
+
332
+
333
+
334
+
335
+
336
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:Sidebar:component" type="component" identity="Sidebar" parent="~/.framework/src/components/layout/Sidebar.tsx"]
337
+ /**
338
+ * The Sidebar component renders a collapsible sidebar interface that displays branding and navigation options. It provides users with a navigational aid that can be opened and closed as needed.
339
+ *
340
+ * @macro UI component responsible for displaying a sidebar with branding and navigation.
341
+ * @micro Utilizes conditional rendering to display the sidebar based on the 'open' state.
342
+ * @inputSpec
343
+ * - open: boolean (required) — determines if the sidebar is visible.
344
+ * - onClose: function (required) — callback function to close the sidebar.
345
+ * @outputSpec JSX.Element — renders the sidebar UI structure.
346
+ * @sideEffects none
347
+ * @stability internal
348
+ * @calls useBranding, SidebarContent
349
+ * @cil-generated
350
+ */
251
351
  export function Sidebar({ open, onClose }: SidebarProps) {
352
+ const branding = useBranding()
252
353
  return (
253
354
  <>
254
355
  <div className={classNames(open && 'fixed inset-0 z-40 flex')}>
356
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:Sidebar:component"]
255
357
  {open && (
256
358
  <div className="fixed inset-0 z-40 flex">
257
359
  <div
@@ -271,8 +373,8 @@ export function Sidebar({ open, onClose }: SidebarProps) {
271
373
  </div>
272
374
  <div className="h-0 flex-1 overflow-y-auto pt-5">
273
375
  <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>
376
+ <img src={branding.logo_url} alt={branding.app_name} className="h-8 w-auto" />
377
+ <span className="text-xl font-bold text-sidebar-foreground whitespace-nowrap">{branding.title}</span>
276
378
  </div>
277
379
  <SidebarContent onNavClick={onClose} />
278
380
  </div>
@@ -283,42 +385,65 @@ export function Sidebar({ open, onClose }: SidebarProps) {
283
385
  </>
284
386
  )
285
387
  }
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"]
290
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
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"]
388
+
389
+
390
+
391
+
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:SidebarContentProps:interface" type="interface" identity="SidebarContentProps" parent="~/.framework/src/components/layout/Sidebar.tsx"]
405
+ /**
406
+ * SidebarContentProps defines the properties for the sidebar content component, specifically handling navigation click events. It allows for optional navigation click functionality to be passed in as a prop.
407
+ *
408
+ * @sideEffects none
409
+ * @stability internal
410
+ * @cil-generated
411
+ */
302
412
  interface SidebarContentProps {
303
413
  onNavClick?: () => void
304
414
  }
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"]
309
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
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"]
415
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:SidebarContentProps:interface"]
416
+
417
+
418
+
419
+
420
+
421
+
422
+
423
+
424
+
425
+
426
+
427
+
428
+
429
+
430
+
431
+
432
+
433
+ // CIL[BEGIN stable_id="~/.framework/src/components/layout/Sidebar.tsx:SidebarContent:component" type="component" identity="SidebarContent" parent="~/.framework/src/components/layout/Sidebar.tsx"]
434
+ /**
435
+ * SidebarContent renders a navigation sidebar that allows users to navigate through different sections of the application and conditionally displays additional configuration options for system administrators.
436
+ *
437
+ * @macro Navigation component for application sidebar with conditional rendering for admin options.
438
+ * @micro Utilizes React state to manage the open/closed status of various sections based on the current URL path.
439
+ * @inputSpec
440
+ * - onNavClick: function (required) — callback function triggered on navigation item click.
441
+ * @outputSpec JSX.Element — renders the sidebar navigation structure.
442
+ * @sideEffects none
443
+ * @stability internal
444
+ * @calls useLocation, useAuth, classNames, Link
445
+ * @cil-generated
446
+ */
322
447
  export function SidebarContent({ onNavClick }: SidebarContentProps) {
323
448
  const location = useLocation()
324
449
  const { user, logout } = useAuth()
@@ -366,6 +491,7 @@ export function SidebarContent({ onNavClick }: SidebarContentProps) {
366
491
  {item.name}
367
492
  </Link>
368
493
  ))}
494
+ // CIL[END stable_id="~/.framework/src/components/layout/Sidebar.tsx:SidebarContent:component"]
369
495
  </div>
370
496
 
371
497
  {isSystemAdmin && (
@@ -571,10 +697,9 @@ export function SidebarContent({ onNavClick }: SidebarContentProps) {
571
697
  </nav>
572
698
  )
573
699
  }
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"]
700
+
701
+
702
+
703
+
704
+
705
+