observal-cli 1.2.0__tar.gz → 1.2.1__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 (902) hide show
  1. {observal_cli-1.2.0 → observal_cli-1.2.1}/CHANGELOG.md +12 -0
  2. {observal_cli-1.2.0 → observal_cli-1.2.1}/PKG-INFO +1 -1
  3. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/auth.py +13 -2
  4. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/sessions.py +3 -2
  5. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/pyproject.toml +1 -1
  6. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/claude_code.py +2 -7
  7. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/cursor.py +2 -7
  8. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/helpers.py +2 -0
  9. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/kiro.py +2 -6
  10. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/pi.py +2 -11
  11. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/uv.lock +1 -1
  12. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_auth.py +1 -1
  13. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_pull.py +51 -31
  14. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/version_check.py +2 -3
  15. {observal_cli-1.2.0 → observal_cli-1.2.1}/packages/pi-extension/package.json +1 -1
  16. {observal_cli-1.2.0 → observal_cli-1.2.1}/pyproject.toml +1 -1
  17. observal_cli-1.2.1/tests/test_sessions_api.py +33 -0
  18. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_version_check.py +29 -2
  19. {observal_cli-1.2.0 → observal_cli-1.2.1}/uv.lock +1 -1
  20. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/package.json +1 -1
  21. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(auth)/login/page.tsx +7 -14
  22. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(registry)/components/[id]/page.tsx +2 -2
  23. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/layouts/auth-guard.tsx +4 -3
  24. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/layouts/role-guard.tsx +4 -3
  25. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/lib/api.ts +5 -1
  26. {observal_cli-1.2.0 → observal_cli-1.2.1}/.clabot +0 -0
  27. {observal_cli-1.2.0 → observal_cli-1.2.1}/.clabot.license +0 -0
  28. {observal_cli-1.2.0 → observal_cli-1.2.1}/.dockerignore +0 -0
  29. {observal_cli-1.2.0 → observal_cli-1.2.1}/.editorconfig +0 -0
  30. {observal_cli-1.2.0 → observal_cli-1.2.1}/.env.example +0 -0
  31. {observal_cli-1.2.0 → observal_cli-1.2.1}/.gitattributes +0 -0
  32. {observal_cli-1.2.0 → observal_cli-1.2.1}/.gitbook.yaml +0 -0
  33. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/ISSUE_TEMPLATE/bug_report_form.yml +0 -0
  34. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  35. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  36. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/pull_request_template.md +0 -0
  37. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/badge-ghcr-pulls.yml +0 -0
  38. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/ci.yml +0 -0
  39. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/codeql.yml +0 -0
  40. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/deploy.yml +0 -0
  41. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/e2e-frontend.yml +0 -0
  42. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/gitleaks.yml +0 -0
  43. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/pr-labels.yml +0 -0
  44. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/release-enterprise.yml +0 -0
  45. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/release.yml +0 -0
  46. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/sbom.yml +0 -0
  47. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/stale.yml +0 -0
  48. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/take-command.yml +0 -0
  49. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/terraform.yml +0 -0
  50. {observal_cli-1.2.0 → observal_cli-1.2.1}/.github/workflows/update-homebrew-tap.yml +0 -0
  51. {observal_cli-1.2.0 → observal_cli-1.2.1}/.gitignore +0 -0
  52. {observal_cli-1.2.0 → observal_cli-1.2.1}/.gitleaks.toml +0 -0
  53. {observal_cli-1.2.0 → observal_cli-1.2.1}/.pre-commit-config.yaml +0 -0
  54. {observal_cli-1.2.0 → observal_cli-1.2.1}/AGENTS.md +0 -0
  55. {observal_cli-1.2.0 → observal_cli-1.2.1}/AI_POLICY.md +0 -0
  56. {observal_cli-1.2.0 → observal_cli-1.2.1}/CLA.md +0 -0
  57. {observal_cli-1.2.0 → observal_cli-1.2.1}/CODE_OF_CONDUCT.md +0 -0
  58. {observal_cli-1.2.0 → observal_cli-1.2.1}/CONTRIBUTING.md +0 -0
  59. {observal_cli-1.2.0 → observal_cli-1.2.1}/LICENSE +0 -0
  60. {observal_cli-1.2.0 → observal_cli-1.2.1}/LICENSES/AGPL-3.0-only.txt +0 -0
  61. {observal_cli-1.2.0 → observal_cli-1.2.1}/LICENSES/LicenseRef-Observal-Enterprise.txt +0 -0
  62. {observal_cli-1.2.0 → observal_cli-1.2.1}/LICENSES/OFL-1.1.txt +0 -0
  63. {observal_cli-1.2.0 → observal_cli-1.2.1}/Makefile +0 -0
  64. {observal_cli-1.2.0 → observal_cli-1.2.1}/README.md +0 -0
  65. {observal_cli-1.2.0 → observal_cli-1.2.1}/REUSE.toml +0 -0
  66. {observal_cli-1.2.0 → observal_cli-1.2.1}/SECURITY.md +0 -0
  67. {observal_cli-1.2.0 → observal_cli-1.2.1}/SETUP.md +0 -0
  68. {observal_cli-1.2.0 → observal_cli-1.2.1}/cliff.toml +0 -0
  69. {observal_cli-1.2.0 → observal_cli-1.2.1}/codecov.yml +0 -0
  70. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/Dockerfile.api +0 -0
  71. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/Dockerfile.web +0 -0
  72. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/clickhouse/config.d/memory.xml +0 -0
  73. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/clickhouse/users.d/memory.xml +0 -0
  74. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/docker-compose.dev.yml +0 -0
  75. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/docker-compose.enterprise.yml +0 -0
  76. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/docker-compose.production.yml +0 -0
  77. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/docker-compose.yml +0 -0
  78. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/entrypoint.sh +0 -0
  79. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/nginx.conf +0 -0
  80. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/nginx.dev.conf +0 -0
  81. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/nginx.production.conf +0 -0
  82. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/server-package/docker-compose.yml +0 -0
  83. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/server-package/env.template +0 -0
  84. {observal_cli-1.2.0 → observal_cli-1.2.1}/docker/server-package/setup.sh +0 -0
  85. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/DEVELOPMENT_GUIDE.md +0 -0
  86. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/INSIGHTS_V2_ROADMAP.md +0 -0
  87. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/README.md +0 -0
  88. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/SUMMARY.md +0 -0
  89. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/adding-an-ide.md +0 -0
  90. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/README.md +0 -0
  91. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/admin.md +0 -0
  92. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/agent.md +0 -0
  93. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/auth.md +0 -0
  94. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/component.md +0 -0
  95. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/config.md +0 -0
  96. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/doctor.md +0 -0
  97. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/migrate.md +0 -0
  98. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/models.md +0 -0
  99. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/ops.md +0 -0
  100. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/profile.md +0 -0
  101. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/prompt.md +0 -0
  102. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/pull.md +0 -0
  103. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/registry.md +0 -0
  104. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/scan.md +0 -0
  105. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/self.md +0 -0
  106. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/server.md +0 -0
  107. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/support.md +0 -0
  108. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/cli/uninstall.md +0 -0
  109. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/e2e-test-checklist-enterprise.md +0 -0
  110. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/e2e-test-checklist.md +0 -0
  111. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/getting-started/core-concepts.md +0 -0
  112. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/getting-started/installation.md +0 -0
  113. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/getting-started/quickstart.md +0 -0
  114. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/hooks.md +0 -0
  115. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/ObservalLogo-removebg-preview.png +0 -0
  116. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/agent-builder.png +0 -0
  117. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/agents-list.png +0 -0
  118. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/command-palette.png +0 -0
  119. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/components-list.png +0 -0
  120. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/dashboard.png +0 -0
  121. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/errors.png +0 -0
  122. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/leaderboard.png +0 -0
  123. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/login-local.png +0 -0
  124. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/registry-home.png +0 -0
  125. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/review.png +0 -0
  126. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/session-info-claude-code.png +0 -0
  127. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/settings.png +0 -0
  128. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/traces.png +0 -0
  129. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/images/users.png +0 -0
  130. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/audit_logging.png +0 -0
  131. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/builder.png +0 -0
  132. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/complete_capture_thinking_response.png +0 -0
  133. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/component_registry.png +0 -0
  134. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/insights.png +0 -0
  135. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/leaderboard.png +0 -0
  136. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/registry.png +0 -0
  137. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/review-diff.png +0 -0
  138. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/review.png +0 -0
  139. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/ses1.png +0 -0
  140. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/span.png +0 -0
  141. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/img/traces.png +0 -0
  142. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/logo-light.svg +0 -0
  143. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/logo.svg +0 -0
  144. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/reference/api-endpoints.md +0 -0
  145. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/reference/config-files.md +0 -0
  146. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/reference/environment-variables.md +0 -0
  147. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/reference/hooks-spec.md +0 -0
  148. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/sandboxes.md +0 -0
  149. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/screenshots/630-edit-form/01-edit-form-overview.png +0 -0
  150. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/screenshots/630-edit-form/02-components-picker.png +0 -0
  151. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/screenshots/630-edit-form/03-goal-template.png +0 -0
  152. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/screenshots/630-edit-form/04-dirty-state-actions.png +0 -0
  153. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/screenshots/630-edit-form/05-version-bump-dialog.png +0 -0
  154. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/screenshots/630-edit-form/06-discard-confirm-dialog.png +0 -0
  155. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/README.md +0 -0
  156. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/authentication.md +0 -0
  157. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/aws-terraform.md +0 -0
  158. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/backup-and-restore.md +0 -0
  159. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/configuration.md +0 -0
  160. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/databases.md +0 -0
  161. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/docker-compose.md +0 -0
  162. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/ports-and-volumes.md +0 -0
  163. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/releasing.md +0 -0
  164. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/requirements.md +0 -0
  165. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/telemetry-pipeline.md +0 -0
  166. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/troubleshooting.md +0 -0
  167. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-hosting/upgrades.md +0 -0
  168. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/self-observability.md +0 -0
  169. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/use-cases/README.md +0 -0
  170. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/use-cases/debug-agent-failures.md +0 -0
  171. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/use-cases/observe-mcp-traffic.md +0 -0
  172. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/use-cases/share-agent-configs.md +0 -0
  173. {observal_cli-1.2.0 → observal_cli-1.2.1}/docs/use-cases/team-registry.md +0 -0
  174. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/AGENTS.md +0 -0
  175. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/LICENSE +0 -0
  176. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/README.md +0 -0
  177. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/__init__.py +0 -0
  178. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/docs/cli-sso.md +0 -0
  179. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/docs/cli.md +0 -0
  180. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/docs/oidc-setup.md +0 -0
  181. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/docs/saml-setup.md +0 -0
  182. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/docs/scim-setup.md +0 -0
  183. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/license.py +0 -0
  184. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_insights/__init__.py +0 -0
  185. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_insights/_deps.py +0 -0
  186. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_insights/batch.py +0 -0
  187. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_insights/facets.py +0 -0
  188. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_insights/generator.py +0 -0
  189. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_insights/html_export.py +0 -0
  190. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_insights/sections.py +0 -0
  191. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_insights/session_meta_extractor.py +0 -0
  192. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_insights/transcript.py +0 -0
  193. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/__init__.py +0 -0
  194. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/middleware/__init__.py +0 -0
  195. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/middleware/enterprise_guard.py +0 -0
  196. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/routes/__init__.py +0 -0
  197. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/routes/admin_sso.py +0 -0
  198. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/routes/audit.py +0 -0
  199. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/routes/exec_dashboard.py +0 -0
  200. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/routes/scim.py +0 -0
  201. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/routes/sso_saml.py +0 -0
  202. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/services/__init__.py +0 -0
  203. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/services/audit.py +0 -0
  204. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/services/config_validator.py +0 -0
  205. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/services/saml.py +0 -0
  206. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/observal_server/services/scim_service.py +0 -0
  207. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/plugins/__init__.py +0 -0
  208. {observal_cli-1.2.0 → observal_cli-1.2.1}/ee/scripts/generate_license.py +0 -0
  209. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/dashboards/agent-activity.json +0 -0
  210. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/dashboards/audit-log.json +0 -0
  211. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/dashboards/cost-tracking.json +0 -0
  212. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/dashboards/error-rates.json +0 -0
  213. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/dashboards/performance-resources.json +0 -0
  214. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/dashboards/self-observability.json +0 -0
  215. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/dashboards/session-overview.json +0 -0
  216. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/dashboards/token-usage.json +0 -0
  217. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/dashboards/tool-call-frequency.json +0 -0
  218. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/provisioning/dashboards/default.yaml +0 -0
  219. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/provisioning/datasources/clickhouse.yaml +0 -0
  220. {observal_cli-1.2.0 → observal_cli-1.2.1}/grafana/provisioning/datasources/prometheus.yaml +0 -0
  221. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/.gitignore +0 -0
  222. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/.tflint.hcl +0 -0
  223. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/README.md +0 -0
  224. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/alb.tf +0 -0
  225. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/bootstrap/README.md +0 -0
  226. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/bootstrap/main.tf +0 -0
  227. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/bootstrap/outputs.tf +0 -0
  228. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/bootstrap/variables.tf +0 -0
  229. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/bootstrap/versions.tf +0 -0
  230. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/clickhouse.tf +0 -0
  231. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/dns.tf +0 -0
  232. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/ecs.tf +0 -0
  233. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/examples/minimal/README.md +0 -0
  234. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/examples/minimal/main.tf +0 -0
  235. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/examples/minimal/outputs.tf +0 -0
  236. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/examples/minimal/terraform.tfvars.example +0 -0
  237. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/examples/minimal/variables.tf +0 -0
  238. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/iam.tf +0 -0
  239. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/locals.tf +0 -0
  240. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/logs.tf +0 -0
  241. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/outputs.tf +0 -0
  242. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/postgresql.tf +0 -0
  243. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/redis.tf +0 -0
  244. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/s3.tf +0 -0
  245. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/secrets.tf +0 -0
  246. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/security.tf +0 -0
  247. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/terraform.tfvars.example +0 -0
  248. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/user-data.sh.tftpl +0 -0
  249. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/variables.tf +0 -0
  250. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/versions.tf +0 -0
  251. {observal_cli-1.2.0 → observal_cli-1.2.1}/infra/terraform/aws/vpc.tf +0 -0
  252. {observal_cli-1.2.0 → observal_cli-1.2.1}/install-server.sh +0 -0
  253. {observal_cli-1.2.0 → observal_cli-1.2.1}/install.sh +0 -0
  254. {observal_cli-1.2.0 → observal_cli-1.2.1}/license-policy.yml +0 -0
  255. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/README.md +0 -0
  256. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/alembic/README +0 -0
  257. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/alembic/env.py +0 -0
  258. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/alembic/script.py.mako +0 -0
  259. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/alembic/versions/.gitkeep +0 -0
  260. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/alembic/versions/002_drop_visibility.py +0 -0
  261. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/alembic/versions/003_skill_registry_direct.py +0 -0
  262. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/alembic/versions/004_co_authors.py +0 -0
  263. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/alembic/versions/v1_baseline.py +0 -0
  264. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/alembic.ini +0 -0
  265. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/__init__.py +0 -0
  266. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/deps.py +0 -0
  267. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/graphql.py +0 -0
  268. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/middleware/__init__.py +0 -0
  269. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/middleware/audit.py +0 -0
  270. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/middleware/content_type.py +0 -0
  271. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/middleware/request_id.py +0 -0
  272. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/middleware/trusted_proxy.py +0 -0
  273. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/ratelimit.py +0 -0
  274. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/__init__.py +0 -0
  275. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/admin/__init__.py +0 -0
  276. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/admin/_router.py +0 -0
  277. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/admin/enterprise_settings.py +0 -0
  278. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/admin/helpers.py +0 -0
  279. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/admin/org.py +0 -0
  280. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/admin/retention.py +0 -0
  281. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/admin/users.py +0 -0
  282. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/agent/__init__.py +0 -0
  283. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/agent/_router.py +0 -0
  284. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/agent/crud.py +0 -0
  285. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/agent/draft.py +0 -0
  286. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/agent/helpers.py +0 -0
  287. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/agent/install.py +0 -0
  288. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/agent_versions.py +0 -0
  289. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/alert.py +0 -0
  290. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/audit.py +0 -0
  291. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/bulk.py +0 -0
  292. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/co_authors.py +0 -0
  293. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/component_source.py +0 -0
  294. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/component_versions.py +0 -0
  295. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/config.py +0 -0
  296. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/dashboard.py +0 -0
  297. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/device_auth.py +0 -0
  298. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/feedback.py +0 -0
  299. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/hook.py +0 -0
  300. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/ingest.py +0 -0
  301. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/insights.py +0 -0
  302. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/jwks.py +0 -0
  303. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/mcp.py +0 -0
  304. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/preview.py +0 -0
  305. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/prompt.py +0 -0
  306. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/reconcile.py +0 -0
  307. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/registry_models.py +0 -0
  308. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/review.py +0 -0
  309. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/sandbox.py +0 -0
  310. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/skill.py +0 -0
  311. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/support.py +0 -0
  312. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/routes/telemetry.py +0 -0
  313. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/api/sanitize.py +0 -0
  314. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/config.py +0 -0
  315. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/data/model_registry_seed.json +0 -0
  316. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/database.py +0 -0
  317. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/jobs/__init__.py +0 -0
  318. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/jobs/catalog.py +0 -0
  319. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/jobs/maintenance.py +0 -0
  320. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/logging_config.py +0 -0
  321. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/main.py +0 -0
  322. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/__init__.py +0 -0
  323. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/agent.py +0 -0
  324. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/agent_component.py +0 -0
  325. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/alert.py +0 -0
  326. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/alert_history.py +0 -0
  327. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/base.py +0 -0
  328. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/component_bundle.py +0 -0
  329. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/component_source.py +0 -0
  330. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/download.py +0 -0
  331. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/enterprise_config.py +0 -0
  332. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/exec_config.py +0 -0
  333. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/exporter_config.py +0 -0
  334. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/feedback.py +0 -0
  335. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/hook.py +0 -0
  336. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/insight_meta_cache.py +0 -0
  337. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/insight_report.py +0 -0
  338. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/insight_session_facets.py +0 -0
  339. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/insight_session_meta.py +0 -0
  340. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/mcp.py +0 -0
  341. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/organization.py +0 -0
  342. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/password_reset_token.py +0 -0
  343. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/prompt.py +0 -0
  344. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/saml_config.py +0 -0
  345. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/sandbox.py +0 -0
  346. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/scim_token.py +0 -0
  347. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/skill.py +0 -0
  348. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/submission.py +0 -0
  349. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/user.py +0 -0
  350. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/models/user_group.py +0 -0
  351. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/pyrightconfig.json +0 -0
  352. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/__init__.py +0 -0
  353. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/admin.py +0 -0
  354. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/agent.py +0 -0
  355. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/alert.py +0 -0
  356. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/auth.py +0 -0
  357. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/bulk.py +0 -0
  358. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/component_source.py +0 -0
  359. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/component_version.py +0 -0
  360. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/constants.py +0 -0
  361. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/dashboard.py +0 -0
  362. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/feedback.py +0 -0
  363. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/hook.py +0 -0
  364. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/ide_registry.py +0 -0
  365. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/insights.py +0 -0
  366. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/mcp.py +0 -0
  367. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/models.py +0 -0
  368. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/prompt.py +0 -0
  369. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/retention.py +0 -0
  370. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/sandbox.py +0 -0
  371. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/skill.py +0 -0
  372. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/schemas/telemetry.py +0 -0
  373. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/__init__.py +0 -0
  374. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/agent_builder.py +0 -0
  375. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/agent_lock_file.py +0 -0
  376. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/agent_registry_cache.py +0 -0
  377. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/agent_resolver.py +0 -0
  378. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/agent_snapshot.py +0 -0
  379. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/alert_evaluator.py +0 -0
  380. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/anti_gaming.py +0 -0
  381. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/audit/__init__.py +0 -0
  382. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/audit/classification.py +0 -0
  383. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/audit/helpers.py +0 -0
  384. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/audit/setup.py +0 -0
  385. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/audit/sink.py +0 -0
  386. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/cache.py +0 -0
  387. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/clickhouse/__init__.py +0 -0
  388. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/clickhouse/client.py +0 -0
  389. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/clickhouse/insert.py +0 -0
  390. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/clickhouse/query.py +0 -0
  391. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/clickhouse/schema.py +0 -0
  392. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/component_version_extras.py +0 -0
  393. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/config/__init__.py +0 -0
  394. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/config/mcp_builder.py +0 -0
  395. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/config/skill_builder.py +0 -0
  396. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/config_generator.py +0 -0
  397. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/crypto.py +0 -0
  398. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/demo_accounts.py +0 -0
  399. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/download_tracker.py +0 -0
  400. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/dynamic_settings.py +0 -0
  401. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/editing_lock.py +0 -0
  402. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/events.py +0 -0
  403. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/git_mirror_service.py +0 -0
  404. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/hook_config_generator.py +0 -0
  405. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/hook_install_generator.py +0 -0
  406. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/__init__.py +0 -0
  407. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/codex.py +0 -0
  408. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/copilot.py +0 -0
  409. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/copilot_cli.py +0 -0
  410. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/gemini_cli.py +0 -0
  411. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/load_all.py +0 -0
  412. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide/opencode.py +0 -0
  413. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ide_feature_inference.py +0 -0
  414. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/insights/__init__.py +0 -0
  415. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/jwt_service.py +0 -0
  416. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/log_buffer.py +0 -0
  417. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/mcp_validator.py +0 -0
  418. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/model_catalog.py +0 -0
  419. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/model_display.py +0 -0
  420. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/model_resolver.py +0 -0
  421. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/optic.py +0 -0
  422. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/redis.py +0 -0
  423. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/registry_telemetry.py +0 -0
  424. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/request_context.py +0 -0
  425. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/retention.py +0 -0
  426. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/sandbox_config_generator.py +0 -0
  427. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/sandbox_validator.py +0 -0
  428. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/secrets_redactor.py +0 -0
  429. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/security_events.py +0 -0
  430. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/session_ingest.py +0 -0
  431. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/session_parsers/__init__.py +0 -0
  432. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/session_parsers/base.py +0 -0
  433. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/session_parsers/claude_code.py +0 -0
  434. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/session_parsers/cursor.py +0 -0
  435. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/session_parsers/ingest_classify.py +0 -0
  436. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/session_parsers/kiro.py +0 -0
  437. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/session_parsers/pi.py +0 -0
  438. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/shared/__init__.py +0 -0
  439. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/shared/ip_utils.py +0 -0
  440. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/shared/utils.py +0 -0
  441. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/skill_config_generator.py +0 -0
  442. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/skill_validator.py +0 -0
  443. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/ssrf_guard.py +0 -0
  444. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/strategic_insights.py +0 -0
  445. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/username_generator.py +0 -0
  446. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/versioning.py +0 -0
  447. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/webhook_delivery.py +0 -0
  448. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/services/webhook_signer.py +0 -0
  449. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/__init__.py +0 -0
  450. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/conftest.py +0 -0
  451. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_agent_config_gen_versioned.py +0 -0
  452. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_agent_pull.py +0 -0
  453. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_agent_versions_api.py +0 -0
  454. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_anti_gaming.py +0 -0
  455. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_component_version_extras.py +0 -0
  456. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_component_versions_api.py +0 -0
  457. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_config.py +0 -0
  458. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_crypto.py +0 -0
  459. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_exec_dashboard.py +0 -0
  460. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_exec_formulas.py +0 -0
  461. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_ide_feature_inference.py +0 -0
  462. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_jwt.py +0 -0
  463. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_multi_tenancy.py +0 -0
  464. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_payload_protection.py +0 -0
  465. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_rbac.py +0 -0
  466. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/tests/test_security_events.py +0 -0
  467. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/version.py +0 -0
  468. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal-server/worker.py +0 -0
  469. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/README.md +0 -0
  470. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/__init__.py +0 -0
  471. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/__main__.py +0 -0
  472. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/analyzer.py +0 -0
  473. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/audit.py +0 -0
  474. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/branding.py +0 -0
  475. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/client.py +0 -0
  476. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_agent.py +0 -0
  477. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_co_authors.py +0 -0
  478. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_component.py +0 -0
  479. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_doctor.py +0 -0
  480. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_hook.py +0 -0
  481. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_logs.py +0 -0
  482. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_mcp.py +0 -0
  483. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_migrate.py +0 -0
  484. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_models.py +0 -0
  485. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_ops.py +0 -0
  486. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_profile.py +0 -0
  487. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_prompt.py +0 -0
  488. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_reconcile.py +0 -0
  489. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_sandbox.py +0 -0
  490. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_scan.py +0 -0
  491. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_server.py +0 -0
  492. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_skill.py +0 -0
  493. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_support.py +0 -0
  494. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_tail_flush.py +0 -0
  495. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/cmd_uninstall.py +0 -0
  496. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/config.py +0 -0
  497. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/constants.py +0 -0
  498. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/features.py +0 -0
  499. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/hooks/__init__.py +0 -0
  500. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/hooks/_cursor_post_worker.py +0 -0
  501. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/hooks/cursor_session_push.py +0 -0
  502. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/hooks/kiro_session_push.py +0 -0
  503. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/hooks/session_push.py +0 -0
  504. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/__init__.py +0 -0
  505. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/base.py +0 -0
  506. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/claude_code.py +0 -0
  507. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/codex.py +0 -0
  508. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/copilot.py +0 -0
  509. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/copilot_cli.py +0 -0
  510. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/cursor.py +0 -0
  511. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/gemini_cli.py +0 -0
  512. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/kiro.py +0 -0
  513. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/load_all.py +0 -0
  514. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/opencode.py +0 -0
  515. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/pi.py +0 -0
  516. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide/protocol.py +0 -0
  517. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide_registry.py +0 -0
  518. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide_specs/__init__.py +0 -0
  519. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide_specs/claude_code_hooks_spec.py +0 -0
  520. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide_specs/kiro_hooks_spec.py +0 -0
  521. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/ide_specs/pi_hooks_spec.py +0 -0
  522. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/install_detector.py +0 -0
  523. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/main.py +0 -0
  524. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/model_catalog.py +0 -0
  525. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/optic.py +0 -0
  526. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/prompts.py +0 -0
  527. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/proxy.py +0 -0
  528. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/pyinstaller.spec +0 -0
  529. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/render.py +0 -0
  530. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/requirements.txt +0 -0
  531. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/sandbox_mcp.py +0 -0
  532. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/sandbox_runner.py +0 -0
  533. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/server/__init__.py +0 -0
  534. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/server/backup.py +0 -0
  535. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/server/config_gen.py +0 -0
  536. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/server/constants.py +0 -0
  537. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/server/deps.py +0 -0
  538. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/server/orchestrator.py +0 -0
  539. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/server/updater.py +0 -0
  540. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/sessions/__init__.py +0 -0
  541. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/sessions/base.py +0 -0
  542. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/sessions/claude_code.py +0 -0
  543. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/sessions/cursor.py +0 -0
  544. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/sessions/kiro.py +0 -0
  545. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/settings_reconciler.py +0 -0
  546. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/shared/__init__.py +0 -0
  547. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/shared/utils.py +0 -0
  548. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/shim.py +0 -0
  549. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/skills/observal/SKILL.md +0 -0
  550. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/skills/observal/references/commands.md +0 -0
  551. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/skills/observal-admin/SKILL.md +0 -0
  552. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/skills/observal-advanced/SKILL.md +0 -0
  553. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/skills/observal-agents/SKILL.md +0 -0
  554. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/skills/observal-ops/SKILL.md +0 -0
  555. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/skills/observal-registry/SKILL.md +0 -0
  556. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/support/__init__.py +0 -0
  557. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/support/collectors.py +0 -0
  558. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/support/manifest.py +0 -0
  559. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/support/redaction.py +0 -0
  560. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/telemetry/__init__.py +0 -0
  561. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/telemetry_buffer.py +0 -0
  562. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/tests/__init__.py +0 -0
  563. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/tests/test_cmd_agent_versions.py +0 -0
  564. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/tests/test_cmd_component_versions.py +0 -0
  565. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/upgrade_executor.py +0 -0
  566. {observal_cli-1.2.0 → observal_cli-1.2.1}/observal_cli/upgrade_lock.py +0 -0
  567. {observal_cli-1.2.0 → observal_cli-1.2.1}/package.json +0 -0
  568. {observal_cli-1.2.0 → observal_cli-1.2.1}/packages/pi-extension/LICENSE +0 -0
  569. {observal_cli-1.2.0 → observal_cli-1.2.1}/packages/pi-extension/README.md +0 -0
  570. {observal_cli-1.2.0 → observal_cli-1.2.1}/packages/pi-extension/extensions/observal.ts +0 -0
  571. {observal_cli-1.2.0 → observal_cli-1.2.1}/packages/pi-extension/package.json.license +0 -0
  572. {observal_cli-1.2.0 → observal_cli-1.2.1}/plans/harness-versioning-draft.md +0 -0
  573. {observal_cli-1.2.0 → observal_cli-1.2.1}/pnpm-lock.yaml +0 -0
  574. {observal_cli-1.2.0 → observal_cli-1.2.1}/pnpm-workspace.yaml +0 -0
  575. {observal_cli-1.2.0 → observal_cli-1.2.1}/prometheus.yml +0 -0
  576. {observal_cli-1.2.0 → observal_cli-1.2.1}/renovate.json +0 -0
  577. {observal_cli-1.2.0 → observal_cli-1.2.1}/screenshots/01-review-queue.png +0 -0
  578. {observal_cli-1.2.0 → observal_cli-1.2.1}/screenshots/02-detail-sheet-mcp.png +0 -0
  579. {observal_cli-1.2.0 → observal_cli-1.2.1}/screenshots/03-after-bulk-approve.png +0 -0
  580. {observal_cli-1.2.0 → observal_cli-1.2.1}/screenshots/04-rejection-reason-skills.png +0 -0
  581. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/add_spdx_headers.py +0 -0
  582. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/check_license_policy.py +0 -0
  583. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/check_migrations.py +0 -0
  584. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/check_secrets.sh +0 -0
  585. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/check_vulnerabilities.py +0 -0
  586. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/new_migration.sh +0 -0
  587. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/refresh_model_snapshot.py +0 -0
  588. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/seed_exec_dashboard.py +0 -0
  589. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/seed_test_skill.py +0 -0
  590. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/sync_features.py +0 -0
  591. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/sync_observal_skill.py +0 -0
  592. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/test_version_e2e.sh +0 -0
  593. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/test_xff_spoofing.sh +0 -0
  594. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/update_spdx_copyright.py +0 -0
  595. {observal_cli-1.2.0 → observal_cli-1.2.1}/scripts/verify_exec_dashboard.py +0 -0
  596. {observal_cli-1.2.0 → observal_cli-1.2.1}/test-agent.json +0 -0
  597. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/README.md +0 -0
  598. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/__init__.py +0 -0
  599. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/conftest.py +0 -0
  600. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/agent-edit-form.spec.ts +0 -0
  601. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/auth.spec.ts +0 -0
  602. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/component-edit-screenshots.spec.ts +0 -0
  603. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/components.spec.ts +0 -0
  604. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/frontend-flows.spec.ts +0 -0
  605. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/helpers.ts +0 -0
  606. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/kiro-agent-compat.spec.ts +0 -0
  607. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/kiro-cli.spec.ts +0 -0
  608. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/kiro-hooks.spec.ts +0 -0
  609. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/kiro-lifecycle.spec.ts +0 -0
  610. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/kiro-live.spec.ts +0 -0
  611. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/kiro-otlp-logs.spec.ts +0 -0
  612. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/kiro-otlp-traces.spec.ts +0 -0
  613. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/kiro-web-agents.spec.ts +0 -0
  614. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/kiro-web-traces.spec.ts +0 -0
  615. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/package.json +0 -0
  616. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/real-edit-release.spec.ts +0 -0
  617. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/review-diff-screenshots.spec.ts +0 -0
  618. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/shim-merge.spec.ts +0 -0
  619. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/sso-login.spec.ts +0 -0
  620. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/unarchive-agent.spec.ts +0 -0
  621. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/e2e/visibility-removal-smoke.spec.ts +0 -0
  622. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/fixtures/model_display_cases.json +0 -0
  623. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/fixtures/skills/refactor-guide/SKILL.md +0 -0
  624. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/fixtures/skills/security-auditor/SKILL.md +0 -0
  625. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/fixtures/skills/test-writer/SKILL.md +0 -0
  626. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/mock_mcp.py +0 -0
  627. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_agent_builder_skills.py +0 -0
  628. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_agent_composition.py +0 -0
  629. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_agent_config_generator.py +0 -0
  630. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_agent_name_lookup.py +0 -0
  631. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_agent_rbac.py +0 -0
  632. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_agent_review.py +0 -0
  633. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_agent_snapshot.py +0 -0
  634. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_alert_evaluator.py +0 -0
  635. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_audit_logging.py +0 -0
  636. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_auth2_security.py +0 -0
  637. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_auth_redis_down.py +0 -0
  638. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_bulk.py +0 -0
  639. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_bundles.py +0 -0
  640. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_cli_errors.py +0 -0
  641. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_cli_ide_adapters.py +0 -0
  642. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_clickhouse_phase1.py +0 -0
  643. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_clickhouse_resource_tuning.py +0 -0
  644. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_clickhouse_retention.py +0 -0
  645. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_cmd_prompt.py +0 -0
  646. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_cmd_support.py +0 -0
  647. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_component_version_extras.py +0 -0
  648. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_config_generator_utils.py +0 -0
  649. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_constants_sync.py +0 -0
  650. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_cursor_session_push.py +0 -0
  651. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_demo_accounts.py +0 -0
  652. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_deployment_guards.py +0 -0
  653. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_device_auth.py +0 -0
  654. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_docker_detection.py +0 -0
  655. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_draft_workflow.py +0 -0
  656. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_encryption_fake_keys.py +0 -0
  657. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_endpoint_discovery.py +0 -0
  658. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_enterprise.py +0 -0
  659. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_env_detection_and_config.py +0 -0
  660. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_events.py +0 -0
  661. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_features_sync.py +0 -0
  662. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_field_validation.py +0 -0
  663. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_git_mirror.py +0 -0
  664. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_graphql_phase6.py +0 -0
  665. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_health.py +0 -0
  666. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_hipaa_audit.py +0 -0
  667. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_ide_config_e2e.py +0 -0
  668. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_ide_refactor_baseline.py +0 -0
  669. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_ide_registry.py +0 -0
  670. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_ingest_phase2.py +0 -0
  671. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_install_detector.py +0 -0
  672. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_integration.py +0 -0
  673. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_listing_detail_access.py +0 -0
  674. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_mcp_config_parser.py +0 -0
  675. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_mcp_edit_submit.py +0 -0
  676. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_migrate.py +0 -0
  677. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_migrate_telemetry.py +0 -0
  678. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_model_display.py +0 -0
  679. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_model_registry.py +0 -0
  680. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_observal_skill.py +0 -0
  681. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_observal_skill_sync.py +0 -0
  682. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_optic.py +0 -0
  683. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_phase9_10.py +0 -0
  684. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_pi_session_parser.py +0 -0
  685. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_preview_config.py +0 -0
  686. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_proxy_phase4.py +0 -0
  687. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_pull_and_agent_cli.py +0 -0
  688. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_registry_types.py +0 -0
  689. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_resilience.py +0 -0
  690. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_retention.py +0 -0
  691. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_retention_api.py +0 -0
  692. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_retention_endpoints.py +0 -0
  693. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_retention_logic.py +0 -0
  694. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_retention_service.py +0 -0
  695. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_retention_simulation.py +0 -0
  696. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_review_queue.py +0 -0
  697. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_saml.py +0 -0
  698. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_saml_scim_integration.py +0 -0
  699. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sanitize.py +0 -0
  700. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_scan_kiro_home.py +0 -0
  701. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_schema_redesign.py +0 -0
  702. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_scim.py +0 -0
  703. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec001_002_004_auth_hardening.py +0 -0
  704. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec003_ratelimit.py +0 -0
  705. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec003_trusted_proxy_middleware.py +0 -0
  706. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec005_unsafe_defaults.py +0 -0
  707. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec006_password_policy.py +0 -0
  708. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec007_graphql_auth.py +0 -0
  709. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec009_component_source_ownership.py +0 -0
  710. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec009_org_scoping.py +0 -0
  711. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec010_agent_listing.py +0 -0
  712. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec015_openapi_flags.py +0 -0
  713. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec023_cache_isolation.py +0 -0
  714. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec024_tenant_scoping.py +0 -0
  715. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec027_registry_sc.py +0 -0
  716. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_sec028_sso_guards.py +0 -0
  717. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_secrets_redactor.py +0 -0
  718. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_self_commands.py +0 -0
  719. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_server_backup.py +0 -0
  720. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_server_upgrade.py +0 -0
  721. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_settings_reconciler.py +0 -0
  722. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_shim_error_handling.py +0 -0
  723. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_skill_config_generator.py +0 -0
  724. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_skill_validator.py +0 -0
  725. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_ssrf_guard.py +0 -0
  726. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_support_bundle_wiring.py +0 -0
  727. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_support_collectors.py +0 -0
  728. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_support_endpoint.py +0 -0
  729. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_support_inspect.py +0 -0
  730. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_support_integration.py +0 -0
  731. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_support_manifest.py +0 -0
  732. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_support_pbt.py +0 -0
  733. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_support_redaction.py +0 -0
  734. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_telemetry_collection.py +0 -0
  735. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_uninstall.py +0 -0
  736. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_uninstall_windows.py +0 -0
  737. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_upgrade_lock.py +0 -0
  738. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_username_generator.py +0 -0
  739. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_version_negotiation.py +0 -0
  740. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_version_sync.py +0 -0
  741. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_versioning.py +0 -0
  742. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_webhook_delivery.py +0 -0
  743. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_webhook_signer.py +0 -0
  744. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_webhook_signer_properties.py +0 -0
  745. {observal_cli-1.2.0 → observal_cli-1.2.1}/tests/test_worker_phase5.py +0 -0
  746. {observal_cli-1.2.0 → observal_cli-1.2.1}/tools/release.sh +0 -0
  747. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/.gitignore +0 -0
  748. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/AGENTS.md +0 -0
  749. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/README.md +0 -0
  750. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/eslint.config.mjs +0 -0
  751. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/next.config.ts +0 -0
  752. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/playwright.config.ts +0 -0
  753. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/pnpm-workspace.yaml +0 -0
  754. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/postcss.config.mjs +0 -0
  755. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/file.svg +0 -0
  756. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/fonts/albert-sans-latin-variable.woff2 +0 -0
  757. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/fonts/albert-sans-latin-variable.woff2.license +0 -0
  758. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/fonts/archivo-latin-variable.woff2 +0 -0
  759. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/fonts/archivo-latin-variable.woff2.license +0 -0
  760. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/fonts/jetbrains-mono-latin-variable.woff2 +0 -0
  761. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/fonts/jetbrains-mono-latin-variable.woff2.license +0 -0
  762. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/globe.svg +0 -0
  763. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/next.svg +0 -0
  764. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/observal-logo.svg +0 -0
  765. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/vercel.svg +0 -0
  766. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/public/window.svg +0 -0
  767. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/audit-log/page.tsx +0 -0
  768. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/dashboard/components/adoption-tab.tsx +0 -0
  769. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/dashboard/components/cost-tab.tsx +0 -0
  770. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/dashboard/components/departments-tab.tsx +0 -0
  771. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/dashboard/components/insights-tab.tsx +0 -0
  772. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/dashboard/components/investments-tab.tsx +0 -0
  773. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/dashboard/components/stat-card.tsx +0 -0
  774. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/dashboard/components/velocity-tab.tsx +0 -0
  775. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/dashboard/page.tsx +0 -0
  776. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/diagnostics/page.tsx +0 -0
  777. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/errors/page.tsx +0 -0
  778. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/insights/[reportId]/page.tsx +0 -0
  779. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/insights/page.tsx +0 -0
  780. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/layout.tsx +0 -0
  781. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/review/page.tsx +0 -0
  782. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/security-events/page.tsx +0 -0
  783. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/settings/page.tsx +0 -0
  784. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/sso/page.tsx +0 -0
  785. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(admin)/users/page.tsx +0 -0
  786. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(auth)/device/page.tsx +0 -0
  787. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(auth)/layout.tsx +0 -0
  788. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(registry)/agents/[id]/page.tsx +0 -0
  789. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(registry)/agents/builder/page.tsx +0 -0
  790. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(registry)/agents/page.tsx +0 -0
  791. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(registry)/components/page.tsx +0 -0
  792. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(registry)/layout.tsx +0 -0
  793. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(registry)/leaderboard/page.tsx +0 -0
  794. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(registry)/page.tsx +0 -0
  795. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(user)/account/page.tsx +0 -0
  796. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(user)/layout.tsx +0 -0
  797. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(user)/traces/[id]/page.tsx +0 -0
  798. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/(user)/traces/page.tsx +0 -0
  799. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/favicon.ico +0 -0
  800. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/globals.css +0 -0
  801. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/icon.png +0 -0
  802. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/layout.tsx +0 -0
  803. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/app/providers.tsx +0 -0
  804. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/account/avatar-upload.tsx +0 -0
  805. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/builder/model-picker.tsx +0 -0
  806. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/builder/preview-panel.tsx +0 -0
  807. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/builder/sortable-component-list.tsx +0 -0
  808. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/builder/validation-panel.tsx +0 -0
  809. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/bar-list.tsx +0 -0
  810. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/dashboard-card.tsx +0 -0
  811. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/dimension-radar.tsx +0 -0
  812. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/export-button.tsx +0 -0
  813. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/latency-heatmap.tsx +0 -0
  814. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/no-data.tsx +0 -0
  815. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/query-error.tsx +0 -0
  816. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/retention-widget.tsx +0 -0
  817. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/score-overview.tsx +0 -0
  818. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/stat-card.tsx +0 -0
  819. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/time-range-select.tsx +0 -0
  820. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/top-items-card.tsx +0 -0
  821. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dashboard/trend-chart.tsx +0 -0
  822. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/dynamic-title.tsx +0 -0
  823. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/layouts/admin-guard.tsx +0 -0
  824. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/layouts/dashboard-shell.tsx +0 -0
  825. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/layouts/page-header.tsx +0 -0
  826. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/nav/command-menu.tsx +0 -0
  827. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/nav/github-star-banner.tsx +0 -0
  828. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/nav/nav-user.tsx +0 -0
  829. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/nav/registry-sidebar.tsx +0 -0
  830. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/agent-card.tsx +0 -0
  831. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/agent-edit-form.tsx +0 -0
  832. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/co-author-input.tsx +0 -0
  833. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/component-card.tsx +0 -0
  834. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/component-edit-form.tsx +0 -0
  835. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/feedback-list.tsx +0 -0
  836. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/ide-badges.tsx +0 -0
  837. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/install-dialog.tsx +0 -0
  838. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/pull-command.tsx +0 -0
  839. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/registry-detail.tsx +0 -0
  840. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/registry-table.tsx +0 -0
  841. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/review-form.tsx +0 -0
  842. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/status-badge.tsx +0 -0
  843. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/submit-component-dialog.tsx +0 -0
  844. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/version-bump-dialog.tsx +0 -0
  845. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/registry/version-dropdown.tsx +0 -0
  846. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/review/review-detail-sheet.tsx +0 -0
  847. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/review/review-diff-sheet.tsx +0 -0
  848. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/review/validation-badges.tsx +0 -0
  849. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/review/yaml-diff-view.tsx +0 -0
  850. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/shared/empty-state.tsx +0 -0
  851. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/shared/error-state.tsx +0 -0
  852. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/shared/retention-warning-banner.tsx +0 -0
  853. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/shared/skeleton-layouts.tsx +0 -0
  854. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/shared/version-mismatch-banner.tsx +0 -0
  855. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/traces/span-tree.tsx +0 -0
  856. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/traces/trace-detail.tsx +0 -0
  857. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/traces/trace-list.tsx +0 -0
  858. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/avatar.tsx +0 -0
  859. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/badge.tsx +0 -0
  860. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/breadcrumb.tsx +0 -0
  861. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/button.tsx +0 -0
  862. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/card.tsx +0 -0
  863. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/checkbox.tsx +0 -0
  864. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/command.tsx +0 -0
  865. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/dialog.tsx +0 -0
  866. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/dropdown-menu.tsx +0 -0
  867. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/input.tsx +0 -0
  868. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/label.tsx +0 -0
  869. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/popover.tsx +0 -0
  870. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/progress.tsx +0 -0
  871. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/resizable.tsx +0 -0
  872. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/scroll-area.tsx +0 -0
  873. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/select.tsx +0 -0
  874. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/separator.tsx +0 -0
  875. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/sheet.tsx +0 -0
  876. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/sidebar.tsx +0 -0
  877. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/skeleton.tsx +0 -0
  878. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/sonner.tsx +0 -0
  879. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/switch.tsx +0 -0
  880. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/table.tsx +0 -0
  881. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/tabs.tsx +0 -0
  882. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/textarea.tsx +0 -0
  883. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/theme-switcher.tsx +0 -0
  884. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/components/ui/tooltip.tsx +0 -0
  885. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/hooks/use-admin-guard.ts +0 -0
  886. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/hooks/use-api.ts +0 -0
  887. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/hooks/use-auth.ts +0 -0
  888. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/hooks/use-deployment-config.ts +0 -0
  889. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/hooks/use-ides.ts +0 -0
  890. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/hooks/use-mobile.ts +0 -0
  891. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/hooks/use-role-guard.ts +0 -0
  892. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/lib/export.ts +0 -0
  893. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/lib/features.ts +0 -0
  894. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/lib/graphql-ws.ts +0 -0
  895. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/lib/ide-features.ts +0 -0
  896. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/lib/mcp-parser.ts +0 -0
  897. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/lib/model-display.ts +0 -0
  898. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/lib/query-client.ts +0 -0
  899. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/lib/types.ts +0 -0
  900. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/lib/utils.ts +0 -0
  901. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/src/middleware.ts +0 -0
  902. {observal_cli-1.2.0 → observal_cli-1.2.1}/web/tsconfig.json +0 -0
@@ -10,6 +10,18 @@
10
10
 
11
11
  All notable changes to this project will be documented in this file.
12
12
 
13
+ ## [1.2.1] - 2026-05-27
14
+
15
+ ### Changed
16
+
17
+ - minimize login error handling fix (**web**) ([6819685](https://github.com/BlazeUp-AI/Observal/commit/68196858e305187825076c400d97179370aa6902))
18
+
19
+ ### Fixed
20
+
21
+ - prevent auth guard flicker on direct URL access (**web**) ([b7eb425](https://github.com/BlazeUp-AI/Observal/commit/b7eb4252f8dd167ff12067be30f3c1b7431833c1))
22
+ - SSO device flow, skill install, version check, UI (**auth,ide,cli,web**) ([5ef6a67](https://github.com/BlazeUp-AI/Observal/commit/5ef6a67269e31a14ab416b9a65ec6286e39ef9a4))
23
+ - 404 denied agent bind (**sessions**) ([a71ba58](https://github.com/BlazeUp-AI/Observal/commit/a71ba58e9a77df0aeb7b96dc5147c27e0abdc745))
24
+ - handle non-JSON login error responses (**web**) ([e0f79ff](https://github.com/BlazeUp-AI/Observal/commit/e0f79ff6f4fc7159744b8a182189ce637edd3675))
13
25
  ## [1.2.0] - 2026-05-26
14
26
 
15
27
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: observal-cli
3
- Version: 1.2.0
3
+ Version: 1.2.1
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
@@ -13,6 +13,7 @@ import logging
13
13
  import re
14
14
  import secrets
15
15
  from datetime import UTC, datetime
16
+ from urllib.parse import quote
16
17
 
17
18
  import jwt as pyjwt
18
19
  from authlib.integrations.starlette_client import OAuth
@@ -269,12 +270,17 @@ async def login(request: Request, req: LoginRequest, db: AsyncSession = Depends(
269
270
 
270
271
 
271
272
  @router.get("/oauth/login")
272
- async def oauth_login(request: Request):
273
+ async def oauth_login(request: Request, next: str | None = None):
273
274
  """Initiates the OAuth SSO flow"""
274
275
  optic.debug("oauth_login called")
275
276
  if not oauth.oidc:
276
277
  raise HTTPException(status_code=500, detail="OAuth is not configured on the server")
277
278
 
279
+ # Preserve the post-login redirect target (e.g. /device?code=XXXX) across the
280
+ # OAuth round-trip so the user lands on the correct page after SSO completes.
281
+ if next and next.startswith("/") and not next.startswith("//") and "\\" not in next:
282
+ request.session["oauth_next"] = next
283
+
278
284
  # Use FRONTEND_URL as the base so the redirect works through the Next.js proxy.
279
285
  # This avoids Docker-internal hostnames (e.g. observal-api:8000) leaking into
280
286
  # the redirect URI, which would fail Azure AD's redirect URI validation.
@@ -396,7 +402,12 @@ async def oauth_callback(request: Request, db: AsyncSession = Depends(get_db)):
396
402
  user_agent=user_agent,
397
403
  )
398
404
  )
399
- frontend_redirect = f"{ds.get_sync('deployment.frontend_url', 'http://localhost:3000')}/login?code={code}"
405
+ # Restore the post-login redirect target that was saved before the OAuth round-trip.
406
+ oauth_next = request.session.pop("oauth_next", None)
407
+ frontend_base = ds.get_sync("deployment.frontend_url", "http://localhost:3000")
408
+ frontend_redirect = f"{frontend_base}/login?code={code}"
409
+ if oauth_next and oauth_next.startswith("/") and not oauth_next.startswith("//") and "\\" not in oauth_next:
410
+ frontend_redirect += f"&next={quote(oauth_next, safe='')}"
400
411
  return RedirectResponse(url=frontend_redirect)
401
412
 
402
413
 
@@ -6,6 +6,7 @@
6
6
  # SPDX-FileCopyrightText: 2026 Shreem Seth <shreemseth26@gmail.com>
7
7
  # SPDX-FileCopyrightText: 2026 SrihariLegend <sriharilegend23@gmail.com>
8
8
  # SPDX-FileCopyrightText: 2026 Vishnu Muthiah <vishnu.muthiah04@gmail.com>
9
+ # SPDX-FileCopyrightText: 2026 tsitu0 <tomsitu0102@gmail.com>
9
10
  # SPDX-License-Identifier: AGPL-3.0-only
10
11
 
11
12
  """Session listing and detail endpoints - backed by session_events table.
@@ -19,7 +20,7 @@ import asyncio
19
20
  import logging
20
21
  import uuid as _uuid
21
22
 
22
- from fastapi import APIRouter, Depends, Query
23
+ from fastapi import APIRouter, Depends, HTTPException, Query
23
24
  from fastapi_cache.decorator import cache
24
25
  from loguru import logger as optic
25
26
  from sqlalchemy import select
@@ -394,7 +395,7 @@ async def bind_session_agent(
394
395
  params,
395
396
  )
396
397
  if not ownership:
397
- return {"error": "Session not found or access denied"}
398
+ raise HTTPException(status_code=404, detail="Session not found or access denied")
398
399
 
399
400
  from redis.exceptions import RedisError
400
401
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  [project]
8
8
  name = "observal-server"
9
- version = "1.2.0"
9
+ version = "1.2.1"
10
10
  description = "Observal API server"
11
11
  requires-python = ">=3.11"
12
12
  license = "AGPL-3.0-only"
@@ -12,7 +12,6 @@ from services.ide import ConfigContext, register_adapter
12
12
  from services.ide.helpers import (
13
13
  _claude_code_hooks_frontmatter_lines,
14
14
  _collect_hook_script_files,
15
- _generate_skill_file,
16
15
  _model_name_to_frontmatter,
17
16
  )
18
17
 
@@ -77,18 +76,14 @@ class ClaudeCodeAdapter:
77
76
 
78
77
  agent_path = IDE_REGISTRY["claude-code"]["rules_file"][scope].format(name=safe_name)
79
78
 
80
- skill_files = [_generate_skill_file(s, "claude-code", scope) for s in skill_configs]
81
- skill_files = [f for f in skill_files if f]
82
-
83
79
  result: dict = {
84
80
  "rules_file": {"path": agent_path, "content": agent_content},
85
81
  "mcp_config": claude_mcps,
86
82
  "mcp_setup_commands": setup_commands,
87
83
  "scope": scope,
88
84
  }
89
- if skill_files:
90
- result["skill_files"] = skill_files
91
- result["skill_components"] = [s for s in skill_configs if s.get("git_url")]
85
+ if skill_configs:
86
+ result["skill_components"] = skill_configs
92
87
 
93
88
  cc_hook_files = _collect_hook_script_files(hook_configs, ctx.hook_listings, "claude-code")
94
89
  if cc_hook_files:
@@ -12,7 +12,6 @@ from services.ide import ConfigContext, register_adapter
12
12
  from services.ide.helpers import (
13
13
  _collect_hook_script_files,
14
14
  _cursor_hooks_config,
15
- _generate_skill_file,
16
15
  _merge_hook_components_into_config,
17
16
  )
18
17
 
@@ -42,9 +41,6 @@ class CursorAdapter:
42
41
  mcp_paths = spec.get("mcp_config_path", {})
43
42
  mcp_path = mcp_paths.get(ide_scope, next(iter(mcp_paths.values()), ".mcp.json"))
44
43
 
45
- skill_files = [_generate_skill_file(s, "cursor", ide_scope) for s in skill_configs]
46
- skill_files = [f for f in skill_files if f]
47
-
48
44
  # Cursor uses .cursor/agents/<name>.md for subagent registration
49
45
  # and .cursor/rules/<name>.mdc for context rules
50
46
  desc_line = (ctx.agent.description or safe_name).replace("\n", " ").strip()[:200]
@@ -75,9 +71,8 @@ class CursorAdapter:
75
71
  hook_files = _collect_hook_script_files(hook_configs, ctx.hook_listings, "cursor")
76
72
  if hook_files:
77
73
  result["hook_files"] = hook_files
78
- if skill_files:
79
- result["skill_files"] = skill_files
80
- result["skill_components"] = [s for s in skill_configs if s.get("git_url")]
74
+ if skill_configs:
75
+ result["skill_components"] = skill_configs
81
76
  if ctx.compatibility_warnings:
82
77
  result["_warnings"] = ctx.compatibility_warnings
83
78
 
@@ -432,6 +432,8 @@ def _build_skill_configs(
432
432
  "git_ref": getattr(listing, "git_ref", None) or "main",
433
433
  "skill_path": getattr(listing, "skill_path", None) or "/",
434
434
  "skill_md_content": getattr(listing, "skill_md_content", None),
435
+ "script_content": getattr(listing, "script_content", None),
436
+ "script_filename": getattr(listing, "script_filename", None),
435
437
  }
436
438
  )
437
439
 
@@ -12,7 +12,6 @@ from services.ide import ConfigContext, register_adapter
12
12
  from services.ide.helpers import (
13
13
  _KIRO_EVENT_MAP,
14
14
  _collect_hook_script_files,
15
- _generate_skill_file,
16
15
  _wrap_kiro_prompt,
17
16
  )
18
17
 
@@ -102,11 +101,8 @@ class KiroAdapter:
102
101
  "scope": kiro_scope,
103
102
  }
104
103
 
105
- skill_files = [_generate_skill_file(s, "kiro") for s in skill_configs]
106
- skill_files = [f for f in skill_files if f]
107
- if skill_files:
108
- result["skill_files"] = skill_files
109
- result["skill_components"] = [s for s in skill_configs if s.get("git_url")]
104
+ if skill_configs:
105
+ result["skill_components"] = skill_configs
110
106
 
111
107
  kiro_hook_files = _collect_hook_script_files(hook_configs, ctx.hook_listings, "kiro")
112
108
  if kiro_hook_files:
@@ -15,7 +15,6 @@ from loguru import logger
15
15
 
16
16
  from schemas.ide_registry import IDE_REGISTRY
17
17
  from services.ide import ConfigContext, register_adapter
18
- from services.ide.helpers import _generate_skill_file
19
18
 
20
19
 
21
20
  class PiAdapter:
@@ -60,16 +59,8 @@ class PiAdapter:
60
59
  }
61
60
 
62
61
  # ── Skills ──
63
- skill_files = []
64
- for skill in ctx.skill_configs:
65
- entry = _generate_skill_file(skill, "pi")
66
- if entry:
67
- skill_files.append(entry)
68
- if skill_files:
69
- result["skill_files"] = skill_files
70
-
71
- # Pi doesn't use command-based hooks - telemetry is via observal-pi
72
- # No hook files to generate.
62
+ if ctx.skill_configs:
63
+ result["skill_components"] = ctx.skill_configs
73
64
 
74
65
  return result
75
66
 
@@ -941,7 +941,7 @@ wheels = [
941
941
 
942
942
  [[package]]
943
943
  name = "observal-server"
944
- version = "1.2.0"
944
+ version = "1.2.1"
945
945
  source = { virtual = "." }
946
946
  dependencies = [
947
947
  { name = "aiosqlite" },
@@ -195,7 +195,7 @@ def login(
195
195
  if sso_available:
196
196
  rprint(" [2] SSO (opens browser)")
197
197
  rprint(" [3] Sign in via browser")
198
- choice = text_input("Login method", default="1")
198
+ choice = text_input("Login method")
199
199
  if (choice == "2" and sso_available) or choice == "3":
200
200
  sso_mode = True
201
201
 
@@ -553,44 +553,64 @@ def register_pull(app: typer.Typer):
553
553
  os.chmod(p, 0o755)
554
554
  written.append((str(p), "updated" if existed else "created"))
555
555
 
556
- # ── skill_files (Claude Code, Kiro, Cursor) ──────────
557
- # Use shared install_skill_from_git for each skill component.
558
- from observal_cli.cmd_skill import _sanitize_name, install_skill_from_git
556
+ # ── Skills ────────────────────────────────────
557
+ # Two install modes:
558
+ # 1. git_url present → clone full skill directory from git
559
+ # 2. skill_md_content present (registry_direct) → write SKILL.md + optional script
560
+ from observal_cli.cmd_skill import _sanitize_name, install_skill_from_git, install_skill_registry_direct
559
561
 
560
562
  skill_components = snippet.get("skill_components") or []
561
- cloned_skills: set[str] = set()
563
+ failed_skills: list[str] = []
562
564
  scope_str = "user" if is_user_scope else "project"
563
565
  for sc in skill_components:
566
+ sc_name = _sanitize_name(sc.get("name", "skill"))
567
+ git_url = sc.get("git_url")
568
+
564
569
  if dry_run:
565
- sc_name = _sanitize_name(sc.get("name", "skill"))
566
- written.append((f"<skill:{sc_name}>", "would clone"))
567
- cloned_skills.add(sc_name)
568
- continue
569
- result_path = install_skill_from_git(
570
- name=sc.get("name", "skill"),
571
- git_url=sc.get("git_url"),
572
- skill_path=sc.get("skill_path", "/"),
573
- git_ref=sc.get("git_ref", "main"),
574
- ide=ide,
575
- scope=scope_str,
576
- skill_md_content=sc.get("skill_md_content"),
577
- cwd=target_dir,
578
- )
579
- if result_path:
580
- written.append((str(result_path), "cloned"))
581
- cloned_skills.add(_sanitize_name(sc.get("name", "skill")))
582
-
583
- # Only write skill_files for skills that weren't successfully installed
584
- for sf in snippet.get("skill_files") or []:
585
- sf_name = Path(sf["path"]).parent.name
586
- if sf_name in cloned_skills:
570
+ mode = "would clone" if git_url else "would write"
571
+ written.append((f"<skill:{sc_name}>", mode))
587
572
  continue
588
- p = _resolve_path(sf["path"], target_dir, allow_home=is_user_scope)
589
- if dry_run:
590
- written.append((str(p), "would write"))
573
+
574
+ if git_url:
575
+ result_path = install_skill_from_git(
576
+ name=sc.get("name", "skill"),
577
+ git_url=git_url,
578
+ skill_path=sc.get("skill_path", "/"),
579
+ git_ref=sc.get("git_ref", "main"),
580
+ ide=ide,
581
+ scope=scope_str,
582
+ skill_md_content=sc.get("skill_md_content"),
583
+ cwd=target_dir,
584
+ )
585
+ if result_path:
586
+ written.append((str(result_path), "cloned"))
587
+ else:
588
+ failed_skills.append(sc_name)
589
+ rprint(f"[red]\u2717 Failed to install skill '{sc_name}'.[/red] Clone from {git_url} failed.")
591
590
  else:
592
- status = _write_file(p, sf["content"])
593
- written.append((str(p), status))
591
+ # Registry direct: SKILL.md content + optional script
592
+ result_path = install_skill_registry_direct(
593
+ name=sc.get("name", "skill"),
594
+ skill_md_content=sc.get("skill_md_content"),
595
+ script_content=sc.get("script_content"),
596
+ script_filename=sc.get("script_filename"),
597
+ ide=ide,
598
+ scope=scope_str,
599
+ cwd=target_dir,
600
+ )
601
+ if result_path:
602
+ written.append((str(result_path), "installed"))
603
+ else:
604
+ failed_skills.append(sc_name)
605
+ rprint(f"[red]\u2717 Failed to install skill '{sc_name}'.[/red] No content available.")
606
+
607
+ if failed_skills:
608
+ rprint()
609
+ rprint("[red]Skill installation failed.[/red] The following skills could not be installed:")
610
+ for fs in failed_skills:
611
+ rprint(f" [red]\u2022[/red] {fs}")
612
+ rprint()
613
+ raise typer.Exit(1)
594
614
 
595
615
  # ── Agent marker (all IDEs) ─────────────────────────
596
616
  # Write <target_dir>/.observal/agent so session_push hooks can attribute
@@ -567,13 +567,12 @@ def check_version_compatibility(server_url: str) -> None:
567
567
  if cli_ver_str == "0.0.0":
568
568
  return # dev install, skip check
569
569
 
570
- # Try reading server version from cache first (populated by auto-update)
570
+ # Use cache if fresh (< 60s), otherwise fetch live.
571
571
  server_ver = None
572
572
  cache = _read_cache()
573
- if cache and cache.get("server_version") and cache.get("source") == "server":
573
+ if cache and cache.get("server_version") and cache.get("source") == "server" and not _should_check(cache, 60):
574
574
  server_ver = cache["server_version"]
575
575
 
576
- # Fall back to a fresh fetch if cache doesn't have it
577
576
  if not server_ver:
578
577
  try:
579
578
  resp = httpx.get(f"{server_url.rstrip('/')}/api/v1/config/version", timeout=5)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "observal-pi",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "Observal session telemetry for Pi \u2014 zero-dependency extension that pushes session traces to your Observal server",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -10,7 +10,7 @@
10
10
 
11
11
  [project]
12
12
  name = "observal-cli"
13
- version = "1.2.0"
13
+ version = "1.2.1"
14
14
  description = "Observal MCP Server Registry & Agent Registry CLI"
15
15
  readme = "README.md"
16
16
  requires-python = ">=3.11"
@@ -0,0 +1,33 @@
1
+ # SPDX-FileCopyrightText: 2026 Hari Srinivasan <harisrini21@gmail.com>
2
+ # SPDX-FileCopyrightText: 2026 tsitu0 <tomsitu0102@gmail.com>
3
+ # SPDX-License-Identifier: AGPL-3.0-only
4
+
5
+ import uuid
6
+ from unittest.mock import AsyncMock, MagicMock, patch
7
+
8
+ import pytest
9
+ from fastapi import HTTPException
10
+
11
+
12
+ def _user(role="user"):
13
+ from models.user import User, UserRole
14
+
15
+ user = MagicMock(spec=User)
16
+ user.id = uuid.uuid4()
17
+ user.role = getattr(UserRole, role)
18
+ return user
19
+
20
+
21
+ @pytest.mark.asyncio
22
+ async def test_bind_session_agent_denied_raises_404():
23
+ """Mutation access failures should use HTTP errors, matching other ownership checks."""
24
+ from api.routes.sessions import bind_session_agent
25
+
26
+ with (
27
+ patch("api.routes.sessions._ch_json", new=AsyncMock(return_value=[])),
28
+ pytest.raises(HTTPException) as exc,
29
+ ):
30
+ await bind_session_agent("session-123", agent_name="agent", current_user=_user())
31
+
32
+ assert exc.value.status_code == 404
33
+ assert exc.value.detail == "Session not found or access denied"
@@ -359,9 +359,17 @@ class TestCheckVersionCompatibility:
359
359
  with pytest.raises(Exit):
360
360
  version_check.check_version_compatibility("http://localhost:8000")
361
361
 
362
- def test_uses_cache_to_avoid_network_call(self, monkeypatch):
362
+ def test_uses_short_ttl_cache(self, monkeypatch):
363
+ """Cache younger than 60s is trusted, skipping network."""
364
+ import time
365
+
363
366
  monkeypatch.setattr(version_check, "get_current_version", lambda: "1.0.0")
364
- monkeypatch.setattr(version_check, "_read_cache", lambda: {"server_version": "1.0.5", "source": "server"})
367
+ fresh_cache = {
368
+ "server_version": "1.0.5",
369
+ "source": "server",
370
+ "last_checked": time.strftime("%Y-%m-%dT%H:%M:%S+00:00"),
371
+ }
372
+ monkeypatch.setattr(version_check, "_read_cache", lambda: fresh_cache)
365
373
  network_called = {"hit": False}
366
374
 
367
375
  def mock_get(*args, **kwargs):
@@ -372,6 +380,25 @@ class TestCheckVersionCompatibility:
372
380
  version_check.check_version_compatibility("http://localhost:8000")
373
381
  assert network_called["hit"] is False
374
382
 
383
+ def test_fetches_when_cache_stale(self, monkeypatch):
384
+ """Cache older than 60s triggers a fresh fetch."""
385
+ monkeypatch.setattr(version_check, "get_current_version", lambda: "1.0.0")
386
+ stale_cache = {
387
+ "server_version": "1.0.5",
388
+ "source": "server",
389
+ "last_checked": "2020-01-01T00:00:00+00:00",
390
+ }
391
+ monkeypatch.setattr(version_check, "_read_cache", lambda: stale_cache)
392
+ network_called = {"hit": False}
393
+
394
+ def mock_get(*args, **kwargs):
395
+ network_called["hit"] = True
396
+ return httpx.Response(200, json={"server_version": "1.0.5"})
397
+
398
+ monkeypatch.setattr(httpx, "get", mock_get)
399
+ version_check.check_version_compatibility("http://localhost:8000")
400
+ assert network_called["hit"] is True
401
+
375
402
 
376
403
  # ── Auto-update tests ───────────────────────────────────────────
377
404
 
@@ -494,7 +494,7 @@ wheels = [
494
494
 
495
495
  [[package]]
496
496
  name = "observal-cli"
497
- version = "1.2.0"
497
+ version = "1.2.1"
498
498
  source = { editable = "." }
499
499
  dependencies = [
500
500
  { name = "asyncpg" },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "web",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "private": true,
5
5
  "license": "AGPL-3.0-only",
6
6
  "packageManager": "pnpm@10.33.4",
@@ -48,19 +48,8 @@ function LoginContent() {
48
48
  setLoading(true);
49
49
  window.history.replaceState({}, "", "/login");
50
50
 
51
- fetch("/api/v1/auth/exchange", {
52
- method: "POST",
53
- headers: { "Content-Type": "application/json" },
54
- body: JSON.stringify({ code: ssoCode }),
55
- })
56
- .then(async (res) => {
57
- if (!res.ok) {
58
- const text = await res.text().catch(() => res.statusText);
59
- throw new Error(text);
60
- }
61
- return res.json();
62
- })
63
- .then((data: { access_token: string; refresh_token: string; user: { role: string; name: string; email: string; username?: string; avatar_url?: string | null } }) => {
51
+ auth.exchangeCode({ code: ssoCode })
52
+ .then((data) => {
64
53
  setTokens(data.access_token, data.refresh_token);
65
54
  setUserRole(data.user.role);
66
55
  setUserName(data.user.name);
@@ -159,7 +148,11 @@ function LoginContent() {
159
148
 
160
149
  function handleSsoLogin() {
161
150
  setSsoLoading(true);
162
- window.location.href = "/api/v1/auth/oauth/login";
151
+ const nextParam = searchParams.get("next");
152
+ const url = nextParam && nextParam.startsWith("/")
153
+ ? `/api/v1/auth/oauth/login?next=${encodeURIComponent(nextParam)}`
154
+ : "/api/v1/auth/oauth/login";
155
+ window.location.href = url;
163
156
  }
164
157
 
165
158
  if (mustChangePassword) {
@@ -166,7 +166,7 @@ export default function ComponentDetailPage({ params }: { params: Promise<{ id:
166
166
  {/* Grid: Main + Sidebar */}
167
167
  <div className="grid grid-cols-1 lg:grid-cols-[1fr_320px] gap-8 items-start">
168
168
  {/* Tabs */}
169
- <Tabs defaultValue="overview">
169
+ <Tabs defaultValue="overview" className="min-w-0">
170
170
  <TabsList>
171
171
  <TabsTrigger value="overview">Overview</TabsTrigger>
172
172
  <TabsTrigger value="reviews">
@@ -518,7 +518,7 @@ function ComponentMetadata({ item }: { item: RegistryItem }) {
518
518
  <h3 className="text-xs font-semibold uppercase tracking-wider text-muted-foreground">
519
519
  {skillMd ? "Skill File" : "Prompt Template"}
520
520
  </h3>
521
- <div className="rounded-md border border-border bg-muted/20 p-4 overflow-y-auto max-h-[600px]">
521
+ <div className="rounded-md border border-border bg-muted/20 p-4 overflow-y-auto max-h-[360px]">
522
522
  <div className="prose prose-sm dark:prose-invert max-w-none text-foreground/90 leading-relaxed">
523
523
  <ReactMarkdown remarkPlugins={[remarkGfm]}>{markdownContent}</ReactMarkdown>
524
524
  </div>
@@ -6,9 +6,10 @@
6
6
  import { useAuthGuard, useOptionalAuth } from "@/hooks/use-auth";
7
7
 
8
8
  export function AuthGuard({ children }: { children: React.ReactNode }) {
9
- useAuthGuard();
10
- // Render children immediately to prevent hydration mismatch
11
- // The useAuthGuard hook handles redirects via side effects
9
+ const { ready } = useAuthGuard();
10
+ // Block rendering until auth state is confirmed to prevent flicker
11
+ // of protected content before redirect
12
+ if (!ready) return <div className="flex h-screen w-full items-center justify-center" />;
12
13
  return <>{children}</>;
13
14
  }
14
15
 
@@ -7,8 +7,9 @@
7
7
  import { useRoleGuard, type Role } from "@/hooks/use-role-guard";
8
8
 
9
9
  export function RoleGuard({ minRole, children }: { minRole: Role; children: React.ReactNode }) {
10
- useRoleGuard(minRole);
11
- // Render children immediately to prevent hydration mismatch
12
- // The useRoleGuard hook handles redirects via side effects
10
+ const { ready } = useRoleGuard(minRole);
11
+ // Block rendering until role is confirmed to prevent flicker
12
+ // of protected content before redirect
13
+ if (!ready) return <div className="flex h-screen w-full items-center justify-center" />;
13
14
  return <>{children}</>;
14
15
  }
@@ -1,3 +1,4 @@
1
+
1
2
  // SPDX-FileCopyrightText: 2026 Aryan Iyappan <aryaniyappan2006@gmail.com>
2
3
  // SPDX-FileCopyrightText: 2026 Harishankar <harishankar0301@gmail.com>
3
4
  // SPDX-FileCopyrightText: 2026 Hari Srinivasan <harisrini21@gmail.com>
@@ -263,7 +264,10 @@ async function request<T = unknown>(
263
264
  : JSON.stringify(parsed.error);
264
265
  }
265
266
  } catch {
266
- // not JSON, use raw text
267
+ // not JSON, use raw text unless it's HTML or a 5xx error
268
+ if (response.status >= 500 || text.trim().startsWith("<")) {
269
+ detail = "Unable to reach the server. Please try again later.";
270
+ }
267
271
  }
268
272
  const err = new Error(detail);
269
273
  (err as Error & { status: number }).status = response.status;
File without changes
File without changes
File without changes
File without changes
File without changes