rust(feat): artifact tools - #766
Merged
Merged
Conversation
Keep artifact MCP tools while taking main's feature flags, client events, calculated channels, and list paging contract. Co-authored-by: Cursor <cursoragent@cursor.com>
- get_artifact propagates download-URL errors instead of returning a partial artifact - ArtifactView derives Serialize (flattened) so serialization errors propagate and the key is `download_url`, matching the description - drop the mirror AuthoringKind enum; pass ArtifactAuthoringKind through - parse_authoring_kind is case-insensitive and accepts proto enum names - create_artifact reports "Appended version" on the append path and gates appends with --allow-destructive - list_artifacts description states oldest-first ordering - add MockRemoteFileServiceImpl to sift_test_util and cover the download-URL path in service and tool tests - update skill and changelog Claude-Session: https://claude.ai/code/session_01MMTsS9mCT21LBymq5Xmaex
lineville
marked this pull request as ready for review
August 28, 2026 21:59
`list_artifacts`, `get_artifact`, and `create_artifact` now register only when the account's agents feature flag is enabled at server startup, matching the backend gate on the artifact handler. Adds a test that each flag routes only its own tools. Claude-Session: https://claude.ai/code/session_01MMTsS9mCT21LBymq5Xmaex
evan-sift
reviewed
Aug 28, 2026
evan-sift
reviewed
Aug 28, 2026
Renames the tool, its params struct, the service method, the client event, and every doc reference. The private RPC wrapper keeps the `get_artifact` name to match the proto. Claude-Session: https://claude.ai/code/session_01MMTsS9mCT21LBymq5Xmaex
evan-sift
reviewed
Aug 28, 2026
evan-sift
reviewed
Aug 28, 2026
evan-sift
reviewed
Aug 28, 2026
evan-sift
approved these changes
Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds three MCP tools backed by the public
sift.artifacts.v1.ArtifactService:list_artifacts: lists artifacts in the organization, optionally scoped to one conversation.download_artifact: returns the latest version, or a pinnedartifact_version_id, plus a signeddownload_urlwhen the version has uploaded bytes.create_artifact: creates an artifact, or appends a version to an existing one. Artifacts cannot be edited in place; every change is a new version.Access: creating needs
--allow-create. Appending a version to an existing artifact also needs--allow-destructive.Feature flag: these tools are enabled per account by the agents feature flag, resolved when the MCP server starts. This matches the backend gate on the artifact handler. When the flag is off, the tools are absent from the tool list and calls return "not found". Enabling the flag requires an MCP restart.
Client events:
tool_events.jsonmaps the three tools toCLIENT_EVENT_USER_CALLED_MCP_TOOL_LIST_ARTIFACTS,_DOWNLOAD_ARTIFACT, and_CREATE_ARTIFACT. These values are not yet in the azimuthClientEventenum, so the backend discards them until a follow-up azimuth PR adds them.Also adds the
sift.artifacts.v1proto, its generated Rust code, mocks for the artifact and remote-file services, and a test that each feature flag routes only its own tools.https://claude.ai/code/session_01MMTsS9mCT21LBymq5Xmaex