gravity-cli 0.11.0__tar.gz → 0.11.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 (285) hide show
  1. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/PKG-INFO +2 -2
  2. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/pyproject.toml +1 -1
  3. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/pyproject.toml +2 -2
  4. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/CHANGELOG.md +5 -0
  5. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/connect.py +5 -3
  6. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/run.py +11 -6
  7. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/dev.py +2 -2
  8. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/dev_page/index.html +2 -2
  9. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_connect.py +1 -1
  10. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_connect_v2.py +25 -1
  11. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_dev_v2.py +9 -0
  12. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/uv.lock +6 -6
  13. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/.env.example +0 -0
  14. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/.github/workflows/ci.yml +0 -0
  15. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/.github/workflows/composio-watch.yml +0 -0
  16. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/.github/workflows/release.yml +0 -0
  17. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/.gitignore +0 -0
  18. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/AGENT_STANDARD.md +0 -0
  19. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/AGENT_STANDARD_V2.md +0 -0
  20. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/LICENSE +0 -0
  21. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/NOTICE +0 -0
  22. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/README.md +0 -0
  23. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/RELEASING.md +0 -0
  24. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/TEMPLATES.md +0 -0
  25. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/LICENSE +0 -0
  26. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/NOTICE +0 -0
  27. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/README.md +0 -0
  28. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/__init__.py +0 -0
  29. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/__main__.py +0 -0
  30. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/built_ins.py +0 -0
  31. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/catalog.py +0 -0
  32. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/catalog.yaml +0 -0
  33. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/catalog_imported.yaml +0 -0
  34. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/contract.py +0 -0
  35. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/cron.py +0 -0
  36. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/describe.py +0 -0
  37. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/errors.py +0 -0
  38. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/export.py +0 -0
  39. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/gen_catalog.py +0 -0
  40. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/gen_vocabulary.py +0 -0
  41. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/instance.py +0 -0
  42. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/manifest.py +0 -0
  43. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/manifest_v2.py +0 -0
  44. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/rules.py +0 -0
  45. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/rules_cases.json +0 -0
  46. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/source_scan.py +0 -0
  47. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/specs.py +0 -0
  48. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/validation.py +0 -0
  49. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/__init__.py +0 -0
  50. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/__main__.py +0 -0
  51. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/capabilities.yaml +0 -0
  52. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/airtable.yaml +0 -0
  53. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/asana.yaml +0 -0
  54. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/browser_tool.yaml +0 -0
  55. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/composio_search.yaml +0 -0
  56. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/dropbox.yaml +0 -0
  57. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/exa.yaml +0 -0
  58. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/excel.yaml +0 -0
  59. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/firecrawl.yaml +0 -0
  60. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/github.yaml +0 -0
  61. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/gmail.yaml +0 -0
  62. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googlecalendar.yaml +0 -0
  63. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googledocs.yaml +0 -0
  64. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googledrive.yaml +0 -0
  65. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googlesheets.yaml +0 -0
  66. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googleslides.yaml +0 -0
  67. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googletasks.yaml +0 -0
  68. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/hackernews.yaml +0 -0
  69. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/hubspot.yaml +0 -0
  70. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/instagram.yaml +0 -0
  71. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/jira.yaml +0 -0
  72. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/linear.yaml +0 -0
  73. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/linkedin.yaml +0 -0
  74. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/microsoft_teams.yaml +0 -0
  75. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/notion.yaml +0 -0
  76. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/outlook.yaml +0 -0
  77. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/perplexityai.yaml +0 -0
  78. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/pinterest.yaml +0 -0
  79. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/reddit.yaml +0 -0
  80. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/slack.yaml +0 -0
  81. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/tavily.yaml +0 -0
  82. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/youtube.yaml +0 -0
  83. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/core_shapes.yaml +0 -0
  84. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/generated_shapes.yaml +0 -0
  85. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/policy.yaml +0 -0
  86. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/airtable.json +0 -0
  87. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/asana.json +0 -0
  88. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/browser_tool.json +0 -0
  89. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/composio_search.json +0 -0
  90. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/dropbox.json +0 -0
  91. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/exa.json +0 -0
  92. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/excel.json +0 -0
  93. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/firecrawl.json +0 -0
  94. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/github.json +0 -0
  95. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/gmail.json +0 -0
  96. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googlecalendar.json +0 -0
  97. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googledocs.json +0 -0
  98. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googledrive.json +0 -0
  99. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googlesheets.json +0 -0
  100. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googleslides.json +0 -0
  101. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googletasks.json +0 -0
  102. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/hackernews.json +0 -0
  103. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/hubspot.json +0 -0
  104. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/instagram.json +0 -0
  105. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/jira.json +0 -0
  106. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/linear.json +0 -0
  107. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/linkedin.json +0 -0
  108. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/microsoft_teams.json +0 -0
  109. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/notion.json +0 -0
  110. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/outlook.json +0 -0
  111. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/perplexityai.json +0 -0
  112. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/pinterest.json +0 -0
  113. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/reddit.json +0 -0
  114. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/slack.json +0 -0
  115. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/tavily.json +0 -0
  116. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/youtube.json +0 -0
  117. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas.py +0 -0
  118. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/ochat.yaml +0 -0
  119. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/ocrm.yaml +0 -0
  120. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/ogh.yaml +0 -0
  121. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/oms.yaml +0 -0
  122. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/oweb.yaml +0 -0
  123. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/owork.yaml +0 -0
  124. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/shared.yaml +0 -0
  125. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/sync.py +0 -0
  126. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/ochat.yaml +0 -0
  127. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/ocrm.yaml +0 -0
  128. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/ogh.yaml +0 -0
  129. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/oms.yaml +0 -0
  130. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/oweb.yaml +0 -0
  131. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/owork.yaml +0 -0
  132. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/rchat.yaml +0 -0
  133. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/rfiles.yaml +0 -0
  134. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/rgh.yaml +0 -0
  135. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/rtrack.yaml +0 -0
  136. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/rwork.yaml +0 -0
  137. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.yaml +0 -0
  138. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/schema/manifest.schema.json +0 -0
  139. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/conftest.py +0 -0
  140. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/fixtures/demo_manifests.yaml +0 -0
  141. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_accounts.py +0 -0
  142. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_actions_memory.py +0 -0
  143. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_catalog_parity.py +0 -0
  144. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_cron.py +0 -0
  145. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_describe.py +0 -0
  146. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_errors.py +0 -0
  147. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_generated_tables.py +0 -0
  148. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_instance.py +0 -0
  149. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_json_schema.py +0 -0
  150. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_kind_outputs.py +0 -0
  151. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_manifest.py +0 -0
  152. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_manifest_v2.py +0 -0
  153. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_place_maker.py +0 -0
  154. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_rules.py +0 -0
  155. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_slots.py +0 -0
  156. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_source_scan.py +0 -0
  157. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_sync.py +0 -0
  158. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_validation.py +0 -0
  159. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_vocabulary.py +0 -0
  160. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/scripts/composio-watch.sh +0 -0
  161. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/BUILDER_GUIDE.md +0 -0
  162. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/BUILDER_GUIDE_V2.md +0 -0
  163. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/__init__.py +0 -0
  164. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/__main__.py +0 -0
  165. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/_runner_script.py +0 -0
  166. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/api.py +0 -0
  167. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/changelog.py +0 -0
  168. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/cli.py +0 -0
  169. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/__init__.py +0 -0
  170. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/adapt.py +0 -0
  171. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/build.py +0 -0
  172. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/capabilities.py +0 -0
  173. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/changelog.py +0 -0
  174. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/check.py +0 -0
  175. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/dev.py +0 -0
  176. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/docs.py +0 -0
  177. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/guide.py +0 -0
  178. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/help.py +0 -0
  179. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/init.py +0 -0
  180. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/login.py +0 -0
  181. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/memory.py +0 -0
  182. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/push.py +0 -0
  183. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/runs.py +0 -0
  184. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/schedule.py +0 -0
  185. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/tools.py +0 -0
  186. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/update.py +0 -0
  187. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/validate.py +0 -0
  188. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/config.py +0 -0
  189. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/docs/Gravity.agent.md +0 -0
  190. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/docs/Gravity.getting-started.md +0 -0
  191. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/docs/problem-to-agent.md +0 -0
  192. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/inputs.py +0 -0
  193. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/localrun.py +0 -0
  194. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/manifest.py +0 -0
  195. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/project.py +0 -0
  196. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/chat/.gitignore +0 -0
  197. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/chat/manifest.yaml +0 -0
  198. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/chat/requirements.txt +0 -0
  199. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/chat/src/agent.py +0 -0
  200. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/deepagent/.gitignore +0 -0
  201. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/deepagent/manifest.yaml +0 -0
  202. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/deepagent/requirements.txt +0 -0
  203. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/deepagent/src/agent.py +0 -0
  204. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/minimal/.gitignore +0 -0
  205. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/minimal/manifest.yaml +0 -0
  206. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/minimal/requirements.txt +0 -0
  207. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/minimal/src/agent.py +0 -0
  208. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/.gitignore +0 -0
  209. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/manifest.yaml +0 -0
  210. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/requirements.txt +0 -0
  211. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/src/agent.py +0 -0
  212. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/src/gateway.py +0 -0
  213. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/src/nodes/agent.py +0 -0
  214. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/src/prompts.py +0 -0
  215. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/src/state.py +0 -0
  216. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/chat/.gitignore +0 -0
  217. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/chat/manifest.yaml +0 -0
  218. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/chat/requirements.txt +0 -0
  219. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/chat/src/agent.py +0 -0
  220. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/chat/tests/test_agent.py +0 -0
  221. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/deepagent/.gitignore +0 -0
  222. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/deepagent/manifest.yaml +0 -0
  223. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/deepagent/requirements.txt +0 -0
  224. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/deepagent/src/agent.py +0 -0
  225. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/deepagent/tests/test_agent.py +0 -0
  226. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/minimal/.gitignore +0 -0
  227. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/minimal/manifest.yaml +0 -0
  228. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/minimal/requirements.txt +0 -0
  229. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/minimal/src/agent.py +0 -0
  230. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/minimal/tests/test_agent.py +0 -0
  231. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/.gitignore +0 -0
  232. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/manifest.yaml +0 -0
  233. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/requirements.txt +0 -0
  234. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/__init__.py +0 -0
  235. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/agent.py +0 -0
  236. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/gateway.py +0 -0
  237. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/nodes/__init__.py +0 -0
  238. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/nodes/agent.py +0 -0
  239. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/prompts.py +0 -0
  240. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/state.py +0 -0
  241. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/tests/test_agent.py +0 -0
  242. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/timeline.py +0 -0
  243. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/ui.py +0 -0
  244. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/updater.py +0 -0
  245. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/workspace.py +0 -0
  246. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter/manifest.yaml +0 -0
  247. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter/requirements.txt +0 -0
  248. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter/src/agent.py +0 -0
  249. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter/src/summary.py +0 -0
  250. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter/tests/test_summary.py +0 -0
  251. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter-v2/manifest.yaml +0 -0
  252. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter-v2/requirements.txt +0 -0
  253. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter-v2/src/agent.py +0 -0
  254. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter-v2/src/summary.py +0 -0
  255. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter-v2/tests/test_summary.py +0 -0
  256. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/conftest.py +0 -0
  257. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_adapt.py +0 -0
  258. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_agent_guide.py +0 -0
  259. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_agents.py +0 -0
  260. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_api.py +0 -0
  261. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_build_push.py +0 -0
  262. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_changelog.py +0 -0
  263. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_check.py +0 -0
  264. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_dev.py +0 -0
  265. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_gateway_token.py +0 -0
  266. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_inputs_memory.py +0 -0
  267. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_localrun.py +0 -0
  268. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_manifest_integration.py +0 -0
  269. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_run.py +0 -0
  270. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_run_v2.py +0 -0
  271. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_runs.py +0 -0
  272. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_schedule.py +0 -0
  273. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_schedule_v2.py +0 -0
  274. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_session.py +0 -0
  275. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_templates.py +0 -0
  276. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_templates_v2.py +0 -0
  277. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_timeline.py +0 -0
  278. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_tools.py +0 -0
  279. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_ui.py +0 -0
  280. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_updater.py +0 -0
  281. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_v2_cli.py +0 -0
  282. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_validate.py +0 -0
  283. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_validate_v2.py +0 -0
  284. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_welcome.py +0 -0
  285. {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_workspace.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gravity-cli
3
- Version: 0.11.0
3
+ Version: 0.11.1
4
4
  Summary: gravity cli — init, run, and push python agents to the Gravity marketplace
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
7
7
  License-File: NOTICE
8
8
  Requires-Python: >=3.12
9
- Requires-Dist: gravity-schema==0.11.0
9
+ Requires-Dist: gravity-schema==0.11.1
10
10
  Requires-Dist: httpx>=0.27.0
11
11
  Requires-Dist: keyring>=25.0.0
12
12
  Requires-Dist: python-dotenv>=1.0.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "gravity-schema"
3
- version = "0.11.0"
3
+ version = "0.11.1"
4
4
  description = "Gravity agent manifest contract — models, validation, and JSON Schema export"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -1,13 +1,13 @@
1
1
  [project]
2
2
  name = "gravity-cli"
3
- version = "0.11.0"
3
+ version = "0.11.1"
4
4
  description = "gravity cli — init, run, and push python agents to the Gravity marketplace"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
7
7
  license-files = ["LICENSE", "NOTICE"]
8
8
  requires-python = ">=3.12"
9
9
  dependencies = [
10
- "gravity-schema==0.11.0", # released in lockstep: always the same version as this package
10
+ "gravity-schema==0.11.1", # released in lockstep: always the same version as this package
11
11
  "typer>=0.15.0",
12
12
  "httpx>=0.27.0",
13
13
  "rich>=13.9.0",
@@ -4,6 +4,11 @@ Shown by `gravity update` and `gravity changelog`, and after an update. Each rel
4
4
  then one bullet per change: `- new|improved|fixed: A one-line headline. The detail behind it.`
5
5
  Write it for a builder, not for a maintainer. `tests/test_changelog.py` fails a release that has no entry.
6
6
 
7
+ ## 0.11.1 - 2026-10-31
8
+
9
+ - fixed: `gravity connect sheets` (and the other v1 app names) works again on a gateway that serves both contracts. 0.9.0 through 0.11.0 took the v2 path on any gateway that served v2, where v1's names aren't apps; now only a v2-only gateway gets it.
10
+ - fixed: Light and dark mode's secondary text on the local dashboard has enough contrast to read, and a v1 gateway's error there says what to do about it.
11
+
7
12
  ## 0.11.0 - 2026-10-30
8
13
 
9
14
  - new: Show progress while your agent runs. Write `{"note": "Scoring 12 candidates"}` or `{"partial": {"key": "candidates", "items": [...]}}` with LangGraph's `get_stream_writer()` from any node: `gravity run` and `gravity dev` show each note as a line and the results so far, as the run page on Gravity does. See "Progress while it runs" in Gravity.agent.md.
@@ -1,7 +1,9 @@
1
1
  """gravity connect: link your own accounts (Gmail, Slack...) so your agents' runs can use them.
2
2
 
3
3
  Through the gateway, as the account your gateway token belongs to. Two gateway protocols, told apart by the
4
- gateway's GET /healthz (`gateway_v2`):
4
+ gateway's GET /healthz (`gateway_contracts`). A gateway that still serves v1 is asked the v1 way, whatever the
5
+ agent: v1's app names (sheets, calendar) keep working, and it connects the same Composio account v2 runs use.
6
+ Only a gateway that serves v2 alone is asked the v2 way:
5
7
 
6
8
  v1 (tool names): GET /connections -> {"user", "connected": [toolkit]}; POST /connections {"toolkit"} ->
7
9
  {"redirect_url", "toolkit", "already_connected"}. App names as tool names spell them (gmail, sheets).
@@ -22,7 +24,7 @@ from gravity_schema import VOCABULARY
22
24
 
23
25
  from .. import Problem, ui
24
26
  from .login import gateway_token, token_fix
25
- from .run import gateway_urls, gateway_v2
27
+ from .run import gateway_contracts, gateway_urls
26
28
 
27
29
  WAIT_SECONDS = 300
28
30
  POLL_SECONDS = 3
@@ -204,4 +206,4 @@ def connect_command(
204
206
  app: str = typer.Argument(None, help="The app: gmail, slack, sheets, calendar, linear, github..."),
205
207
  ):
206
208
  """Connect an account your agents' tools act on. With no app, list what is connected."""
207
- (_connect_v2 if gateway_v2() else _connect_v1)(app)
209
+ (_connect_v2 if gateway_contracts() == {"v2"} else _connect_v1)(app)
@@ -38,9 +38,9 @@ def gateway_urls() -> tuple[str, str]:
38
38
  return url, url.rstrip("/").removesuffix("/mcp")
39
39
 
40
40
 
41
- def gateway_v2(base: str | None = None) -> bool:
42
- """Does the gateway serve contract v2? One that says so lists "v2" in /healthz `contracts`; until then a v1
43
- gateway is the one whose /healthz lists the `tools` it serves."""
41
+ def gateway_contracts(base: str | None = None) -> frozenset[str]:
42
+ """The contracts the gateway serves: what /healthz lists in `contracts`; before it said, a v1 gateway is the
43
+ one whose /healthz lists the `tools` it serves, and anything else v2 only."""
44
44
  base = base or gateway_urls()[1]
45
45
  try:
46
46
  resp = httpx.get(f"{base}/healthz", timeout=10)
@@ -48,10 +48,15 @@ def gateway_v2(base: str | None = None) -> bool:
48
48
  except (httpx.HTTPError, ValueError):
49
49
  health = None
50
50
  if not isinstance(health, dict):
51
- return False # unreachable or not a gateway's answer: the first real call reports it, in v1's words
51
+ return frozenset({"v1"}) # unreachable or not a gateway's answer: the first real call reports it, in v1's words
52
52
  if isinstance(health.get("contracts"), list):
53
- return "v2" in health["contracts"]
54
- return "tools" not in health
53
+ return frozenset(map(str, health["contracts"]))
54
+ return frozenset({"v1"} if "tools" in health else {"v2"})
55
+
56
+
57
+ def gateway_v2(base: str | None = None) -> bool:
58
+ """Does the gateway run contract v2 agents?"""
59
+ return "v2" in gateway_contracts(base)
55
60
 
56
61
 
57
62
  V1_GATEWAY = ("This agent is contract v2, and the gateway at {base} runs contract v1",
@@ -199,8 +199,8 @@ class DevState:
199
199
  "needed": [{"toolkit": t, "connected": t in connected} for t in wanted]}
200
200
  else:
201
201
  if not run_cmd.gateway_v2(base):
202
- title, detail, _ = run_cmd.V1_GATEWAY
203
- raise Problem(title.format(base=base), detail)
202
+ title, detail, fix = run_cmd.V1_GATEWAY
203
+ raise Problem(title.format(base=base), detail, fix)
204
204
  picked = self._picks(m)
205
205
  wanted = sorted({p.app for section in (picked.sources, picked.writes) for p in section.values() if p.app})
206
206
  statuses = []
@@ -7,14 +7,14 @@
7
7
  <title>Gravity · local dashboard</title>
8
8
  <style>
9
9
  :root {
10
- --bg: #f8eef1; --surface: #fffafb; --surface-2: #fdf4f6; --ink: #2b2126; --ink-2: #5d4a52; --muted: #957a84;
10
+ --bg: #f8eef1; --surface: #fffafb; --surface-2: #fdf4f6; --ink: #2b2126; --ink-2: #5d4a52; --muted: #7f656f;
11
11
  --line: rgba(43, 33, 38, 0.12); --primary: #F8B300; --primary-deep: #a87700; --primary-soft: #fdf1cc;
12
12
  --ok: #3f7d43; --ok-soft: #eef6ee; --bad: #b53a25; --bad-soft: #fdece7; --code: #f3e6ea;
13
13
  --serif: Georgia, "Times New Roman", serif; --sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
14
14
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
15
15
  }
16
16
  @media (prefers-color-scheme: dark) {
17
- :root { --bg: #1d1618; --surface: #261d20; --surface-2: #2c2226; --ink: #f3e9ec; --ink-2: #cdb9c0; --muted: #9c838c;
17
+ :root { --bg: #1d1618; --surface: #261d20; --surface-2: #2c2226; --ink: #f3e9ec; --ink-2: #cdb9c0; --muted: #aa949c;
18
18
  --line: rgba(255, 255, 255, 0.12); --primary-deep: #f0b93a; --primary-soft: #3a2f12; --ok: #7bc47f; --ok-soft: #1f2e20;
19
19
  --bad: #f08a77; --bad-soft: #3a1f1a; --code: #33282c; }
20
20
  }
@@ -12,7 +12,7 @@ from gravity_cli.commands import connect
12
12
  @pytest.fixture(autouse=True)
13
13
  def v1_gateway(monkeypatch):
14
14
  """These tests are the v1 gateway's protocol; test_connect_v2.py has v2's."""
15
- monkeypatch.setattr(connect, "gateway_v2", lambda: False)
15
+ monkeypatch.setattr(connect, "gateway_contracts", lambda: frozenset({"v1"}))
16
16
 
17
17
 
18
18
  @pytest.fixture
@@ -12,7 +12,7 @@ from gravity_cli.commands import connect
12
12
  @pytest.fixture(autouse=True)
13
13
  def v2_gateway(monkeypatch):
14
14
  """These tests are the v2 protocol's; test_connect.py has the v1 gateway's."""
15
- monkeypatch.setattr(connect, "gateway_v2", lambda: True)
15
+ monkeypatch.setattr(connect, "gateway_contracts", lambda: frozenset({"v2"}))
16
16
 
17
17
 
18
18
  @pytest.fixture
@@ -183,3 +183,27 @@ def test_which_protocol_the_gateway_speaks(monkeypatch, status, body, v2):
183
183
  monkeypatch.setattr(run, "gateway_urls", lambda: ("https://gw/mcp", "https://gw"))
184
184
  monkeypatch.setattr(run.httpx, "get", lambda url, timeout: Resp(status, body))
185
185
  assert run.gateway_v2() is v2
186
+
187
+
188
+ def test_a_gateway_that_serves_both_connects_the_v1_way(monkeypatch):
189
+ """Once the gateway runs v1 and v2, `gravity connect sheets` (v1's app name) must keep working: it is asked the
190
+ v1 way, which knows v1's names and Composio's, and connects the account v2 runs use too."""
191
+ asked = []
192
+ monkeypatch.setattr(connect, "gateway_contracts", lambda: frozenset({"v1", "v2"}))
193
+ monkeypatch.setattr(connect, "_connect_v1", lambda app: asked.append(("v1", app)))
194
+ monkeypatch.setattr(connect, "_connect_v2", lambda app: asked.append(("v2", app)))
195
+ connect.connect_command("sheets")
196
+ assert asked == [("v1", "sheets")]
197
+
198
+
199
+ @pytest.mark.parametrize(("body", "served"), [
200
+ ({"ok": True, "tools": ["example.echo"]}, {"v1"}),
201
+ ({"ok": True}, {"v2"}),
202
+ ({"ok": True, "tools": ["example.echo"], "contracts": ["v1", "v2"]}, {"v1", "v2"}),
203
+ ])
204
+ def test_which_contracts_the_gateway_serves(monkeypatch, body, served):
205
+ from gravity_cli.commands import run
206
+
207
+ monkeypatch.setattr(run, "gateway_urls", lambda: ("https://gw/mcp", "https://gw"))
208
+ monkeypatch.setattr(run.httpx, "get", lambda url, timeout: Resp(200, body))
209
+ assert run.gateway_contracts() == served
@@ -185,6 +185,15 @@ def test_gateway_info_says_which_apps_the_runs_use_are_connected(server, gateway
185
185
  assert ("POST", "http://gw.test/connections", {"apps": ["googletasks", "linear"]}) in gateway
186
186
 
187
187
 
188
+ def test_a_v1_gateway_says_what_to_do_about_it(server, gateway, monkeypatch):
189
+ """The Accounts card's error for a gateway that runs only v1 names the way out, as the CLI's does."""
190
+ monkeypatch.setattr(run_cmd, "gateway_v2", lambda base=None: False)
191
+ client, _ = server
192
+ info = client.get("/api/gateway").json()
193
+ assert not info["ok"] and "runs contract v1" in info["error"]
194
+ assert "GRAVITY_GATEWAY_URL" in info["error"] and "keep the agent on contract v1" in info["error"]
195
+
196
+
188
197
  def test_connect_goes_to_the_gateway_and_rejects_an_unknown_app(server, gateway):
189
198
  client, _ = server
190
199
  assert client.post("/api/connections", json={"app": "Gmail; drop"}).status_code == 400
@@ -59,7 +59,7 @@ name = "cffi"
59
59
  version = "2.1.1"
60
60
  source = { registry = "https://pypi.org/simple" }
61
61
  dependencies = [
62
- { name = "pycparser", marker = "implementation_name != 'PyPy' and sys_platform != 'win32'" },
62
+ { name = "pycparser", marker = "implementation_name != 'PyPy'" },
63
63
  ]
64
64
  sdist = { url = "https://files.pythonhosted.org/packages/9e/ef/008a1939e372c06329a3fce4279c02f328488f3526744906eeec3da7ad5f/cffi-2.1.1.tar.gz", hash = "sha256:dd31f52ea1086513bb9df30f8fcee9b8918323ae067a3d5b78bc826a000712be", size = 530807, upload-time = "2026-08-03T21:21:18.939Z" }
65
65
  wheels = [
@@ -123,7 +123,7 @@ name = "cryptography"
123
123
  version = "50.0.0"
124
124
  source = { registry = "https://pypi.org/simple" }
125
125
  dependencies = [
126
- { name = "cffi", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'win32'" },
126
+ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
127
127
  ]
128
128
  sdist = { url = "https://files.pythonhosted.org/packages/de/41/6cbdcf9142d00fe82836fbb51e503e58088575cf7a0fe1dbff6695bf0840/cryptography-50.0.0.tar.gz", hash = "sha256:eeac2acb5a20ed25e0ad6d1df9891a520b78b404266b6d11778f25d5d691a6c9", size = 880201, upload-time = "2026-07-31T14:25:10.11Z" }
129
129
  wheels = [
@@ -164,7 +164,7 @@ wheels = [
164
164
 
165
165
  [[package]]
166
166
  name = "gravity-cli"
167
- version = "0.11.0"
167
+ version = "0.11.1"
168
168
  source = { editable = "." }
169
169
  dependencies = [
170
170
  { name = "gravity-schema" },
@@ -201,7 +201,7 @@ dev = [
201
201
 
202
202
  [[package]]
203
203
  name = "gravity-schema"
204
- version = "0.11.0"
204
+ version = "0.11.1"
205
205
  source = { editable = "packages/gravity-schema" }
206
206
  dependencies = [
207
207
  { name = "pydantic" },
@@ -619,8 +619,8 @@ name = "secretstorage"
619
619
  version = "3.5.0"
620
620
  source = { registry = "https://pypi.org/simple" }
621
621
  dependencies = [
622
- { name = "cryptography", marker = "sys_platform != 'win32'" },
623
- { name = "jeepney", marker = "sys_platform != 'win32'" },
622
+ { name = "cryptography" },
623
+ { name = "jeepney" },
624
624
  ]
625
625
  sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" }
626
626
  wheels = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes