Repository navigation
feat(MARSOHS-2336): rename the workspace size to SizeLimitGiB (size_limit_gib) - #1178
Merged
Merged
Conversation
…imit_gib) The API now calls the workspace size an upper limit on a disk that is billed on use, and names it size_limit_gib in the create body and the workspace answer. HostedAgentWorkspace and HostedAgentWorkspaceCreateRequest follow: SizeGibibytes becomes SizeLimitGiB with the JSON tag size_limit_gib. Persistent workspaces are in the API behind a per-team flag and are not generally available, and no released doctl uses the field.
sanpj2292
added a commit
to digitalocean/doctl
that referenced
this pull request
Oct 21, 2026
The design doc (API-6) names the flag --size-limit-gib and makes it required for the MVP, and the API property is size_limit_gib. godo is bumped to the commit that renames SizeGibibytes to SizeLimitGiB (digitalocean/godo#1178), so the workspace answer and the create body carry the new name. The flag, its help text, the error messages, the list and get output (column Size Limit, card row Size limit) and the tests follow. The flag is still required, and the server still validates 1 to 100. go.mod points at a godo pseudo-version for now. Once godo releases the rename, it moves to that release.
The workspace API shows no device or filesystem details, so the comment says "size limit of the workspace in GiB".
anup-deka
approved these changes
Oct 21, 2026
SSharma-10
pushed a commit
to digitalocean/doctl
that referenced
this pull request
Nov 4, 2026
…ime (#2018) * feat(MARSOHS-1935): add persistent workspace commands to harness-runtime Add `doctl harness-runtime workspace` with create, list, get and delete. Create sends one Idempotency-Key per command, or the one given with --idempotency-key. Delete is permanent and asks for confirmation unless --force is given. Add --workspace <id> to create and launch. It names the workspace per session and is never part of an agents.yaml manifest: with --from-config it is sent in the request body, with a manifest as a query parameter. It is refused for --harness sessions. Session output shows the workspace id when set, a 409 on create with --workspace explains that the previous session may still be saving, and a 501 reads as "Not available yet" instead of suggesting a retry. Requires the godo change that adds the workspace methods. The godo version is not bumped here. * refactor(MARSOHS-1935): attach a workspace only when creating from a config --workspace is now valid only with --from-config, where it is sent in the request body. A manifest, a positional manifest, --harness, --template and launch of a new session fail before any request with a message that points to `config create` followed by `create --from-config`. The manifest create path no longer carries a workspace, and the --dry-run notice about it is removed. Update the help, flag usage, examples and the workspace card hint, and replace the manifest routing tests with tests that each refused source sends nothing. * fix(MARSOHS-1935): show the server's message for a workspace conflict A 409 on create with --workspace no longer gets a "try again in a minute" tip. The server now words each conflict for what the caller can do: still being saved, attached to another session (remove it first) or not usable. A retry is wrong for the last two, and the same create can also 409 for reasons unrelated to the workspace, such as the session limit. Use a UUID in the help examples and test fixtures, since a workspace id is a 36-character UUID and anything else is a 404. * feat(MARSOHS-1935): add --state to harness-runtime workspace list --state lists only workspaces in one state, for example AVAILABLE to see the workspaces a new session can use. An empty page that still has a next page token says so instead of reporting no workspaces. * feat(MARSOHS-1935): list DELETING as a workspace state in the help text The API has a sixth workspace state, DELETING, shown while a delete runs, and accepts it as the --state filter. List it in the flag and the list help, say that a create retried with the key of a workspace being deleted is refused with a conflict, and that a workspace shows DELETING while its delete runs. * build(MARSOHS-1935): bump godo to v1.220.0 v1.220.0 has the persistent workspace calls and types from godo#1138, which the workspace commands in this branch use, so the branch builds against the released godo without a replace. * feat(MARSOHS-1935): workspace delete goes ahead without --force when there is no terminal A delete with nobody to answer used to stop before sending anything, behind a card that read "Couldn't complete that request". The workspace id is named in the command, so with no terminal (a script, --interactive=false) the delete now goes ahead; a terminal still asks first, and --force still skips the question. An unconfirmed delete now shows a "Not confirmed" card that says nothing was deleted and names --force. triggers delete shares it. * feat(MARSOHS-2336): rename the workspace size flag to --size-limit-gib The design doc (API-6) names the flag --size-limit-gib and makes it required for the MVP, and the API property is size_limit_gib. godo is bumped to the commit that renames SizeGibibytes to SizeLimitGiB (digitalocean/godo#1178), so the workspace answer and the create body carry the new name. The flag, its help text, the error messages, the list and get output (column Size Limit, card row Size limit) and the tests follow. The flag is still required, and the server still validates 1 to 100. go.mod points at a godo pseudo-version for now. Once godo releases the rename, it moves to that release. * fix(MARSOHS-1935): show Hermes, LangGraph and CrewAI as agent names doctl showed "agent" for a Hermes session because the agent kind display table had no entry for AGENT_KIND_HERMES. harness-api also reports AGENT_KIND_LANGGRAPH and AGENT_KIND_CREWAI, which fell back the same way. godo has no constants for these kinds yet, so declare them next to the OpenHands one. * fix(MARSOHS-1935): show "Not available yet" when workspaces are not enabled The API now answers 403, not 501, when the workspaces flag is off for a team. doctl read a 403 as "Access denied" and told the user to check their token scopes, which is wrong: the token is fine and the team has not been let into the feature. A 501 used to show "Not available yet". A 403 whose message says workspaces are not enabled now shows "Not available yet" with no tips. Any other 403 is still "Access denied". Tests cover both.
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.
Summary
Renames the persistent workspace size field from
SizeGibibytes(size_gibibytes) toSizeLimitGiB(size_limit_gib), to match the API. Ticket: MARSOHS-2336.The API now calls the size an upper limit on a disk that is billed on use, and the doctl flag and the API property carry the same name (
--size-limit-gibandsize_limit_gib). The API change is in digitalocean/cthulhu#182026 (not merged yet).Changes
HostedAgentWorkspace.SizeGibibytesbecomesSizeLimitGiB, JSON tagsize_limit_gib.HostedAgentWorkspaceCreateRequest.SizeGibibytesbecomesSizeLimitGiB, JSON tagsize_limit_gib. Its comment now says it is an upper limit.Compatibility
This renames an exported field, so code that uses
SizeGibibytesstops compiling when it moves to the release that has this change. The persistent workspace types shipped in v1.220.0 (2026-10-08) behind a per-team API flag that is not generally available. No released doctl uses the field, and I found no public Go code that does. Tagged releases v1.220.0 to v1.229.0 keepSizeGibibytes, so nothing that is pinned changes.Order: the API change goes out first, then a godo release with this, then the doctl change (digitalocean/doctl#2018) takes the new godo.
Testing
gofmt -s -l .is clean,go vet ./...passes, andgo test -race ./...passes.size_limit_gibin the request body and in the answer.