Skip to content

feat(MARSOHS-2336): rename the workspace size to SizeLimitGiB (size_limit_gib) - #1178

Merged
anup-deka merged 3 commits into
mainfrom
prao/MARSOHS-2336/feat.workspace-size-limit-gib
Oct 22, 2026
Merged

anup-deka merged 3 commits into
mainfrom
prao/MARSOHS-2336/feat.workspace-size-limit-gib

Conversation

@sanpj2292

Copy link
Copy Markdown
Contributor

Summary

Renames the persistent workspace size field from SizeGibibytes (size_gibibytes) to SizeLimitGiB (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-gib and size_limit_gib). The API change is in digitalocean/cthulhu#182026 (not merged yet).

Changes

  • HostedAgentWorkspace.SizeGibibytes becomes SizeLimitGiB, JSON tag size_limit_gib.
  • HostedAgentWorkspaceCreateRequest.SizeGibibytes becomes SizeLimitGiB, JSON tag size_limit_gib. Its comment now says it is an upper limit.
  • The tests use the new name.

Compatibility

This renames an exported field, so code that uses SizeGibibytes stops 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 keep SizeGibibytes, 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, and go test -race ./... passes.
  • The existing create, get and list tests now check size_limit_gib in the request body and in the answer.

…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
anup-deka merged commit 0a8da93 into main Oct 22, 2026
8 checks passed
@anup-deka
anup-deka deleted the prao/MARSOHS-2336/feat.workspace-size-limit-gib branch October 22, 2026 05:11
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

⌂ 换网址