observal-cli 0.3.3__tar.gz → 0.3.4__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 (597) hide show
  1. observal_cli-0.3.4/.dockerignore +60 -0
  2. {observal_cli-0.3.3 → observal_cli-0.3.4}/CHANGELOG.md +45 -0
  3. {observal_cli-0.3.3 → observal_cli-0.3.4}/PKG-INFO +1 -1
  4. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/Dockerfile.api +14 -6
  5. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/Dockerfile.web +2 -1
  6. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/docker-compose.yml +1 -1
  7. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/nginx.conf +8 -1
  8. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/nginx.production.conf +13 -6
  9. observal_cli-0.3.4/docs/integrations/copilot-cli.md +170 -0
  10. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/config.py +1 -1
  11. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/otel_dashboard.py +2 -0
  12. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/telemetry.py +9 -3
  13. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/pyproject.toml +1 -1
  14. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/constants.py +2 -0
  15. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/agent_builder.py +60 -7
  16. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/agent_config_generator.py +69 -28
  17. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/config_generator.py +18 -0
  18. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/hook_config_generator.py +4 -17
  19. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_auth.py +56 -37
  20. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_doctor.py +222 -33
  21. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_scan.py +210 -61
  22. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/constants.py +2 -0
  23. observal_cli-0.3.4/observal_cli/hooks/copilot_cli_hook.py +163 -0
  24. observal_cli-0.3.4/observal_cli/hooks/copilot_cli_stop_hook.py +175 -0
  25. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks/kiro_hook.py +2 -0
  26. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks_spec.py +1 -1
  27. {observal_cli-0.3.3 → observal_cli-0.3.4}/pyproject.toml +2 -2
  28. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_agent_composition.py +4 -3
  29. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_agent_config_generator.py +24 -22
  30. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_endpoint_discovery.py +28 -1
  31. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_ide_config_e2e.py +277 -0
  32. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_shim_phase3.py +1 -1
  33. {observal_cli-0.3.3 → observal_cli-0.3.4}/uv.lock +24 -24
  34. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(user)/traces/[id]/page.tsx +44 -9
  35. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(user)/traces/page.tsx +18 -1
  36. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/traces/trace-list.tsx +5 -0
  37. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/lib/graphql-ws.ts +1 -1
  38. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/lib/ide-features.ts +3 -0
  39. observal_cli-0.3.3/.dockerignore +0 -5
  40. {observal_cli-0.3.3 → observal_cli-0.3.4}/.editorconfig +0 -0
  41. {observal_cli-0.3.3 → observal_cli-0.3.4}/.env.example +0 -0
  42. {observal_cli-0.3.3 → observal_cli-0.3.4}/.gitattributes +0 -0
  43. {observal_cli-0.3.3 → observal_cli-0.3.4}/.gitbook.yaml +0 -0
  44. {observal_cli-0.3.3 → observal_cli-0.3.4}/.github/ISSUE_TEMPLATE/bug_report_form.yml +0 -0
  45. {observal_cli-0.3.3 → observal_cli-0.3.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  46. {observal_cli-0.3.3 → observal_cli-0.3.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  47. {observal_cli-0.3.3 → observal_cli-0.3.4}/.github/pull_request_template.md +0 -0
  48. {observal_cli-0.3.3 → observal_cli-0.3.4}/.github/workflows/ci.yml +0 -0
  49. {observal_cli-0.3.3 → observal_cli-0.3.4}/.github/workflows/codeql.yml +0 -0
  50. {observal_cli-0.3.3 → observal_cli-0.3.4}/.github/workflows/dco.yml +0 -0
  51. {observal_cli-0.3.3 → observal_cli-0.3.4}/.github/workflows/deploy.yml +0 -0
  52. {observal_cli-0.3.3 → observal_cli-0.3.4}/.github/workflows/release.yml +0 -0
  53. {observal_cli-0.3.3 → observal_cli-0.3.4}/.gitignore +0 -0
  54. {observal_cli-0.3.3 → observal_cli-0.3.4}/.pre-commit-config.yaml +0 -0
  55. {observal_cli-0.3.3 → observal_cli-0.3.4}/AGENTS.md +0 -0
  56. {observal_cli-0.3.3 → observal_cli-0.3.4}/CODE_OF_CONDUCT.md +0 -0
  57. {observal_cli-0.3.3 → observal_cli-0.3.4}/CONTRIBUTING.md +0 -0
  58. {observal_cli-0.3.3 → observal_cli-0.3.4}/LICENSE +0 -0
  59. {observal_cli-0.3.3 → observal_cli-0.3.4}/Makefile +0 -0
  60. {observal_cli-0.3.3 → observal_cli-0.3.4}/README.md +0 -0
  61. {observal_cli-0.3.3 → observal_cli-0.3.4}/SECURITY.md +0 -0
  62. {observal_cli-0.3.3 → observal_cli-0.3.4}/SETUP.md +0 -0
  63. {observal_cli-0.3.3 → observal_cli-0.3.4}/cliff.toml +0 -0
  64. {observal_cli-0.3.3 → observal_cli-0.3.4}/demo/README.md +0 -0
  65. {observal_cli-0.3.3 → observal_cli-0.3.4}/demo/run_demo.sh +0 -0
  66. {observal_cli-0.3.3 → observal_cli-0.3.4}/demo/test_all_types.sh +0 -0
  67. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/clickhouse/config.d/memory.xml +0 -0
  68. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/clickhouse/users.d/memory.xml +0 -0
  69. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/docker-compose.production.yml +0 -0
  70. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/entrypoint.sh +0 -0
  71. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/server-package/env.template +0 -0
  72. {observal_cli-0.3.3 → observal_cli-0.3.4}/docker/server-package/setup.sh +0 -0
  73. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/README.md +0 -0
  74. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/SUMMARY.md +0 -0
  75. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/README.md +0 -0
  76. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/admin.md +0 -0
  77. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/agent.md +0 -0
  78. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/auth.md +0 -0
  79. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/config.md +0 -0
  80. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/doctor.md +0 -0
  81. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/ops.md +0 -0
  82. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/profile.md +0 -0
  83. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/pull.md +0 -0
  84. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/registry.md +0 -0
  85. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/scan.md +0 -0
  86. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/cli/self.md +0 -0
  87. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/concepts/README.md +0 -0
  88. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/concepts/data-model.md +0 -0
  89. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/concepts/evaluation.md +0 -0
  90. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/concepts/shim-vs-proxy.md +0 -0
  91. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/e2e-test-checklist-enterprise.md +0 -0
  92. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/e2e-test-checklist.md +0 -0
  93. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/getting-started/core-concepts.md +0 -0
  94. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/getting-started/installation.md +0 -0
  95. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/getting-started/quickstart.md +0 -0
  96. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/ObservalLogo-removebg-preview.png +0 -0
  97. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/agent-builder.png +0 -0
  98. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/agents-list.png +0 -0
  99. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/command-palette.png +0 -0
  100. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/components-list.png +0 -0
  101. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/dashboard.png +0 -0
  102. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/errors.png +0 -0
  103. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/eval-no-config.png +0 -0
  104. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/leaderboard.png +0 -0
  105. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/login-local.png +0 -0
  106. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/registry-home.png +0 -0
  107. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/review.png +0 -0
  108. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/session-info-claude-code.png +0 -0
  109. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/settings.png +0 -0
  110. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/traces.png +0 -0
  111. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/images/users.png +0 -0
  112. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/integrations/README.md +0 -0
  113. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/integrations/claude-code.md +0 -0
  114. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/integrations/codex-cli.md +0 -0
  115. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/integrations/cursor.md +0 -0
  116. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/integrations/gemini-cli.md +0 -0
  117. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/integrations/kiro.md +0 -0
  118. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/integrations/vscode.md +0 -0
  119. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/internal/kiro-compatibility-matrix.md +0 -0
  120. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/internal/kiro-research-notes.md +0 -0
  121. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/logo-light.svg +0 -0
  122. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/logo.svg +0 -0
  123. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/reference/api-endpoints.md +0 -0
  124. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/reference/config-files.md +0 -0
  125. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/reference/environment-variables.md +0 -0
  126. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/reference/hooks-spec.md +0 -0
  127. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/README.md +0 -0
  128. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/authentication.md +0 -0
  129. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/backup-and-restore.md +0 -0
  130. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/configuration.md +0 -0
  131. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/databases.md +0 -0
  132. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/docker-compose.md +0 -0
  133. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/evaluation-engine.md +0 -0
  134. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/ports-and-volumes.md +0 -0
  135. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/releasing.md +0 -0
  136. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/requirements.md +0 -0
  137. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/telemetry-pipeline.md +0 -0
  138. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/troubleshooting.md +0 -0
  139. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-hosting/upgrades.md +0 -0
  140. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/self-observability.md +0 -0
  141. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/use-cases/README.md +0 -0
  142. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/use-cases/debug-agent-failures.md +0 -0
  143. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/use-cases/evaluate-agents.md +0 -0
  144. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/use-cases/observe-mcp-traffic.md +0 -0
  145. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/use-cases/share-agent-configs.md +0 -0
  146. {observal_cli-0.3.3 → observal_cli-0.3.4}/docs/use-cases/team-registry.md +0 -0
  147. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/AGENTS.md +0 -0
  148. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/LICENSE +0 -0
  149. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/README.md +0 -0
  150. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/__init__.py +0 -0
  151. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/docs/cli-sso.md +0 -0
  152. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/docs/cli.md +0 -0
  153. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/docs/oidc-setup.md +0 -0
  154. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/docs/saml-setup.md +0 -0
  155. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/docs/scim-setup.md +0 -0
  156. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/__init__.py +0 -0
  157. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/middleware/__init__.py +0 -0
  158. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/middleware/enterprise_guard.py +0 -0
  159. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/routes/__init__.py +0 -0
  160. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/routes/admin_sso.py +0 -0
  161. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/routes/audit.py +0 -0
  162. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/routes/scim.py +0 -0
  163. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/routes/sso_saml.py +0 -0
  164. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/services/__init__.py +0 -0
  165. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/services/audit.py +0 -0
  166. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/services/config_validator.py +0 -0
  167. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/services/saml.py +0 -0
  168. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/observal_server/services/scim_service.py +0 -0
  169. {observal_cli-0.3.3 → observal_cli-0.3.4}/ee/plugins/__init__.py +0 -0
  170. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/dashboards/agent-activity.json +0 -0
  171. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/dashboards/audit-log.json +0 -0
  172. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/dashboards/cost-tracking.json +0 -0
  173. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/dashboards/error-rates.json +0 -0
  174. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/dashboards/performance-resources.json +0 -0
  175. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/dashboards/scores-eval.json +0 -0
  176. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/dashboards/self-observability.json +0 -0
  177. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/dashboards/session-overview.json +0 -0
  178. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/dashboards/token-usage.json +0 -0
  179. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/dashboards/tool-call-frequency.json +0 -0
  180. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/provisioning/dashboards/default.yaml +0 -0
  181. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/provisioning/datasources/clickhouse.yaml +0 -0
  182. {observal_cli-0.3.3 → observal_cli-0.3.4}/grafana/provisioning/datasources/prometheus.yaml +0 -0
  183. {observal_cli-0.3.3 → observal_cli-0.3.4}/install-server.sh +0 -0
  184. {observal_cli-0.3.3 → observal_cli-0.3.4}/install.sh +0 -0
  185. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/README.md +0 -0
  186. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/README +0 -0
  187. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/env.py +0 -0
  188. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/script.py.mako +0 -0
  189. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/.gitkeep +0 -0
  190. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0001_add_rbac_roles_and_is_demo.py +0 -0
  191. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0002_add_password_reset_tokens.py +0 -0
  192. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0003_add_api_keys_table.py +0 -0
  193. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0004_normalize_email_case.py +0 -0
  194. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0005_drop_password_reset_tokens.py +0 -0
  195. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0006_drop_api_keys_and_legacy_key_hash.py +0 -0
  196. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0007_add_alert_history.py +0 -0
  197. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0008_add_mcp_framework_column.py +0 -0
  198. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0009_add_docker_image_to_mcp_listings.py +0 -0
  199. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0010_add_agents_name_uniqueness.py +0 -0
  200. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0011_agent_review_and_bundles.py +0 -0
  201. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0012_add_username_to_users.py +0 -0
  202. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0013_add_mcp_command_args_url_headers.py +0 -0
  203. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0014_add_draft_to_listing_status.py +0 -0
  204. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0015_add_webhook_secret_to_alert_rules.py +0 -0
  205. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0016_add_ide_feature_fields.py +0 -0
  206. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0017_add_org_trace_privacy.py +0 -0
  207. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic/versions/0018_add_saml_config_and_scim_token.py +0 -0
  208. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/alembic.ini +0 -0
  209. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/__init__.py +0 -0
  210. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/deps.py +0 -0
  211. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/graphql.py +0 -0
  212. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/middleware/__init__.py +0 -0
  213. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/middleware/content_type.py +0 -0
  214. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/middleware/request_id.py +0 -0
  215. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/ratelimit.py +0 -0
  216. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/__init__.py +0 -0
  217. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/admin.py +0 -0
  218. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/agent.py +0 -0
  219. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/alert.py +0 -0
  220. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/auth.py +0 -0
  221. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/bulk.py +0 -0
  222. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/component_source.py +0 -0
  223. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/dashboard.py +0 -0
  224. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/device_auth.py +0 -0
  225. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/eval.py +0 -0
  226. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/feedback.py +0 -0
  227. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/hook.py +0 -0
  228. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/jwks.py +0 -0
  229. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/mcp.py +0 -0
  230. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/otlp.py +0 -0
  231. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/prompt.py +0 -0
  232. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/review.py +0 -0
  233. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/sandbox.py +0 -0
  234. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/routes/skill.py +0 -0
  235. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/api/sanitize.py +0 -0
  236. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/config.py +0 -0
  237. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/database.py +0 -0
  238. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/logging_config.py +0 -0
  239. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/main.py +0 -0
  240. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/__init__.py +0 -0
  241. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/agent.py +0 -0
  242. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/agent_component.py +0 -0
  243. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/alert.py +0 -0
  244. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/alert_history.py +0 -0
  245. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/base.py +0 -0
  246. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/component_bundle.py +0 -0
  247. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/component_source.py +0 -0
  248. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/download.py +0 -0
  249. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/enterprise_config.py +0 -0
  250. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/eval.py +0 -0
  251. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/exporter_config.py +0 -0
  252. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/feedback.py +0 -0
  253. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/hook.py +0 -0
  254. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/mcp.py +0 -0
  255. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/organization.py +0 -0
  256. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/password_reset_token.py +0 -0
  257. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/prompt.py +0 -0
  258. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/saml_config.py +0 -0
  259. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/sandbox.py +0 -0
  260. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/sanitization.py +0 -0
  261. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/scim_token.py +0 -0
  262. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/scoring.py +0 -0
  263. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/skill.py +0 -0
  264. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/submission.py +0 -0
  265. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/models/user.py +0 -0
  266. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/__init__.py +0 -0
  267. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/admin.py +0 -0
  268. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/agent.py +0 -0
  269. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/alert.py +0 -0
  270. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/auth.py +0 -0
  271. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/bulk.py +0 -0
  272. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/component_source.py +0 -0
  273. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/dashboard.py +0 -0
  274. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/eval.py +0 -0
  275. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/feedback.py +0 -0
  276. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/hook.py +0 -0
  277. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/judge_output.py +0 -0
  278. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/mcp.py +0 -0
  279. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/prompt.py +0 -0
  280. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/sandbox.py +0 -0
  281. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/skill.py +0 -0
  282. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/schemas/telemetry.py +0 -0
  283. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/__init__.py +0 -0
  284. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/agent_resolver.py +0 -0
  285. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/alert_evaluator.py +0 -0
  286. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/audit_helpers.py +0 -0
  287. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/cache.py +0 -0
  288. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/clickhouse.py +0 -0
  289. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/codex_config_generator.py +0 -0
  290. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/crypto.py +0 -0
  291. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/demo_accounts.py +0 -0
  292. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/download_tracker.py +0 -0
  293. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/__init__.py +0 -0
  294. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/adversarial_scorer.py +0 -0
  295. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/canary.py +0 -0
  296. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/eval_engine.py +0 -0
  297. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/eval_service.py +0 -0
  298. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/eval_watchdog.py +0 -0
  299. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/kernel.py +0 -0
  300. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/kernel_bridge.py +0 -0
  301. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/kernel_scorer.py +0 -0
  302. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/ragas_eval.py +0 -0
  303. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/sanitizer.py +0 -0
  304. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/score_aggregator.py +0 -0
  305. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/slm_scorer.py +0 -0
  306. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/eval/structural_scorer.py +0 -0
  307. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/events.py +0 -0
  308. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/git_mirror_service.py +0 -0
  309. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/hook_materializer.py +0 -0
  310. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/ide_feature_inference.py +0 -0
  311. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/jwt_service.py +0 -0
  312. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/mcp_validator.py +0 -0
  313. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/redis.py +0 -0
  314. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/registry_telemetry.py +0 -0
  315. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/request_context.py +0 -0
  316. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/sandbox_config_generator.py +0 -0
  317. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/secrets_redactor.py +0 -0
  318. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/security_events.py +0 -0
  319. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/skill_config_generator.py +0 -0
  320. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/versioning.py +0 -0
  321. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/webhook_delivery.py +0 -0
  322. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/services/webhook_signer.py +0 -0
  323. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/tests/__init__.py +0 -0
  324. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/tests/conftest.py +0 -0
  325. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/tests/test_config.py +0 -0
  326. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/tests/test_crypto.py +0 -0
  327. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/tests/test_jwt.py +0 -0
  328. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/tests/test_multi_tenancy.py +0 -0
  329. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/tests/test_payload_protection.py +0 -0
  330. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/tests/test_rbac.py +0 -0
  331. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/tests/test_security_events.py +0 -0
  332. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/uv.lock +0 -0
  333. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal-server/worker.py +0 -0
  334. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/README.md +0 -0
  335. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/__init__.py +0 -0
  336. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/analyzer.py +0 -0
  337. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/branding.py +0 -0
  338. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/client.py +0 -0
  339. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_agent.py +0 -0
  340. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_hook.py +0 -0
  341. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_mcp.py +0 -0
  342. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_migrate.py +0 -0
  343. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_ops.py +0 -0
  344. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_profile.py +0 -0
  345. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_prompt.py +0 -0
  346. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_pull.py +0 -0
  347. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_sandbox.py +0 -0
  348. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_skill.py +0 -0
  349. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/cmd_uninstall.py +0 -0
  350. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/config.py +0 -0
  351. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks/__init__.py +0 -0
  352. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks/buffer_event.py +0 -0
  353. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks/flush_buffer.py +0 -0
  354. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks/gemini_hook.py +0 -0
  355. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks/gemini_stop_hook.py +0 -0
  356. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks/kiro_stop_hook.py +0 -0
  357. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks/observal-hook.sh +0 -0
  358. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks/observal-stop-hook.sh +0 -0
  359. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/hooks/payload_crypto.py +0 -0
  360. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/main.py +0 -0
  361. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/prompts.py +0 -0
  362. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/proxy.py +0 -0
  363. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/pyinstaller.spec +0 -0
  364. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/render.py +0 -0
  365. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/requirements.txt +0 -0
  366. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/sandbox_runner.py +0 -0
  367. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/settings_reconciler.py +0 -0
  368. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/shim.py +0 -0
  369. {observal_cli-0.3.3 → observal_cli-0.3.4}/observal_cli/telemetry_buffer.py +0 -0
  370. {observal_cli-0.3.3 → observal_cli-0.3.4}/otel-collector-config.yaml +0 -0
  371. {observal_cli-0.3.3 → observal_cli-0.3.4}/prometheus.yml +0 -0
  372. {observal_cli-0.3.3 → observal_cli-0.3.4}/renovate.json +0 -0
  373. {observal_cli-0.3.3 → observal_cli-0.3.4}/screenshots/01-review-queue.png +0 -0
  374. {observal_cli-0.3.3 → observal_cli-0.3.4}/screenshots/02-detail-sheet-mcp.png +0 -0
  375. {observal_cli-0.3.3 → observal_cli-0.3.4}/screenshots/03-after-bulk-approve.png +0 -0
  376. {observal_cli-0.3.3 → observal_cli-0.3.4}/screenshots/04-rejection-reason-skills.png +0 -0
  377. {observal_cli-0.3.3 → observal_cli-0.3.4}/scripts/check_dco.sh +0 -0
  378. {observal_cli-0.3.3 → observal_cli-0.3.4}/scripts/check_migrations.py +0 -0
  379. {observal_cli-0.3.3 → observal_cli-0.3.4}/scripts/check_secrets.sh +0 -0
  380. {observal_cli-0.3.3 → observal_cli-0.3.4}/scripts/new_migration.sh +0 -0
  381. {observal_cli-0.3.3 → observal_cli-0.3.4}/scripts/seed_test_skill.py +0 -0
  382. {observal_cli-0.3.3 → observal_cli-0.3.4}/test-agent.json +0 -0
  383. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/README.md +0 -0
  384. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/__init__.py +0 -0
  385. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/conftest.py +0 -0
  386. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/__init__.py +0 -0
  387. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_adversarial_self.py +0 -0
  388. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_eval_completeness.py +0 -0
  389. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_eval_phase8.py +0 -0
  390. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_phase8a_sanitizer.py +0 -0
  391. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_phase8b_matching.py +0 -0
  392. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_phase8d_adversarial.py +0 -0
  393. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_phase8e_canary.py +0 -0
  394. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_phase8g_pipeline.py +0 -0
  395. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_ragas_eval.py +0 -0
  396. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_score_aggregator.py +0 -0
  397. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_slm_scorer.py +0 -0
  398. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/eval/test_structural_scorer.py +0 -0
  399. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/mock_mcp.py +0 -0
  400. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_agent_name_lookup.py +0 -0
  401. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_agent_review.py +0 -0
  402. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_alert_evaluator.py +0 -0
  403. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_audit_logging.py +0 -0
  404. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_auth2_security.py +0 -0
  405. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_auth_redis_down.py +0 -0
  406. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_bulk.py +0 -0
  407. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_bundles.py +0 -0
  408. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_cli_errors.py +0 -0
  409. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_clickhouse_phase1.py +0 -0
  410. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_clickhouse_resource_tuning.py +0 -0
  411. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_clickhouse_retention.py +0 -0
  412. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_config_generator_utils.py +0 -0
  413. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_constants_sync.py +0 -0
  414. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_demo_accounts.py +0 -0
  415. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_deployment_guards.py +0 -0
  416. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_device_auth.py +0 -0
  417. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_docker_detection.py +0 -0
  418. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_draft_workflow.py +0 -0
  419. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_enterprise.py +0 -0
  420. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_env_detection_and_config.py +0 -0
  421. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_events.py +0 -0
  422. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_field_validation.py +0 -0
  423. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_git_mirror.py +0 -0
  424. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_graphql_phase6.py +0 -0
  425. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_health.py +0 -0
  426. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_ingest_phase2.py +0 -0
  427. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_listing_detail_access.py +0 -0
  428. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_migrate.py +0 -0
  429. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_migrate_telemetry.py +0 -0
  430. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_payload_crypto.py +0 -0
  431. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_phase9_10.py +0 -0
  432. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_proxy_phase4.py +0 -0
  433. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_pull_and_agent_cli.py +0 -0
  434. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_registry_types.py +0 -0
  435. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_resilience.py +0 -0
  436. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_review_queue.py +0 -0
  437. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_saml.py +0 -0
  438. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_saml_scim_integration.py +0 -0
  439. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_sanitize.py +0 -0
  440. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_scan_kiro_home.py +0 -0
  441. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_schema_redesign.py +0 -0
  442. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_scim.py +0 -0
  443. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_secrets_redactor.py +0 -0
  444. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_settings_reconciler.py +0 -0
  445. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_skill_config_generator.py +0 -0
  446. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_telemetry_collection.py +0 -0
  447. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_uninstall.py +0 -0
  448. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_uninstall_windows.py +0 -0
  449. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_versioning.py +0 -0
  450. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_webhook_delivery.py +0 -0
  451. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_webhook_signer.py +0 -0
  452. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_webhook_signer_properties.py +0 -0
  453. {observal_cli-0.3.3 → observal_cli-0.3.4}/tests/test_worker_phase5.py +0 -0
  454. {observal_cli-0.3.3 → observal_cli-0.3.4}/tools/release.sh +0 -0
  455. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/.gitignore +0 -0
  456. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/AGENTS.md +0 -0
  457. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/README.md +0 -0
  458. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/helpers.ts +0 -0
  459. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/kiro-agent-compat.spec.ts +0 -0
  460. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/kiro-cli.spec.ts +0 -0
  461. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/kiro-hooks.spec.ts +0 -0
  462. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/kiro-lifecycle.spec.ts +0 -0
  463. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/kiro-live.spec.ts +0 -0
  464. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/kiro-otlp-logs.spec.ts +0 -0
  465. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/kiro-otlp-traces.spec.ts +0 -0
  466. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/kiro-web-agents.spec.ts +0 -0
  467. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/kiro-web-traces.spec.ts +0 -0
  468. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/shim-merge.spec.ts +0 -0
  469. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/sso-login.spec.ts +0 -0
  470. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/e2e/unarchive-agent.spec.ts +0 -0
  471. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/eslint.config.mjs +0 -0
  472. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/next.config.ts +0 -0
  473. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/package.json +0 -0
  474. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/playwright.config.ts +0 -0
  475. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/pnpm-lock.yaml +0 -0
  476. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/pnpm-workspace.yaml +0 -0
  477. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/postcss.config.mjs +0 -0
  478. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/public/file.svg +0 -0
  479. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/public/globe.svg +0 -0
  480. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/public/next.svg +0 -0
  481. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/public/vercel.svg +0 -0
  482. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/public/window.svg +0 -0
  483. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/audit-log/page.tsx +0 -0
  484. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/dashboard/page.tsx +0 -0
  485. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/diagnostics/page.tsx +0 -0
  486. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/errors/page.tsx +0 -0
  487. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/eval/[agentId]/page.tsx +0 -0
  488. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/eval/page.tsx +0 -0
  489. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/layout.tsx +0 -0
  490. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/review/page.tsx +0 -0
  491. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/security-events/page.tsx +0 -0
  492. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/settings/page.tsx +0 -0
  493. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/sso/page.tsx +0 -0
  494. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(admin)/users/page.tsx +0 -0
  495. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(auth)/device/page.tsx +0 -0
  496. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(auth)/layout.tsx +0 -0
  497. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(auth)/login/page.tsx +0 -0
  498. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(registry)/agents/[id]/page.tsx +0 -0
  499. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(registry)/agents/builder/page.tsx +0 -0
  500. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(registry)/agents/page.tsx +0 -0
  501. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(registry)/components/[id]/page.tsx +0 -0
  502. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(registry)/components/page.tsx +0 -0
  503. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(registry)/layout.tsx +0 -0
  504. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(registry)/leaderboard/page.tsx +0 -0
  505. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(registry)/page.tsx +0 -0
  506. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/(user)/layout.tsx +0 -0
  507. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/favicon.ico +0 -0
  508. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/globals.css +0 -0
  509. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/icon.png +0 -0
  510. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/layout.tsx +0 -0
  511. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/app/providers.tsx +0 -0
  512. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/builder/preview-panel.tsx +0 -0
  513. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/builder/sortable-component-list.tsx +0 -0
  514. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/builder/validation-panel.tsx +0 -0
  515. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/agent-aggregate-chart.tsx +0 -0
  516. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/bar-list.tsx +0 -0
  517. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/dashboard-card.tsx +0 -0
  518. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/dimension-radar.tsx +0 -0
  519. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/efficiency-metrics.tsx +0 -0
  520. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/export-button.tsx +0 -0
  521. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/latency-heatmap.tsx +0 -0
  522. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/no-data.tsx +0 -0
  523. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/penalty-accordion.tsx +0 -0
  524. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/query-error.tsx +0 -0
  525. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/score-overview.tsx +0 -0
  526. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/session-dag.tsx +0 -0
  527. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/stat-card.tsx +0 -0
  528. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/time-range-select.tsx +0 -0
  529. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/top-items-card.tsx +0 -0
  530. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/dashboard/trend-chart.tsx +0 -0
  531. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/layouts/admin-guard.tsx +0 -0
  532. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/layouts/auth-guard.tsx +0 -0
  533. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/layouts/dashboard-shell.tsx +0 -0
  534. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/layouts/page-header.tsx +0 -0
  535. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/layouts/role-guard.tsx +0 -0
  536. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/nav/command-menu.tsx +0 -0
  537. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/nav/github-star-banner.tsx +0 -0
  538. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/nav/nav-user.tsx +0 -0
  539. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/nav/registry-sidebar.tsx +0 -0
  540. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/agent-card.tsx +0 -0
  541. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/component-card.tsx +0 -0
  542. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/feedback-list.tsx +0 -0
  543. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/ide-badges.tsx +0 -0
  544. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/install-dialog.tsx +0 -0
  545. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/metrics-panel.tsx +0 -0
  546. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/pull-command.tsx +0 -0
  547. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/registry-detail.tsx +0 -0
  548. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/registry-table.tsx +0 -0
  549. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/review-form.tsx +0 -0
  550. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/status-badge.tsx +0 -0
  551. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/registry/submit-component-dialog.tsx +0 -0
  552. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/review/review-detail-sheet.tsx +0 -0
  553. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/review/validation-badges.tsx +0 -0
  554. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/shared/empty-state.tsx +0 -0
  555. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/shared/error-state.tsx +0 -0
  556. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/shared/skeleton-layouts.tsx +0 -0
  557. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/traces/span-tree.tsx +0 -0
  558. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/traces/trace-detail.tsx +0 -0
  559. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/avatar.tsx +0 -0
  560. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/badge.tsx +0 -0
  561. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/breadcrumb.tsx +0 -0
  562. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/button.tsx +0 -0
  563. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/card.tsx +0 -0
  564. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/checkbox.tsx +0 -0
  565. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/command.tsx +0 -0
  566. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/dialog.tsx +0 -0
  567. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/dropdown-menu.tsx +0 -0
  568. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/input.tsx +0 -0
  569. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/label.tsx +0 -0
  570. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/popover.tsx +0 -0
  571. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/progress.tsx +0 -0
  572. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/resizable.tsx +0 -0
  573. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/scroll-area.tsx +0 -0
  574. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/select.tsx +0 -0
  575. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/separator.tsx +0 -0
  576. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/sheet.tsx +0 -0
  577. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/sidebar.tsx +0 -0
  578. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/skeleton.tsx +0 -0
  579. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/sonner.tsx +0 -0
  580. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/switch.tsx +0 -0
  581. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/table.tsx +0 -0
  582. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/tabs.tsx +0 -0
  583. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/textarea.tsx +0 -0
  584. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/theme-switcher.tsx +0 -0
  585. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/components/ui/tooltip.tsx +0 -0
  586. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/hooks/use-admin-guard.ts +0 -0
  587. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/hooks/use-api.ts +0 -0
  588. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/hooks/use-auth.ts +0 -0
  589. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/hooks/use-deployment-config.ts +0 -0
  590. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/hooks/use-mobile.ts +0 -0
  591. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/hooks/use-role-guard.ts +0 -0
  592. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/lib/api.ts +0 -0
  593. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/lib/export.ts +0 -0
  594. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/lib/query-client.ts +0 -0
  595. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/lib/types.ts +0 -0
  596. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/src/lib/utils.ts +0 -0
  597. {observal_cli-0.3.3 → observal_cli-0.3.4}/web/tsconfig.json +0 -0
@@ -0,0 +1,60 @@
1
+ # Version control
2
+ **/.git
3
+
4
+ # Python artifacts
5
+ **/__pycache__
6
+ **/.venv
7
+ *.pyc
8
+ .pytest_cache/
9
+ .coverage
10
+ htmlcov/
11
+
12
+ # Node.js artifacts
13
+ **/node_modules
14
+ **/.next
15
+
16
+ # Documentation (not copied by any Dockerfile)
17
+ *.md
18
+ LICENSE
19
+ docs/
20
+ screenshots/
21
+
22
+ # Testing (not shipped in images)
23
+ tests/
24
+
25
+ # CLI tool (separate distribution, not in API or web image)
26
+ observal_cli/
27
+
28
+ # Development tooling
29
+ .github/
30
+ .vscode/
31
+ .idea/
32
+ *.code-workspace
33
+
34
+ # Scripts and tools (not needed in containers)
35
+ scripts/
36
+ tools/
37
+
38
+ # Demo configs
39
+ demo/
40
+
41
+ # Monitoring configs (volume-mounted at runtime, not baked in)
42
+ grafana/
43
+ prometheus.yml
44
+ otel-collector-config.yaml
45
+
46
+ # Docker sub-configs (not needed inside images)
47
+ docker/docker-compose*.yml
48
+ docker/clickhouse/
49
+ docker/nginx*.conf
50
+ docker/server-package/
51
+
52
+ # Environment and logs
53
+ .env
54
+ .env.*
55
+ !.env.example
56
+ *.log
57
+
58
+ # Misc
59
+ renovate.json
60
+ cliff.toml
@@ -2,6 +2,51 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.3.4] - 2026-04-25
6
+
7
+ ### Added
8
+
9
+ - add copilot-cli doctor checks and SLI repair ([fe8f91a](https://github.com/BlazeUp-AI/Observal/commit/fe8f91af37c6e3d354906c022aaba2e12eb4b816))
10
+ - add copilot-cli scan and hook injection ([8956644](https://github.com/BlazeUp-AI/Observal/commit/8956644008e824ba59675be52448880170a544e8))
11
+ - add copilot-cli server-side config generation ([7c71b94](https://github.com/BlazeUp-AI/Observal/commit/7c71b94b2bdeb3827ecfb48bda0180b065d4de8f))
12
+ - add copilot-cli hook scripts ([4e22c5c](https://github.com/BlazeUp-AI/Observal/commit/4e22c5cf5907c30488e9cb73137495e057463535))
13
+ - add copilot-cli to IDE constants and feature matrix ([065900b](https://github.com/BlazeUp-AI/Observal/commit/065900b63c6f7fd60c1c6d11d9e730d51732293e))
14
+
15
+ ### Documentation
16
+
17
+ - add copilot-cli integration guide ([c459254](https://github.com/BlazeUp-AI/Observal/commit/c459254ee837e396e9d8dc3a9fc8b3c40d7c4cb6))
18
+
19
+ ### Fixed
20
+
21
+ - add missing event name mappings for prompt counting (**copilot**) ([0a3acf7](https://github.com/BlazeUp-AI/Observal/commit/0a3acf7c0f135e79291915a9d5081996a7d54762))
22
+ - auto-shim copilot/opencode MCP servers during login (**auth**) ([3d12220](https://github.com/BlazeUp-AI/Observal/commit/3d1222013fd0c2907ae82f5b346949c4bf673795))
23
+ - match native agent config schema and fix prompt injection (**kiro**) ([cb773cc](https://github.com/BlazeUp-AI/Observal/commit/cb773cc090540150bc1284063d06b6b243c5e5fc))
24
+ - replace fragile cat|sed|curl Unix pipelines with Python hook scripts (**kiro**) ([c304172](https://github.com/BlazeUp-AI/Observal/commit/c304172d8a96ed48e56b9f92d73fa5f876effe29))
25
+ - use LB URL as Dockerfile build-time default for API rewrites (**docker**) ([af54ebd](https://github.com/BlazeUp-AI/Observal/commit/af54ebd826ea4789b88894d51136644c25a4e683))
26
+ - preserve URL scheme in endpoint derivation and fix port issues (**config**) ([ef28cfe](https://github.com/BlazeUp-AI/Observal/commit/ef28cfe33e801c816ce529d6b827d84e14979340))
27
+ - reformat test_ide_config_e2e.py to satisfy ruff (**lint**) ([4c065ba](https://github.com/BlazeUp-AI/Observal/commit/4c065ba732c07dd43326eb3d84bbe12be2b040d8))
28
+ - rename camelCase test function to satisfy ruff N802 (**test**) ([77a57d4](https://github.com/BlazeUp-AI/Observal/commit/77a57d47a276495b8898dd2706fd6321cfda02ae))
29
+ - add Copilot CLI platform detection and hide unsupported fields (**web**) ([2259794](https://github.com/BlazeUp-AI/Observal/commit/22597942a864c521e61d3d3f0d5fbf2cf97552c1))
30
+ - add JSONC parsing and per-event hook names for Copilot CLI (**cli**) ([096fd3c](https://github.com/BlazeUp-AI/Observal/commit/096fd3c5092d0fa0e4d6e439d0e7c86ad85540a3))
31
+ - normalize Copilot CLI payloads and inject event names (**hooks**) ([a9d47fa](https://github.com/BlazeUp-AI/Observal/commit/a9d47faa3e327c64bb8ba5cb7be34c9c212ae50e))
32
+ - respect --ide filter in fallback home scan (**scan**) ([cf379dd](https://github.com/BlazeUp-AI/Observal/commit/cf379ddeaca9b24ab6b2f158e3711da433903520))
33
+ - only trace registered Kiro agents, skip kiro_default (**scan**) ([db39514](https://github.com/BlazeUp-AI/Observal/commit/db3951494f61f3e724c6dfc3fb659badd6e916ba))
34
+ - only trace registered Kiro agents, skip kiro_default (**scan**) ([63d2b5d](https://github.com/BlazeUp-AI/Observal/commit/63d2b5dc21b608e7039ddfbd8794afff5de58943))
35
+ - only trace registered Kiro agents, skip kiro_default (**scan**) ([9cdc9c5](https://github.com/BlazeUp-AI/Observal/commit/9cdc9c5cd7b451c968696fd0dda288c7db8f97d1))
36
+ - preserve host port in proxy headers to fix Kiro agent tracing (**nginx**) ([60dcda9](https://github.com/BlazeUp-AI/Observal/commit/60dcda95124b5e0e06307c66a43db2fde8056907))
37
+
38
+ ### Other
39
+
40
+ - update dependency ruff to v0.15.12 (#575) (**deps**) ([a8a406d](https://github.com/BlazeUp-AI/Observal/commit/a8a406df83a1978b157c0c8d6aac359d70a2da7b))
41
+
42
+ ### Performance
43
+
44
+ - multi-stage API build, expand dockerignore, add nginx gzip (**docker**) ([21fd2a4](https://github.com/BlazeUp-AI/Observal/commit/21fd2a461bd01709df7775655aedc91a07e608e6))
45
+
46
+ ### Testing
47
+
48
+ - update assertions for new config format (**kiro**) ([550ade5](https://github.com/BlazeUp-AI/Observal/commit/550ade505fa9eb1658799bdce050cd140927a2d4))
49
+ - add copilot-cli e2e tests ([dfabf02](https://github.com/BlazeUp-AI/Observal/commit/dfabf0215d6bdbb9bc1d0f0e2fb50e36dbe6f6d4))
5
50
  ## [0.3.3] - 2026-04-24
6
51
 
7
52
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: observal-cli
3
- Version: 0.3.3
3
+ Version: 0.3.4
4
4
  Summary: Observal MCP Server Registry & Agent Registry CLI
5
5
  Project-URL: Homepage, https://github.com/BlazeUp-AI/Observal
6
6
  Project-URL: Repository, https://github.com/BlazeUp-AI/Observal
@@ -1,4 +1,5 @@
1
- FROM python:3.14-slim
1
+ # Build stage
2
+ FROM python:3.14-slim AS builder
2
3
 
3
4
  COPY --from=ghcr.io/astral-sh/uv:0.11.7 /uv /uvx /bin/
4
5
 
@@ -9,16 +10,23 @@ RUN apt-get update && apt-get install -y --no-install-recommends git xmlsec1 lib
9
10
  COPY observal-server/pyproject.toml observal-server/uv.lock ./
10
11
  RUN uv sync --frozen --no-dev --no-install-project
11
12
 
12
- COPY observal-server/ .
13
- COPY ee/ ./ee/
14
- COPY docker/entrypoint.sh /app/entrypoint.sh
15
- RUN sed -i 's/\r$//' /app/entrypoint.sh
13
+ # Runtime stage
14
+ FROM python:3.14-slim
16
15
 
17
16
  RUN groupadd --system --gid 1001 appgroup && \
18
17
  useradd --system --uid 1001 --gid appgroup appuser && \
19
- chown -R appuser:appgroup /app && \
20
18
  mkdir -p /data && chown appuser:appgroup /data
21
19
 
20
+ RUN apt-get update && apt-get install -y --no-install-recommends git xmlsec1 && rm -rf /var/lib/apt/lists/*
21
+
22
+ WORKDIR /app
23
+
24
+ COPY --from=builder --chown=appuser:appgroup /app/.venv /app/.venv
25
+ COPY --chown=appuser:appgroup observal-server/ .
26
+ COPY --chown=appuser:appgroup ee/ ./ee/
27
+ COPY --chown=appuser:appgroup docker/entrypoint.sh /app/entrypoint.sh
28
+ RUN sed -i 's/\r$//' /app/entrypoint.sh
29
+
22
30
  USER appuser
23
31
 
24
32
  EXPOSE 8000
@@ -10,7 +10,8 @@ WORKDIR /app
10
10
  COPY --from=deps /app/node_modules ./node_modules
11
11
  COPY web/ .
12
12
  ENV NEXT_TELEMETRY_DISABLED=1
13
- ENV NEXT_PUBLIC_API_URL=http://observal-api:8000
13
+ ARG NEXT_PUBLIC_API_URL="http://observal-lb:80"
14
+ ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
14
15
  RUN corepack enable pnpm && pnpm run build
15
16
 
16
17
  FROM base AS runner
@@ -189,7 +189,7 @@ services:
189
189
  ports:
190
190
  - "${WEB_HOST_PORT:-3000}:3000"
191
191
  environment:
192
- - NEXT_PUBLIC_API_URL=http://observal-lb:80
192
+ - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL:-http://observal-lb:80}
193
193
  depends_on:
194
194
  observal-lb:
195
195
  condition: service_started
@@ -5,9 +5,16 @@ upstream observal_api {
5
5
  server {
6
6
  listen 80;
7
7
 
8
+ gzip on;
9
+ gzip_types application/json application/javascript text/css text/plain text/xml application/xml;
10
+ gzip_min_length 256;
11
+ gzip_vary on;
12
+ gzip_proxied any;
13
+ gzip_comp_level 5;
14
+
8
15
  location / {
9
16
  proxy_pass http://observal_api;
10
- proxy_set_header Host $host;
17
+ proxy_set_header Host $http_host;
11
18
  proxy_set_header X-Real-IP $remote_addr;
12
19
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
13
20
  proxy_set_header X-Forwarded-Proto $scheme;
@@ -21,9 +21,16 @@ server {
21
21
  ssl_protocols TLSv1.2 TLSv1.3;
22
22
  ssl_ciphers HIGH:!aNULL:!MD5;
23
23
 
24
+ gzip on;
25
+ gzip_types application/json application/javascript text/css text/plain text/xml application/xml;
26
+ gzip_min_length 256;
27
+ gzip_vary on;
28
+ gzip_proxied any;
29
+ gzip_comp_level 5;
30
+
24
31
  location /api/ {
25
32
  proxy_pass http://observal_api;
26
- proxy_set_header Host $host;
33
+ proxy_set_header Host $http_host;
27
34
  proxy_set_header X-Real-IP $remote_addr;
28
35
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
29
36
  proxy_set_header X-Forwarded-Proto $scheme;
@@ -36,22 +43,22 @@ server {
36
43
 
37
44
  location /health {
38
45
  proxy_pass http://observal_api;
39
- proxy_set_header Host $host;
46
+ proxy_set_header Host $http_host;
40
47
  }
41
48
 
42
49
  location /livez {
43
50
  proxy_pass http://observal_api;
44
- proxy_set_header Host $host;
51
+ proxy_set_header Host $http_host;
45
52
  }
46
53
 
47
54
  location /readyz {
48
55
  proxy_pass http://observal_api;
49
- proxy_set_header Host $host;
56
+ proxy_set_header Host $http_host;
50
57
  }
51
58
 
52
59
  location /graphql {
53
60
  proxy_pass http://observal_api;
54
- proxy_set_header Host $host;
61
+ proxy_set_header Host $http_host;
55
62
  proxy_set_header X-Real-IP $remote_addr;
56
63
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
57
64
  proxy_set_header X-Forwarded-Proto $scheme;
@@ -62,7 +69,7 @@ server {
62
69
 
63
70
  location / {
64
71
  proxy_pass http://observal_web;
65
- proxy_set_header Host $host;
72
+ proxy_set_header Host $http_host;
66
73
  proxy_set_header X-Real-IP $remote_addr;
67
74
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
68
75
  proxy_set_header X-Forwarded-Proto $scheme;
@@ -0,0 +1,170 @@
1
+ # Copilot CLI
2
+
3
+ [Copilot CLI](https://docs.github.com/en/copilot/github-copilot-in-the-cli) is the standalone agentic coding CLI from GitHub (binary: `copilot`). Observal uses a hook-based bridge for session lifecycle events and `observal-shim` for MCP server instrumentation.
4
+
5
+ ## What you get
6
+
7
+ * **MCP server instrumentation** via `observal-shim` (or `observal-proxy` for HTTP MCPs)
8
+ * **Session lifecycle events** via hooks — session start/end, user prompts, tool use, errors
9
+ * **Rules** (`.github/copilot-instructions.md`)
10
+
11
+ ## What you don't get (yet)
12
+
13
+ | Limitation | Detail |
14
+ | --- | --- |
15
+ | **Token counts** | Copilot CLI does not expose token usage in hook payloads. |
16
+ | **Cost per call** | No per-call cost data available. |
17
+ | **Session enrichment** | No local conversation store to read turn counts or model info at session end. |
18
+
19
+ ## Setup
20
+
21
+ ### 1. Install Copilot CLI
22
+
23
+ ```bash
24
+ curl -fsSL https://gh.io/copilot-install | bash
25
+ copilot --version
26
+ ```
27
+
28
+ ### 2. Install the Observal CLI
29
+
30
+ ```bash
31
+ curl -fsSL https://raw.githubusercontent.com/BlazeUp-AI/Observal/main/install.sh | bash
32
+ observal auth login
33
+ ```
34
+
35
+ ### 3. Instrument Copilot CLI
36
+
37
+ ```bash
38
+ observal scan --ide copilot-cli --home
39
+ ```
40
+
41
+ This does three things:
42
+
43
+ 1. **Wraps MCP servers** in `~/.copilot/mcp-config.json` with `observal-shim`
44
+ 2. **Injects hooks** into `~/.copilot/config.json` for session lifecycle telemetry
45
+ 3. **Discovers** any project-level MCP servers in `.mcp.json`
46
+
47
+ ### 4. (Optional) Pull an agent from the registry
48
+
49
+ ```bash
50
+ observal agent list
51
+ observal pull <agent-id> --ide copilot-cli
52
+ ```
53
+
54
+ This writes:
55
+
56
+ | File | Purpose |
57
+ | --- | --- |
58
+ | `.github/copilot-instructions.md` | Rules / system instructions |
59
+ | `.mcp.json` | MCP servers wrapped with `observal-shim` |
60
+
61
+ ### 5. Diagnose
62
+
63
+ ```bash
64
+ observal doctor --ide copilot-cli
65
+ ```
66
+
67
+ ### 6. Repair hooks
68
+
69
+ ```bash
70
+ observal doctor sli --ide copilot-cli
71
+ ```
72
+
73
+ Then restart Copilot CLI.
74
+
75
+ ## Config locations
76
+
77
+ | Purpose | Path |
78
+ | --- | --- |
79
+ | Settings + hooks | `~/.copilot/config.json` |
80
+ | User MCP servers | `~/.copilot/mcp-config.json` |
81
+ | Project MCP servers | `.mcp.json` (project root) |
82
+ | Rules | `.github/copilot-instructions.md` |
83
+
84
+ ## How telemetry reaches Observal
85
+
86
+ ### Channel 1: MCP tool calls
87
+
88
+ Same as everywhere else — `observal-shim` sits between Copilot CLI and each MCP server. Every call becomes a span.
89
+
90
+ ### Channel 2: Session lifecycle (via hooks)
91
+
92
+ Observal installs hooks into `~/.copilot/config.json` under the `hooks` key. They fire at these events:
93
+
94
+ | Copilot CLI event | What it captures |
95
+ | --- | --- |
96
+ | `sessionStart` | Session begins |
97
+ | `userPromptSubmitted` | The user's prompt |
98
+ | `preToolUse` | Tool name and input (before the call) |
99
+ | `postToolUse` | Tool response (after the call) |
100
+ | `sessionEnd` | Session ends |
101
+ | `errorOccurred` | Errors during the session |
102
+
103
+ Each hook runs a Python script that reads stdin JSON, injects Observal metadata (`service_name`, `session_id`, user identity), and POSTs to `http://localhost:8000/api/v1/otel/hooks`.
104
+
105
+ ### Example hook in config.json
106
+
107
+ ```json
108
+ {
109
+ "hooks": {
110
+ "sessionStart": [
111
+ {
112
+ "type": "command",
113
+ "bash": "cat | python3 /path/to/copilot_cli_hook.py --url http://localhost:8000/api/v1/otel/hooks",
114
+ "powershell": "python /path/to/copilot_cli_hook.py --url http://localhost:8000/api/v1/otel/hooks",
115
+ "timeoutSec": 10
116
+ }
117
+ ]
118
+ }
119
+ }
120
+ ```
121
+
122
+ You don't write these by hand — `observal scan --ide copilot-cli --home` generates them.
123
+
124
+ ## View your traces
125
+
126
+ Open `http://localhost:3000/traces` and filter by **IDE -> copilot-cli**.
127
+
128
+ Or CLI:
129
+
130
+ ```bash
131
+ observal ops traces --limit 20
132
+ ```
133
+
134
+ ## Troubleshooting
135
+
136
+ ### Hooks not firing — sessions not appearing in the dashboard
137
+
138
+ 1. Confirm hooks are in `~/.copilot/config.json`:
139
+ ```bash
140
+ cat ~/.copilot/config.json | python3 -m json.tool
141
+ ```
142
+ 2. Verify `disableAllHooks` is not `true` in the config.
143
+ 3. Confirm the URL in the hook commands matches your server.
144
+ 4. Re-inject hooks: `observal doctor sli --ide copilot-cli`
145
+
146
+ ### `observal scan` wraps 0 servers
147
+
148
+ Your Copilot CLI MCP config may be empty. Check:
149
+
150
+ ```bash
151
+ cat ~/.copilot/mcp-config.json # user-level
152
+ cat .mcp.json # project-level
153
+ ```
154
+
155
+ Add at least one MCP server first, then re-run `scan`.
156
+
157
+ ### `observal-shim` not found
158
+
159
+ Reinstall:
160
+
161
+ ```bash
162
+ curl -fsSL https://raw.githubusercontent.com/BlazeUp-AI/Observal/main/install.sh | bash
163
+ which observal-shim
164
+ ```
165
+
166
+ ## Related
167
+
168
+ * [`observal pull`](../cli/pull.md)
169
+ * [`observal scan`](../cli/scan.md)
170
+ * [`observal doctor`](../cli/doctor.md)
@@ -19,7 +19,7 @@ def derive_endpoints(request: Request | None = None) -> dict[str, str]:
19
19
 
20
20
  parsed = urlparse(public_url)
21
21
  hostname = parsed.hostname or "localhost"
22
- scheme = "http" if hostname in ("localhost", "127.0.0.1") else "https"
22
+ scheme = parsed.scheme or ("http" if hostname in ("localhost", "127.0.0.1") else "https")
23
23
 
24
24
  otlp_http = settings.OTLP_HTTP_URL.rstrip("/") if settings.OTLP_HTTP_URL else f"{scheme}://{hostname}:4318"
25
25
  otlp_grpc = settings.OTLP_GRPC_URL.rstrip("/") if settings.OTLP_GRPC_URL else f"{scheme}://{hostname}:4317"
@@ -982,11 +982,13 @@ _COPILOT_TO_CC_EVENT = {
982
982
  "onPostToolUse": "PostToolUse",
983
983
  "postToolUse": "PostToolUse",
984
984
  "onUserPromptSubmitted": "UserPromptSubmit",
985
+ "userPromptSubmitted": "UserPromptSubmit",
985
986
  "onSessionStart": "SessionStart",
986
987
  "sessionStart": "SessionStart",
987
988
  "onSessionEnd": "Stop",
988
989
  "sessionEnd": "Stop",
989
990
  "onErrorOccurred": "StopFailure",
991
+ "errorOccurred": "StopFailure",
990
992
  "subagent.started": "SubagentStart",
991
993
  "subagent.completed": "SubagentStop",
992
994
  "subagent.failed": "SubagentStop",
@@ -349,8 +349,9 @@ async def telemetry_status(current_user: User = Depends(require_role(UserRole.ad
349
349
  )
350
350
 
351
351
 
352
- # Kiro CLI uses camelCase event names; normalize to PascalCase
352
+ # Kiro CLI and Copilot CLI use camelCase event names; normalize to PascalCase
353
353
  _KIRO_EVENT_MAP = {
354
+ # Kiro events
354
355
  "agentSpawn": "SessionStart",
355
356
  "userPromptSubmit": "UserPromptSubmit",
356
357
  "promptSubmit": "UserPromptSubmit",
@@ -358,12 +359,17 @@ _KIRO_EVENT_MAP = {
358
359
  "postToolUse": "PostToolUse",
359
360
  "stop": "Stop",
360
361
  "agentStop": "Stop",
362
+ # Copilot CLI events
363
+ "sessionStart": "SessionStart",
364
+ "sessionEnd": "Stop",
365
+ "userPromptSubmitted": "UserPromptSubmit",
366
+ "errorOccurred": "StopFailure",
361
367
  }
362
368
 
363
369
 
364
370
  @router.post("/hooks")
365
371
  async def ingest_hook(request: Request, current_user: User = Depends(require_role(UserRole.user))):
366
- """Ingest raw hook JSON from Claude Code/Kiro."""
372
+ """Ingest raw hook JSON from Claude Code/Kiro/Copilot CLI."""
367
373
  project_id = get_project_id(current_user)
368
374
  body = await request.json()
369
375
 
@@ -407,7 +413,7 @@ async def ingest_hook(request: Request, current_user: User = Depends(require_rol
407
413
  "end_time": now,
408
414
  "latency_ms": None,
409
415
  "status": "success",
410
- "ide": "",
416
+ "ide": body.get("service_name", ""),
411
417
  "environment": "default",
412
418
  "metadata": {},
413
419
  "token_count_input": None,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "observal-server"
3
- version = "0.3.3"
3
+ version = "0.3.4"
4
4
  description = "Observal API server"
5
5
  requires-python = ">=3.11"
6
6
  license = "Apache-2.0"
@@ -22,6 +22,7 @@ VALID_IDES: list[str] = [
22
22
  "vscode",
23
23
  "codex",
24
24
  "copilot",
25
+ "copilot-cli",
25
26
  "opencode",
26
27
  ]
27
28
 
@@ -48,6 +49,7 @@ IDE_FEATURE_MATRIX: dict[str, set[str]] = {
48
49
  "gemini-cli": {"hook_bridge", "mcp_servers", "rules", "otlp_telemetry"},
49
50
  "codex": {"rules"},
50
51
  "copilot": {"mcp_servers", "rules"},
52
+ "copilot-cli": {"mcp_servers", "rules", "hook_bridge"},
51
53
  "opencode": {"mcp_servers", "rules"},
52
54
  "vscode": {"mcp_servers", "rules"},
53
55
  }
@@ -18,6 +18,7 @@ from typing import Literal
18
18
 
19
19
  from pydantic import BaseModel, Field
20
20
 
21
+ from services.agent_config_generator import _wrap_kiro_prompt
21
22
  from services.agent_resolver import ResolvedAgent, ResolvedComponent
22
23
 
23
24
  logger = logging.getLogger(__name__)
@@ -99,6 +100,7 @@ class AgentManifest(BaseModel):
99
100
  model_name: str = ""
100
101
  components: ManifestComponents = Field(default_factory=ManifestComponents)
101
102
  errors: list[ManifestError] = Field(default_factory=list)
103
+ otlp_http_url: str = ""
102
104
 
103
105
  def model_dump_compact(self) -> dict:
104
106
  """Clean manifest output (no empty lists, no None values)."""
@@ -410,7 +412,7 @@ def _generate_claude_code(manifest: AgentManifest) -> IdeAgentConfig:
410
412
  mcp_servers=mcp_entries,
411
413
  env={
412
414
  "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
413
- "OTEL_EXPORTER_OTLP_ENDPOINT": getattr(manifest, "_otlp_http_url", "") or "http://localhost:4318",
415
+ "OTEL_EXPORTER_OTLP_ENDPOINT": manifest.otlp_http_url or "http://localhost:4318",
414
416
  "OTEL_EXPORTER_OTLP_PROTOCOL": "http/json",
415
417
  },
416
418
  setup_commands=setup_commands,
@@ -475,7 +477,7 @@ def _generate_gemini_cli(manifest: AgentManifest) -> IdeAgentConfig:
475
477
  """Generate Gemini CLI agent config (GEMINI.md + .gemini/settings.json)."""
476
478
  mcp_entries = _build_mcp_entries(manifest)
477
479
  rules_content = _build_rules_markdown(manifest)
478
- otlp_url = getattr(manifest, "_otlp_http_url", "") or "http://localhost:4318"
480
+ otlp_url = manifest.otlp_http_url or "http://localhost:4318"
479
481
 
480
482
  settings: dict = {
481
483
  "telemetry": {
@@ -516,12 +518,21 @@ def _generate_kiro(manifest: AgentManifest) -> IdeAgentConfig:
516
518
  kiro_agent = {
517
519
  "name": safe_name,
518
520
  "description": manifest.description[:200] if manifest.description else "",
519
- "prompt": manifest.prompt,
521
+ "prompt": _wrap_kiro_prompt(manifest.prompt, safe_name),
520
522
  "mcpServers": mcp_entries,
521
- "tools": [f"@{n}" for n in mcp_entries] + ["read", "write", "shell"],
523
+ "tools": ["*"],
524
+ "toolAliases": {},
525
+ "allowedTools": [],
526
+ "resources": [
527
+ "file://AGENTS.md",
528
+ "file://README.md",
529
+ "skill://.kiro/skills/*/SKILL.md",
530
+ "skill://~/.kiro/skills/*/SKILL.md",
531
+ ],
522
532
  "hooks": {},
533
+ "toolsSettings": {},
523
534
  "includeMcpJson": True,
524
- "model": manifest.model_name or "default",
535
+ "model": None, # Kiro uses "auto" model selection; actual model captured via SQLite in hooks
525
536
  }
526
537
 
527
538
  skill_files = _build_skill_files(manifest, "kiro")
@@ -543,7 +554,7 @@ def _generate_kiro(manifest: AgentManifest) -> IdeAgentConfig:
543
554
  def _generate_codex(manifest: AgentManifest) -> IdeAgentConfig:
544
555
  """Generate Codex agent config (AGENTS.md + ~/.codex/config.toml)."""
545
556
  rules_content = _build_rules_markdown(manifest)
546
- otlp_url = getattr(manifest, "_otlp_http_url", "") or "http://localhost:4318"
557
+ otlp_url = manifest.otlp_http_url or "http://localhost:4318"
547
558
 
548
559
  toml_snippet = (
549
560
  "[otel]\n"
@@ -610,6 +621,45 @@ def _generate_copilot(manifest: AgentManifest) -> IdeAgentConfig:
610
621
  )
611
622
 
612
623
 
624
+ def _generate_copilot_cli(manifest: AgentManifest) -> IdeAgentConfig:
625
+ """Generate Copilot CLI agent config (.github/copilot-instructions.md + .mcp.json)."""
626
+ mcp_entries = _build_mcp_entries(manifest)
627
+ rules_content = _build_rules_markdown(manifest)
628
+
629
+ files = [
630
+ AgentFile(
631
+ path=".github/copilot-instructions.md",
632
+ content=rules_content,
633
+ format="markdown",
634
+ ),
635
+ ]
636
+
637
+ if mcp_entries:
638
+ copilot_cli_mcp_entries = {}
639
+ for k, v in mcp_entries.items():
640
+ copilot_cli_mcp_entries[k] = {
641
+ "type": "stdio",
642
+ "command": v["command"],
643
+ "args": v.get("args", []),
644
+ "tools": ["*"],
645
+ }
646
+ if v.get("env"):
647
+ copilot_cli_mcp_entries[k]["env"] = v["env"]
648
+ files.append(
649
+ AgentFile(
650
+ path=".mcp.json",
651
+ content={"mcpServers": copilot_cli_mcp_entries},
652
+ format="json",
653
+ ),
654
+ )
655
+
656
+ return IdeAgentConfig(
657
+ ide="copilot-cli",
658
+ files=files,
659
+ mcp_servers=mcp_entries,
660
+ )
661
+
662
+
613
663
  def _generate_opencode(manifest: AgentManifest) -> IdeAgentConfig:
614
664
  """Generate OpenCode agent config (AGENTS.md + opencode.json with flat command arrays)."""
615
665
  mcp_entries = _build_mcp_entries(manifest)
@@ -657,6 +707,8 @@ _IDE_GENERATORS = {
657
707
  "kiro": _generate_kiro,
658
708
  "codex": _generate_codex,
659
709
  "copilot": _generate_copilot,
710
+ "copilot-cli": _generate_copilot_cli,
711
+ "copilot_cli": _generate_copilot_cli,
660
712
  "opencode": _generate_opencode,
661
713
  }
662
714
 
@@ -669,6 +721,7 @@ SUPPORTED_IDES = list(
669
721
  "kiro",
670
722
  "codex",
671
723
  "copilot",
724
+ "copilot-cli",
672
725
  "opencode",
673
726
  }
674
727
  )
@@ -685,5 +738,5 @@ def generate_ide_agent_files(manifest: AgentManifest, ide: str, otlp_http_url: s
685
738
  raise ValueError(f"Unsupported IDE: {ide!r}. Supported: {', '.join(SUPPORTED_IDES)}")
686
739
  # Thread the OTLP URL to generators that need it
687
740
  if otlp_http_url:
688
- manifest._otlp_http_url = otlp_http_url # type: ignore[attr-defined]
741
+ manifest.otlp_http_url = otlp_http_url
689
742
  return generator(manifest)