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.
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/PKG-INFO +2 -2
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/pyproject.toml +1 -1
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/pyproject.toml +2 -2
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/CHANGELOG.md +5 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/connect.py +5 -3
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/run.py +11 -6
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/dev.py +2 -2
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/dev_page/index.html +2 -2
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_connect.py +1 -1
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_connect_v2.py +25 -1
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_dev_v2.py +9 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/uv.lock +6 -6
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/.env.example +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/.github/workflows/ci.yml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/.github/workflows/composio-watch.yml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/.github/workflows/release.yml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/.gitignore +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/AGENT_STANDARD.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/AGENT_STANDARD_V2.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/LICENSE +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/NOTICE +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/README.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/RELEASING.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/TEMPLATES.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/LICENSE +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/NOTICE +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/README.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/__init__.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/__main__.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/built_ins.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/catalog.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/catalog.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/catalog_imported.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/contract.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/cron.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/describe.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/errors.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/export.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/gen_catalog.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/gen_vocabulary.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/instance.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/manifest.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/manifest_v2.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/rules.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/rules_cases.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/source_scan.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/specs.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/validation.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/__init__.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/__main__.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/capabilities.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/airtable.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/asana.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/browser_tool.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/composio_search.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/dropbox.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/exa.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/excel.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/firecrawl.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/github.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/gmail.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googlecalendar.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googledocs.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googledrive.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googlesheets.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googleslides.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/googletasks.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/hackernews.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/hubspot.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/instagram.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/jira.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/linear.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/linkedin.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/microsoft_teams.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/notion.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/outlook.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/perplexityai.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/pinterest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/reddit.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/slack.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/tavily.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/connectors/youtube.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/core_shapes.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/generated_shapes.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/policy.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/airtable.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/asana.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/browser_tool.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/composio_search.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/dropbox.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/exa.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/excel.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/firecrawl.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/github.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/gmail.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googlecalendar.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googledocs.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googledrive.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googlesheets.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googleslides.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/googletasks.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/hackernews.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/hubspot.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/instagram.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/jira.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/linear.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/linkedin.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/microsoft_teams.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/notion.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/outlook.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/perplexityai.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/pinterest.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/reddit.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/slack.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/tavily.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas/youtube.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/schemas.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/ochat.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/ocrm.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/ogh.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/oms.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/oweb.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/owork.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/shapes.d/shared.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/sync.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/ochat.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/ocrm.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/ogh.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/oms.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/oweb.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/owork.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/rchat.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/rfiles.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/rgh.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/rtrack.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.d/rwork.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/verbs.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/schema/manifest.schema.json +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/conftest.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/fixtures/demo_manifests.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_accounts.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_actions_memory.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_catalog_parity.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_cron.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_describe.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_errors.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_generated_tables.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_instance.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_json_schema.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_kind_outputs.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_manifest.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_manifest_v2.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_place_maker.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_rules.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_slots.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_source_scan.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_sync.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_validation.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/test_vocabulary.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/scripts/composio-watch.sh +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/BUILDER_GUIDE.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/BUILDER_GUIDE_V2.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/__init__.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/__main__.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/_runner_script.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/api.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/changelog.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/cli.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/__init__.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/adapt.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/build.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/capabilities.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/changelog.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/check.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/dev.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/docs.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/guide.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/help.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/init.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/login.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/memory.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/push.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/runs.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/schedule.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/tools.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/update.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/commands/validate.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/config.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/docs/Gravity.agent.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/docs/Gravity.getting-started.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/docs/problem-to-agent.md +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/inputs.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/localrun.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/manifest.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/project.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/chat/.gitignore +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/chat/manifest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/chat/requirements.txt +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/chat/src/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/deepagent/.gitignore +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/deepagent/manifest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/deepagent/requirements.txt +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/deepagent/src/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/minimal/.gitignore +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/minimal/manifest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/minimal/requirements.txt +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/minimal/src/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/.gitignore +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/manifest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/requirements.txt +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/src/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/src/gateway.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/src/nodes/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/src/prompts.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/structured/src/state.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/chat/.gitignore +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/chat/manifest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/chat/requirements.txt +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/chat/src/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/chat/tests/test_agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/deepagent/.gitignore +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/deepagent/manifest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/deepagent/requirements.txt +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/deepagent/src/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/deepagent/tests/test_agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/minimal/.gitignore +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/minimal/manifest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/minimal/requirements.txt +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/minimal/src/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/minimal/tests/test_agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/.gitignore +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/manifest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/requirements.txt +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/__init__.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/gateway.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/nodes/__init__.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/nodes/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/prompts.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/src/state.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/templates/v2/structured/tests/test_agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/timeline.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/ui.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/updater.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/src/gravity_cli/workspace.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter/manifest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter/requirements.txt +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter/src/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter/src/summary.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter/tests/test_summary.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter-v2/manifest.yaml +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter-v2/requirements.txt +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter-v2/src/agent.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter-v2/src/summary.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/starter-v2/tests/test_summary.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/conftest.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_adapt.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_agent_guide.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_agents.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_api.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_build_push.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_changelog.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_check.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_dev.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_gateway_token.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_inputs_memory.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_localrun.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_manifest_integration.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_run.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_run_v2.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_runs.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_schedule.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_schedule_v2.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_session.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_templates.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_templates_v2.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_timeline.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_tools.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_ui.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_updater.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_v2_cli.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_validate.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_validate_v2.py +0 -0
- {gravity_cli-0.11.0 → gravity_cli-0.11.1}/tests/test_welcome.py +0 -0
- {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.
|
|
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.
|
|
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,13 +1,13 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "gravity-cli"
|
|
3
|
-
version = "0.11.
|
|
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.
|
|
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 (`
|
|
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
|
|
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
|
|
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
|
|
42
|
-
"""
|
|
43
|
-
|
|
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
|
|
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
|
|
54
|
-
return "tools"
|
|
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,
|
|
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: #
|
|
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: #
|
|
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, "
|
|
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, "
|
|
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'
|
|
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'
|
|
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.
|
|
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.
|
|
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"
|
|
623
|
-
{ name = "jeepney"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/__init__.py
RENAMED
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/__main__.py
RENAMED
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/built_ins.py
RENAMED
|
File without changes
|
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/catalog.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/contract.py
RENAMED
|
File without changes
|
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/describe.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/gen_catalog.py
RENAMED
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/gen_vocabulary.py
RENAMED
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/instance.py
RENAMED
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/manifest.py
RENAMED
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/manifest_v2.py
RENAMED
|
File without changes
|
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/rules_cases.json
RENAMED
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/source_scan.py
RENAMED
|
File without changes
|
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/validation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/gravity_schema/vocabulary/sync.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/schema/manifest.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
{gravity_cli-0.11.0 → gravity_cli-0.11.1}/packages/gravity-schema/tests/fixtures/demo_manifests.yaml
RENAMED
|
File without changes
|
|
File without changes
|