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
@@ -1,39 +1,65 @@
1
1
  // CIL[BEGIN stable_id="~/.framework/src/pages/admin/IntegrationsPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/pages/admin/IntegrationsPage.tsx"]
2
- // CIL[DOC-MACRO purpose="Top-level module for the admin Integrations page; exports the IntegrationsPage component and Integration interface."]
3
- // CIL[DOC-RESPONSIBILITY responsibility="Serves as the module entry point and declares the public surface of the admin integrations list page."]
4
- // CIL[DOC-CONTEXT module="admin/integrations" layer="presentation" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts"]
5
- // CIL[DOC-CONTRACT inputs="none" outputs="exports IntegrationsPage and Integration" errors="none" side_effects="none"]
6
- // CIL[DOC-MICRO logic_summary="Imports React, utility functions, the API client, and reusable admin components, then re-exports the page component and type interface." notable_decisions="[]"]
7
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
- // CIL[DOC-STABILITY stability="stable"]
9
- // CIL[DOC-AUDIENCE audience="developers"]
2
+ /**
3
+ * @module IntegrationsPage
4
+ * @audience both
5
+ * @layer shared-core
6
+ * @stability stable
7
+ *
8
+ * The IntegrationsPage module provides an interface for managing integrations within the admin panel of the application. It allows users to view, sort, and interact with a list of integrations, leveraging various UI components for enhanced user experience.
9
+ * INVARIANT: The user must have admin privileges to access this page.
10
+ *
11
+ * @seeAlso AdminListPage (provides the list view for integrations).
12
+ * @seeAlso SortableTableHeader (enables sorting functionality for the integration list).
13
+ * @seeAlso useApi (custom hook for API interactions).
14
+ *
15
+ * @cil-generated
16
+ */
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
10
26
 
11
27
 
12
28
 
13
29
 
14
30
  import { useState } from 'react'
31
+ import { useNavigate } from 'react-router-dom'
15
32
  import { Link, CheckCircle, AlertTriangle, Settings, Cog } from 'lucide-react';
16
33
  import { formatDateTime } from '../../lib/utils'
17
34
  import { apiFetch } from '../../lib/api'
18
35
  import { AdminListPage } from '../../components/admin/AdminListPage'
19
36
  import { SortableTableHeader } from '../../components/admin/SortableTableHeader'
20
37
  import { useApi } from '../../hooks/useApi'
21
-
22
- // CIL[DOC-VECTOR type="context" content="purpose='Top-level module for the admin Integrations page; exports the IntegrationsPage component and Integration interface.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/lib/api.ts,.framework/src/components/admin/AdminListPage.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
38
  // CIL[END stable_id="~/.framework/src/pages/admin/IntegrationsPage.tsx:module_header:module_header"]
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
29
55
  // CIL[BEGIN stable_id="~/.framework/src/pages/admin/IntegrationsPage.tsx:Integration:interface" type="interface" identity="Integration" parent="~/.framework/src/pages/admin/IntegrationsPage.tsx"]
30
- // CIL[DOC-MACRO purpose="TypeScript type definition for an integration record used by the admin integrations page."]
31
- // CIL[DOC-RESPONSIBILITY responsibility="Defines the shape and optional nested fields of an integration for compile-time checking and API response typing."]
32
- // CIL[DOC-CONTEXT module="admin/integrations" layer="type" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/IntegrationsPage.tsx"]
33
- // CIL[DOC-CONTRACT inputs="none" outputs="Integration interface declaration" errors="none" side_effects="none"]
34
- // CIL[DOC-MICRO logic_summary="Declares the Integration interface with identifiers, descriptive fields, provider/version, active and configured flags, sync state, and nested app and creator objects." notable_decisions="[]"]
35
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
36
- // CIL[DOC-STABILITY stability="stable"]
56
+ /**
57
+ * The Integration interface defines the structure for integration objects used in the admin panel, encapsulating essential details about each integration, including its status and configuration.
58
+ *
59
+ * @sideEffects none
60
+ * @stability internal
61
+ * @cil-generated
62
+ */
37
63
  interface Integration {
38
64
  id: string
39
65
  name: string
@@ -59,23 +85,39 @@ interface Integration {
59
85
  email: string
60
86
  }
61
87
  }
62
- // CIL[DOC-VECTOR type="context" content="purpose='TypeScript type definition for an integration record used by the admin integrations page.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/lib/api.ts,.framework/src/components/admin/AdminListPage.tsx"]
63
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
64
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
65
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
66
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
67
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
68
88
  // CIL[END stable_id="~/.framework/src/pages/admin/IntegrationsPage.tsx:Integration:interface"]
69
89
 
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
70
105
  // CIL[BEGIN stable_id="~/.framework/src/pages/admin/IntegrationsPage.tsx:IntegrationsPage:component" type="component" identity="IntegrationsPage" parent="~/.framework/src/pages/admin/IntegrationsPage.tsx"]
71
- // CIL[DOC-MACRO purpose="Admin list page for browsing, filtering, sorting, and navigating external service integrations."]
72
- // CIL[DOC-RESPONSIBILITY responsibility="Loads integrations via the API, applies search/status/type filters, sorts the results, computes summary statistics, and renders the list with navigation to detail and new pages."]
73
- // CIL[DOC-CONTEXT module="admin/integrations" layer="presentation" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/IntegrationsPage.tsx"]
74
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX for the AdminListPage with filterable, sortable integration table" errors="Propagates fetch failures through useApi; sort fallback returns 0 for unsupported value types" side_effects="Navigates via window.location when a table row is clicked"]
75
- // CIL[DOC-MICRO logic_summary="Uses useApi to fetch integrations, filters by search term, status, and type, sorts by selected key and direction, builds stats cards, and renders AdminListPage with a SortableTableHeader table and row-click navigation." notable_decisions="[]"]
76
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
77
- // CIL[DOC-STABILITY stability="stable"]
106
+ /**
107
+ * The IntegrationsPage component manages the display and filtering of integrations within an admin interface. It allows users to search, sort, and navigate to detailed views of integrations.
108
+ *
109
+ * @macro Admin interface component for managing integrations.
110
+ * @micro Utilizes state management for search, filtering, and sorting of integration data fetched from an external API.
111
+ * @outputSpec JSX.Element
112
+ * @throws Error — if the API response is not ok
113
+ * @sideEffects Fetches integration data from an external API.
114
+ * @stability internal
115
+ * @calls useApi, apiFetch, useNavigate
116
+ * @errorHandling throws an error if the API response is not ok
117
+ * @cil-generated
118
+ */
78
119
  export function IntegrationsPage() {
120
+ const navigate = useNavigate()
79
121
  const [searchTerm, setSearchTerm] = useState('')
80
122
  const [selectedStatus, setSelectedStatus] = useState('all')
81
123
  const [selectedType, setSelectedType] = useState('all')
@@ -128,7 +170,7 @@ export function IntegrationsPage() {
128
170
  }
129
171
 
130
172
  const handleRowClick = (integration: Integration) => {
131
- window.location.href = `/spine-framework/admin/configs/integrations/${integration.id}`
173
+ navigate(`/spine-framework/admin/configs/integrations/${integration.id}`)
132
174
  }
133
175
 
134
176
  const sortedIntegrations = [...(filteredIntegrations || [])].sort((a, b) => {
@@ -324,10 +366,10 @@ export function IntegrationsPage() {
324
366
  </AdminListPage>
325
367
  )
326
368
  }
327
- // CIL[DOC-VECTOR type="context" content="purpose='Admin list page for browsing, filtering, sorting, and navigating external service integrations.'; No verified external callers; imports: .framework/src/lib/utils.ts,.framework/src/lib/api.ts,.framework/src/components/admin/AdminListPage.tsx"]
328
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
329
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
330
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
331
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
332
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
333
- // CIL[END stable_id="~/.framework/src/pages/admin/IntegrationsPage.tsx:IntegrationsPage:component"]
369
+ // CIL[END stable_id="~/.framework/src/pages/admin/IntegrationsPage.tsx:IntegrationsPage:component"]
370
+
371
+
372
+
373
+
374
+
375
+
@@ -1,12 +1,27 @@
1
1
  // CIL[BEGIN stable_id="~/.framework/src/pages/admin/LogsPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/pages/admin/LogsPage.tsx"]
2
- // CIL[DOC-MACRO purpose="Provides the admin system logs page for viewing the audit trail and event history"]
3
- // CIL[DOC-RESPONSIBILITY responsibility="Imports UI dependencies and exports the LogsPage component for admin routing"]
4
- // CIL[DOC-CONTEXT module="admin" layer="presentation" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts"]
5
- // CIL[DOC-CONTRACT inputs="none" outputs="LogsPage component module" errors="none" side_effects="none"]
6
- // CIL[DOC-MICRO logic_summary="Sets up imports and default export for the admin logs page" notable_decisions="[]"]
7
- // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
8
- // CIL[DOC-STABILITY stability="stable"]
9
- // CIL[DOC-AUDIENCE audience="developers"]
2
+ /**
3
+ * @module LogsPage
4
+ * @audience both
5
+ * @layer shared-core
6
+ * @stability stable
7
+ *
8
+ * The LogsPage module provides an interface for administrators to view and manage logs within the application. It leverages various UI components for displaying log data in a sortable table format and includes functionalities for searching and filtering logs by date. INVARIANT: The user must have admin privileges to access this page.
9
+ *
10
+ * @seeAlso LoadingSpinner (used for loading states).
11
+ * @seeAlso AdminListPage (provides admin-specific list functionalities).
12
+ * @seeAlso SortableTableHeader (enables sorting of log entries).
13
+ *
14
+ * @cil-generated
15
+ */
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
10
25
 
11
26
 
12
27
 
@@ -24,23 +39,33 @@ import { SortableTableHeader } from '../../components/admin/SortableTableHeader'
24
39
  import { formatDateTime } from '../../lib/utils'
25
40
  import { useApi } from '../../hooks/useApi'
26
41
  import { apiFetch } from '../../lib/api'
27
-
28
- // CIL[DOC-VECTOR type="context" content="purpose='Provides the admin system logs page for viewing the audit trail and event history'; No verified external callers; imports: .framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx"]
29
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
30
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
31
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
32
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
33
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
34
42
  // CIL[END stable_id="~/.framework/src/pages/admin/LogsPage.tsx:module_header:module_header"]
35
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/LogsPage.tsx:LogEntry:interface" type="interface" identity="LogEntry" parent="~/.framework/src/pages/admin/LogsPage.tsx"]
36
- // CIL[DOC-MACRO purpose="Defines the shape of a system log record"]
37
- // CIL[DOC-RESPONSIBILITY responsibility="Provides a TypeScript type contract for log entry data"]
38
- // CIL[DOC-CONTEXT module="admin" layer="types" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/LogsPage.tsx"]
39
- // CIL[DOC-CONTRACT inputs="n/a" outputs="LogEntry interface" errors="n/a" side_effects="n/a"]
40
- // CIL[DOC-MICRO logic_summary="Declares required and optional fields for log events, actor metadata, and tracing" notable_decisions="[]"]
41
- // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
42
- // CIL[DOC-STABILITY stability="stable"]
43
43
 
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/LogsPage.tsx:LogEntry:interface" type="interface" identity="LogEntry" parent="~/.framework/src/pages/admin/LogsPage.tsx"]
62
+ /**
63
+ * The LogEntry interface defines the structure of log entries used in the admin logs page, capturing various details about events in the system. It exists to standardize the representation of log data for better management and analysis.
64
+ *
65
+ * @sideEffects none
66
+ * @stability internal
67
+ * @cil-generated
68
+ */
44
69
  interface LogEntry {
45
70
  id: string
46
71
  event_type: string
@@ -66,46 +91,68 @@ interface LogEntry {
66
91
  email: string
67
92
  }
68
93
  }
69
- // CIL[DOC-VECTOR type="context" content="purpose='Defines the shape of a system log record'; No verified external callers; imports: .framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx"]
70
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
71
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
72
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
73
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
74
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
75
94
  // CIL[END stable_id="~/.framework/src/pages/admin/LogsPage.tsx:LogEntry:interface"]
76
95
 
77
96
 
78
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/LogsPage.tsx:LogsResponse:interface" type="interface" identity="LogsResponse" parent="~/.framework/src/pages/admin/LogsPage.tsx"]
79
- // CIL[DOC-MACRO purpose="Defines the paginated API response shape for log listings"]
80
- // CIL[DOC-RESPONSIBILITY responsibility="Provides a TypeScript type contract for log list responses"]
81
- // CIL[DOC-CONTEXT module="admin" layer="types" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/LogsPage.tsx"]
82
- // CIL[DOC-CONTRACT inputs="n/a" outputs="LogsResponse interface" errors="n/a" side_effects="n/a"]
83
- // CIL[DOC-MICRO logic_summary="Declares data array and total count fields for log responses" notable_decisions="[]"]
84
- // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
85
- // CIL[DOC-STABILITY stability="stable"]
86
97
 
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/LogsPage.tsx:LogsResponse:interface" type="interface" identity="LogsResponse" parent="~/.framework/src/pages/admin/LogsPage.tsx"]
116
+ /**
117
+ * LogsResponse defines the structure of the response for log entries in the admin logs page, ensuring a consistent format for handling log data and its total count.
118
+ *
119
+ * @sideEffects none
120
+ * @stability internal
121
+ * @cil-generated
122
+ */
87
123
  interface LogsResponse {
88
124
  data: LogEntry[]
89
125
  total: number
90
126
  }
91
- // CIL[DOC-VECTOR type="context" content="purpose='Defines the paginated API response shape for log listings'; No verified external callers; imports: .framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx"]
92
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
93
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
94
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
95
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
96
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
97
127
  // CIL[END stable_id="~/.framework/src/pages/admin/LogsPage.tsx:LogsResponse:interface"]
98
128
 
99
129
 
100
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/LogsPage.tsx:StatsResponse:interface" type="interface" identity="StatsResponse" parent="~/.framework/src/pages/admin/LogsPage.tsx"]
101
- // CIL[DOC-MACRO purpose="Defines the shape of aggregated log statistics"]
102
- // CIL[DOC-RESPONSIBILITY responsibility="Provides a TypeScript type contract for log stats responses"]
103
- // CIL[DOC-CONTEXT module="admin" layer="types" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/LogsPage.tsx"]
104
- // CIL[DOC-CONTRACT inputs="n/a" outputs="StatsResponse interface" errors="n/a" side_effects="n/a"]
105
- // CIL[DOC-MICRO logic_summary="Declares count metrics and category arrays for log statistics" notable_decisions="[]"]
106
- // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
107
- // CIL[DOC-STABILITY stability="stable"]
108
130
 
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/LogsPage.tsx:StatsResponse:interface" type="interface" identity="StatsResponse" parent="~/.framework/src/pages/admin/LogsPage.tsx"]
149
+ /**
150
+ * StatsResponse defines the structure of the response containing various statistics related to user actions and events. It provides a comprehensive overview of the logged data in the admin logs page.
151
+ *
152
+ * @sideEffects none
153
+ * @stability internal
154
+ * @cil-generated
155
+ */
109
156
  interface StatsResponse {
110
157
  total: number
111
158
  error_count: number
@@ -115,31 +162,51 @@ interface StatsResponse {
115
162
  sources: string[]
116
163
  source_types: string[]
117
164
  }
118
- // CIL[DOC-VECTOR type="context" content="purpose='Defines the shape of aggregated log statistics'; No verified external callers; imports: .framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx"]
119
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
120
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
121
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
122
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
123
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
124
165
  // CIL[END stable_id="~/.framework/src/pages/admin/LogsPage.tsx:StatsResponse:interface"]
125
166
 
126
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/LogsPage.tsx:LogsPage:component" type="component" identity="LogsPage" parent="~/.framework/src/pages/admin/LogsPage.tsx"]
127
- // CIL[DOC-MACRO purpose="Renders the admin system logs UI with filters, sorting, and pagination"]
128
- // CIL[DOC-RESPONSIBILITY responsibility="Fetches and displays logs and stats, manages filter and sort state, renders table and pagination"]
129
- // CIL[DOC-CONTEXT module="admin" layer="presentation" related_files=".framework/src/components/admin/AdminListPage.tsx,.framework/src/components/admin/SortableTableHeader.tsx,.framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input.tsx,.framework/src/hooks/useApi.ts,.framework/src/lib/api.ts,.framework/src/lib/utils.ts,.framework/src/pages/admin/LogsPage.tsx"]
130
- // CIL[DOC-CONTRACT inputs="props: { title?: string }" outputs="JSX.Element" errors="API errors surfaced via useApi" side_effects="HTTP requests to /api/logs; React state updates"]
131
- // CIL[DOC-MICRO logic_summary="Builds query URL, fetches logs and stats with useApi, manages filters/sort/pagination, renders log table" notable_decisions="[]"]
132
- // CIL[DOC-CONFIDENCE pass="second" score="0.85" flags="none"]
133
- // CIL[DOC-STABILITY stability="stable"]
134
167
 
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/LogsPage.tsx:LogsPage:component" type="component" identity="LogsPage" parent="~/.framework/src/pages/admin/LogsPage.tsx"]
186
+ /**
187
+ * LogsPage is a component that displays system logs and allows users to filter and search through them based on various criteria. It handles fetching logs and statistics from an API and updating the displayed data based on user input.
188
+ *
189
+ * @macro Component responsible for managing and displaying logs with filtering capabilities.
190
+ * @micro Utilizes state management and API calls to dynamically fetch and display log data based on user-defined filters.
191
+ * @inputSpec
192
+ * - title: string (optional) — the title to display on the page.
193
+ * @outputSpec JSX.Element — renders the logs page UI.
194
+ * @throws Error — if the log fetch fails.
195
+ * @sideEffects Makes external API calls to fetch logs and statistics.
196
+ * @stability internal
197
+ * @calls useApi, apiFetch
198
+ * @errorHandling throws an error if the log fetch fails.
199
+ * @cil-generated
200
+ */
135
201
  export function LogsPage({ title = 'System Logs' }: { title?: string }) {
202
+ const defaultDateFrom = () => new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString().slice(0, 10)
136
203
  const [searchTerm, setSearchTerm] = useState('')
137
204
  const [selectedEventType, setSelectedEventType] = useState('all')
138
205
  const [selectedSource, setSelectedSource] = useState('all')
139
206
  const [selectedSourceType, setSelectedSourceType] = useState('all')
140
207
  const [sourceIdFilter, setSourceIdFilter] = useState('')
141
208
  const [actorIdFilter, setActorIdFilter] = useState('')
142
- const [dateFrom, setDateFrom] = useState('')
209
+ const [dateFrom, setDateFrom] = useState(defaultDateFrom)
143
210
  const [dateTo, setDateTo] = useState('')
144
211
  const [sortKey, setSortKey] = useState('created_at')
145
212
  const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('desc')
@@ -174,7 +241,7 @@ export function LogsPage({ title = 'System Logs' }: { title?: string }) {
174
241
  const result = await response.json()
175
242
  return (result.data || result) as LogsResponse
176
243
  },
177
- { immediate: true }
244
+ { immediate: false }
178
245
  )
179
246
 
180
247
  const logs = logsData?.data || []
@@ -187,7 +254,7 @@ export function LogsPage({ title = 'System Logs' }: { title?: string }) {
187
254
  const result = await response.json()
188
255
  return (result.data || result) as StatsResponse
189
256
  },
190
- { immediate: true }
257
+ { immediate: false }
191
258
  )
192
259
 
193
260
  useEffect(() => {
@@ -326,6 +393,7 @@ export function LogsPage({ title = 'System Logs' }: { title?: string }) {
326
393
  type="date"
327
394
  value={dateFrom}
328
395
  onChange={(e) => setDateFrom(e.target.value)}
396
+
329
397
  className="px-3 py-1.5 text-sm border border-slate-300 rounded-md"
330
398
  />
331
399
  </div>
@@ -379,7 +447,7 @@ export function LogsPage({ title = 'System Logs' }: { title?: string }) {
379
447
  setSourceIdFilter('')
380
448
  setActorIdFilter('')
381
449
  setTraceIdFilter('')
382
- setDateFrom('')
450
+ setDateFrom(defaultDateFrom())
383
451
  setDateTo('')
384
452
  setPage(1)
385
453
  }}
@@ -571,10 +639,10 @@ export function LogsPage({ title = 'System Logs' }: { title?: string }) {
571
639
  </AdminListPage>
572
640
  )
573
641
  }
574
- // CIL[DOC-VECTOR type="context" content="purpose='Renders the admin system logs UI with filters, sorting, and pagination'; No verified external callers; imports: .framework/src/components/ui/LoadingSpinner.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/input.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/pages/admin/LogsPage.tsx:LogsPage:component"]
642
+ // CIL[END stable_id="~/.framework/src/pages/admin/LogsPage.tsx:LogsPage:component"]
643
+
644
+
645
+
646
+
647
+
648
+