The enum's string *representation* was being inserted in the URL instead
of its string *value*.
Before:
`/api/integrations/ProviderName.GITHUB/webhooks/686db48c-e70d-4340-acf9-ccd0338fddc4/ingress`
After:
`/api/integrations/github/webhooks/686db48c-e70d-4340-acf9-ccd0338fddc4/ingress`
---------
Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co>
- Resolves#9182
Formerly known as `FAILED` with error message `TERMINATED`.
### Changes 🏗️
- Add `TERMINATED` to `AgentExecutionStatus` enum in DB schema (and its
mirror in the front end)
- Update executor to give terminated node and graph executions status
`TERMINATED` instead of `FAILED`/`COMPLETED`
- Add `TERMINATED` case to status checks referencing
`AgentExecutionStatus`
### Checklist 📋
#### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
- Start and forcefully stop a graph execution
---------
Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co>
Make all changes necessary to make everything work with Poetry v2.0.0.
- Resolves#9196
## Changes
- Removed `--no-update` flag from `poetry lock` command in codebase
- Removed extra path arguments from `poetry -C [path] run [command]`
occurrences
- Regenerated all lock files in hierarchical order
- Added workaround for Poetry bug where `packages.[i].format` is now
suddenly required
Additionally:
- Fixed up .dockerignore
- Fixes .venv being erroneously copied over from local
- Fixes build context bloat (300MB -> 2.5MB)
- Fixed warnings about entrypoint script not being installed in docker
builds
### Relevant (breaking) changes in v2.0.0
- `--no-update` flag no longer exists for `poetry lock` as it has become
default behavior
- The `-C` option now actually changes the directory, so any path
arguments in `poetry run` commands can/must be removed
- Poetry v2.0.0 uses the new v2.1 lock file spec, so all lock files have
to be regenerated to avoid false-positive lock file updates and checks
on future PRs
- **BUG:** when specifying `poetry.tool.packages`, `format` is required
now
- python-poetry/poetry#9961
Full Poetry v2.0.0 release notes and change log:
https://python-poetry.org/blog/announcing-poetry-2.0.0
- resolves - #9120
### Changes
- Added a new endpoint to download agent files as JSON, allowing users
to retrieve agent data by store listing version ID and version number.
- Introduced a new `get_agent` function in the database module to fetch
agent details and prepare the graph data for download.
- Enhanced the frontend `AgentInfo` component to include a download
button, which triggers the download of the agent file.
- Integrated loading state and user feedback via toast notifications
during the download process.
- Updated the API client to support the new download functionality.
### Demo video
https://github.com/user-attachments/assets/6744a753-297f-4ccc-abde-f56ca24ed2d5
### Example Json
```json
{
"id": "14378095-4cc5-41ea-975e-bd0bce010bea",
"version": 1,
"is_active": true,
"is_template": false,
"name": "something",
"description": "1",
"nodes": [
{
"id": "6914efa0-e4fa-4ce8-802c-d5577cf061b6",
"block_id": "aeb08fc1-2fc1-4141-bc8e-f758f183a822",
"input_default": {},
"metadata": {
"position": {
"x": 756,
"y": 452.5
}
},
"input_links": [],
"output_links": [],
"webhook_id": null,
"graph_id": "14378095-4cc5-41ea-975e-bd0bce010bea",
"graph_version": 1,
"webhook": null
}
],
"links": [],
"input_schema": {
"type": "object",
"properties": {},
"required": []
},
"output_schema": {
"type": "object",
"properties": {},
"required": []
}
}
```
---------
Co-authored-by: SwiftyOS <craigswift13@gmail.com>
- Resolves#8930
- Depends on #8725
### Changes 🏗️
- feat(platform): Support multiple credentials inputs on blocks
Aside from `credentials`, fields within the name pattern `*_credentials`
are now also supported!
- Update docs with info on multi credentials support
### Checklist 📋
#### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
- [x] Ask @aarushik93 to test
This moves my recently added blocks: ``GithubCreateFileBlock``,
``GithubUpdateFileBlock``, ``GithubCreateRepositoryBlock`` and
``GithubListStargazersBlock`` to the correct file ``github/repo.py`` as
i placed them in the wrong file originally
There are a few hardcoded margins and padding in the block input layout,
causing the input to sometimes overflow or be used inconsistently.

### Changes 🏗️
* Make padding consistent between left & right, top & bottom.
* Remove hard-coded margins.
* Match the hardcode negative margin for the right node handle to the
left node handle.
* Make the input box take the full width.
### Checklist 📋
#### For code changes:
- [ ] I have clearly listed my changes in the PR description
- [ ] I have made a test plan
- [ ] I have tested my changes according to the test plan:
<!-- Put your test plan here: -->
- [ ] ...
<details>
<summary>Example test plan</summary>
- [ ] Create from scratch and execute an agent with at least 3 blocks
- [ ] Import an agent from file upload, and confirm it executes
correctly
- [ ] Upload agent to marketplace
- [ ] Import an agent from marketplace and confirm it executes correctly
- [ ] Edit an agent from monitor, and confirm it executes correctly
</details>
#### For configuration changes:
- [ ] `.env.example` is updated or already compatible with my changes
- [ ] `docker-compose.yml` is updated or already compatible with my
changes
- [ ] I have included a list of my configuration changes in the PR
description (under **Changes**)
<details>
<summary>Examples of configuration changes</summary>
- Changing ports
- Adding new services that need to communicate with each other
- Secrets or environment variable changes
- New or infrastructure changes such as databases
</details>
Bumps the development-dependencies group with 3 updates in the
/autogpt_platform/market directory:
[pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio),
[ruff](https://github.com/astral-sh/ruff) and
[pyright](https://github.com/RobertCraigie/pyright-python).
Updates `pytest-asyncio` from 0.25.0 to 0.25.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's
releases</a>.</em></p>
<blockquote>
<h2>pytest-asyncio 0.25.1</h2>
<ul>
<li>Fixes an issue that caused a broken event loop when a
function-scoped test was executed in between two tests with wider loop
scope <a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/950">#950</a></li>
<li>Improves test collection speed in auto mode <a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/pull/1020">#1020</a></li>
<li>Corrects the warning that is emitted upon redefining the event_loop
fixture</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="623ab74b80"><code>623ab74</code></a>
docs: Prepare release of v0.25.1.</li>
<li><a
href="c236550e73"><code>c236550</code></a>
docs: Fix broken link to the pytest.mark.asyncio reference.</li>
<li><a
href="41c645b3b7"><code>41c645b</code></a>
fix: Correct warning message when redefining the event_loop
fixture.</li>
<li><a
href="2fd10f8243"><code>2fd10f8</code></a>
docs: Clarify deprecation of event_loop fixture.</li>
<li><a
href="a4e82ab25b"><code>a4e82ab</code></a>
docs: Added changelog entry for <a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1020">#1020</a>.</li>
<li><a
href="04f90445e1"><code>04f9044</code></a>
refactor: Replace the "__original_fixture_loop" magic
attribute with the more...</li>
<li><a
href="dafef6c65b"><code>dafef6c</code></a>
refactor: Extracted a function to mark an event loop as created by
pytest-asy...</li>
<li><a
href="0c931b7eab"><code>0c931b7</code></a>
refactor: Extracted function to check if a loop was created by
pytest-asyncio.</li>
<li><a
href="0642dcd27b"><code>0642dcd</code></a>
fix: Fix broken event loop when a function-scoped test is in between two
wide...</li>
<li><a
href="050a5f81c9"><code>050a5f8</code></a>
[pre-commit.ci] pre-commit autoupdate</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.0...v0.25.1">compare
view</a></li>
</ul>
</details>
<br />
Updates `ruff` from 0.8.3 to 0.8.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.8.4</h2>
<h2>Release Notes</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Extend <code>AIR302</code> with additional
functions and classes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15015">#15015</a>)</li>
<li>[<code>airflow</code>] Implement <code>moved-to-provider-in-3</code>
for modules that has been moved to Airflow providers
(<code>AIR303</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14764">#14764</a>)</li>
<li>[<code>flake8-use-pathlib</code>] Extend check for invalid path
suffix to include the case <code>"."</code>
(<code>PTH210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14902">#14902</a>)</li>
<li>[<code>perflint</code>] Fix panic in <code>PERF401</code> when list
variable is after the <code>for</code> loop (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14971">#14971</a>)</li>
<li>[<code>perflint</code>] Simplify finding the loop target in
<code>PERF401</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15025">#15025</a>)</li>
<li>[<code>pylint</code>] Preserve original value format
(<code>PLR6104</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14978">#14978</a>)</li>
<li>[<code>ruff</code>] Avoid false positives for <code>RUF027</code>
for typing context bindings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15037">#15037</a>)</li>
<li>[<code>ruff</code>] Check for ambiguous pattern passed to
<code>pytest.raises()</code> (<code>RUF043</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14966">#14966</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-bandit</code>] Check <code>S105</code> for annotated
assignment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15059">#15059</a>)</li>
<li>[<code>flake8-pyi</code>] More autofixes for
<code>redundant-none-literal</code> (<code>PYI061</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14872">#14872</a>)</li>
<li>[<code>pydocstyle</code>] Skip leading whitespace for
<code>D403</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14963">#14963</a>)</li>
<li>[<code>ruff</code>] Skip <code>SQLModel</code> base classes for
<code>mutable-class-default</code> (<code>RUF012</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14949">#14949</a>)</li>
</ul>
<h3>Bug</h3>
<ul>
<li>[<code>perflint</code>] Parenthesize walrus expressions in autofix
for <code>manual-list-comprehension</code> (<code>PERF401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15050">#15050</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Check diagnostic refresh support from client capability which
enables dynamic configuration for various editors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15014">#15014</a>)</li>
</ul>
<h2>Contributors</h2>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li>
<li><a
href="https://github.com/Daverball"><code>@Daverball</code></a></li>
<li><a
href="https://github.com/DimitriPapadopoulos"><code>@DimitriPapadopoulos</code></a></li>
<li><a
href="https://github.com/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li>
<li><a href="https://github.com/Lee-W"><code>@Lee-W</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li>
<li><a href="https://github.com/TheBits"><code>@TheBits</code></a></li>
<li><a
href="https://github.com/cake-monotone"><code>@cake-monotone</code></a></li>
<li><a href="https://github.com/carljm"><code>@carljm</code></a></li>
<li><a
href="https://github.com/dcreager"><code>@dcreager</code></a></li>
<li><a
href="https://github.com/dhruvmanila"><code>@dhruvmanila</code></a></li>
<li><a href="https://github.com/dylwil3"><code>@dylwil3</code></a></li>
<li><a
href="https://github.com/github-actions"><code>@github-actions</code></a></li>
<li><a
href="https://github.com/kiran-4444"><code>@kiran-4444</code></a></li>
<li><a
href="https://github.com/krishnan-chandra"><code>@krishnan-chandra</code></a></li>
<li><a
href="https://github.com/rchen152"><code>@rchen152</code></a></li>
<li><a
href="https://github.com/renovate"><code>@renovate</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@sharkdp</code></a></li>
<li><a
href="https://github.com/tarasmatsyk"><code>@tarasmatsyk</code></a></li>
<li><a
href="https://github.com/w0nder1ng"><code>@w0nder1ng</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.8.4</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Extend <code>AIR302</code> with additional
functions and classes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15015">#15015</a>)</li>
<li>[<code>airflow</code>] Implement <code>moved-to-provider-in-3</code>
for modules that has been moved to Airflow providers
(<code>AIR303</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14764">#14764</a>)</li>
<li>[<code>flake8-use-pathlib</code>] Extend check for invalid path
suffix to include the case <code>"."</code>
(<code>PTH210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14902">#14902</a>)</li>
<li>[<code>perflint</code>] Fix panic in <code>PERF401</code> when list
variable is after the <code>for</code> loop (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14971">#14971</a>)</li>
<li>[<code>perflint</code>] Simplify finding the loop target in
<code>PERF401</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15025">#15025</a>)</li>
<li>[<code>pylint</code>] Preserve original value format
(<code>PLR6104</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14978">#14978</a>)</li>
<li>[<code>ruff</code>] Avoid false positives for <code>RUF027</code>
for typing context bindings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15037">#15037</a>)</li>
<li>[<code>ruff</code>] Check for ambiguous pattern passed to
<code>pytest.raises()</code> (<code>RUF043</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14966">#14966</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-bandit</code>] Check <code>S105</code> for annotated
assignment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15059">#15059</a>)</li>
<li>[<code>flake8-pyi</code>] More autofixes for
<code>redundant-none-literal</code> (<code>PYI061</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14872">#14872</a>)</li>
<li>[<code>pydocstyle</code>] Skip leading whitespace for
<code>D403</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14963">#14963</a>)</li>
<li>[<code>ruff</code>] Skip <code>SQLModel</code> base classes for
<code>mutable-class-default</code> (<code>RUF012</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14949">#14949</a>)</li>
</ul>
<h3>Bug</h3>
<ul>
<li>[<code>perflint</code>] Parenthesize walrus expressions in autofix
for <code>manual-list-comprehension</code> (<code>PERF401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15050">#15050</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Check diagnostic refresh support from client capability which
enables dynamic configuration for various editors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/15014">#15014</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3bb0dac235"><code>3bb0dac</code></a>
Bump version to 0.8.4 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/15064">#15064</a>)</li>
<li><a
href="40cba5dc8a"><code>40cba5d</code></a>
[red-knot] Cleanup various <code>todo_type!()</code> messages (<a
href="https://redirect.github.com/astral-sh/ruff/issues/15063">#15063</a>)</li>
<li><a
href="596d80cc8e"><code>596d80c</code></a>
[<code>perflint</code>] Parenthesize walrus expressions in autofix for
`manual-list-comp...</li>
<li><a
href="d8b9a366c8"><code>d8b9a36</code></a>
Disable actionlint hook by default when running pre-commit locally (<a
href="https://redirect.github.com/astral-sh/ruff/issues/15061">#15061</a>)</li>
<li><a
href="85e71ba91a"><code>85e71ba</code></a>
[<code>flake8-bandit</code>] Check <code>S105</code> for annotated
assignment (<a
href="https://redirect.github.com/astral-sh/ruff/issues/15059">#15059</a>)</li>
<li><a
href="2802cbde29"><code>2802cbd</code></a>
Don't special-case class instances in unary expression inference (<a
href="https://redirect.github.com/astral-sh/ruff/issues/15045">#15045</a>)</li>
<li><a
href="ed2bce6ebb"><code>ed2bce6</code></a>
[red-knot] Report invalid exceptions (<a
href="https://redirect.github.com/astral-sh/ruff/issues/15042">#15042</a>)</li>
<li><a
href="f0012df686"><code>f0012df</code></a>
Fix typos in <code>RUF043.py</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/15044">#15044</a>)</li>
<li><a
href="0fc4e8f795"><code>0fc4e8f</code></a>
Introduce <code>InferContext</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14956">#14956</a>)</li>
<li><a
href="ac81c72bf3"><code>ac81c72</code></a>
[<code>ruff</code>] Ambiguous pattern passed to
<code>pytest.raises()</code> (<code>RUF043</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14966">#14966</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.8.3...0.8.4">compare
view</a></li>
</ul>
</details>
<br />
Updates `pyright` from 1.1.390 to 1.1.391
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3356df1d40"><code>3356df1</code></a>
[pyright updated to 1.1.391] Update Version (<a
href="https://redirect.github.com/RobertCraigie/pyright-python/issues/327">#327</a>)</li>
<li>See full diff in <a
href="https://github.com/RobertCraigie/pyright-python/compare/v1.1.390...v1.1.391">compare
view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Previously, `http://` would be converted to `http://http` and pass the
no-hostname check that way. It eventually fails validation, but only at
hostname lookup which times out -> takes very long.
### Changes 🏗️
- Fix URL canonicalization logic
- Merge `_canonicalize_url` into `validate_url`
### Checklist 📋
#### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
<!-- Put your test plan here: -->
- [x] CI
- Updated `store.py` to improve state token management by adding PKCE support and simplifying code challenge generation.
- Modified environment variable names in `.env.example` for consistency.
- Removed unnecessary `is_multi_select` attributes from various Twitter-related input schemas to streamline the code.
- Cleaned up exception handling in Twitter list management and tweet management blocks by removing redundant error logging.
- Removed debug print statements from various components to clean up the codebase.
- Fixed a minor error message in the Twitter OAuth handler for clarity.