gravity-cli 0.7.0__tar.gz → 0.7.2__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 (134) hide show
  1. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/PKG-INFO +2 -2
  2. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/catalog.yaml +90 -0
  3. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/pyproject.toml +1 -1
  4. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/pyproject.toml +2 -2
  5. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/CHANGELOG.md +10 -0
  6. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/docs/Gravity.agent.md +16 -2
  7. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/uv.lock +2 -2
  8. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/.env.example +0 -0
  9. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/.github/workflows/ci.yml +0 -0
  10. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/.github/workflows/release.yml +0 -0
  11. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/.gitignore +0 -0
  12. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/AGENT_STANDARD.md +0 -0
  13. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/LICENSE +0 -0
  14. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/NOTICE +0 -0
  15. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/README.md +0 -0
  16. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/RELEASING.md +0 -0
  17. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/TEMPLATES.md +0 -0
  18. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/LICENSE +0 -0
  19. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/NOTICE +0 -0
  20. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/README.md +0 -0
  21. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/__init__.py +0 -0
  22. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/__main__.py +0 -0
  23. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/catalog.py +0 -0
  24. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/catalog_imported.yaml +0 -0
  25. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/contract.py +0 -0
  26. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/cron.py +0 -0
  27. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/errors.py +0 -0
  28. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/export.py +0 -0
  29. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/gen_catalog.py +0 -0
  30. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/manifest.py +0 -0
  31. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/rules.py +0 -0
  32. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/rules_cases.json +0 -0
  33. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/source_scan.py +0 -0
  34. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/gravity_schema/validation.py +0 -0
  35. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/schema/manifest.schema.json +0 -0
  36. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/conftest.py +0 -0
  37. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_actions_memory.py +0 -0
  38. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_catalog_parity.py +0 -0
  39. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_cron.py +0 -0
  40. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_errors.py +0 -0
  41. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_json_schema.py +0 -0
  42. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_kind_outputs.py +0 -0
  43. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_manifest.py +0 -0
  44. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_rules.py +0 -0
  45. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_slots.py +0 -0
  46. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_source_scan.py +0 -0
  47. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/packages/gravity-schema/tests/test_validation.py +0 -0
  48. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/BUILDER_GUIDE.md +0 -0
  49. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/__init__.py +0 -0
  50. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/__main__.py +0 -0
  51. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/_runner_script.py +0 -0
  52. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/api.py +0 -0
  53. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/changelog.py +0 -0
  54. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/cli.py +0 -0
  55. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/__init__.py +0 -0
  56. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/adapt.py +0 -0
  57. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/build.py +0 -0
  58. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/changelog.py +0 -0
  59. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/connect.py +0 -0
  60. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/dev.py +0 -0
  61. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/docs.py +0 -0
  62. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/guide.py +0 -0
  63. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/init.py +0 -0
  64. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/login.py +0 -0
  65. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/memory.py +0 -0
  66. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/push.py +0 -0
  67. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/run.py +0 -0
  68. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/runs.py +0 -0
  69. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/schedule.py +0 -0
  70. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/tools.py +0 -0
  71. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/update.py +0 -0
  72. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/commands/validate.py +0 -0
  73. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/config.py +0 -0
  74. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/dev.py +0 -0
  75. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/dev_page/index.html +0 -0
  76. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/docs/problem-to-agent.md +0 -0
  77. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/inputs.py +0 -0
  78. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/localrun.py +0 -0
  79. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/manifest.py +0 -0
  80. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/project.py +0 -0
  81. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/chat/.gitignore +0 -0
  82. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/chat/manifest.yaml +0 -0
  83. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/chat/requirements.txt +0 -0
  84. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/chat/src/agent.py +0 -0
  85. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/deepagent/.gitignore +0 -0
  86. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/deepagent/manifest.yaml +0 -0
  87. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/deepagent/requirements.txt +0 -0
  88. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/deepagent/src/agent.py +0 -0
  89. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/minimal/.gitignore +0 -0
  90. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/minimal/manifest.yaml +0 -0
  91. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/minimal/requirements.txt +0 -0
  92. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/minimal/src/agent.py +0 -0
  93. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/structured/.gitignore +0 -0
  94. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/structured/manifest.yaml +0 -0
  95. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/structured/requirements.txt +0 -0
  96. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/structured/src/agent.py +0 -0
  97. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/structured/src/gateway.py +0 -0
  98. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/structured/src/nodes/agent.py +0 -0
  99. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/structured/src/prompts.py +0 -0
  100. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/templates/structured/src/state.py +0 -0
  101. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/timeline.py +0 -0
  102. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/ui.py +0 -0
  103. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/updater.py +0 -0
  104. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/src/gravity_cli/workspace.py +0 -0
  105. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/starter/manifest.yaml +0 -0
  106. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/starter/requirements.txt +0 -0
  107. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/starter/src/agent.py +0 -0
  108. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/starter/src/summary.py +0 -0
  109. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/starter/tests/test_summary.py +0 -0
  110. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/conftest.py +0 -0
  111. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_adapt.py +0 -0
  112. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_agent_guide.py +0 -0
  113. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_agents.py +0 -0
  114. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_api.py +0 -0
  115. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_build_push.py +0 -0
  116. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_changelog.py +0 -0
  117. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_connect.py +0 -0
  118. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_dev.py +0 -0
  119. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_gateway_token.py +0 -0
  120. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_inputs_memory.py +0 -0
  121. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_localrun.py +0 -0
  122. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_manifest_integration.py +0 -0
  123. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_run.py +0 -0
  124. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_runs.py +0 -0
  125. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_schedule.py +0 -0
  126. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_session.py +0 -0
  127. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_templates.py +0 -0
  128. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_timeline.py +0 -0
  129. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_tools.py +0 -0
  130. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_ui.py +0 -0
  131. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_updater.py +0 -0
  132. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_validate.py +0 -0
  133. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_welcome.py +0 -0
  134. {gravity_cli-0.7.0 → gravity_cli-0.7.2}/tests/test_workspace.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gravity-cli
3
- Version: 0.7.0
3
+ Version: 0.7.2
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.7.0
9
+ Requires-Dist: gravity-schema==0.7.2
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
@@ -56,6 +56,15 @@
56
56
  guarantee: community
57
57
  side_effect: read
58
58
 
59
+ - name: web.fetch_proxied
60
+ slug: null
61
+ toolkit: null
62
+ description: read a public web page or API (GET) through Gravity's rotating proxies, for sites that refuse cloud addresses (Reddit RSS, PullPush, Product Hunt, LinkedIn and X pages); returns the final url, status, content_type and content, HTML as text (format text) or the body as sent (format raw). A blocked page comes back with its status. No account needed; charged to the run's budget
63
+ scopes: []
64
+ breadth: generic
65
+ guarantee: certified
66
+ side_effect: read
67
+
59
68
  - name: supadata.get_transcript
60
69
  slug: null
61
70
  toolkit: null
@@ -299,3 +308,84 @@
299
308
  breadth: generic
300
309
  guarantee: certified
301
310
  side_effect: write
311
+
312
+ - name: forms.create
313
+ slug: GOOGLEFORMS_CREATE_FORM
314
+ toolkit: googleforms
315
+ description: create an empty Google Form with a title in the connected Google account; forms created through the API start unpublished. Add questions with forms.update and open it with forms.publish_settings
316
+ scopes: [https://www.googleapis.com/auth/forms.body]
317
+ breadth: generic
318
+ guarantee: certified
319
+ side_effect: write
320
+
321
+ - name: forms.update
322
+ slug: GOOGLEFORMS_BATCH_UPDATE_FORM
323
+ toolkit: googleforms
324
+ description: apply a batch of changes to a Google Form in one atomic call (title, description, settings such as verified email collection, and questions); the API cannot create file-upload questions
325
+ scopes: [https://www.googleapis.com/auth/forms.body]
326
+ breadth: generic
327
+ guarantee: certified
328
+ side_effect: write
329
+
330
+ - name: forms.publish_settings
331
+ slug: GOOGLEFORMS_SET_PUBLISH_SETTINGS
332
+ toolkit: googleforms
333
+ description: publish or unpublish a Google Form and turn response collection on or off, for example to close a form at its deadline
334
+ scopes: [https://www.googleapis.com/auth/forms.body]
335
+ breadth: generic
336
+ guarantee: certified
337
+ side_effect: write
338
+
339
+ - name: forms.get
340
+ slug: GOOGLEFORMS_GET_FORM
341
+ toolkit: googleforms
342
+ description: read a Google Form's structure, settings, publish state and its responder link
343
+ scopes: [https://www.googleapis.com/auth/forms.body.readonly]
344
+ breadth: generic
345
+ guarantee: certified
346
+ side_effect: read
347
+
348
+ - name: forms.list_responses
349
+ slug: GOOGLEFORMS_LIST_RESPONSES
350
+ toolkit: googleforms
351
+ description: list the responses submitted to a Google Form, with paging and an optional filter for responses after a timestamp
352
+ scopes: [https://www.googleapis.com/auth/forms.responses.readonly]
353
+ breadth: generic
354
+ guarantee: certified
355
+ side_effect: read
356
+
357
+ - name: hunter.find_email
358
+ slug: HUNTER_EMAIL_FINDER
359
+ toolkit: hunter
360
+ description: find the most likely work email for a person from their name and company domain, with a confidence score; runs on Gravity's account where Composio Instant covers it, charged to the run's budget
361
+ scopes: []
362
+ breadth: generic
363
+ guarantee: community
364
+ side_effect: read
365
+
366
+ - name: hunter.verify_email
367
+ slug: HUNTER_EMAIL_VERIFIER
368
+ toolkit: hunter
369
+ description: check whether an email address is deliverable (valid, accept_all, risky or invalid) before writing to it; runs on Gravity's account where Composio Instant covers it, charged to the run's budget
370
+ scopes: []
371
+ breadth: generic
372
+ guarantee: community
373
+ side_effect: read
374
+
375
+ - name: exa.search
376
+ slug: EXA_SEARCH
377
+ toolkit: exa
378
+ description: search the web with Exa, including category 'people' (public profiles) and 'personal site' (portfolios); on Gravity's account through Composio Instant only type auto and at most 10 results, without page text (read pages with exa.contents)
379
+ scopes: []
380
+ breadth: generic
381
+ guarantee: community
382
+ side_effect: read
383
+
384
+ - name: exa.contents
385
+ slug: EXA_GET_CONTENTS_ACTION
386
+ toolkit: exa
387
+ description: read the text of up to 10 URLs from Exa's index; check each URL's status, because the call succeeds even when a page fails
388
+ scopes: []
389
+ breadth: generic
390
+ guarantee: community
391
+ side_effect: read
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "gravity-schema"
3
- version = "0.7.0"
3
+ version = "0.7.2"
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.7.0"
3
+ version = "0.7.2"
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.7.0", # released in lockstep: always the same version as this package
10
+ "gravity-schema==0.7.2", # 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,16 @@ 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.7.2 - 2026-10-23
8
+
9
+ - new: Google Forms tools. forms.create, forms.update, forms.publish_settings, forms.get and forms.list_responses build a form in the person's own Google account, open it, close it at a deadline and read the responses. The API cannot make file-upload questions, so ask for a link instead.
10
+ - new: hunter.find_email and hunter.verify_email find a work email from a name and a company and check it before anyone writes to it. They run on Gravity's account wherever Composio Instant covers them, charged to the run's budget.
11
+ - new: exa.search and exa.contents search people and personal sites by what they work on (category 'people' or 'personal site') and read the pages found. On Gravity's account: at most 10 results and no page text in the search, so read pages with exa.contents.
12
+
13
+ ## 0.7.1 - 2026-10-23
14
+
15
+ - new: web.fetch_proxied reads a public page through Gravity's rotating proxies, for sources that refuse cloud addresses (Reddit RSS, PullPush, Product Hunt, LinkedIn profile and post pages, X profiles). No account; a few hundredths of a cent from the run's budget per call.
16
+
7
17
  ## 0.7.0 - 2026-10-23
8
18
 
9
19
  - new: Questions that apply only sometimes. show_if asks an input only when a slot or an earlier input has a given value, and choose_one makes "upload or paste" an either / or that can be required. gravity run, gravity schedule and gravity dev apply the same rules the platform does on every run.
@@ -490,9 +490,11 @@ Catalog of this release: {{tool_counts}}.
490
490
 
491
491
  {{curated_tools}}
492
492
 
493
- - `web.search`, `web.fetch` and `example.echo` need no account. `supadata.get_transcript` needs none, but takes the
493
+ - `web.search`, `web.fetch`, `web.fetch_proxied` and `example.echo` need no account. `supadata.get_transcript` needs none, but takes the
494
494
  caller's own `api_key` argument: model it as a `secret` input. `web.render` and `firecrawl.*` need a connected
495
- Firecrawl account (billed to it).
495
+ Firecrawl account (billed to it). `hunter.*` and `exa.*` run on Gravity's account where Composio Instant covers
496
+ them; `forms.*` needs the person's Google account, and forms made through the API start unpublished
497
+ (`forms.publish_settings` opens and closes them).
496
498
  - **Imported tools** are the same apps' other actions, synced from the vendor and unreviewed (guarantee
497
499
  `experimental`). Their names are verbose (`github.create_an_issue`, not `github.create_issue`), so look them up:
498
500
  `gravity tools github`, or `gravity tools issue`. Any imported tool that **changes something** must be under
@@ -504,6 +506,17 @@ Catalog of this release: {{tool_counts}}.
504
506
  and say so. For pages that refuse the sandbox or need JavaScript use `firecrawl.scrape` or `web.render`; cap the
505
507
  paid calls per run and degrade to one line under "could not do" when the account is not connected. Do not pass a
506
508
  `location` to a render: routing through another country measured 36 s against 8 s.
509
+ - `web.fetch_proxied` GETs a URL through Gravity's rotating proxies, for sources that refuse the sandbox's cloud
510
+ address: Reddit RSS (`/r/<sub>/search.rss`) and Product Hunt pages answered 200 through it on 23 Oct 2026, PullPush
511
+ through the same proxies on 15 Oct. It is not a browser and changes no TLS fingerprint: Reddit's HTML and `.json`, Capterra, Glassdoor, G2 and Trustpilot
512
+ still answer 403. LinkedIn profile and post pages came back 200 with their JSON-LD for 7 of 8 profiles on 23 Oct;
513
+ some profiles answer LinkedIn's 999 from every address, so confirm a person another way when that happens. X
514
+ profile pages carry the latest posts with dates and links. A 403, 429 or 999 is tried on up to three proxies. Arguments: `url`, `format` (`text`, the default, turns HTML into lines of text; `raw` returns
515
+ JSON, XML or RSS as sent), `max_chars` (default 50,000, at most 200,000). It returns `url` (after redirects),
516
+ `status`, `content_type`, `content`, `truncated`, `attempts`; a 403, 404 or 429 is a result with that status, not
517
+ an error, so check `status`. Each call costs about $0.0002 from the run's budget, and a run gets at most 200.
518
+ Private, internal and metadata addresses, ports other than 80/443/8080/8443, and non-http(s) URLs answer
519
+ `URL_REFUSED`. Prefer it over a `proxy_url` secret input: the person supplies nothing.
507
520
  - Outbound HTTPS is open, so code may read public pages and APIs directly (`httpx`, `curl_cffi`). Anything that acts
508
521
  on an account still goes through a tool, so the person's connection and approvals apply.
509
522
  - Locally, `gravity connect <app>` attaches **your** account to your local runs (`gravity connect` alone lists what
@@ -818,6 +831,7 @@ checkpointing, durable approvals, `gravity.ask()`, action buttons, chains and ou
818
831
  | `Fill in the required input(s): …`, `pick one of …` (hosted, 400) | A visible required input is missing, or a dropdown, multi-select or action choice is out of bounds | Check `show_if` and defaults; `gravity run` reports the same |
819
832
  | "X needs Y to run first", "X runs once" | An action's `requires` has not completed in the conversation, or a `run_once` one already ran | Expected; the buttons show only what may run |
820
833
  | `402 BUDGET_EXCEEDED` | The run spent its model budget | Fewer or smaller calls; `max_tokens`; at most two in flight |
834
+ | `URL_REFUSED`, `FETCH_FAILED`, `PROXY_LIMIT` (`web.fetch_proxied`) | Not a public http(s) URL on a web port; no proxy reached the page (connections or timeouts on three proxies); the run used its 200 proxied fetches | Fix the URL; retry later or degrade to one line under "could not do"; fetch fewer pages |
821
835
  | "finished without a result" (`gravity run`), `null` result (hosted) | The final state has no `result` | Return `{"result": ...}` |
822
836
  | "could not load the agent" | An import error, a relative import, env read at import, or the graph built at import | Section 5 |
823
837
  | Lockfile will not compile | A dependency has no Linux ARM64 wheel | Pick another version or package |
@@ -164,7 +164,7 @@ wheels = [
164
164
 
165
165
  [[package]]
166
166
  name = "gravity-cli"
167
- version = "0.7.0"
167
+ version = "0.7.2"
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.7.0"
204
+ version = "0.7.2"
205
205
  source = { editable = "packages/gravity-schema" }
206
206
  dependencies = [
207
207
  { name = "pydantic" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes