spine-framework 0.4.4 → 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 (283) 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/hash-api-key.ts +183 -79
  15. package/.framework/functions/_shared/logging.ts +562 -224
  16. package/.framework/functions/_shared/middleware.ts +47 -44
  17. package/.framework/functions/admin-data.ts +39 -28
  18. package/.framework/functions/ai-agents.ts +10 -6
  19. package/.framework/functions/api-keys.ts +301 -122
  20. package/.framework/functions/apps.ts +43 -26
  21. package/.framework/functions/cil-ingest.ts +48 -15
  22. package/.framework/functions/debug-auth.ts +14 -8
  23. package/.framework/functions/deliveries.ts +39 -12
  24. package/.framework/functions/embeddings.ts +145 -76
  25. package/.framework/functions/integration-outbound.ts +67 -27
  26. package/.framework/functions/integrations.ts +254 -127
  27. package/.framework/functions/logs.ts +273 -133
  28. package/.framework/functions/observability.ts +277 -147
  29. package/.framework/functions/pipeline-executions.ts +1 -1
  30. package/.framework/functions/pipelines.ts +14 -9
  31. package/.framework/functions/prompt-configs.ts +7 -4
  32. package/.framework/functions/roles.ts +8 -5
  33. package/.framework/functions/security.ts +30 -17
  34. package/.framework/functions/system-cron.ts +240 -127
  35. package/.framework/functions/tests.ts +7 -6
  36. package/.framework/functions/timers.ts +310 -107
  37. package/.framework/functions/triggers.ts +28 -13
  38. package/.framework/functions/types.ts +13 -10
  39. package/.framework/migrations/069_log_stats_window.sql +54 -0
  40. package/.framework/migrations/070_app_type_schema_rpcs.sql +166 -0
  41. package/.framework/migrations/071_timer_interval_keys.sql +96 -0
  42. package/.framework/migrations/072_slug_autofill.sql +77 -0
  43. package/.framework/migrations/073_seed_member_roles.sql +26 -0
  44. package/.framework/src/apps/admin/index.tsx +1141 -775
  45. package/.framework/src/components/ErrorBoundary.tsx +136 -0
  46. package/.framework/src/components/admin/AdminListPage.tsx +81 -73
  47. package/.framework/src/components/admin/AdminSidebar.tsx +88 -79
  48. package/.framework/src/components/admin/EntitySelect.tsx +181 -0
  49. package/.framework/src/components/admin/PageInstructions.tsx +86 -127
  50. package/.framework/src/components/app-shell/GenericDetailPage.tsx +37 -13
  51. package/.framework/src/components/app-shell/GenericListPage.tsx +28 -32
  52. package/.framework/src/components/layout/Sidebar.tsx +300 -177
  53. package/.framework/src/components/runtime/DataDetailPage.tsx +67 -35
  54. package/.framework/src/components/runtime/DataHeader.tsx +96 -48
  55. package/.framework/src/components/runtime/DataListPage.tsx +3 -26
  56. package/.framework/src/components/runtime/DataStats.tsx +10 -10
  57. package/.framework/src/components/runtime/DataTable.tsx +12 -10
  58. package/.framework/src/components/ui/sheet.tsx +24 -26
  59. package/.framework/src/components/ui/textarea.tsx +74 -48
  60. package/.framework/src/hooks/useEntityList.ts +12 -9
  61. package/.framework/src/hooks/useListSchema.ts +108 -58
  62. package/.framework/src/instructions/README.md +57 -0
  63. package/.framework/src/instructions/ai-agents.md +69 -0
  64. package/.framework/src/instructions/alerts.md +80 -0
  65. package/.framework/src/instructions/api-keys.md +87 -0
  66. package/.framework/src/instructions/apps.md +77 -0
  67. package/.framework/src/instructions/concepts/ai-and-prompts.md +150 -0
  68. package/.framework/src/instructions/concepts/apps-and-renderers.md +162 -0
  69. package/.framework/src/instructions/concepts/auth-and-api-keys.md +133 -0
  70. package/.framework/src/instructions/concepts/automation.md +186 -0
  71. package/.framework/src/instructions/concepts/concurrency-and-idempotency.md +125 -0
  72. package/.framework/src/instructions/concepts/core-vs-custom.md +124 -0
  73. package/.framework/src/instructions/concepts/design-schema.md +152 -0
  74. package/.framework/src/instructions/concepts/integrations-and-webhooks.md +127 -0
  75. package/.framework/src/instructions/concepts/observability.md +116 -0
  76. package/.framework/src/instructions/concepts/permissions.md +150 -0
  77. package/.framework/src/instructions/concepts/runtime-records.md +111 -0
  78. package/.framework/src/instructions/concepts/scope-and-accounts.md +112 -0
  79. package/.framework/src/instructions/concepts/spine-way.md +172 -0
  80. package/.framework/src/instructions/deliveries.md +59 -0
  81. package/.framework/src/instructions/guide/00-orientation.md +106 -0
  82. package/.framework/src/instructions/guide/01-install-and-first-run.md +253 -0
  83. package/.framework/src/instructions/guide/02-project-map.md +147 -0
  84. package/.framework/src/instructions/guide/03-domain-model.md +223 -0
  85. package/.framework/src/instructions/guide/04-first-app.md +227 -0
  86. package/.framework/src/instructions/guide/05-glossary.md +183 -0
  87. package/.framework/src/instructions/integrations.md +96 -0
  88. package/.framework/src/instructions/internal/cil-markers.md +83 -0
  89. package/.framework/src/instructions/invites.md +60 -0
  90. package/.framework/src/instructions/kb.md +80 -0
  91. package/.framework/src/instructions/logs.md +77 -0
  92. package/.framework/src/instructions/observability.md +61 -0
  93. package/.framework/src/instructions/operations/deployment.md +115 -0
  94. package/.framework/src/instructions/operations/migrations.md +125 -0
  95. package/.framework/src/instructions/operations/security-checklist.md +148 -0
  96. package/.framework/src/instructions/operations/troubleshooting.md +170 -0
  97. package/.framework/src/instructions/operations/upgrade.md +116 -0
  98. package/.framework/src/instructions/pipeline-executions.md +62 -0
  99. package/.framework/src/instructions/pipelines.md +78 -0
  100. package/.framework/src/instructions/prompts.md +95 -0
  101. package/.framework/src/instructions/reference/api/admin-data.md +162 -0
  102. package/.framework/src/instructions/reference/api/auth.md +113 -0
  103. package/.framework/src/instructions/reference/api/errors-and-envelopes.md +113 -0
  104. package/.framework/src/instructions/reference/app-manifest.md +150 -0
  105. package/.framework/src/instructions/reference/cli.md +124 -0
  106. package/.framework/src/instructions/reference/database.md +132 -0
  107. package/.framework/src/instructions/reference/design-schema.md +280 -0
  108. package/.framework/src/instructions/reference/env-vars.md +133 -0
  109. package/.framework/src/instructions/reference/functions/account-nodes.md +75 -0
  110. package/.framework/src/instructions/reference/functions/admin-data.md +195 -0
  111. package/.framework/src/instructions/reference/functions/admin-funnel.md +90 -0
  112. package/.framework/src/instructions/reference/functions/admin-install-funnel.md +107 -0
  113. package/.framework/src/instructions/reference/functions/admin-signals.md +102 -0
  114. package/.framework/src/instructions/reference/functions/ai-agents.md +148 -0
  115. package/.framework/src/instructions/reference/functions/ai-interactions.md +156 -0
  116. package/.framework/src/instructions/reference/functions/api-keys.md +130 -0
  117. package/.framework/src/instructions/reference/functions/apps.md +140 -0
  118. package/.framework/src/instructions/reference/functions/auth.md +99 -0
  119. package/.framework/src/instructions/reference/functions/debug-auth.md +91 -0
  120. package/.framework/src/instructions/reference/functions/deliveries.md +110 -0
  121. package/.framework/src/instructions/reference/functions/embeddings.md +166 -0
  122. package/.framework/src/instructions/reference/functions/eval-harness.md +149 -0
  123. package/.framework/src/instructions/reference/functions/index.md +103 -0
  124. package/.framework/src/instructions/reference/functions/integration-outbound.md +200 -0
  125. package/.framework/src/instructions/reference/functions/integration-routes.md +151 -0
  126. package/.framework/src/instructions/reference/functions/integrations.md +130 -0
  127. package/.framework/src/instructions/reference/functions/invites.md +182 -0
  128. package/.framework/src/instructions/reference/functions/item-progress.md +107 -0
  129. package/.framework/src/instructions/reference/functions/kb.md +166 -0
  130. package/.framework/src/instructions/reference/functions/logs.md +141 -0
  131. package/.framework/src/instructions/reference/functions/observability.md +105 -0
  132. package/.framework/src/instructions/reference/functions/pipeline-executions.md +132 -0
  133. package/.framework/src/instructions/reference/functions/pipeline-runner-background.md +121 -0
  134. package/.framework/src/instructions/reference/functions/pipelines.md +136 -0
  135. package/.framework/src/instructions/reference/functions/prompt-configs.md +121 -0
  136. package/.framework/src/instructions/reference/functions/roles.md +121 -0
  137. package/.framework/src/instructions/reference/functions/security.md +140 -0
  138. package/.framework/src/instructions/reference/functions/system-cron.md +136 -0
  139. package/.framework/src/instructions/reference/functions/system.md +106 -0
  140. package/.framework/src/instructions/reference/functions/tests.md +97 -0
  141. package/.framework/src/instructions/reference/functions/timers.md +117 -0
  142. package/.framework/src/instructions/reference/functions/trigger-scheduler.md +102 -0
  143. package/.framework/src/instructions/reference/functions/triggers.md +140 -0
  144. package/.framework/src/instructions/reference/functions/types.md +146 -0
  145. package/.framework/src/instructions/reference/seeds.md +126 -0
  146. package/.framework/src/instructions/reference/shared-modules.md +127 -0
  147. package/.framework/src/instructions/reference/spine-config.md +114 -0
  148. package/.framework/src/instructions/roles.md +80 -0
  149. package/.framework/src/instructions/runtime-detail.md +70 -0
  150. package/.framework/src/instructions/runtime-list.md +77 -0
  151. package/.framework/src/instructions/security.md +67 -0
  152. package/.framework/src/instructions/tasks/add-a-pipeline.md +110 -0
  153. package/.framework/src/instructions/tasks/add-a-role.md +96 -0
  154. package/.framework/src/instructions/tasks/add-a-timer.md +114 -0
  155. package/.framework/src/instructions/tasks/add-a-trigger.md +106 -0
  156. package/.framework/src/instructions/tasks/add-a-type.md +151 -0
  157. package/.framework/src/instructions/tasks/add-a-webhook.md +108 -0
  158. package/.framework/src/instructions/tasks/add-an-ai-agent.md +108 -0
  159. package/.framework/src/instructions/tasks/add-an-integration.md +124 -0
  160. package/.framework/src/instructions/tasks/build-a-custom-page.md +118 -0
  161. package/.framework/src/instructions/tasks/package-and-install-an-app.md +127 -0
  162. package/.framework/src/instructions/tasks/test-your-code.md +108 -0
  163. package/.framework/src/instructions/tasks/write-a-function.md +132 -0
  164. package/.framework/src/instructions/tasks/write-a-migration.md +110 -0
  165. package/.framework/src/instructions/testing.md +59 -0
  166. package/.framework/src/instructions/timers.md +82 -0
  167. package/.framework/src/instructions/triggers.md +69 -0
  168. package/.framework/src/instructions/types.md +93 -0
  169. package/.framework/src/pages/NotFoundPage.tsx +62 -31
  170. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +117 -106
  171. package/.framework/src/pages/admin/AIAgentsPage.tsx +86 -48
  172. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +153 -152
  173. package/.framework/src/pages/admin/APIKeysPage.tsx +91 -90
  174. package/.framework/src/pages/admin/AlertsConfigPage.tsx +29 -18
  175. package/.framework/src/pages/admin/AppDetailPage.tsx +6 -60
  176. package/.framework/src/pages/admin/AppsPage.tsx +104 -66
  177. package/.framework/src/pages/admin/DeliveriesPage.tsx +5 -5
  178. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +5 -23
  179. package/.framework/src/pages/admin/EmbeddingsPage.tsx +5 -26
  180. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +7 -7
  181. package/.framework/src/pages/admin/IntegrationsPage.tsx +85 -43
  182. package/.framework/src/pages/admin/LogsPage.tsx +144 -76
  183. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +223 -140
  184. package/.framework/src/pages/admin/PipelineDetailPage.tsx +134 -113
  185. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +108 -45
  186. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -115
  187. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +96 -98
  188. package/.framework/src/pages/admin/PromptConfigsPage.tsx +101 -59
  189. package/.framework/src/pages/admin/RoleDetailPage.tsx +90 -79
  190. package/.framework/src/pages/admin/RolesPage.tsx +86 -43
  191. package/.framework/src/pages/admin/SecurityPage.tsx +1 -1
  192. package/.framework/src/pages/admin/TestingDashboard.tsx +16 -28
  193. package/.framework/src/pages/admin/TimerDetailPage.tsx +117 -100
  194. package/.framework/src/pages/admin/TimersPage.tsx +90 -62
  195. package/.framework/src/pages/admin/TriggerDetailPage.tsx +90 -83
  196. package/.framework/src/pages/admin/TriggersPage.tsx +124 -99
  197. package/.framework/src/pages/admin/TypeDetailPage.tsx +152 -138
  198. package/.framework/src/pages/admin/TypesPage.tsx +90 -48
  199. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +17 -25
  200. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +17 -27
  201. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +72 -40
  202. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +321 -129
  203. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +18 -29
  204. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +26 -38
  205. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +34 -46
  206. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +189 -103
  207. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +246 -136
  208. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +11 -22
  209. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +9 -20
  210. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +26 -38
  211. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +7 -26
  212. package/.framework/templates/agent/AGENTS.md +150 -0
  213. package/.framework/templates/agent/skills/spine-add-ai-agent/SKILL.md +58 -0
  214. package/.framework/templates/agent/skills/spine-add-automation/SKILL.md +62 -0
  215. package/.framework/templates/agent/skills/spine-add-integration/SKILL.md +63 -0
  216. package/.framework/templates/agent/skills/spine-architect/SKILL.md +86 -0
  217. package/.framework/templates/agent/skills/spine-install-app/SKILL.md +72 -0
  218. package/.framework/templates/agent/skills/spine-migration/SKILL.md +75 -0
  219. package/.framework/templates/agent/skills/spine-new-app/SKILL.md +67 -0
  220. package/.framework/templates/agent/skills/spine-new-function/SKILL.md +65 -0
  221. package/.framework/templates/agent/skills/spine-new-type/SKILL.md +65 -0
  222. package/.framework/templates/agent/skills/spine-schema/SKILL.md +77 -0
  223. package/.framework/templates/agent/skills/spine-test/SKILL.md +67 -0
  224. package/.framework/templates/agent/skills/spine-troubleshoot/SKILL.md +74 -0
  225. package/.framework/templates/agent/skills/spine-upgrade/SKILL.md +69 -0
  226. package/.framework/templates/project.json +4 -1
  227. package/.framework/tests/unit/account-scoping-gates.test.ts +392 -0
  228. package/.framework/tests/unit/agent-files.test.ts +355 -0
  229. package/.framework/tests/unit/agent-runner.test.ts +479 -44
  230. package/.framework/tests/unit/api-keys-create-scope-gate.test.ts +160 -0
  231. package/.framework/tests/unit/api-keys-omit-secret-fields.test.ts +38 -0
  232. package/.framework/tests/unit/bootstrap.test.ts +242 -0
  233. package/.framework/tests/unit/cli-context-api-key.test.ts +114 -0
  234. package/.framework/tests/unit/debug-auth.test.ts +38 -0
  235. package/.framework/tests/unit/deliveries-account-scoping.test.ts +185 -0
  236. package/.framework/tests/unit/integration-outbound-credentials.test.ts +167 -0
  237. package/.framework/tests/unit/integrations-audit-redaction.test.ts +130 -0
  238. package/.framework/tests/unit/logging-app-id.test.ts +75 -0
  239. package/.framework/tests/unit/system-context-denial.test.ts +145 -0
  240. package/.framework/tests/unit/system-cron.test.ts +240 -0
  241. package/.framework/tests/unit/timers.test.ts +159 -0
  242. package/README.md +125 -166
  243. package/config/tsconfig.cli.json +2 -2
  244. package/package.json +15 -4
  245. package/templates/project/package-lock.json +2 -2
  246. package/.framework/docs/admin-routes.md +0 -76
  247. package/.framework/docs/api-docs-progress.md +0 -38
  248. package/.framework/docs/api-governance.md +0 -146
  249. package/.framework/docs/api-testing-results.md +0 -212
  250. package/.framework/docs/assembly-launch-guide.md +0 -138
  251. package/.framework/docs/audit-results.md +0 -590
  252. package/.framework/docs/db-api-inventory.md +0 -95
  253. package/.framework/docs/gap-remediation-backlog.md +0 -103
  254. package/.framework/docs/ui-adoption-verification.md +0 -111
  255. package/.framework/docs/ui-api-coverage.md +0 -84
  256. package/.framework/docs/v2-compatibility-audit.md +0 -228
  257. package/.framework/mcp/index.ts +0 -133
  258. package/.framework/mcp/load-env.ts +0 -60
  259. package/.framework/mcp/shared/app-manifest.ts +0 -275
  260. package/.framework/mcp/shared/db.ts +0 -477
  261. package/.framework/mcp/shared/kb.ts +0 -118
  262. package/.framework/mcp/tools/architect.ts +0 -431
  263. package/.framework/mcp/tools/cil/context.ts +0 -345
  264. package/.framework/mcp/tools/cil/graph.ts +0 -242
  265. package/.framework/mcp/tools/cil/ingest.ts +0 -1217
  266. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +0 -693
  267. package/.framework/mcp/tools/cil/pipeline.ts +0 -767
  268. package/.framework/mcp/tools/cil/project.ts +0 -791
  269. package/.framework/mcp/tools/cil/retrieval.ts +0 -336
  270. package/.framework/mcp/tools/cil/search-core.ts +0 -454
  271. package/.framework/mcp/tools/cil/search.ts +0 -97
  272. package/.framework/mcp/tools/cil/suggest.ts +0 -186
  273. package/.framework/mcp/tools/cil/validate.ts +0 -1369
  274. package/.framework/mcp/tools/kb/delete.ts +0 -139
  275. package/.framework/mcp/tools/kb/index.ts +0 -52
  276. package/.framework/mcp/tools/kb/ingest.ts +0 -84
  277. package/.framework/mcp/tools/kb/list-types.ts +0 -102
  278. package/.framework/mcp/tools/kb/publish.ts +0 -100
  279. package/.framework/mcp/tools/kb/reindex.ts +0 -86
  280. package/.framework/mcp/tools/kb/revoke.ts +0 -85
  281. package/.framework/mcp/tools/kb/search.ts +0 -101
  282. package/.framework/mcp/tools/kb/upsert.ts +0 -125
  283. package/.framework/mcp/tools/observability.ts +0 -510
@@ -0,0 +1,136 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ErrorBoundary.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/ErrorBoundary.tsx"]
2
+ /**
3
+ * @module ErrorBoundary
4
+ * @audience internal
5
+ * @layer app-specific
6
+ * @stability stable
7
+ *
8
+ * This module provides an Error Boundary component that captures JavaScript errors in its child component tree, logs those errors, and displays a fallback UI. It plays a crucial role in enhancing the user experience by preventing the entire application from crashing due to errors in specific components.
9
+ * INVARIANT: The Error Boundary must wrap components that may throw errors to function correctly.
10
+ *
11
+ * @seeAlso ui/button (provides the button UI used in the fallback UI.)
12
+ * @seeAlso ReactNode (used for rendering child components.)
13
+ *
14
+ * @cil-generated
15
+ */
16
+
17
+ import { Component, ErrorInfo, ReactNode } from 'react'
18
+ import { Button } from './ui/button'
19
+ // CIL[END stable_id="~/.framework/src/components/ErrorBoundary.tsx:module_header:module_header"]
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+ // CIL[BEGIN stable_id="~/.framework/src/components/ErrorBoundary.tsx:ErrorBoundaryProps:interface" type="interface" identity="ErrorBoundaryProps" parent="~/.framework/src/components/ErrorBoundary.tsx"]
31
+ /**
32
+ * ErrorBoundaryProps defines the properties for the ErrorBoundary component, which is used to handle errors in React component trees. It ensures that child components can be rendered safely even when an error occurs.
33
+ *
34
+ * @sideEffects none
35
+ * @stability stable
36
+ * @cil-generated
37
+ */
38
+ interface ErrorBoundaryProps {
39
+ children: ReactNode
40
+ }
41
+ // CIL[END stable_id="~/.framework/src/components/ErrorBoundary.tsx:ErrorBoundaryProps:interface"]
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+ // CIL[BEGIN stable_id="~/.framework/src/components/ErrorBoundary.tsx:ErrorBoundaryState:interface" type="interface" identity="ErrorBoundaryState" parent="~/.framework/src/components/ErrorBoundary.tsx"]
54
+ /**
55
+ * The ErrorBoundaryState interface defines the structure of the state used in an error boundary component to manage errors that occur during rendering. This facilitates organized error handling in React components.
56
+ *
57
+ * @sideEffects none
58
+ * @stability stable
59
+ * @cil-generated
60
+ */
61
+ interface ErrorBoundaryState {
62
+ error: Error | null
63
+ }
64
+ // CIL[END stable_id="~/.framework/src/components/ErrorBoundary.tsx:ErrorBoundaryState:interface"]
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+ // CIL[BEGIN stable_id="~/.framework/src/components/ErrorBoundary.tsx:ErrorBoundary:class" type="class" identity="ErrorBoundary" parent="~/.framework/src/components/ErrorBoundary.tsx"]
78
+ /**
79
+ * The ErrorBoundary class catches JavaScript errors in its child component tree, logs those errors, and displays a fallback UI to enhance user experience. This prevents the entire application from crashing due to UI errors.
80
+ *
81
+ * @macro Error handling component that provides a fallback UI for its children upon encountering errors.
82
+ * @micro Utilizes React's error boundary lifecycle methods to manage error state and render fallback content.
83
+ * @inputSpec
84
+ * props: ErrorBoundaryProps (required) — properties passed to the component.
85
+ * @outputSpec JSX.Element — renders either the children or an error fallback UI.
86
+ * @sideEffects logs errors to the console
87
+ * @stability stable
88
+ * @calls console.error
89
+ * @errorHandling none
90
+ * @cil-generated
91
+ */
92
+ export class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
93
+ constructor(props: ErrorBoundaryProps) {
94
+ super(props)
95
+ this.state = { error: null }
96
+ }
97
+
98
+ static getDerivedStateFromError(error: Error): ErrorBoundaryState {
99
+ return { error }
100
+ }
101
+
102
+ componentDidCatch(error: Error, info: ErrorInfo) {
103
+ console.error('ErrorBoundary caught an error:', error, info.componentStack)
104
+ }
105
+
106
+ render() {
107
+ if (!this.state.error) {
108
+ return this.props.children
109
+ }
110
+
111
+ return (
112
+ <div className="min-h-[400px] flex items-center justify-center p-8">
113
+ <div className="text-center max-w-lg">
114
+ <h1 className="text-xl font-semibold text-foreground mb-2">Something went wrong</h1>
115
+ <p className="text-sm text-muted-foreground mb-4">
116
+ This page hit an unexpected error. The rest of the app is unaffected.
117
+ </p>
118
+ <pre className="bg-muted rounded-lg p-4 text-left text-xs text-destructive overflow-auto mb-4 max-h-40">
119
+ {this.state.error.message}
120
+ </pre>
121
+ <div className="flex gap-2 justify-center">
122
+ <Button variant="outline" onClick={() => this.setState({ error: null })}>
123
+ Try again
124
+ </Button>
125
+ <Button variant="outline" onClick={() => { window.location.href = '/spine-framework/admin/configs/types' }}>
126
+ Back to admin home
127
+ </Button>
128
+ </div>
129
+ </div>
130
+ </div>
131
+ )
132
+ }
133
+ }
134
+ // CIL[END stable_id="~/.framework/src/components/ErrorBoundary.tsx:ErrorBoundary:class"]
135
+
136
+
@@ -1,14 +1,29 @@
1
- // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminListPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent=""]
2
- // CIL[DOC-MACRO purpose="Admin list page component module imports and entry point."]
3
- // CIL[DOC-RESPONSIBILITY responsibility="Import dependencies and declare the AdminListPage component module."]
4
- // CIL[DOC-CONTEXT module="AdminListPage" layer="components/admin" related_files=".framework/src/components/admin/AdminStatsCard.tsx,.framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/utils.ts"]
5
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
6
- // CIL[DOC-MICRO logic_summary="Aggregates imports for the admin list page UI: React, UI primitives, icons, local components, and utils." notable_decisions="[]"]
7
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
- // CIL[DOC-STABILITY stability="stable"]
9
- // CIL[DOC-AUDIENCE audience="module"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminListPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/admin/AdminListPage.tsx"]
2
+ /**
3
+ * @module AdminListPage
4
+ * @audience internal
5
+ * @layer app-specific
6
+ * @stability stable
7
+ *
8
+ * The AdminListPage module is responsible for rendering the admin interface that displays a list of administrative items and provides functionalities for searching and filtering. It serves as a key component in the admin dashboard, allowing users to navigate through various admin-related tasks. INVARIANT: The user must have admin privileges to access this page.
9
+ *
10
+ * @seeAlso AdminStatsCard (provides statistics relevant to the admin interface).
11
+ * @seeAlso PageInstructions (offers guidance on using the admin features).
12
+ *
13
+ * @cil-generated
14
+ */
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
10
24
 
11
25
  import React, { ReactNode } from 'react'
26
+ import { useNavigate } from 'react-router-dom'
12
27
  import { Button } from '../ui/button'
13
28
  import { Card, CardContent } from '../ui/card'
14
29
  import { Input } from '../ui/input'
@@ -17,28 +32,37 @@ import { Skeleton } from '../ui/skeleton'
17
32
  import { Search } from 'lucide-react'
18
33
  import { LucideIcon } from 'lucide-react'
19
34
  import { AdminStatsCard } from './AdminStatsCard'
20
- import { PageInstructions } from './PageInstructions'
35
+
21
36
  import { cn } from '../../lib/utils'
22
- // CIL[DOC-VECTOR type="context" content="purpose='Admin list page component module imports and entry point.'; No verified external callers; imports: .framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx"]
23
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
24
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
25
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
26
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
27
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
28
37
  // CIL[END stable_id="~/.framework/src/components/admin/AdminListPage.tsx:module_header:module_header"]
29
- // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminListPage.tsx:adminlistpageprops:interface" type="interface" identity="AdminListPageProps" parent="adminlistpage:function"]
30
- // CIL[DOC-MACRO purpose="Props contract for the AdminListPage component."]
31
- // CIL[DOC-RESPONSIBILITY responsibility="Define the typed input surface for AdminListPage."]
32
- // CIL[DOC-CONTEXT module="AdminListPage" layer="components/admin" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/AdminStatsCard.tsx,.framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/utils.ts"]
33
- // CIL[DOC-CONTRACT inputs="property bag: title, description, statsCards, children, optional search/filter/loading/error/new-button fields" outputs="typed props interface" errors="none" side_effects="none"]
34
- // CIL[DOC-MICRO logic_summary="Describes the complete prop surface for the admin list page, including stats, search, filters, loading, error, and children." notable_decisions="[]"]
35
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
36
- // CIL[DOC-STABILITY stability="stable"]
37
38
 
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+ // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminListPage.tsx:AdminListPageProps:interface" type="interface" identity="AdminListPageProps" parent="~/.framework/src/components/admin/AdminListPage.tsx"]
56
+ /**
57
+ * AdminListPageProps defines the properties required for rendering the Admin List Page component, facilitating the configuration of various UI elements and behaviors within the admin interface.
58
+ *
59
+ * @sideEffects none
60
+ * @stability stable
61
+ * @cil-generated
62
+ */
38
63
  interface AdminListPageProps {
39
64
  title: string
40
65
  description: string
41
- noPageInstructions?: boolean
42
66
  newButtonText?: string
43
67
  newButtonHref?: string
44
68
  onNewClick?: () => void
@@ -64,28 +88,31 @@ interface AdminListPageProps {
64
88
  emptyMessage?: string
65
89
  emptyIcon?: LucideIcon
66
90
  }
67
- // CIL[DOC-VECTOR type="context" content="purpose='Props contract for the AdminListPage component.'; No verified external callers; imports: .framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx"]
68
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
69
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
70
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
71
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
72
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
73
- // CIL[END stable_id="~/.framework/src/components/admin/AdminListPage.tsx:adminlistpageprops:interface"]
74
-
75
-
76
- // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminListPage.tsx:adminlistpage:function" type="function" identity="AdminListPage" parent=""]
77
- // CIL[DOC-MACRO purpose="Render a reusable admin list page with header, instructions, stats, search, filters, and content."]
78
- // CIL[DOC-RESPONSIBILITY responsibility="Compose and render the admin list page layout and its interactive controls."]
79
- // CIL[DOC-CONTEXT module="AdminListPage" layer="components/admin" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/AdminStatsCard.tsx,.framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/lib/utils.ts"]
80
- // CIL[DOC-CONTRACT inputs="AdminListPageProps" outputs="JSX.Element" errors="Error state rendered inside card" side_effects="Sets window.location.href when new button is clicked and no onNewClick handler provided"]
81
- // CIL[DOC-MICRO logic_summary="Builds a vertical page layout with title/actions, optional instructional help, stats cards, search/filter bar, and a content card that shows skeleton, error, or children." notable_decisions="[]"]
82
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
83
- // CIL[DOC-STABILITY stability="stable"]
91
+ // CIL[END stable_id="~/.framework/src/components/admin/AdminListPage.tsx:AdminListPageProps:interface"]
92
+
84
93
 
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+ // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminListPage.tsx:AdminListPage:component" type="component" identity="AdminListPage" parent="~/.framework/src/components/admin/AdminListPage.tsx"]
85
113
  export function AdminListPage({
86
114
  title,
87
115
  description,
88
- noPageInstructions,
89
116
  newButtonText,
90
117
  newButtonHref = '#',
91
118
  onNewClick,
@@ -99,6 +126,7 @@ export function AdminListPage({
99
126
  error = null,
100
127
  onRetry,
101
128
  }: AdminListPageProps) {
129
+ const navigate = useNavigate()
102
130
  return (
103
131
  <div className="space-y-6">
104
132
  <div className="flex justify-between items-center">
@@ -108,34 +136,12 @@ export function AdminListPage({
108
136
  </div>
109
137
 
110
138
  {newButtonText && (
111
- <Button onClick={() => onNewClick ? onNewClick() : (window.location.href = newButtonHref!)}>
139
+ <Button onClick={() => onNewClick ? onNewClick() : navigate(newButtonHref)}>
112
140
  {newButtonText}
113
141
  </Button>
114
142
  )}
115
143
  </div>
116
144
 
117
- {!noPageInstructions && (
118
- <PageInstructions
119
- sections={[
120
- {
121
- title: 'What this page is for',
122
- content: `This page is the administrative list for ${title.toLowerCase()}. It shows all records in the system, their current state, and provides tools to search, filter, and create new records.`,
123
- },
124
- {
125
- title: 'How to find records',
126
- content: `Use the search field at the top of the list to look for records by name or keyword. Use the filter dropdowns to narrow the list by status, type, or other categories. Click any column header to sort ascending or descending.`,
127
- },
128
- {
129
- title: 'How to create, view, and edit records',
130
- content: `${newButtonText ? `Click the ${newButtonText} button in the top-right to create a new record. ` : ''}Click any row in the table to open its detail page. From the detail page you can review all fields, edit the record, and, if allowed, delete it. Deleting a record usually cannot be undone.`,
131
- },
132
- {
133
- title: 'Understanding the stats',
134
- content: `The summary cards above the table show the most important counts for this record type. Use them as a quick health check or to spot trends before drilling into the list.`,
135
- },
136
- ]}
137
- />
138
- )}
139
145
 
140
146
  <div className="grid grid-cols-1 gap-5 sm:grid-cols-2 lg:grid-cols-4">
141
147
  {statsCards.map((stat, index) => (
@@ -160,6 +166,7 @@ export function AdminListPage({
160
166
  placeholder={searchPlaceholder}
161
167
  value={searchValue}
162
168
  onChange={(e) => onSearchChange(e.target.value)}
169
+
163
170
  className="pl-9"
164
171
  />
165
172
  </div>
@@ -211,10 +218,11 @@ export function AdminListPage({
211
218
  </div>
212
219
  )
213
220
  }
214
- // CIL[DOC-VECTOR type="context" content="purpose='Render a reusable admin list page with header, instructions, stats, search, filters, and content.'; No verified external callers; imports: .framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx"]
215
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
216
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
217
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
218
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
219
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
220
- // CIL[END stable_id="~/.framework/src/components/admin/AdminListPage.tsx:adminlistpage:function"]
221
+ // CIL[END stable_id="~/.framework/src/components/admin/AdminListPage.tsx:AdminListPage:component"]
222
+
223
+
224
+
225
+
226
+
227
+
228
+
@@ -1,12 +1,28 @@
1
- // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
2
- // CIL[DOC-MACRO purpose="Provides React, router, icons, and UI component imports for the admin sidebar module"]
3
- // CIL[DOC-RESPONSIBILITY responsibility="Declares module-level imports required by AdminSidebar"]
4
- // CIL[DOC-CONTEXT module="admin" layer="presentation" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/collapsible.tsx,.framework/src/components/ui/sidebar.tsx"]
5
- // CIL[DOC-CONTRACT inputs="none" outputs="imported symbols" errors="none" side_effects="none"]
6
- // CIL[DOC-MICRO logic_summary="Imports React, react-router-dom hooks, lucide-react icons, and local sidebar/collapsible UI primitives" notable_decisions="[]"]
7
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
- // CIL[DOC-STABILITY stability="stable"]
9
- // CIL[DOC-AUDIENCE audience="developer"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/components/admin/AdminSidebar.tsx"]
2
+ /**
3
+ * @module AdminSidebar
4
+ * @audience both
5
+ * @layer shared-core
6
+ * @stability stable
7
+ *
8
+ * The AdminSidebar module provides a navigational sidebar for the admin interface, allowing users to access various administrative functions and settings. It utilizes React components and icons to create an interactive and visually appealing sidebar layout.
9
+ * INVARIANT: The sidebar must always reflect the current user's permissions and available actions.
10
+ *
11
+ * @seeAlso useBranding (provides branding context for the sidebar).
12
+ * @seeAlso ../ui/sidebar (contains UI components used in the sidebar).
13
+ * @seeAlso ../ui/collapsible (provides collapsible functionality for sidebar groups).
14
+ *
15
+ * @cil-generated
16
+ */
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
10
26
 
11
27
 
12
28
 
@@ -14,13 +30,10 @@
14
30
  import * as React from "react"
15
31
  import { Link, useLocation } from "react-router-dom"
16
32
  import {
17
- PlusIcon,
18
- Database,
19
- Settings,
33
+ // CIL[END stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:module_header:module_header"]
34
+ Settings,
20
35
  Type,
21
- Users,
22
36
  Layout,
23
- FileText,
24
37
  BarChart3,
25
38
  AlertTriangle,
26
39
  Activity,
@@ -36,7 +49,6 @@ import {
36
49
  Lightbulb,
37
50
  Key,
38
51
  Truck,
39
- TestTube,
40
52
  UserPlus,
41
53
  BookOpen,
42
54
  ChevronRight,
@@ -58,25 +70,33 @@ import {
58
70
  SidebarMenuSubItem,
59
71
  SidebarRail,
60
72
  } from "../ui/sidebar"
61
- import { Button } from "../ui/button"
73
+
62
74
  import { useBranding } from "../../hooks/useBranding"
63
75
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../ui/collapsible"
64
- // CIL[DOC-VECTOR type="context" content="purpose='Provides React, router, icons, and UI component imports for the admin sidebar module'; No verified external callers; imports: .framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/collapsible.tsx"]
65
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
66
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
67
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
68
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
69
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
70
- // CIL[END stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:module_header:module_header"]
71
- // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:navigationsections:constant" type="constant" identity="navigationSections" parent="none"]
72
- // CIL[DOC-MACRO purpose="Defines the static navigation section structure for the admin sidebar"]
73
- // CIL[DOC-RESPONSIBILITY responsibility="Maintain the ordered list of admin navigation sections, routes, and optional nested children"]
74
- // CIL[DOC-CONTEXT module="admin" layer="presentation" related_files=".framework/src/components/admin/AdminSidebar.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/collapsible.tsx,.framework/src/components/ui/sidebar.tsx"]
75
- // CIL[DOC-CONTRACT inputs="none" outputs="navigationSections: NavigationSection[]" errors="none" side_effects="none"]
76
- // CIL[DOC-MICRO logic_summary="Static array of navigation sections with title, icon, optional children, and route URLs" notable_decisions="[]"]
77
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
78
- // CIL[DOC-STABILITY stability="stable"]
79
76
 
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+ // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:navigationSections:constant" type="constant" identity="navigationSections" parent="~/.framework/src/components/admin/AdminSidebar.tsx"]
93
+ /**
94
+ * The 'navigationSections' constant defines the structure of the sidebar navigation for the admin interface, organizing various sections for configuration, access, security, observability, testing, knowledge base, and CIL functionalities. This organization provides a clear and consistent navigation experience for users managing admin functionalities.
95
+ *
96
+ * @sideEffects none
97
+ * @stability internal
98
+ * @cil-generated
99
+ */
80
100
  const navigationSections = [
81
101
  {
82
102
  title: "Configs",
@@ -112,20 +132,6 @@ const navigationSections = [
112
132
  { title: "Flagged Actors", url: "/spine-framework/admin/security", icon: Shield },
113
133
  ]
114
134
  },
115
- {
116
- title: "Runtime",
117
- items: [
118
- { title: "Items", url: "/spine-framework/admin/runtime/items", icon: Database },
119
- { title: "Accounts", url: "/spine-framework/admin/runtime/accounts", icon: Users },
120
- { title: "People", url: "/spine-framework/admin/runtime/people", icon: Users },
121
- { title: "Threads", url: "/spine-framework/admin/runtime/threads", icon: MessageSquare },
122
- { title: "Messages", url: "/spine-framework/admin/runtime/messages", icon: FileText },
123
- { title: "Attachments", url: "/spine-framework/admin/runtime/attachments", icon: FileSearch },
124
- { title: "Watchers", url: "/spine-framework/admin/runtime/watchers", icon: Activity },
125
- { title: "Links", url: "/spine-framework/admin/runtime/links", icon: Puzzle },
126
- { title: "Progress", url: "/spine-framework/admin/runtime/item_progress", icon: BarChart3 },
127
- ]
128
- },
129
135
  {
130
136
  title: "Observability",
131
137
  items: [
@@ -135,12 +141,6 @@ const navigationSections = [
135
141
  { title: "Logs", url: "/spine-framework/admin/observability/logs", icon: FileSearch },
136
142
  ]
137
143
  },
138
- {
139
- title: "Testing",
140
- items: [
141
- { title: "Test Runs", url: "/spine-framework/admin/testing", icon: TestTube },
142
- ]
143
- },
144
144
  {
145
145
  title: "KB Engine",
146
146
  items: [
@@ -159,22 +159,37 @@ const navigationSections = [
159
159
  ]
160
160
  }
161
161
  ]
162
- // CIL[DOC-VECTOR type="context" content="purpose='Defines the static navigation section structure for the admin sidebar'; No verified external callers; imports: .framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/collapsible.tsx"]
163
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
164
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
165
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
166
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
167
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
168
- // CIL[END stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:navigationsections:constant"]
169
- // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:adminsidebar:function" type="function" identity="AdminSidebar" parent="none"]
170
- // CIL[DOC-MACRO purpose="Renders the admin sidebar with navigation sections and active route highlighting"]
171
- // CIL[DOC-RESPONSIBILITY responsibility="Render the admin sidebar UI and compute active route state from useLocation"]
172
- // CIL[DOC-CONTEXT module="admin" layer="presentation" related_files=".framework/src/components/admin/AdminSidebar.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/collapsible.tsx,.framework/src/components/ui/sidebar.tsx"]
173
- // CIL[DOC-CONTRACT inputs="props: React.ComponentProps<typeof Sidebar>" outputs="JSX.Element" errors="none" side_effects="Reads useLocation and renders react-router Link components"]
174
- // CIL[DOC-MICRO logic_summary="Uses useLocation to determine active routes; maps navigationSections into collapsible sidebar groups and nested items" notable_decisions="[]"]
175
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
176
- // CIL[DOC-STABILITY stability="stable"]
162
+ // CIL[END stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:navigationSections:constant"]
163
+
164
+
165
+
166
+
167
+
168
+
169
+
177
170
 
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+ // CIL[BEGIN stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:AdminSidebar:component" type="component" identity="AdminSidebar" parent="~/.framework/src/components/admin/AdminSidebar.tsx"]
180
+ /**
181
+ * The AdminSidebar component provides a navigational sidebar for admin functionalities, integrating branding and dynamic navigation sections. It enhances user experience by visually indicating active routes.
182
+ *
183
+ * @macro Sidebar navigation component for admin interface.
184
+ * @micro Utilizes React Router for navigation and manages active states based on the current URL.
185
+ * @inputSpec
186
+ * props: React.ComponentProps<typeof Sidebar> (required) — properties passed to the Sidebar component.
187
+ * @outputSpec JSX.Element — renders the sidebar layout with navigation items.
188
+ * @sideEffects none
189
+ * @stability internal
190
+ * @calls useBranding, useLocation, Link
191
+ * @cil-generated
192
+ */
178
193
  export function AdminSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {
179
194
  const branding = useBranding()
180
195
  const location = useLocation()
@@ -199,12 +214,6 @@ export function AdminSidebar({ ...props }: React.ComponentProps<typeof Sidebar>)
199
214
  </SidebarMenuItem>
200
215
  </SidebarMenu>
201
216
 
202
- <SidebarGroup className="py-2">
203
- <Button className="w-full" size="sm">
204
- <PlusIcon className="mr-2 h-4 w-4" />
205
- Quick Create
206
- </Button>
207
- </SidebarGroup>
208
217
  </SidebarHeader>
209
218
 
210
219
  <SidebarContent>
@@ -288,10 +297,10 @@ export function AdminSidebar({ ...props }: React.ComponentProps<typeof Sidebar>)
288
297
  </Sidebar>
289
298
  )
290
299
  }
291
- // CIL[DOC-VECTOR type="context" content="purpose='Renders the admin sidebar with navigation sections and active route highlighting'; No verified external callers; imports: .framework/src/components/ui/sidebar.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/collapsible.tsx"]
292
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
293
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
294
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
295
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
296
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
297
- // CIL[END stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:adminsidebar:function"]
300
+ // CIL[END stable_id="~/.framework/src/components/admin/AdminSidebar.tsx:AdminSidebar:component"]
301
+
302
+
303
+
304
+
305
+
306
+