observal-cli 0.3.4__tar.gz → 0.4.0__tar.gz

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 (918) hide show
  1. observal_cli-0.4.0/.github/hooks/observal.json +56 -0
  2. observal_cli-0.4.0/.github/workflows/ci.yml +282 -0
  3. observal_cli-0.4.0/.github/workflows/deploy-dev.yml +63 -0
  4. observal_cli-0.4.0/.github/workflows/deploy.yml +62 -0
  5. observal_cli-0.4.0/.github/workflows/publish.yml +37 -0
  6. observal_cli-0.4.0/.github/workflows/release.yml +383 -0
  7. observal_cli-0.4.0/.github/workflows/stale.yml +33 -0
  8. observal_cli-0.4.0/.github/workflows/take-command.yml +213 -0
  9. observal_cli-0.4.0/AGENTS.md +416 -0
  10. observal_cli-0.4.0/CHANGELOG.md +888 -0
  11. observal_cli-0.4.0/CONTRIBUTING.md +253 -0
  12. observal_cli-0.4.0/PKG-INFO +185 -0
  13. observal_cli-0.4.0/README.md +153 -0
  14. observal_cli-0.4.0/demo/README.md +77 -0
  15. observal_cli-0.4.0/docker/Dockerfile.api +34 -0
  16. observal_cli-0.4.0/docker/docker-compose.dev.yml +10 -0
  17. observal_cli-0.4.0/docker/docker-compose.yml +266 -0
  18. observal_cli-0.4.0/docker/entrypoint.sh +90 -0
  19. observal_cli-0.4.0/docker/nginx.conf +29 -0
  20. observal_cli-0.4.0/docker/nginx.dev.conf +79 -0
  21. observal_cli-0.4.0/docker/nginx.production.conf +90 -0
  22. observal_cli-0.4.0/docs/INSIGHTS_V2_ROADMAP.md +110 -0
  23. observal_cli-0.4.0/docs/cli/README.md +82 -0
  24. observal_cli-0.4.0/docs/cli/doctor.md +207 -0
  25. observal_cli-0.4.0/docs/cli/pull.md +109 -0
  26. observal_cli-0.4.0/docs/cli/scan.md +91 -0
  27. observal_cli-0.4.0/docs/concepts/shim-vs-proxy.md +108 -0
  28. observal_cli-0.4.0/docs/e2e-test-checklist-enterprise.md +292 -0
  29. observal_cli-0.4.0/docs/e2e-test-checklist.md +341 -0
  30. observal_cli-0.4.0/docs/getting-started/core-concepts.md +133 -0
  31. observal_cli-0.4.0/docs/getting-started/quickstart.md +192 -0
  32. observal_cli-0.4.0/docs/integrations/README.md +42 -0
  33. observal_cli-0.4.0/docs/integrations/claude-code.md +114 -0
  34. observal_cli-0.4.0/docs/integrations/copilot-cli.md +174 -0
  35. observal_cli-0.4.0/docs/integrations/cursor.md +55 -0
  36. observal_cli-0.4.0/docs/integrations/gemini-cli.md +44 -0
  37. observal_cli-0.4.0/docs/integrations/kiro.md +202 -0
  38. observal_cli-0.4.0/docs/integrations/vscode.md +44 -0
  39. observal_cli-0.4.0/docs/internal/kiro-compatibility-matrix.md +102 -0
  40. observal_cli-0.4.0/docs/reference/api-endpoints.md +154 -0
  41. observal_cli-0.4.0/docs/reference/config-files.md +117 -0
  42. observal_cli-0.4.0/docs/reference/environment-variables.md +134 -0
  43. observal_cli-0.4.0/docs/reference/hooks-spec.md +156 -0
  44. observal_cli-0.4.0/docs/screenshots/630-edit-form/01-edit-form-overview.png +0 -0
  45. observal_cli-0.4.0/docs/screenshots/630-edit-form/02-components-picker.png +0 -0
  46. observal_cli-0.4.0/docs/screenshots/630-edit-form/03-goal-template.png +0 -0
  47. observal_cli-0.4.0/docs/screenshots/630-edit-form/04-dirty-state-actions.png +0 -0
  48. observal_cli-0.4.0/docs/screenshots/630-edit-form/05-version-bump-dialog.png +0 -0
  49. observal_cli-0.4.0/docs/screenshots/630-edit-form/06-discard-confirm-dialog.png +0 -0
  50. observal_cli-0.4.0/docs/self-hosting/README.md +68 -0
  51. observal_cli-0.4.0/docs/self-hosting/ports-and-volumes.md +75 -0
  52. observal_cli-0.4.0/docs/self-hosting/requirements.md +78 -0
  53. observal_cli-0.4.0/docs/self-hosting/telemetry-pipeline.md +108 -0
  54. observal_cli-0.4.0/docs/self-hosting/troubleshooting.md +209 -0
  55. observal_cli-0.4.0/docs/self-hosting/upgrades.md +92 -0
  56. observal_cli-0.4.0/docs/use-cases/observe-mcp-traffic.md +93 -0
  57. observal_cli-0.4.0/docs/use-cases/team-registry.md +135 -0
  58. observal_cli-0.4.0/ee/observal_server/routes/scim.py +587 -0
  59. observal_cli-0.4.0/ee/observal_server/routes/sso_saml.py +432 -0
  60. observal_cli-0.4.0/observal-server/alembic/versions/0011_agent_review_and_bundles.py +101 -0
  61. observal_cli-0.4.0/observal-server/alembic/versions/0019_add_agent_team_access.py +49 -0
  62. observal_cli-0.4.0/observal-server/alembic/versions/0020_component_version_tables.py +537 -0
  63. observal_cli-0.4.0/observal-server/alembic/versions/0021_agent_version_tables.py +246 -0
  64. observal_cli-0.4.0/observal-server/alembic/versions/0022_listing_identity_cleanup.py +146 -0
  65. observal_cli-0.4.0/observal-server/alembic/versions/0023_add_editing_lock_columns.py +44 -0
  66. observal_cli-0.4.0/observal-server/alembic/versions/0024_add_registered_agents_only.py +53 -0
  67. observal_cli-0.4.0/observal-server/alembic/versions/0025_add_insight_reports.py +58 -0
  68. observal_cli-0.4.0/observal-server/alembic/versions/0026_nullable_insight_triggered_by.py +27 -0
  69. observal_cli-0.4.0/observal-server/alembic/versions/0027_insight_v2_tables.py +87 -0
  70. observal_cli-0.4.0/observal-server/alembic/versions/0028_add_gaming_flags_to_agent_versions.py +31 -0
  71. observal_cli-0.4.0/observal-server/api/deps.py +348 -0
  72. observal_cli-0.4.0/observal-server/api/routes/admin.py +1134 -0
  73. observal_cli-0.4.0/observal-server/api/routes/agent.py +1682 -0
  74. observal_cli-0.4.0/observal-server/api/routes/agent_versions.py +670 -0
  75. observal_cli-0.4.0/observal-server/api/routes/auth.py +684 -0
  76. observal_cli-0.4.0/observal-server/api/routes/bulk.py +162 -0
  77. observal_cli-0.4.0/observal-server/api/routes/component_versions.py +355 -0
  78. observal_cli-0.4.0/observal-server/api/routes/config.py +100 -0
  79. observal_cli-0.4.0/observal-server/api/routes/dashboard.py +1036 -0
  80. observal_cli-0.4.0/observal-server/api/routes/device_auth.py +244 -0
  81. observal_cli-0.4.0/observal-server/api/routes/eval.py +612 -0
  82. observal_cli-0.4.0/observal-server/api/routes/feedback.py +158 -0
  83. observal_cli-0.4.0/observal-server/api/routes/hook.py +390 -0
  84. observal_cli-0.4.0/observal-server/api/routes/insights.py +167 -0
  85. observal_cli-0.4.0/observal-server/api/routes/mcp.py +510 -0
  86. observal_cli-0.4.0/observal-server/api/routes/prompt.py +445 -0
  87. observal_cli-0.4.0/observal-server/api/routes/reconcile.py +287 -0
  88. observal_cli-0.4.0/observal-server/api/routes/review.py +947 -0
  89. observal_cli-0.4.0/observal-server/api/routes/sandbox.py +413 -0
  90. observal_cli-0.4.0/observal-server/api/routes/sessions.py +1029 -0
  91. observal_cli-0.4.0/observal-server/api/routes/skill.py +409 -0
  92. observal_cli-0.4.0/observal-server/api/routes/telemetry.py +1860 -0
  93. observal_cli-0.4.0/observal-server/config.py +135 -0
  94. observal_cli-0.4.0/observal-server/main.py +363 -0
  95. observal_cli-0.4.0/observal-server/models/__init__.py +89 -0
  96. observal_cli-0.4.0/observal-server/models/agent.py +295 -0
  97. observal_cli-0.4.0/observal-server/models/agent_component.py +32 -0
  98. observal_cli-0.4.0/observal-server/models/hook.py +258 -0
  99. observal_cli-0.4.0/observal-server/models/insight_report.py +50 -0
  100. observal_cli-0.4.0/observal-server/models/insight_session_facets.py +22 -0
  101. observal_cli-0.4.0/observal-server/models/insight_session_meta.py +21 -0
  102. observal_cli-0.4.0/observal-server/models/mcp.py +335 -0
  103. observal_cli-0.4.0/observal-server/models/organization.py +24 -0
  104. observal_cli-0.4.0/observal-server/models/prompt.py +201 -0
  105. observal_cli-0.4.0/observal-server/models/sandbox.py +257 -0
  106. observal_cli-0.4.0/observal-server/models/skill.py +269 -0
  107. observal_cli-0.4.0/observal-server/pyproject.toml +47 -0
  108. observal_cli-0.4.0/observal-server/schemas/agent.py +269 -0
  109. observal_cli-0.4.0/observal-server/schemas/auth.py +150 -0
  110. observal_cli-0.4.0/observal-server/schemas/component_version.py +20 -0
  111. observal_cli-0.4.0/observal-server/schemas/constants.py +195 -0
  112. observal_cli-0.4.0/observal-server/schemas/dashboard.py +249 -0
  113. observal_cli-0.4.0/observal-server/schemas/ide_registry.py +261 -0
  114. observal_cli-0.4.0/observal-server/schemas/insights.py +44 -0
  115. observal_cli-0.4.0/observal-server/schemas/skill.py +112 -0
  116. observal_cli-0.4.0/observal-server/services/agent_builder.py +764 -0
  117. observal_cli-0.4.0/observal-server/services/agent_config_generator.py +1031 -0
  118. observal_cli-0.4.0/observal-server/services/agent_lock_file.py +53 -0
  119. observal_cli-0.4.0/observal-server/services/agent_registry_cache.py +186 -0
  120. observal_cli-0.4.0/observal-server/services/agent_resolver.py +261 -0
  121. observal_cli-0.4.0/observal-server/services/anti_gaming.py +88 -0
  122. observal_cli-0.4.0/observal-server/services/clickhouse.py +1061 -0
  123. observal_cli-0.4.0/observal-server/services/component_version_extras.py +178 -0
  124. observal_cli-0.4.0/observal-server/services/demo_accounts.py +123 -0
  125. observal_cli-0.4.0/observal-server/services/download_tracker.py +131 -0
  126. observal_cli-0.4.0/observal-server/services/editing_lock.py +61 -0
  127. observal_cli-0.4.0/observal-server/services/eval/eval_service.py +528 -0
  128. observal_cli-0.4.0/observal-server/services/eval/kernel.py +1825 -0
  129. observal_cli-0.4.0/observal-server/services/hook_config_generator.py +52 -0
  130. observal_cli-0.4.0/observal-server/services/hook_materializer.py +637 -0
  131. observal_cli-0.4.0/observal-server/services/insights/anonymize.py +33 -0
  132. observal_cli-0.4.0/observal-server/services/insights/batch.py +153 -0
  133. observal_cli-0.4.0/observal-server/services/insights/cross_user.py +294 -0
  134. observal_cli-0.4.0/observal-server/services/insights/dedup.py +117 -0
  135. observal_cli-0.4.0/observal-server/services/insights/enrichment.py +68 -0
  136. observal_cli-0.4.0/observal-server/services/insights/facets.py +209 -0
  137. observal_cli-0.4.0/observal-server/services/insights/generator.py +287 -0
  138. observal_cli-0.4.0/observal-server/services/insights/html_export.py +625 -0
  139. observal_cli-0.4.0/observal-server/services/insights/metrics.py +447 -0
  140. observal_cli-0.4.0/observal-server/services/insights/narrative.py +111 -0
  141. observal_cli-0.4.0/observal-server/services/insights/pricing.py +160 -0
  142. observal_cli-0.4.0/observal-server/services/insights/reconcile.py +218 -0
  143. observal_cli-0.4.0/observal-server/services/insights/regression.py +135 -0
  144. observal_cli-0.4.0/observal-server/services/insights/sections.py +357 -0
  145. observal_cli-0.4.0/observal-server/services/insights/session_cache.py +156 -0
  146. observal_cli-0.4.0/observal-server/services/insights/shim_enrichment.py +339 -0
  147. observal_cli-0.4.0/observal-server/services/insights/trace_dedup.py +208 -0
  148. observal_cli-0.4.0/observal-server/services/insights/transcript.py +93 -0
  149. observal_cli-0.4.0/observal-server/services/jwt_service.py +85 -0
  150. observal_cli-0.4.0/observal-server/services/secrets_redactor.py +237 -0
  151. observal_cli-0.4.0/observal-server/services/security_events.py +148 -0
  152. observal_cli-0.4.0/observal-server/services/skill_config_generator.py +112 -0
  153. observal_cli-0.4.0/observal-server/services/username_generator.py +80 -0
  154. observal_cli-0.4.0/observal-server/services/versioning.py +39 -0
  155. observal_cli-0.4.0/observal-server/tests/test_agent_config_gen_versioned.py +287 -0
  156. observal_cli-0.4.0/observal-server/tests/test_agent_delete.py +235 -0
  157. observal_cli-0.4.0/observal-server/tests/test_agent_pull.py +310 -0
  158. observal_cli-0.4.0/observal-server/tests/test_agent_versions_api.py +829 -0
  159. observal_cli-0.4.0/observal-server/tests/test_anti_gaming.py +173 -0
  160. observal_cli-0.4.0/observal-server/tests/test_component_version_extras.py +219 -0
  161. observal_cli-0.4.0/observal-server/tests/test_component_versions_api.py +632 -0
  162. observal_cli-0.4.0/observal-server/tests/test_cross_user.py +355 -0
  163. observal_cli-0.4.0/observal-server/tests/test_dedup.py +290 -0
  164. observal_cli-0.4.0/observal-server/tests/test_multi_tenancy.py +436 -0
  165. observal_cli-0.4.0/observal-server/tests/test_shim_enrichment.py +260 -0
  166. observal_cli-0.4.0/observal-server/tests/test_trace_dedup.py +220 -0
  167. observal_cli-0.4.0/observal-server/uv.lock +1978 -0
  168. observal_cli-0.4.0/observal-server/worker.py +172 -0
  169. observal_cli-0.4.0/observal_cli/README.md +153 -0
  170. observal_cli-0.4.0/observal_cli/client.py +376 -0
  171. observal_cli-0.4.0/observal_cli/cmd_agent.py +920 -0
  172. observal_cli-0.4.0/observal_cli/cmd_auth.py +948 -0
  173. observal_cli-0.4.0/observal_cli/cmd_component.py +168 -0
  174. observal_cli-0.4.0/observal_cli/cmd_doctor.py +1728 -0
  175. observal_cli-0.4.0/observal_cli/cmd_hook.py +354 -0
  176. observal_cli-0.4.0/observal_cli/cmd_mcp.py +1168 -0
  177. observal_cli-0.4.0/observal_cli/cmd_migrate.py +1733 -0
  178. observal_cli-0.4.0/observal_cli/cmd_ops.py +1773 -0
  179. observal_cli-0.4.0/observal_cli/cmd_prompt.py +299 -0
  180. observal_cli-0.4.0/observal_cli/cmd_pull.py +453 -0
  181. observal_cli-0.4.0/observal_cli/cmd_reconcile.py +356 -0
  182. observal_cli-0.4.0/observal_cli/cmd_sandbox.py +240 -0
  183. observal_cli-0.4.0/observal_cli/cmd_scan.py +1107 -0
  184. observal_cli-0.4.0/observal_cli/cmd_skill.py +298 -0
  185. observal_cli-0.4.0/observal_cli/config.py +155 -0
  186. observal_cli-0.4.0/observal_cli/constants.py +141 -0
  187. observal_cli-0.4.0/observal_cli/hooks/_kiro_utils.py +136 -0
  188. observal_cli-0.4.0/observal_cli/hooks/copilot_cli_hook.py +162 -0
  189. observal_cli-0.4.0/observal_cli/hooks/copilot_cli_stop_hook.py +174 -0
  190. observal_cli-0.4.0/observal_cli/hooks/flush_buffer.py +163 -0
  191. observal_cli-0.4.0/observal_cli/hooks/gemini_hook.py +186 -0
  192. observal_cli-0.4.0/observal_cli/hooks/gemini_stop_hook.py +123 -0
  193. observal_cli-0.4.0/observal_cli/hooks/kiro_hook.py +249 -0
  194. observal_cli-0.4.0/observal_cli/hooks/kiro_stop_hook.py +327 -0
  195. observal_cli-0.4.0/observal_cli/hooks/observal-hook.sh +67 -0
  196. observal_cli-0.4.0/observal_cli/hooks/observal-stop-hook.sh +378 -0
  197. observal_cli-0.4.0/observal_cli/ide_registry.py +257 -0
  198. observal_cli-0.4.0/observal_cli/ide_specs/__init__.py +4 -0
  199. observal_cli-0.4.0/observal_cli/ide_specs/claude_code_hooks_spec.py +149 -0
  200. observal_cli-0.4.0/observal_cli/ide_specs/copilot_cli_hooks_spec.py +30 -0
  201. observal_cli-0.4.0/observal_cli/ide_specs/cursor_hooks_spec.py +32 -0
  202. observal_cli-0.4.0/observal_cli/ide_specs/gemini_hooks_spec.py +42 -0
  203. observal_cli-0.4.0/observal_cli/ide_specs/kiro_hooks_spec.py +58 -0
  204. observal_cli-0.4.0/observal_cli/ide_specs/opencode_hooks_spec.py +62 -0
  205. observal_cli-0.4.0/observal_cli/ide_specs/vscode_hooks_spec.py +29 -0
  206. observal_cli-0.4.0/observal_cli/main.py +152 -0
  207. observal_cli-0.4.0/observal_cli/settings_reconciler.py +188 -0
  208. observal_cli-0.4.0/observal_cli/tests/__init__.py +0 -0
  209. observal_cli-0.4.0/observal_cli/tests/test_cmd_agent_versions.py +330 -0
  210. observal_cli-0.4.0/observal_cli/tests/test_cmd_component_versions.py +271 -0
  211. observal_cli-0.4.0/pyproject.toml +130 -0
  212. observal_cli-0.4.0/renovate.json +39 -0
  213. observal_cli-0.4.0/tests/eval/__init__.py +0 -0
  214. observal_cli-0.4.0/tests/test_agent_composition.py +1457 -0
  215. observal_cli-0.4.0/tests/test_agent_config_generator.py +1007 -0
  216. observal_cli-0.4.0/tests/test_agent_name_lookup.py +227 -0
  217. observal_cli-0.4.0/tests/test_agent_rbac.py +95 -0
  218. observal_cli-0.4.0/tests/test_agent_review.py +271 -0
  219. observal_cli-0.4.0/tests/test_clickhouse_phase1.py +406 -0
  220. observal_cli-0.4.0/tests/test_clickhouse_retention.py +84 -0
  221. observal_cli-0.4.0/tests/test_component_version_extras.py +96 -0
  222. observal_cli-0.4.0/tests/test_constants_sync.py +64 -0
  223. observal_cli-0.4.0/tests/test_demo_accounts.py +217 -0
  224. observal_cli-0.4.0/tests/test_draft_workflow.py +354 -0
  225. observal_cli-0.4.0/tests/test_endpoint_discovery.py +158 -0
  226. observal_cli-0.4.0/tests/test_env_detection_and_config.py +1136 -0
  227. observal_cli-0.4.0/tests/test_ide_config_e2e.py +2032 -0
  228. observal_cli-0.4.0/tests/test_ide_registry.py +85 -0
  229. observal_cli-0.4.0/tests/test_ingest_phase2.py +291 -0
  230. observal_cli-0.4.0/tests/test_migrate_telemetry.py +1296 -0
  231. observal_cli-0.4.0/tests/test_pull_and_agent_cli.py +888 -0
  232. observal_cli-0.4.0/tests/test_reconcile_subagent.py +462 -0
  233. observal_cli-0.4.0/tests/test_registry_types.py +666 -0
  234. observal_cli-0.4.0/tests/test_review_queue.py +522 -0
  235. observal_cli-0.4.0/tests/test_schema_redesign.py +598 -0
  236. observal_cli-0.4.0/tests/test_settings_reconciler.py +355 -0
  237. observal_cli-0.4.0/tests/test_skill_config_generator.py +143 -0
  238. observal_cli-0.4.0/tests/test_telemetry_collection.py +284 -0
  239. observal_cli-0.4.0/tests/test_username_generator.py +137 -0
  240. observal_cli-0.4.0/tools/release.sh +169 -0
  241. observal_cli-0.4.0/uv.lock +957 -0
  242. observal_cli-0.4.0/web/AGENTS.md +106 -0
  243. observal_cli-0.4.0/web/e2e/agent-edit-form.spec.ts +141 -0
  244. observal_cli-0.4.0/web/e2e/component-edit-screenshots.spec.ts +246 -0
  245. observal_cli-0.4.0/web/e2e/helpers.ts +224 -0
  246. observal_cli-0.4.0/web/e2e/kiro-cli.spec.ts +90 -0
  247. observal_cli-0.4.0/web/e2e/kiro-hooks.spec.ts +133 -0
  248. observal_cli-0.4.0/web/e2e/kiro-lifecycle.spec.ts +119 -0
  249. observal_cli-0.4.0/web/e2e/kiro-live.spec.ts +49 -0
  250. observal_cli-0.4.0/web/e2e/kiro-otlp-logs.spec.ts +122 -0
  251. observal_cli-0.4.0/web/e2e/real-edit-release.spec.ts +179 -0
  252. observal_cli-0.4.0/web/e2e/review-diff-screenshots.spec.ts +171 -0
  253. observal_cli-0.4.0/web/e2e/screenshots/01-edit-form-overview.png +0 -0
  254. observal_cli-0.4.0/web/e2e/screenshots/02-components-picker.png +0 -0
  255. observal_cli-0.4.0/web/e2e/screenshots/03-goal-template.png +0 -0
  256. observal_cli-0.4.0/web/e2e/screenshots/04-dirty-state-actions.png +0 -0
  257. observal_cli-0.4.0/web/e2e/screenshots/05-version-bump-dialog.png +0 -0
  258. observal_cli-0.4.0/web/e2e/screenshots/06-discard-confirm-dialog.png +0 -0
  259. observal_cli-0.4.0/web/e2e/screenshots/07-review-dialog-first-release.png +0 -0
  260. observal_cli-0.4.0/web/e2e/screenshots/08-review-dialog-diff-view.png +0 -0
  261. observal_cli-0.4.0/web/e2e/screenshots/09-review-reject-dialog.png +0 -0
  262. observal_cli-0.4.0/web/e2e/screenshots/component-edit/01-hook-edit-form.png +0 -0
  263. observal_cli-0.4.0/web/e2e/screenshots/component-edit/02-skill-edit-form.png +0 -0
  264. observal_cli-0.4.0/web/e2e/screenshots/component-edit/03-prompt-edit-form.png +0 -0
  265. observal_cli-0.4.0/web/e2e/screenshots/component-edit/04-mcp-wip-stub.png +0 -0
  266. observal_cli-0.4.0/web/e2e/screenshots/component-edit/05-versions-tab.png +0 -0
  267. observal_cli-0.4.0/web/e2e/screenshots/component-edit/06-component-header.png +0 -0
  268. observal_cli-0.4.0/web/e2e/screenshots/component-edit/06-version-dropdown-closed.png +0 -0
  269. observal_cli-0.4.0/web/e2e/screenshots/component-edit/06-version-dropdown.png +0 -0
  270. observal_cli-0.4.0/web/e2e/screenshots/component-edit/07-version-dropdown-open.png +0 -0
  271. observal_cli-0.4.0/web/e2e/shim-merge.spec.ts +345 -0
  272. observal_cli-0.4.0/web/package.json +75 -0
  273. observal_cli-0.4.0/web/pnpm-lock.yaml +6000 -0
  274. observal_cli-0.4.0/web/src/app/(admin)/dashboard/page.tsx +293 -0
  275. observal_cli-0.4.0/web/src/app/(admin)/diagnostics/page.tsx +169 -0
  276. observal_cli-0.4.0/web/src/app/(admin)/errors/page.tsx +247 -0
  277. observal_cli-0.4.0/web/src/app/(admin)/eval/[agentId]/page.tsx +361 -0
  278. observal_cli-0.4.0/web/src/app/(admin)/insights/[reportId]/page.tsx +943 -0
  279. observal_cli-0.4.0/web/src/app/(admin)/insights/page.tsx +141 -0
  280. observal_cli-0.4.0/web/src/app/(admin)/review/page.tsx +492 -0
  281. observal_cli-0.4.0/web/src/app/(admin)/settings/page.tsx +711 -0
  282. observal_cli-0.4.0/web/src/app/(admin)/users/page.tsx +405 -0
  283. observal_cli-0.4.0/web/src/app/(auth)/device/page.tsx +161 -0
  284. observal_cli-0.4.0/web/src/app/(auth)/login/page.tsx +378 -0
  285. observal_cli-0.4.0/web/src/app/(registry)/agents/[id]/page.tsx +1026 -0
  286. observal_cli-0.4.0/web/src/app/(registry)/agents/builder/page.tsx +1307 -0
  287. observal_cli-0.4.0/web/src/app/(registry)/agents/page.tsx +771 -0
  288. observal_cli-0.4.0/web/src/app/(registry)/components/[id]/page.tsx +420 -0
  289. observal_cli-0.4.0/web/src/app/(registry)/components/page.tsx +522 -0
  290. observal_cli-0.4.0/web/src/app/(registry)/leaderboard/page.tsx +405 -0
  291. observal_cli-0.4.0/web/src/app/(user)/account/page.tsx +356 -0
  292. observal_cli-0.4.0/web/src/app/(user)/traces/[id]/page.tsx +1840 -0
  293. observal_cli-0.4.0/web/src/app/(user)/traces/page.tsx +484 -0
  294. observal_cli-0.4.0/web/src/app/globals.css +1349 -0
  295. observal_cli-0.4.0/web/src/app/providers.tsx +26 -0
  296. observal_cli-0.4.0/web/src/components/builder/preview-panel.tsx +393 -0
  297. observal_cli-0.4.0/web/src/components/dashboard/efficiency-metrics.tsx +219 -0
  298. observal_cli-0.4.0/web/src/components/dashboard/session-dag.tsx +627 -0
  299. observal_cli-0.4.0/web/src/components/dynamic-title.tsx +14 -0
  300. observal_cli-0.4.0/web/src/components/nav/nav-user.tsx +113 -0
  301. observal_cli-0.4.0/web/src/components/nav/registry-sidebar.tsx +250 -0
  302. observal_cli-0.4.0/web/src/components/registry/agent-edit-form.tsx +896 -0
  303. observal_cli-0.4.0/web/src/components/registry/component-edit-form.tsx +852 -0
  304. observal_cli-0.4.0/web/src/components/registry/install-dialog.tsx +102 -0
  305. observal_cli-0.4.0/web/src/components/registry/pull-command.tsx +79 -0
  306. observal_cli-0.4.0/web/src/components/registry/status-badge.tsx +36 -0
  307. observal_cli-0.4.0/web/src/components/registry/submit-component-dialog.tsx +828 -0
  308. observal_cli-0.4.0/web/src/components/registry/version-bump-dialog.tsx +139 -0
  309. observal_cli-0.4.0/web/src/components/registry/version-dropdown.tsx +79 -0
  310. observal_cli-0.4.0/web/src/components/review/review-detail-sheet.tsx +720 -0
  311. observal_cli-0.4.0/web/src/components/review/review-diff-sheet.tsx +684 -0
  312. observal_cli-0.4.0/web/src/components/review/yaml-diff-view.tsx +216 -0
  313. observal_cli-0.4.0/web/src/components/traces/span-tree.tsx +373 -0
  314. observal_cli-0.4.0/web/src/components/traces/trace-detail.tsx +162 -0
  315. observal_cli-0.4.0/web/src/components/traces/trace-list.tsx +221 -0
  316. observal_cli-0.4.0/web/src/components/ui/sidebar.tsx +480 -0
  317. observal_cli-0.4.0/web/src/components/ui/theme-switcher.tsx +53 -0
  318. observal_cli-0.4.0/web/src/hooks/use-api.ts +967 -0
  319. observal_cli-0.4.0/web/src/hooks/use-deployment-config.ts +25 -0
  320. observal_cli-0.4.0/web/src/lib/api.ts +537 -0
  321. observal_cli-0.4.0/web/src/lib/ide-features.ts +67 -0
  322. observal_cli-0.4.0/web/src/lib/types.ts +698 -0
  323. observal_cli-0.3.4/.github/workflows/ci.yml +0 -282
  324. observal_cli-0.3.4/.github/workflows/deploy.yml +0 -62
  325. observal_cli-0.3.4/.github/workflows/release.yml +0 -383
  326. observal_cli-0.3.4/AGENTS.md +0 -384
  327. observal_cli-0.3.4/CHANGELOG.md +0 -817
  328. observal_cli-0.3.4/CONTRIBUTING.md +0 -239
  329. observal_cli-0.3.4/PKG-INFO +0 -184
  330. observal_cli-0.3.4/README.md +0 -152
  331. observal_cli-0.3.4/demo/README.md +0 -74
  332. observal_cli-0.3.4/docker/Dockerfile.api +0 -34
  333. observal_cli-0.3.4/docker/docker-compose.yml +0 -299
  334. observal_cli-0.3.4/docker/entrypoint.sh +0 -87
  335. observal_cli-0.3.4/docker/nginx.conf +0 -26
  336. observal_cli-0.3.4/docker/nginx.production.conf +0 -80
  337. observal_cli-0.3.4/docs/cli/README.md +0 -82
  338. observal_cli-0.3.4/docs/cli/doctor.md +0 -88
  339. observal_cli-0.3.4/docs/cli/pull.md +0 -108
  340. observal_cli-0.3.4/docs/cli/scan.md +0 -93
  341. observal_cli-0.3.4/docs/concepts/shim-vs-proxy.md +0 -107
  342. observal_cli-0.3.4/docs/e2e-test-checklist-enterprise.md +0 -291
  343. observal_cli-0.3.4/docs/e2e-test-checklist.md +0 -158
  344. observal_cli-0.3.4/docs/getting-started/core-concepts.md +0 -133
  345. observal_cli-0.3.4/docs/getting-started/quickstart.md +0 -168
  346. observal_cli-0.3.4/docs/integrations/README.md +0 -42
  347. observal_cli-0.3.4/docs/integrations/claude-code.md +0 -111
  348. observal_cli-0.3.4/docs/integrations/copilot-cli.md +0 -170
  349. observal_cli-0.3.4/docs/integrations/cursor.md +0 -54
  350. observal_cli-0.3.4/docs/integrations/gemini-cli.md +0 -43
  351. observal_cli-0.3.4/docs/integrations/kiro.md +0 -200
  352. observal_cli-0.3.4/docs/integrations/vscode.md +0 -43
  353. observal_cli-0.3.4/docs/internal/kiro-compatibility-matrix.md +0 -102
  354. observal_cli-0.3.4/docs/reference/api-endpoints.md +0 -154
  355. observal_cli-0.3.4/docs/reference/config-files.md +0 -117
  356. observal_cli-0.3.4/docs/reference/environment-variables.md +0 -136
  357. observal_cli-0.3.4/docs/reference/hooks-spec.md +0 -156
  358. observal_cli-0.3.4/docs/self-hosting/README.md +0 -71
  359. observal_cli-0.3.4/docs/self-hosting/ports-and-volumes.md +0 -77
  360. observal_cli-0.3.4/docs/self-hosting/requirements.md +0 -79
  361. observal_cli-0.3.4/docs/self-hosting/telemetry-pipeline.md +0 -111
  362. observal_cli-0.3.4/docs/self-hosting/troubleshooting.md +0 -209
  363. observal_cli-0.3.4/docs/self-hosting/upgrades.md +0 -96
  364. observal_cli-0.3.4/docs/use-cases/observe-mcp-traffic.md +0 -93
  365. observal_cli-0.3.4/docs/use-cases/team-registry.md +0 -134
  366. observal_cli-0.3.4/ee/observal_server/routes/scim.py +0 -585
  367. observal_cli-0.3.4/ee/observal_server/routes/sso_saml.py +0 -430
  368. observal_cli-0.3.4/observal-server/alembic/versions/0011_agent_review_and_bundles.py +0 -90
  369. observal_cli-0.3.4/observal-server/api/deps.py +0 -287
  370. observal_cli-0.3.4/observal-server/api/routes/admin.py +0 -915
  371. observal_cli-0.3.4/observal-server/api/routes/agent.py +0 -1284
  372. observal_cli-0.3.4/observal-server/api/routes/auth.py +0 -606
  373. observal_cli-0.3.4/observal-server/api/routes/bulk.py +0 -150
  374. observal_cli-0.3.4/observal-server/api/routes/config.py +0 -62
  375. observal_cli-0.3.4/observal-server/api/routes/dashboard.py +0 -922
  376. observal_cli-0.3.4/observal-server/api/routes/device_auth.py +0 -227
  377. observal_cli-0.3.4/observal-server/api/routes/eval.py +0 -531
  378. observal_cli-0.3.4/observal-server/api/routes/feedback.py +0 -137
  379. observal_cli-0.3.4/observal-server/api/routes/hook.py +0 -286
  380. observal_cli-0.3.4/observal-server/api/routes/mcp.py +0 -407
  381. observal_cli-0.3.4/observal-server/api/routes/otel_dashboard.py +0 -1569
  382. observal_cli-0.3.4/observal-server/api/routes/otlp.py +0 -798
  383. observal_cli-0.3.4/observal-server/api/routes/prompt.py +0 -342
  384. observal_cli-0.3.4/observal-server/api/routes/review.py +0 -729
  385. observal_cli-0.3.4/observal-server/api/routes/sandbox.py +0 -307
  386. observal_cli-0.3.4/observal-server/api/routes/skill.py +0 -306
  387. observal_cli-0.3.4/observal-server/api/routes/telemetry.py +0 -451
  388. observal_cli-0.3.4/observal-server/config.py +0 -116
  389. observal_cli-0.3.4/observal-server/main.py +0 -351
  390. observal_cli-0.3.4/observal-server/models/__init__.py +0 -80
  391. observal_cli-0.3.4/observal-server/models/agent.py +0 -93
  392. observal_cli-0.3.4/observal-server/models/agent_component.py +0 -26
  393. observal_cli-0.3.4/observal-server/models/hook.py +0 -64
  394. observal_cli-0.3.4/observal-server/models/mcp.py +0 -93
  395. observal_cli-0.3.4/observal-server/models/organization.py +0 -23
  396. observal_cli-0.3.4/observal-server/models/prompt.py +0 -57
  397. observal_cli-0.3.4/observal-server/models/sandbox.py +0 -60
  398. observal_cli-0.3.4/observal-server/models/skill.py +0 -65
  399. observal_cli-0.3.4/observal-server/pyproject.toml +0 -47
  400. observal_cli-0.3.4/observal-server/schemas/agent.py +0 -217
  401. observal_cli-0.3.4/observal-server/schemas/auth.py +0 -146
  402. observal_cli-0.3.4/observal-server/schemas/constants.py +0 -209
  403. observal_cli-0.3.4/observal-server/schemas/dashboard.py +0 -247
  404. observal_cli-0.3.4/observal-server/schemas/skill.py +0 -116
  405. observal_cli-0.3.4/observal-server/services/agent_builder.py +0 -742
  406. observal_cli-0.3.4/observal-server/services/agent_config_generator.py +0 -533
  407. observal_cli-0.3.4/observal-server/services/agent_resolver.py +0 -261
  408. observal_cli-0.3.4/observal-server/services/clickhouse.py +0 -1016
  409. observal_cli-0.3.4/observal-server/services/demo_accounts.py +0 -121
  410. observal_cli-0.3.4/observal-server/services/download_tracker.py +0 -141
  411. observal_cli-0.3.4/observal-server/services/eval/eval_service.py +0 -522
  412. observal_cli-0.3.4/observal-server/services/eval/kernel.py +0 -1825
  413. observal_cli-0.3.4/observal-server/services/hook_config_generator.py +0 -52
  414. observal_cli-0.3.4/observal-server/services/hook_materializer.py +0 -618
  415. observal_cli-0.3.4/observal-server/services/jwt_service.py +0 -81
  416. observal_cli-0.3.4/observal-server/services/secrets_redactor.py +0 -237
  417. observal_cli-0.3.4/observal-server/services/security_events.py +0 -147
  418. observal_cli-0.3.4/observal-server/services/skill_config_generator.py +0 -98
  419. observal_cli-0.3.4/observal-server/services/versioning.py +0 -32
  420. observal_cli-0.3.4/observal-server/tests/test_multi_tenancy.py +0 -403
  421. observal_cli-0.3.4/observal-server/uv.lock +0 -1978
  422. observal_cli-0.3.4/observal-server/worker.py +0 -148
  423. observal_cli-0.3.4/observal_cli/README.md +0 -150
  424. observal_cli-0.3.4/observal_cli/client.py +0 -266
  425. observal_cli-0.3.4/observal_cli/cmd_agent.py +0 -783
  426. observal_cli-0.3.4/observal_cli/cmd_auth.py +0 -1209
  427. observal_cli-0.3.4/observal_cli/cmd_doctor.py +0 -1139
  428. observal_cli-0.3.4/observal_cli/cmd_hook.py +0 -250
  429. observal_cli-0.3.4/observal_cli/cmd_mcp.py +0 -1067
  430. observal_cli-0.3.4/observal_cli/cmd_migrate.py +0 -1635
  431. observal_cli-0.3.4/observal_cli/cmd_ops.py +0 -1773
  432. observal_cli-0.3.4/observal_cli/cmd_prompt.py +0 -204
  433. observal_cli-0.3.4/observal_cli/cmd_pull.py +0 -361
  434. observal_cli-0.3.4/observal_cli/cmd_sandbox.py +0 -182
  435. observal_cli-0.3.4/observal_cli/cmd_scan.py +0 -1629
  436. observal_cli-0.3.4/observal_cli/cmd_skill.py +0 -206
  437. observal_cli-0.3.4/observal_cli/config.py +0 -163
  438. observal_cli-0.3.4/observal_cli/constants.py +0 -155
  439. observal_cli-0.3.4/observal_cli/hooks/copilot_cli_hook.py +0 -163
  440. observal_cli-0.3.4/observal_cli/hooks/copilot_cli_stop_hook.py +0 -175
  441. observal_cli-0.3.4/observal_cli/hooks/flush_buffer.py +0 -160
  442. observal_cli-0.3.4/observal_cli/hooks/gemini_hook.py +0 -180
  443. observal_cli-0.3.4/observal_cli/hooks/gemini_stop_hook.py +0 -119
  444. observal_cli-0.3.4/observal_cli/hooks/kiro_hook.py +0 -228
  445. observal_cli-0.3.4/observal_cli/hooks/kiro_stop_hook.py +0 -235
  446. observal_cli-0.3.4/observal_cli/hooks/observal-hook.sh +0 -40
  447. observal_cli-0.3.4/observal_cli/hooks/observal-stop-hook.sh +0 -145
  448. observal_cli-0.3.4/observal_cli/hooks_spec.py +0 -158
  449. observal_cli-0.3.4/observal_cli/main.py +0 -105
  450. observal_cli-0.3.4/observal_cli/settings_reconciler.py +0 -188
  451. observal_cli-0.3.4/otel-collector-config.yaml +0 -98
  452. observal_cli-0.3.4/pyproject.toml +0 -130
  453. observal_cli-0.3.4/renovate.json +0 -37
  454. observal_cli-0.3.4/tests/test_agent_composition.py +0 -1460
  455. observal_cli-0.3.4/tests/test_agent_config_generator.py +0 -956
  456. observal_cli-0.3.4/tests/test_agent_name_lookup.py +0 -225
  457. observal_cli-0.3.4/tests/test_agent_review.py +0 -250
  458. observal_cli-0.3.4/tests/test_clickhouse_phase1.py +0 -406
  459. observal_cli-0.3.4/tests/test_clickhouse_retention.py +0 -84
  460. observal_cli-0.3.4/tests/test_constants_sync.py +0 -45
  461. observal_cli-0.3.4/tests/test_demo_accounts.py +0 -207
  462. observal_cli-0.3.4/tests/test_draft_workflow.py +0 -350
  463. observal_cli-0.3.4/tests/test_endpoint_discovery.py +0 -171
  464. observal_cli-0.3.4/tests/test_env_detection_and_config.py +0 -1098
  465. observal_cli-0.3.4/tests/test_ide_config_e2e.py +0 -2004
  466. observal_cli-0.3.4/tests/test_ingest_phase2.py +0 -296
  467. observal_cli-0.3.4/tests/test_migrate_telemetry.py +0 -1279
  468. observal_cli-0.3.4/tests/test_pull_and_agent_cli.py +0 -806
  469. observal_cli-0.3.4/tests/test_registry_types.py +0 -671
  470. observal_cli-0.3.4/tests/test_review_queue.py +0 -423
  471. observal_cli-0.3.4/tests/test_schema_redesign.py +0 -584
  472. observal_cli-0.3.4/tests/test_settings_reconciler.py +0 -346
  473. observal_cli-0.3.4/tests/test_skill_config_generator.py +0 -144
  474. observal_cli-0.3.4/tests/test_telemetry_collection.py +0 -286
  475. observal_cli-0.3.4/tools/release.sh +0 -164
  476. observal_cli-0.3.4/uv.lock +0 -947
  477. observal_cli-0.3.4/web/AGENTS.md +0 -101
  478. observal_cli-0.3.4/web/e2e/helpers.ts +0 -224
  479. observal_cli-0.3.4/web/e2e/kiro-cli.spec.ts +0 -102
  480. observal_cli-0.3.4/web/e2e/kiro-hooks.spec.ts +0 -133
  481. observal_cli-0.3.4/web/e2e/kiro-lifecycle.spec.ts +0 -119
  482. observal_cli-0.3.4/web/e2e/kiro-live.spec.ts +0 -49
  483. observal_cli-0.3.4/web/e2e/kiro-otlp-logs.spec.ts +0 -122
  484. observal_cli-0.3.4/web/e2e/shim-merge.spec.ts +0 -345
  485. observal_cli-0.3.4/web/package.json +0 -75
  486. observal_cli-0.3.4/web/pnpm-lock.yaml +0 -5984
  487. observal_cli-0.3.4/web/src/app/(admin)/dashboard/page.tsx +0 -293
  488. observal_cli-0.3.4/web/src/app/(admin)/diagnostics/page.tsx +0 -169
  489. observal_cli-0.3.4/web/src/app/(admin)/errors/page.tsx +0 -247
  490. observal_cli-0.3.4/web/src/app/(admin)/eval/[agentId]/page.tsx +0 -221
  491. observal_cli-0.3.4/web/src/app/(admin)/review/page.tsx +0 -624
  492. observal_cli-0.3.4/web/src/app/(admin)/settings/page.tsx +0 -486
  493. observal_cli-0.3.4/web/src/app/(admin)/users/page.tsx +0 -392
  494. observal_cli-0.3.4/web/src/app/(auth)/device/page.tsx +0 -161
  495. observal_cli-0.3.4/web/src/app/(auth)/login/page.tsx +0 -375
  496. observal_cli-0.3.4/web/src/app/(registry)/agents/[id]/page.tsx +0 -810
  497. observal_cli-0.3.4/web/src/app/(registry)/agents/builder/page.tsx +0 -1158
  498. observal_cli-0.3.4/web/src/app/(registry)/agents/page.tsx +0 -699
  499. observal_cli-0.3.4/web/src/app/(registry)/components/[id]/page.tsx +0 -314
  500. observal_cli-0.3.4/web/src/app/(registry)/components/page.tsx +0 -472
  501. observal_cli-0.3.4/web/src/app/(registry)/leaderboard/page.tsx +0 -394
  502. observal_cli-0.3.4/web/src/app/(user)/traces/[id]/page.tsx +0 -1843
  503. observal_cli-0.3.4/web/src/app/(user)/traces/page.tsx +0 -475
  504. observal_cli-0.3.4/web/src/app/globals.css +0 -559
  505. observal_cli-0.3.4/web/src/app/providers.tsx +0 -24
  506. observal_cli-0.3.4/web/src/components/builder/preview-panel.tsx +0 -393
  507. observal_cli-0.3.4/web/src/components/dashboard/efficiency-metrics.tsx +0 -213
  508. observal_cli-0.3.4/web/src/components/dashboard/session-dag.tsx +0 -627
  509. observal_cli-0.3.4/web/src/components/nav/nav-user.tsx +0 -94
  510. observal_cli-0.3.4/web/src/components/nav/registry-sidebar.tsx +0 -224
  511. observal_cli-0.3.4/web/src/components/registry/install-dialog.tsx +0 -102
  512. observal_cli-0.3.4/web/src/components/registry/pull-command.tsx +0 -79
  513. observal_cli-0.3.4/web/src/components/registry/status-badge.tsx +0 -36
  514. observal_cli-0.3.4/web/src/components/registry/submit-component-dialog.tsx +0 -810
  515. observal_cli-0.3.4/web/src/components/review/review-detail-sheet.tsx +0 -708
  516. observal_cli-0.3.4/web/src/components/traces/span-tree.tsx +0 -373
  517. observal_cli-0.3.4/web/src/components/traces/trace-detail.tsx +0 -162
  518. observal_cli-0.3.4/web/src/components/traces/trace-list.tsx +0 -221
  519. observal_cli-0.3.4/web/src/components/ui/sidebar.tsx +0 -480
  520. observal_cli-0.3.4/web/src/components/ui/theme-switcher.tsx +0 -43
  521. observal_cli-0.3.4/web/src/hooks/use-api.ts +0 -786
  522. observal_cli-0.3.4/web/src/hooks/use-deployment-config.ts +0 -22
  523. observal_cli-0.3.4/web/src/lib/api.ts +0 -438
  524. observal_cli-0.3.4/web/src/lib/ide-features.ts +0 -64
  525. observal_cli-0.3.4/web/src/lib/types.ts +0 -456
  526. {observal_cli-0.3.4 → observal_cli-0.4.0}/.dockerignore +0 -0
  527. {observal_cli-0.3.4 → observal_cli-0.4.0}/.editorconfig +0 -0
  528. {observal_cli-0.3.4 → observal_cli-0.4.0}/.env.example +0 -0
  529. {observal_cli-0.3.4 → observal_cli-0.4.0}/.gitattributes +0 -0
  530. {observal_cli-0.3.4 → observal_cli-0.4.0}/.gitbook.yaml +0 -0
  531. {observal_cli-0.3.4 → observal_cli-0.4.0}/.github/ISSUE_TEMPLATE/bug_report_form.yml +0 -0
  532. {observal_cli-0.3.4 → observal_cli-0.4.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  533. {observal_cli-0.3.4 → observal_cli-0.4.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  534. {observal_cli-0.3.4 → observal_cli-0.4.0}/.github/pull_request_template.md +0 -0
  535. {observal_cli-0.3.4 → observal_cli-0.4.0}/.github/workflows/codeql.yml +0 -0
  536. {observal_cli-0.3.4 → observal_cli-0.4.0}/.github/workflows/dco.yml +0 -0
  537. {observal_cli-0.3.4 → observal_cli-0.4.0}/.gitignore +0 -0
  538. {observal_cli-0.3.4 → observal_cli-0.4.0}/.pre-commit-config.yaml +0 -0
  539. {observal_cli-0.3.4 → observal_cli-0.4.0}/CODE_OF_CONDUCT.md +0 -0
  540. {observal_cli-0.3.4 → observal_cli-0.4.0}/LICENSE +0 -0
  541. {observal_cli-0.3.4 → observal_cli-0.4.0}/Makefile +0 -0
  542. {observal_cli-0.3.4 → observal_cli-0.4.0}/SECURITY.md +0 -0
  543. {observal_cli-0.3.4 → observal_cli-0.4.0}/SETUP.md +0 -0
  544. {observal_cli-0.3.4 → observal_cli-0.4.0}/cliff.toml +0 -0
  545. {observal_cli-0.3.4 → observal_cli-0.4.0}/demo/run_demo.sh +0 -0
  546. {observal_cli-0.3.4 → observal_cli-0.4.0}/demo/test_all_types.sh +0 -0
  547. {observal_cli-0.3.4 → observal_cli-0.4.0}/docker/Dockerfile.web +0 -0
  548. {observal_cli-0.3.4 → observal_cli-0.4.0}/docker/clickhouse/config.d/memory.xml +0 -0
  549. {observal_cli-0.3.4 → observal_cli-0.4.0}/docker/clickhouse/users.d/memory.xml +0 -0
  550. {observal_cli-0.3.4 → observal_cli-0.4.0}/docker/docker-compose.production.yml +0 -0
  551. {observal_cli-0.3.4 → observal_cli-0.4.0}/docker/server-package/env.template +0 -0
  552. {observal_cli-0.3.4 → observal_cli-0.4.0}/docker/server-package/setup.sh +0 -0
  553. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/README.md +0 -0
  554. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/SUMMARY.md +0 -0
  555. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/cli/admin.md +0 -0
  556. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/cli/agent.md +0 -0
  557. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/cli/auth.md +0 -0
  558. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/cli/config.md +0 -0
  559. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/cli/ops.md +0 -0
  560. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/cli/profile.md +0 -0
  561. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/cli/registry.md +0 -0
  562. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/cli/self.md +0 -0
  563. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/concepts/README.md +0 -0
  564. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/concepts/data-model.md +0 -0
  565. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/concepts/evaluation.md +0 -0
  566. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/getting-started/installation.md +0 -0
  567. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/ObservalLogo-removebg-preview.png +0 -0
  568. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/agent-builder.png +0 -0
  569. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/agents-list.png +0 -0
  570. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/command-palette.png +0 -0
  571. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/components-list.png +0 -0
  572. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/dashboard.png +0 -0
  573. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/errors.png +0 -0
  574. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/eval-no-config.png +0 -0
  575. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/leaderboard.png +0 -0
  576. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/login-local.png +0 -0
  577. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/registry-home.png +0 -0
  578. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/review.png +0 -0
  579. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/session-info-claude-code.png +0 -0
  580. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/settings.png +0 -0
  581. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/traces.png +0 -0
  582. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/images/users.png +0 -0
  583. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/integrations/codex-cli.md +0 -0
  584. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/internal/kiro-research-notes.md +0 -0
  585. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/logo-light.svg +0 -0
  586. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/logo.svg +0 -0
  587. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/self-hosting/authentication.md +0 -0
  588. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/self-hosting/backup-and-restore.md +0 -0
  589. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/self-hosting/configuration.md +0 -0
  590. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/self-hosting/databases.md +0 -0
  591. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/self-hosting/docker-compose.md +0 -0
  592. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/self-hosting/evaluation-engine.md +0 -0
  593. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/self-hosting/releasing.md +0 -0
  594. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/self-observability.md +0 -0
  595. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/use-cases/README.md +0 -0
  596. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/use-cases/debug-agent-failures.md +0 -0
  597. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/use-cases/evaluate-agents.md +0 -0
  598. {observal_cli-0.3.4 → observal_cli-0.4.0}/docs/use-cases/share-agent-configs.md +0 -0
  599. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/AGENTS.md +0 -0
  600. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/LICENSE +0 -0
  601. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/README.md +0 -0
  602. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/__init__.py +0 -0
  603. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/docs/cli-sso.md +0 -0
  604. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/docs/cli.md +0 -0
  605. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/docs/oidc-setup.md +0 -0
  606. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/docs/saml-setup.md +0 -0
  607. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/docs/scim-setup.md +0 -0
  608. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/__init__.py +0 -0
  609. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/middleware/__init__.py +0 -0
  610. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/middleware/enterprise_guard.py +0 -0
  611. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/routes/__init__.py +0 -0
  612. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/routes/admin_sso.py +0 -0
  613. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/routes/audit.py +0 -0
  614. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/services/__init__.py +0 -0
  615. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/services/audit.py +0 -0
  616. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/services/config_validator.py +0 -0
  617. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/services/saml.py +0 -0
  618. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/observal_server/services/scim_service.py +0 -0
  619. {observal_cli-0.3.4 → observal_cli-0.4.0}/ee/plugins/__init__.py +0 -0
  620. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/dashboards/agent-activity.json +0 -0
  621. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/dashboards/audit-log.json +0 -0
  622. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/dashboards/cost-tracking.json +0 -0
  623. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/dashboards/error-rates.json +0 -0
  624. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/dashboards/performance-resources.json +0 -0
  625. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/dashboards/scores-eval.json +0 -0
  626. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/dashboards/self-observability.json +0 -0
  627. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/dashboards/session-overview.json +0 -0
  628. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/dashboards/token-usage.json +0 -0
  629. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/dashboards/tool-call-frequency.json +0 -0
  630. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/provisioning/dashboards/default.yaml +0 -0
  631. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/provisioning/datasources/clickhouse.yaml +0 -0
  632. {observal_cli-0.3.4 → observal_cli-0.4.0}/grafana/provisioning/datasources/prometheus.yaml +0 -0
  633. {observal_cli-0.3.4 → observal_cli-0.4.0}/install-server.sh +0 -0
  634. {observal_cli-0.3.4 → observal_cli-0.4.0}/install.sh +0 -0
  635. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/README.md +0 -0
  636. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/README +0 -0
  637. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/env.py +0 -0
  638. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/script.py.mako +0 -0
  639. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/.gitkeep +0 -0
  640. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0001_add_rbac_roles_and_is_demo.py +0 -0
  641. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0002_add_password_reset_tokens.py +0 -0
  642. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0003_add_api_keys_table.py +0 -0
  643. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0004_normalize_email_case.py +0 -0
  644. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0005_drop_password_reset_tokens.py +0 -0
  645. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0006_drop_api_keys_and_legacy_key_hash.py +0 -0
  646. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0007_add_alert_history.py +0 -0
  647. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0008_add_mcp_framework_column.py +0 -0
  648. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0009_add_docker_image_to_mcp_listings.py +0 -0
  649. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0010_add_agents_name_uniqueness.py +0 -0
  650. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0012_add_username_to_users.py +0 -0
  651. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0013_add_mcp_command_args_url_headers.py +0 -0
  652. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0014_add_draft_to_listing_status.py +0 -0
  653. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0015_add_webhook_secret_to_alert_rules.py +0 -0
  654. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0016_add_ide_feature_fields.py +0 -0
  655. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0017_add_org_trace_privacy.py +0 -0
  656. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic/versions/0018_add_saml_config_and_scim_token.py +0 -0
  657. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/alembic.ini +0 -0
  658. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/__init__.py +0 -0
  659. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/graphql.py +0 -0
  660. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/middleware/__init__.py +0 -0
  661. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/middleware/content_type.py +0 -0
  662. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/middleware/request_id.py +0 -0
  663. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/ratelimit.py +0 -0
  664. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/routes/__init__.py +0 -0
  665. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/routes/alert.py +0 -0
  666. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/routes/component_source.py +0 -0
  667. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/routes/jwks.py +0 -0
  668. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/api/sanitize.py +0 -0
  669. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/database.py +0 -0
  670. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/logging_config.py +0 -0
  671. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/alert.py +0 -0
  672. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/alert_history.py +0 -0
  673. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/base.py +0 -0
  674. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/component_bundle.py +0 -0
  675. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/component_source.py +0 -0
  676. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/download.py +0 -0
  677. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/enterprise_config.py +0 -0
  678. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/eval.py +0 -0
  679. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/exporter_config.py +0 -0
  680. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/feedback.py +0 -0
  681. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/password_reset_token.py +0 -0
  682. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/saml_config.py +0 -0
  683. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/sanitization.py +0 -0
  684. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/scim_token.py +0 -0
  685. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/scoring.py +0 -0
  686. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/submission.py +0 -0
  687. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/models/user.py +0 -0
  688. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/__init__.py +0 -0
  689. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/admin.py +0 -0
  690. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/alert.py +0 -0
  691. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/bulk.py +0 -0
  692. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/component_source.py +0 -0
  693. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/eval.py +0 -0
  694. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/feedback.py +0 -0
  695. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/hook.py +0 -0
  696. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/judge_output.py +0 -0
  697. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/mcp.py +0 -0
  698. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/prompt.py +0 -0
  699. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/sandbox.py +0 -0
  700. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/schemas/telemetry.py +0 -0
  701. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/__init__.py +0 -0
  702. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/alert_evaluator.py +0 -0
  703. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/audit_helpers.py +0 -0
  704. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/cache.py +0 -0
  705. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/codex_config_generator.py +0 -0
  706. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/config_generator.py +0 -0
  707. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/crypto.py +0 -0
  708. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/__init__.py +0 -0
  709. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/adversarial_scorer.py +0 -0
  710. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/canary.py +0 -0
  711. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/eval_engine.py +0 -0
  712. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/eval_watchdog.py +0 -0
  713. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/kernel_bridge.py +0 -0
  714. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/kernel_scorer.py +0 -0
  715. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/ragas_eval.py +0 -0
  716. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/sanitizer.py +0 -0
  717. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/score_aggregator.py +0 -0
  718. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/slm_scorer.py +0 -0
  719. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/eval/structural_scorer.py +0 -0
  720. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/events.py +0 -0
  721. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/git_mirror_service.py +0 -0
  722. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/ide_feature_inference.py +0 -0
  723. {observal_cli-0.3.4/observal-server/tests → observal_cli-0.4.0/observal-server/services/insights}/__init__.py +0 -0
  724. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/mcp_validator.py +0 -0
  725. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/redis.py +0 -0
  726. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/registry_telemetry.py +0 -0
  727. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/request_context.py +0 -0
  728. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/sandbox_config_generator.py +0 -0
  729. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/webhook_delivery.py +0 -0
  730. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/services/webhook_signer.py +0 -0
  731. {observal_cli-0.3.4/observal_cli → observal_cli-0.4.0/observal-server/tests}/__init__.py +0 -0
  732. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/tests/conftest.py +0 -0
  733. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/tests/test_config.py +0 -0
  734. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/tests/test_crypto.py +0 -0
  735. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/tests/test_jwt.py +0 -0
  736. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/tests/test_payload_protection.py +0 -0
  737. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/tests/test_rbac.py +0 -0
  738. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal-server/tests/test_security_events.py +0 -0
  739. {observal_cli-0.3.4/observal_cli/hooks → observal_cli-0.4.0/observal_cli}/__init__.py +0 -0
  740. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/analyzer.py +0 -0
  741. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/branding.py +0 -0
  742. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/cmd_profile.py +0 -0
  743. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/cmd_uninstall.py +0 -0
  744. {observal_cli-0.3.4/tests/eval → observal_cli-0.4.0/observal_cli/hooks}/__init__.py +0 -0
  745. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/hooks/buffer_event.py +0 -0
  746. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/hooks/payload_crypto.py +0 -0
  747. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/prompts.py +0 -0
  748. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/proxy.py +0 -0
  749. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/pyinstaller.spec +0 -0
  750. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/render.py +0 -0
  751. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/requirements.txt +0 -0
  752. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/sandbox_runner.py +0 -0
  753. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/shim.py +0 -0
  754. {observal_cli-0.3.4 → observal_cli-0.4.0}/observal_cli/telemetry_buffer.py +0 -0
  755. {observal_cli-0.3.4 → observal_cli-0.4.0}/prometheus.yml +0 -0
  756. {observal_cli-0.3.4 → observal_cli-0.4.0}/screenshots/01-review-queue.png +0 -0
  757. {observal_cli-0.3.4 → observal_cli-0.4.0}/screenshots/02-detail-sheet-mcp.png +0 -0
  758. {observal_cli-0.3.4 → observal_cli-0.4.0}/screenshots/03-after-bulk-approve.png +0 -0
  759. {observal_cli-0.3.4 → observal_cli-0.4.0}/screenshots/04-rejection-reason-skills.png +0 -0
  760. {observal_cli-0.3.4 → observal_cli-0.4.0}/scripts/check_dco.sh +0 -0
  761. {observal_cli-0.3.4 → observal_cli-0.4.0}/scripts/check_migrations.py +0 -0
  762. {observal_cli-0.3.4 → observal_cli-0.4.0}/scripts/check_secrets.sh +0 -0
  763. {observal_cli-0.3.4 → observal_cli-0.4.0}/scripts/new_migration.sh +0 -0
  764. {observal_cli-0.3.4 → observal_cli-0.4.0}/scripts/seed_test_skill.py +0 -0
  765. {observal_cli-0.3.4 → observal_cli-0.4.0}/test-agent.json +0 -0
  766. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/README.md +0 -0
  767. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/__init__.py +0 -0
  768. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/conftest.py +0 -0
  769. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_adversarial_self.py +0 -0
  770. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_eval_completeness.py +0 -0
  771. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_eval_phase8.py +0 -0
  772. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_phase8a_sanitizer.py +0 -0
  773. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_phase8b_matching.py +0 -0
  774. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_phase8d_adversarial.py +0 -0
  775. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_phase8e_canary.py +0 -0
  776. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_phase8g_pipeline.py +0 -0
  777. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_ragas_eval.py +0 -0
  778. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_score_aggregator.py +0 -0
  779. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_slm_scorer.py +0 -0
  780. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/eval/test_structural_scorer.py +0 -0
  781. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/mock_mcp.py +0 -0
  782. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_alert_evaluator.py +0 -0
  783. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_audit_logging.py +0 -0
  784. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_auth2_security.py +0 -0
  785. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_auth_redis_down.py +0 -0
  786. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_bulk.py +0 -0
  787. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_bundles.py +0 -0
  788. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_cli_errors.py +0 -0
  789. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_clickhouse_resource_tuning.py +0 -0
  790. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_config_generator_utils.py +0 -0
  791. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_deployment_guards.py +0 -0
  792. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_device_auth.py +0 -0
  793. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_docker_detection.py +0 -0
  794. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_enterprise.py +0 -0
  795. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_events.py +0 -0
  796. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_field_validation.py +0 -0
  797. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_git_mirror.py +0 -0
  798. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_graphql_phase6.py +0 -0
  799. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_health.py +0 -0
  800. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_listing_detail_access.py +0 -0
  801. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_migrate.py +0 -0
  802. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_payload_crypto.py +0 -0
  803. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_phase9_10.py +0 -0
  804. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_proxy_phase4.py +0 -0
  805. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_resilience.py +0 -0
  806. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_saml.py +0 -0
  807. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_saml_scim_integration.py +0 -0
  808. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_sanitize.py +0 -0
  809. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_scan_kiro_home.py +0 -0
  810. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_scim.py +0 -0
  811. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_secrets_redactor.py +0 -0
  812. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_shim_phase3.py +0 -0
  813. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_uninstall.py +0 -0
  814. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_uninstall_windows.py +0 -0
  815. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_versioning.py +0 -0
  816. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_webhook_delivery.py +0 -0
  817. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_webhook_signer.py +0 -0
  818. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_webhook_signer_properties.py +0 -0
  819. {observal_cli-0.3.4 → observal_cli-0.4.0}/tests/test_worker_phase5.py +0 -0
  820. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/.gitignore +0 -0
  821. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/README.md +0 -0
  822. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/e2e/kiro-agent-compat.spec.ts +0 -0
  823. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/e2e/kiro-otlp-traces.spec.ts +0 -0
  824. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/e2e/kiro-web-agents.spec.ts +0 -0
  825. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/e2e/kiro-web-traces.spec.ts +0 -0
  826. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/e2e/sso-login.spec.ts +0 -0
  827. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/e2e/unarchive-agent.spec.ts +0 -0
  828. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/eslint.config.mjs +0 -0
  829. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/next.config.ts +0 -0
  830. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/playwright.config.ts +0 -0
  831. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/pnpm-workspace.yaml +0 -0
  832. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/postcss.config.mjs +0 -0
  833. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/public/file.svg +0 -0
  834. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/public/globe.svg +0 -0
  835. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/public/next.svg +0 -0
  836. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/public/vercel.svg +0 -0
  837. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/public/window.svg +0 -0
  838. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/(admin)/audit-log/page.tsx +0 -0
  839. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/(admin)/eval/page.tsx +0 -0
  840. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/(admin)/layout.tsx +0 -0
  841. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/(admin)/security-events/page.tsx +0 -0
  842. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/(admin)/sso/page.tsx +0 -0
  843. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/(auth)/layout.tsx +0 -0
  844. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/(registry)/layout.tsx +0 -0
  845. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/(registry)/page.tsx +0 -0
  846. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/(user)/layout.tsx +0 -0
  847. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/favicon.ico +0 -0
  848. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/icon.png +0 -0
  849. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/app/layout.tsx +0 -0
  850. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/builder/sortable-component-list.tsx +0 -0
  851. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/builder/validation-panel.tsx +0 -0
  852. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/agent-aggregate-chart.tsx +0 -0
  853. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/bar-list.tsx +0 -0
  854. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/dashboard-card.tsx +0 -0
  855. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/dimension-radar.tsx +0 -0
  856. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/export-button.tsx +0 -0
  857. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/latency-heatmap.tsx +0 -0
  858. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/no-data.tsx +0 -0
  859. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/penalty-accordion.tsx +0 -0
  860. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/query-error.tsx +0 -0
  861. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/score-overview.tsx +0 -0
  862. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/stat-card.tsx +0 -0
  863. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/time-range-select.tsx +0 -0
  864. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/top-items-card.tsx +0 -0
  865. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/dashboard/trend-chart.tsx +0 -0
  866. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/layouts/admin-guard.tsx +0 -0
  867. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/layouts/auth-guard.tsx +0 -0
  868. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/layouts/dashboard-shell.tsx +0 -0
  869. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/layouts/page-header.tsx +0 -0
  870. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/layouts/role-guard.tsx +0 -0
  871. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/nav/command-menu.tsx +0 -0
  872. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/nav/github-star-banner.tsx +0 -0
  873. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/registry/agent-card.tsx +0 -0
  874. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/registry/component-card.tsx +0 -0
  875. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/registry/feedback-list.tsx +0 -0
  876. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/registry/ide-badges.tsx +0 -0
  877. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/registry/metrics-panel.tsx +0 -0
  878. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/registry/registry-detail.tsx +0 -0
  879. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/registry/registry-table.tsx +0 -0
  880. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/registry/review-form.tsx +0 -0
  881. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/review/validation-badges.tsx +0 -0
  882. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/shared/empty-state.tsx +0 -0
  883. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/shared/error-state.tsx +0 -0
  884. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/shared/skeleton-layouts.tsx +0 -0
  885. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/avatar.tsx +0 -0
  886. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/badge.tsx +0 -0
  887. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/breadcrumb.tsx +0 -0
  888. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/button.tsx +0 -0
  889. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/card.tsx +0 -0
  890. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/checkbox.tsx +0 -0
  891. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/command.tsx +0 -0
  892. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/dialog.tsx +0 -0
  893. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/dropdown-menu.tsx +0 -0
  894. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/input.tsx +0 -0
  895. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/label.tsx +0 -0
  896. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/popover.tsx +0 -0
  897. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/progress.tsx +0 -0
  898. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/resizable.tsx +0 -0
  899. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/scroll-area.tsx +0 -0
  900. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/select.tsx +0 -0
  901. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/separator.tsx +0 -0
  902. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/sheet.tsx +0 -0
  903. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/skeleton.tsx +0 -0
  904. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/sonner.tsx +0 -0
  905. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/switch.tsx +0 -0
  906. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/table.tsx +0 -0
  907. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/tabs.tsx +0 -0
  908. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/textarea.tsx +0 -0
  909. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/components/ui/tooltip.tsx +0 -0
  910. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/hooks/use-admin-guard.ts +0 -0
  911. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/hooks/use-auth.ts +0 -0
  912. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/hooks/use-mobile.ts +0 -0
  913. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/hooks/use-role-guard.ts +0 -0
  914. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/lib/export.ts +0 -0
  915. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/lib/graphql-ws.ts +0 -0
  916. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/lib/query-client.ts +0 -0
  917. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/src/lib/utils.ts +0 -0
  918. {observal_cli-0.3.4 → observal_cli-0.4.0}/web/tsconfig.json +0 -0
@@ -0,0 +1,56 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "type": "command",
6
+ "command": "/home/haz3/code/blazeup/observal-insights-v2/observal_cli/hooks/observal-hook.sh"
7
+ }
8
+ ],
9
+ "UserPromptSubmit": [
10
+ {
11
+ "type": "command",
12
+ "command": "/home/haz3/code/blazeup/observal-insights-v2/observal_cli/hooks/observal-hook.sh"
13
+ }
14
+ ],
15
+ "PreToolUse": [
16
+ {
17
+ "type": "command",
18
+ "command": "/home/haz3/code/blazeup/observal-insights-v2/observal_cli/hooks/observal-hook.sh"
19
+ }
20
+ ],
21
+ "PostToolUse": [
22
+ {
23
+ "type": "command",
24
+ "command": "/home/haz3/code/blazeup/observal-insights-v2/observal_cli/hooks/observal-hook.sh"
25
+ }
26
+ ],
27
+ "PreCompact": [
28
+ {
29
+ "type": "command",
30
+ "command": "/home/haz3/code/blazeup/observal-insights-v2/observal_cli/hooks/observal-hook.sh"
31
+ }
32
+ ],
33
+ "SubagentStart": [
34
+ {
35
+ "type": "command",
36
+ "command": "/home/haz3/code/blazeup/observal-insights-v2/observal_cli/hooks/observal-hook.sh"
37
+ }
38
+ ],
39
+ "SubagentStop": [
40
+ {
41
+ "type": "command",
42
+ "command": "/home/haz3/code/blazeup/observal-insights-v2/observal_cli/hooks/observal-hook.sh"
43
+ }
44
+ ],
45
+ "Stop": [
46
+ {
47
+ "type": "command",
48
+ "command": "/home/haz3/code/blazeup/observal-insights-v2/observal_cli/hooks/observal-hook.sh"
49
+ },
50
+ {
51
+ "type": "command",
52
+ "command": "/home/haz3/code/blazeup/observal-insights-v2/observal_cli/hooks/observal-stop-hook.sh"
53
+ }
54
+ ]
55
+ }
56
+ }
@@ -0,0 +1,282 @@
1
+ # ─────────────────────────────────────────────────────────────────────────────
2
+ # Observal CI — runs on every PR targeting main and on pushes to main.
3
+ #
4
+ # Recommended branch-protection rules (Settings → Branches → main):
5
+ # Required status checks:
6
+ # • lint
7
+ # • test (3.11)
8
+ # • test (3.12)
9
+ # • test (3.13)
10
+ # • web-lint
11
+ # • docker-build
12
+ # • security-scan
13
+ # Require a pull request before merging
14
+ # Require approvals: 1
15
+ # Do not allow bypassing the above settings
16
+ # ─────────────────────────────────────────────────────────────────────────────
17
+
18
+ name: CI
19
+
20
+ on:
21
+ pull_request:
22
+ branches: [main]
23
+ push:
24
+ branches: [main]
25
+
26
+ concurrency:
27
+ group: ci-${{ github.ref }}
28
+ cancel-in-progress: true
29
+
30
+ # ── Job 0: Path filtering ─────────────────────────────────────────────────────
31
+ jobs:
32
+ changes:
33
+ runs-on: ubuntu-latest
34
+ permissions:
35
+ pull-requests: read
36
+ outputs:
37
+ python: ${{ steps.filter.outputs.python }}
38
+ web: ${{ steps.filter.outputs.web }}
39
+ docker: ${{ steps.filter.outputs.docker }}
40
+ steps:
41
+ - uses: actions/checkout@v6
42
+ - uses: dorny/paths-filter@v4
43
+ id: filter
44
+ with:
45
+ filters: |
46
+ python:
47
+ - 'observal_cli/**/*.py'
48
+ - 'observal-server/**/*.py'
49
+ - 'tests/**/*.py'
50
+ - 'pyproject.toml'
51
+ - 'uv.lock'
52
+ - 'Makefile'
53
+ - '.pre-commit-config.yaml'
54
+ - '.github/workflows/ci.yml'
55
+ web:
56
+ - 'web/**'
57
+ - '.github/workflows/ci.yml'
58
+ docker:
59
+ - 'docker/**'
60
+ - 'observal_cli/**'
61
+ - 'observal-server/**'
62
+ - 'web/**'
63
+ - 'pyproject.toml'
64
+ - 'uv.lock'
65
+ - 'web/package.json'
66
+ - 'web/pnpm-lock.yaml'
67
+ - '.env.example'
68
+ - '.github/workflows/ci.yml'
69
+
70
+ # ── Job 1: Python lint ────────────────────────────────────────────────────────
71
+ lint:
72
+ name: lint
73
+ runs-on: ubuntu-latest
74
+ needs: changes
75
+ steps:
76
+ - name: Skip if no Python changes
77
+ if: needs.changes.outputs.python != 'true'
78
+ run: |
79
+ echo "::notice::No Python changes detected, skipping lint"
80
+ echo "This job reports success to satisfy branch protection"
81
+
82
+ - uses: actions/checkout@v6
83
+ if: needs.changes.outputs.python == 'true'
84
+
85
+ - uses: astral-sh/setup-uv@v8.1.0
86
+ if: needs.changes.outputs.python == 'true'
87
+ with:
88
+ enable-cache: true
89
+
90
+ - name: Install Python 3.13
91
+ if: needs.changes.outputs.python == 'true'
92
+ run: uv python install 3.13
93
+
94
+ - name: ruff check
95
+ if: needs.changes.outputs.python == 'true'
96
+ run: uv run --with ruff==0.15.10 ruff check .
97
+
98
+ - name: ruff format --check
99
+ if: needs.changes.outputs.python == 'true'
100
+ run: uv run --with ruff==0.15.10 ruff format --check .
101
+
102
+ # ── Job 2: Python tests (matrix) ──────────────────────────────────────────────
103
+ test:
104
+ name: test (${{ matrix.python-version }})
105
+ runs-on: ubuntu-latest
106
+ needs: changes
107
+ strategy:
108
+ fail-fast: false
109
+ matrix:
110
+ python-version: ["3.11", "3.12", "3.13"]
111
+
112
+ steps:
113
+ - name: Skip if no Python changes
114
+ if: needs.changes.outputs.python != 'true'
115
+ run: |
116
+ echo "::notice::No Python changes detected, skipping test"
117
+ echo "This job reports success to satisfy branch protection"
118
+
119
+ - uses: actions/checkout@v6
120
+ if: needs.changes.outputs.python == 'true'
121
+
122
+ - uses: astral-sh/setup-uv@v8.1.0
123
+ if: needs.changes.outputs.python == 'true'
124
+ with:
125
+ enable-cache: true
126
+
127
+ - name: Install Python ${{ matrix.python-version }}
128
+ if: needs.changes.outputs.python == 'true'
129
+ run: uv python install ${{ matrix.python-version }}
130
+
131
+ - name: Install project dependencies
132
+ if: needs.changes.outputs.python == 'true'
133
+ run: |
134
+ cd observal-server
135
+ uv sync --python ${{ matrix.python-version }} --group dev
136
+
137
+ - name: Run pytest
138
+ if: needs.changes.outputs.python == 'true'
139
+ run: |
140
+ cd observal-server
141
+ uv run \
142
+ --python ${{ matrix.python-version }} \
143
+ --with asyncpg \
144
+ --with hypothesis \
145
+ --with pyarrow \
146
+ pytest ../tests/ -q
147
+
148
+ # ── Job 3: Next.js lint + typecheck ───────────────────────────────────────────
149
+ web-lint:
150
+ name: web-lint
151
+ runs-on: ubuntu-latest
152
+ needs: changes
153
+ defaults:
154
+ run:
155
+ working-directory: web
156
+
157
+ steps:
158
+ - name: Skip if no web changes
159
+ if: needs.changes.outputs.web != 'true'
160
+ working-directory: .
161
+ run: |
162
+ echo "::notice::No web changes detected, skipping web-lint"
163
+ echo "This job reports success to satisfy branch protection"
164
+
165
+ - uses: actions/checkout@v6
166
+ if: needs.changes.outputs.web == 'true'
167
+
168
+ - uses: pnpm/action-setup@v4
169
+ if: needs.changes.outputs.web == 'true'
170
+ with:
171
+ version: 10
172
+
173
+ - uses: actions/setup-node@v6
174
+ if: needs.changes.outputs.web == 'true'
175
+ with:
176
+ node-version: 24
177
+ cache: pnpm
178
+ cache-dependency-path: web/pnpm-lock.yaml
179
+
180
+ - name: Install dependencies
181
+ if: needs.changes.outputs.web == 'true'
182
+ run: pnpm install --frozen-lockfile
183
+
184
+ - name: ESLint
185
+ if: needs.changes.outputs.web == 'true'
186
+ run: pnpm run lint
187
+
188
+ - name: TypeScript typecheck
189
+ if: needs.changes.outputs.web == 'true'
190
+ run: pnpm run typecheck
191
+
192
+ # ── Job 4: Import boundary check ─────────────────────────────────────────────
193
+ import-boundary:
194
+ name: import-boundary
195
+ runs-on: ubuntu-latest
196
+ needs: changes
197
+ if: needs.changes.outputs.python == 'true'
198
+ steps:
199
+ - uses: actions/checkout@v6
200
+
201
+ - name: Check ee/ import boundary
202
+ run: |
203
+ echo "Checking that core does not import from ee/..."
204
+ VIOLATIONS=$(grep -rn "from ee\b\|import ee\b" observal-server/ observal_cli/ --include="*.py" | grep -v "main.py" || true)
205
+ if [ -n "$VIOLATIONS" ]; then
206
+ echo "::error::Import boundary violation — core must not import from ee/"
207
+ echo "$VIOLATIONS"
208
+ exit 1
209
+ fi
210
+ echo "✓ No import boundary violations found"
211
+
212
+ # ── Job 5: Docker build ───────────────────────────────────────────────────────
213
+ docker-build:
214
+ name: docker-build
215
+ runs-on: ubuntu-latest
216
+ needs: changes
217
+ defaults:
218
+ run:
219
+ working-directory: docker
220
+
221
+ steps:
222
+ - name: Skip if no Docker changes
223
+ if: needs.changes.outputs.docker != 'true'
224
+ working-directory: .
225
+ run: |
226
+ echo "::notice::No Docker changes detected, skipping docker-build"
227
+ echo "This job reports success to satisfy branch protection"
228
+
229
+ - uses: actions/checkout@v6
230
+ if: needs.changes.outputs.docker == 'true'
231
+
232
+ - name: Create stub .env
233
+ if: needs.changes.outputs.docker == 'true'
234
+ run: touch ../.env
235
+
236
+ - name: Build images
237
+ if: needs.changes.outputs.docker == 'true'
238
+ run: docker compose build
239
+
240
+ # ── Job 5: Python SAST with bandit ──────────────────────────────────────────
241
+ security-scan:
242
+ name: security-scan
243
+ runs-on: ubuntu-latest
244
+ steps:
245
+ - uses: actions/checkout@v6
246
+ - uses: astral-sh/setup-uv@v8.1.0
247
+ with:
248
+ enable-cache: true
249
+ - name: Install Python 3.12
250
+ run: uv python install 3.12
251
+ - name: Run bandit
252
+ run: uv run --with bandit bandit -r observal-server/ observal_cli/ -c pyproject.toml -f json -o bandit-report.json || true
253
+ - name: Check bandit results
254
+ run: uv run --with bandit bandit -r observal-server/ observal_cli/ -c pyproject.toml -ll
255
+
256
+ # ── Job 6: Dependency audit ─────────────────────────────────────────────────
257
+ dependency-audit:
258
+ name: dependency-audit
259
+ runs-on: ubuntu-latest
260
+ steps:
261
+ - uses: actions/checkout@v6
262
+
263
+ - name: Python dependency audit
264
+ uses: astral-sh/setup-uv@v8.1.0
265
+ with:
266
+ enable-cache: true
267
+ - name: Run pip-audit
268
+ # TODO: burn down pre-existing advisories then remove || true
269
+ run: |
270
+ uv python install 3.12
271
+ cd observal-server
272
+ uv run --with pip-audit pip-audit --strict --desc || true
273
+
274
+ - name: JS dependency audit
275
+ uses: pnpm/action-setup@v4
276
+ with:
277
+ version: 10
278
+ - name: Run pnpm audit
279
+ run: |
280
+ cd web
281
+ pnpm install --frozen-lockfile
282
+ pnpm audit --prod || true
@@ -0,0 +1,63 @@
1
+ name: Deploy Dev to EC2
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ concurrency:
9
+ group: deploy-dev-ec2
10
+ cancel-in-progress: false
11
+
12
+ jobs:
13
+ deploy:
14
+ runs-on: ubuntu-latest
15
+ timeout-minutes: 15
16
+ steps:
17
+ - name: Deploy to EC2 (dev)
18
+ uses: appleboy/ssh-action@v1
19
+ with:
20
+ host: ${{ secrets.EC2_HOST_DEV }}
21
+ username: ubuntu
22
+ key: ${{ secrets.EC2_SSH_KEY_DEV }}
23
+ script: |
24
+ set -e
25
+ cd ~/Observal
26
+ git fetch origin main
27
+ git reset --hard origin/main
28
+
29
+ # Use SSL override from outside repo so git reset never wipes it
30
+ SSL_OVERRIDE=~/observal-ssl/docker-compose.ssl.yml
31
+ if [ -f "$SSL_OVERRIDE" ]; then
32
+ DEV_OVERRIDE="$SSL_OVERRIDE"
33
+ else
34
+ DEV_OVERRIDE="docker/docker-compose.dev.yml"
35
+ fi
36
+
37
+ docker compose -f docker/docker-compose.yml -f "$DEV_OVERRIDE" up -d --build --remove-orphans
38
+
39
+ echo "Waiting for API container to start..."
40
+ for i in $(seq 1 60); do
41
+ if docker compose -f docker/docker-compose.yml -f "$DEV_OVERRIDE" exec -T observal-api python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/livez')" 2>/dev/null; then
42
+ echo "API process is alive"
43
+ break
44
+ fi
45
+ echo "Waiting for API process... ($i/60)"
46
+ sleep 5
47
+ done
48
+
49
+ docker compose -f docker/docker-compose.yml -f "$DEV_OVERRIDE" restart observal-lb
50
+ sleep 3
51
+
52
+ for i in $(seq 1 30); do
53
+ if curl -sf http://localhost/health > /dev/null 2>&1; then
54
+ echo "API is healthy"
55
+ exit 0
56
+ fi
57
+ echo "Waiting for health check... ($i/30)"
58
+ sleep 5
59
+ done
60
+
61
+ echo "API failed health check"
62
+ docker compose -f docker/docker-compose.yml -f "$DEV_OVERRIDE" logs observal-api observal-init observal-lb observal-db observal-clickhouse --tail 20
63
+ exit 1
@@ -0,0 +1,62 @@
1
+ name: Deploy to EC2
2
+
3
+ on:
4
+ push:
5
+ tags: ['v*']
6
+ workflow_dispatch:
7
+
8
+ concurrency:
9
+ group: deploy-ec2
10
+ cancel-in-progress: false
11
+
12
+ jobs:
13
+ deploy:
14
+ runs-on: ubuntu-latest
15
+ timeout-minutes: 15
16
+ steps:
17
+ - name: Deploy to EC2
18
+ uses: appleboy/ssh-action@v1
19
+ with:
20
+ host: ${{ secrets.EC2_HOST }}
21
+ username: ubuntu
22
+ key: ${{ secrets.EC2_SSH_KEY }}
23
+ script: |
24
+ set -e
25
+ cd ~/Observal
26
+ git fetch origin --tags
27
+ git checkout ${{ github.ref_name }}
28
+
29
+ cd docker
30
+ docker compose -f docker-compose.yml -f docker-compose.production.yml up -d --build --remove-orphans
31
+
32
+ # Phase 1: Wait for API container to be alive (bypasses nginx).
33
+ # Uses direct container exec because curl through nginx fails
34
+ # when nginx caches a stale upstream IP from the old container.
35
+ echo "Waiting for API container to start..."
36
+ for i in $(seq 1 60); do
37
+ if docker compose exec -T observal-api python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/livez')" 2>/dev/null; then
38
+ echo "API process is alive"
39
+ break
40
+ fi
41
+ echo "Waiting for API process... ($i/60)"
42
+ sleep 5
43
+ done
44
+
45
+ # Nginx caches upstream container IPs — after rebuild the API
46
+ # gets a new IP but nginx still routes to the old one.
47
+ docker compose -f docker-compose.yml -f docker-compose.production.yml restart observal-lb
48
+ sleep 3
49
+
50
+ # Phase 2: Verify health through nginx (the path clients use)
51
+ for i in $(seq 1 30); do
52
+ if curl -sf https://localhost/health -k > /dev/null 2>&1; then
53
+ echo "API is healthy (full stack verified)"
54
+ exit 0
55
+ fi
56
+ echo "Waiting for health check... ($i/30)"
57
+ sleep 5
58
+ done
59
+
60
+ echo "API failed health check"
61
+ docker compose logs observal-api observal-init observal-lb observal-db observal-clickhouse --tail 20
62
+ exit 1
@@ -0,0 +1,37 @@
1
+ name: Publish
2
+
3
+ on:
4
+ push:
5
+ tags: ['v*']
6
+
7
+ jobs:
8
+ publish:
9
+ name: Build and publish to PyPI
10
+ runs-on: ubuntu-latest
11
+ environment: pypi
12
+ permissions:
13
+ id-token: write # required for PyPI Trusted Publishing
14
+ contents: read
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Install uv
20
+ uses: astral-sh/setup-uv@v3
21
+ with:
22
+ enable-cache: true
23
+
24
+ - name: Verify tag matches pyproject version
25
+ run: |
26
+ tag="${GITHUB_REF#refs/tags/v}"
27
+ pkg=$(uv run --with tomli python -c "import tomli, pathlib; print(tomli.loads(pathlib.Path('pyproject.toml').read_text())['project']['version'])")
28
+ if [ "$tag" != "$pkg" ]; then
29
+ echo "::error::Tag v$tag does not match pyproject version $pkg"
30
+ exit 1
31
+ fi
32
+
33
+ - name: Build sdist and wheel
34
+ run: uv build
35
+
36
+ - name: Publish to PyPI
37
+ uses: pypa/gh-action-pypi-publish@release/v1