Phase 4: workspace provider field + Container Config provider selector #2322

Open
cp-be wants to merge 5 commits from feat/workspace-provider-field into main
Member

Phase 4 (molecule-core): workspace provider field + Container Config selector

The molecule-core side of the multi-provider provisioner abstraction (controlplane RFC + PR #566). Lets a workspace declare which cloud backend it runs on, surfaced in the Container Config tab.

workspace-server

  • WorkspaceCompute.Provider (aws|hetzner|gcp; empty → aws, so existing workspaces are unchanged).
  • Per-provider instance allowlist in validateWorkspaceCompute — AWS shapes unchanged; Hetzner cx*/ccx* + GCP e2*/n2* added; unknown provider or a shape that doesn't belong to the chosen provider is rejected (400). provider round-trips into the persisted compute JSON. Tests added.

canvas

  • WorkspaceCompute.provider type.
  • Container Config: a Cloud provider selector above Instance type that drives the instance-type list (picking a provider snaps to a valid shape). Default AWS until the CTO-gated flip.

SSOT note

Instance lists are still literals (matching the tab's existing hardcoded pattern) with a TODO(SSOT) to source from the CP provider catalog — kept in one place per file and in sync with workspace-server's allowlist and controlplane's RateCatalog until the catalog endpoint lands. Provider credentials remain Infisical-SSOT on the CP side (PR #566); nothing secret here.

Verified

workspace-server go build + compute tests pass; canvas tsc --noEmit clean for the changed files.

Pairs with controlplane PR #566. Default stays AWS — no behavior change for existing workspaces.

🤖 Generated with Claude Code

## Phase 4 (molecule-core): workspace `provider` field + Container Config selector The molecule-core side of the multi-provider provisioner abstraction (controlplane RFC + PR #566). Lets a workspace declare which cloud backend it runs on, surfaced in the **Container Config** tab. ### workspace-server - `WorkspaceCompute.Provider` (`aws`|`hetzner`|`gcp`; empty → `aws`, so existing workspaces are unchanged). - Per-provider instance allowlist in `validateWorkspaceCompute` — AWS shapes unchanged; Hetzner `cx*/ccx*` + GCP `e2*/n2*` added; unknown provider or a shape that doesn't belong to the chosen provider is rejected (400). `provider` round-trips into the persisted compute JSON. Tests added. ### canvas - `WorkspaceCompute.provider` type. - Container Config: a **Cloud provider** selector above Instance type that drives the instance-type list (picking a provider snaps to a valid shape). Default **AWS** until the CTO-gated flip. ### SSOT note Instance lists are still literals (matching the tab's existing hardcoded pattern) with a `TODO(SSOT)` to source from the CP provider catalog — kept in one place per file and in sync with workspace-server's allowlist and controlplane's `RateCatalog` until the catalog endpoint lands. Provider **credentials** remain Infisical-SSOT on the CP side (PR #566); nothing secret here. ### Verified workspace-server `go build` + compute tests pass; canvas `tsc --noEmit` clean for the changed files. Pairs with controlplane PR #566. Default stays AWS — no behavior change for existing workspaces. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
cp-be added 1 commit 2026-06-05 22:41:28 +00:00
feat(workspace,canvas): provider field + Container Config provider selector
ci-arm64-advisory / fast-checks (pull_request) Waiting to run
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 4s
Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (pull_request) Successful in 3s
CI / Python Lint & Test (pull_request) Successful in 7s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 6s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 7s
Harness Replays / detect-changes (pull_request) Successful in 7s
sop-checklist / review-refire (pull_request_target) Has been skipped
gate-check-v3 / gate-check (pull_request_target) Successful in 8s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: comprehensive-testing, local-postgres-e2
sop-checklist / na-declarations (pull_request) N/A: (none)
sop-checklist / all-items-acked (pull_request_target) Successful in 4s
security-review / approved (pull_request_target) Failing after 5s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 13s
E2E Chat / detect-changes (pull_request) Successful in 13s
sop-tier-check / tier-check (pull_request_target) Failing after 4s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 12s
Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 12s
Harness Replays / Harness Replays (pull_request) Successful in 1s
E2E Chat / E2E Chat (pull_request) Successful in 2s
CI / Detect changes (pull_request) Successful in 21s
E2E API Smoke Test / detect-changes (pull_request) Successful in 21s
qa-review / approved (pull_request_target) Failing after 13s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 7s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 3s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 1m4s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m30s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 2m22s
CI / Platform (Go) (pull_request) Successful in 10m48s
CI / Canvas (Next.js) (pull_request) Failing after 10m53s
CI / all-required (pull_request) Has been skipped
CI / Canvas Deploy Status (pull_request) Has been skipped
95631c0bb2
Phase 4 (molecule-core side) of the multi-provider abstraction
(controlplane RFC docs/design/rfc-multi-provider-provisioner.md).

workspace-server:
- WorkspaceCompute.Provider ("aws"|"hetzner"|"gcp"; empty→aws for back-compat).
- Per-provider instance allowlist (validateWorkspaceCompute) — AWS shapes
  unchanged, Hetzner cx/ccx + GCP e2/n2 added; unknown provider or
  wrong-provider shape rejected. provider round-trips into the persisted
  compute JSON. Tests added.

canvas:
- WorkspaceCompute.provider type.
- Container Config tab: a Cloud-provider selector ABOVE Instance type that
  drives the instance-type list (selecting a provider resets to a valid shape).
  Default AWS until the CTO-gated flip.

SSOT note: instance lists are still literals here (matching the tab's existing
hardcoded pattern) with a TODO to source from the CP provider catalog — kept in
ONE place per file and in sync with workspace-server's allowlist + controlplane's
RateCatalog until the catalog endpoint lands.

Verified: workspace-server go build + compute tests pass; canvas tsc --noEmit
clean for the changed files (pre-existing unrelated test errors only).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
cp-be added 1 commit 2026-06-05 23:34:02 +00:00
fix(workspace,canvas): Hetzner real shapes cpx/cax (verified vs live API)
ci-arm64-advisory / fast-checks (pull_request) Waiting to run
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 3s
CI / Python Lint & Test (pull_request) Successful in 3s
Harness Replays / detect-changes (pull_request) Successful in 5s
Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 3s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 4s
Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (pull_request) Successful in 2s
E2E API Smoke Test / detect-changes (pull_request) Successful in 9s
E2E Chat / detect-changes (pull_request) Successful in 8s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 5s
sop-checklist / review-refire (pull_request_target) Has been skipped
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: comprehensive-testing, local-postgres-e2
sop-checklist / na-declarations (pull_request) N/A: (none)
gate-check-v3 / gate-check (pull_request_target) Successful in 7s
qa-review / approved (pull_request_target) Failing after 6s
security-review / approved (pull_request_target) Failing after 5s
sop-checklist / all-items-acked (pull_request_target) Successful in 4s
Harness Replays / Harness Replays (pull_request) Successful in 1s
E2E Chat / E2E Chat (pull_request) Successful in 2s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 15s
CI / Detect changes (pull_request) Successful in 16s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 14s
sop-tier-check / tier-check (pull_request_target) Failing after 5s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 1s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 3s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m0s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 57s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 2m44s
CI / Platform (Go) (pull_request) Successful in 3m54s
CI / Canvas (Next.js) (pull_request) Failing after 6m31s
CI / all-required (pull_request) Has been skipped
CI / Canvas Deploy Status (pull_request) Has been skipped
26ea3f8322
The hardcoded Hetzner instance lists used cx/ccx, but the live Hetzner project
(verified via HCLOUD_TOKEN against api.hetzner.cloud) offers cpx (AMD) + cax
(ARM). Aligned both the workspace-server allowlist and the canvas Container
Config selector to the real shapes, in sync with controlplane's RateCatalog:

  cpx11/cpx21/cpx31/cpx41/cpx51 (AMD) + cax21/cax31/cax41 (ARM)

Without this the allowlist would reject the real default (cpx31) and the UI
would offer shapes that don't exist.

Verified: workspace-server go build + compute tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Member

merge-queue: updated this branch with main at e441def8b3a8. Waiting for CI on the refreshed head.

merge-queue: updated this branch with `main` at `e441def8b3a8`. Waiting for CI on the refreshed head.
devops-engineer added 1 commit 2026-06-06 12:30:41 +00:00
Merge branch 'main' into feat/workspace-provider-field
ci-arm64-advisory / fast-checks (pull_request) Waiting to run
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 4s
CI / Detect changes (pull_request) Successful in 6s
CI / Python Lint & Test (pull_request) Successful in 8s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 5s
E2E API Smoke Test / detect-changes (pull_request) Successful in 11s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 5s
Harness Replays / detect-changes (pull_request) Successful in 5s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 4s
Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 11s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 16s
E2E Chat / detect-changes (pull_request) Successful in 17s
sop-checklist / review-refire (pull_request_target) Has been skipped
qa-review / approved (pull_request_target) Failing after 6s
gate-check-v3 / gate-check (pull_request_target) Successful in 7s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: comprehensive-testing, local-postgres-e2
sop-checklist / na-declarations (pull_request) N/A: (none)
E2E Chat / E2E Chat (pull_request) Successful in 2s
Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (pull_request) Successful in 15s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 2s
sop-checklist / all-items-acked (pull_request_target) Successful in 5s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 13s
Harness Replays / Harness Replays (pull_request) Successful in 10s
security-review / approved (pull_request_target) Failing after 13s
sop-tier-check / tier-check (pull_request_target) Failing after 10s
CI / Platform (Go) (pull_request) Failing after 39s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Failing after 48s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Failing after 59s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m14s
CI / Canvas (Next.js) (pull_request) Failing after 6m18s
CI / all-required (pull_request) Has been skipped
CI / Canvas Deploy Status (pull_request) Has been skipped
a76386efc2
Member

merge-queue: updated this branch with main at 31283a292a34. Waiting for CI on the refreshed head.

merge-queue: updated this branch with `main` at `31283a292a34`. Waiting for CI on the refreshed head.
devops-engineer added 1 commit 2026-06-06 15:10:44 +00:00
Merge branch 'main' into feat/workspace-provider-field
ci-arm64-advisory / fast-checks (pull_request) Waiting to run
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 4s
CI / Detect changes (pull_request) Successful in 8s
E2E API Smoke Test / detect-changes (pull_request) Successful in 7s
CI / Python Lint & Test (pull_request) Successful in 7s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 9s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 5s
Harness Replays / detect-changes (pull_request) Successful in 6s
Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 9s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 11s
E2E Chat / detect-changes (pull_request) Successful in 15s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 5s
sop-checklist / review-refire (pull_request_target) Has been skipped
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 4s
security-review / approved (pull_request_target) Failing after 6s
qa-review / approved (pull_request_target) Failing after 7s
gate-check-v3 / gate-check (pull_request_target) Successful in 7s
E2E Chat / E2E Chat (pull_request) Successful in 2s
Harness Replays / Harness Replays (pull_request) Successful in 5s
Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (pull_request) Successful in 14s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: comprehensive-testing, local-postgres-e2
sop-checklist / na-declarations (pull_request) N/A: (none)
sop-checklist / all-items-acked (pull_request_target) Successful in 15s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 13s
sop-tier-check / tier-check (pull_request_target) Failing after 12s
CI / Platform (Go) (pull_request) Failing after 36s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 58s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Failing after 46s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Failing after 1m11s
CI / Canvas (Next.js) (pull_request) Failing after 6m52s
CI / all-required (pull_request) Has been skipped
CI / Canvas Deploy Status (pull_request) Has been skipped
d357f17be5
Member

merge-queue: updated this branch with main at d768d8667b0f. Waiting for CI on the refreshed head.

merge-queue: updated this branch with `main` at `d768d8667b0f`. Waiting for CI on the refreshed head.
devops-engineer added 1 commit 2026-06-06 17:55:58 +00:00
Merge branch 'main' into feat/workspace-provider-field
ci-arm64-advisory / fast-checks (pull_request) Waiting to run
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 4s
CI / Python Lint & Test (pull_request) Successful in 4s
E2E API Smoke Test / detect-changes (pull_request) Successful in 8s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 6s
Harness Replays / detect-changes (pull_request) Successful in 6s
CI / Detect changes (pull_request) Successful in 12s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 10s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 10s
E2E Chat / detect-changes (pull_request) Successful in 13s
Harness Replays / Harness Replays (pull_request) Successful in 2s
Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 10s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 7s
qa-review / approved (pull_request_target) Failing after 6s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 5s
gate-check-v3 / gate-check (pull_request_target) Successful in 11s
security-review / approved (pull_request_target) Failing after 6s
E2E Chat / E2E Chat (pull_request) Successful in 6s
sop-checklist / review-refire (pull_request_target) Has been skipped
Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (pull_request) Successful in 15s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: comprehensive-testing, local-postgres-e2
sop-checklist / na-declarations (pull_request) N/A: (none)
sop-checklist / all-items-acked (pull_request_target) Successful in 6s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Failing after 25s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 25s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Failing after 43s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m1s
sop-tier-check / tier-check (pull_request_target) Failing after 1m7s
CI / Platform (Go) (pull_request) Failing after 1m50s
CI / Canvas (Next.js) (pull_request) Failing after 8m8s
CI / all-required (pull_request) Has been skipped
CI / Canvas Deploy Status (pull_request) Has been skipped
qa-review / approved (pull_request_review) Has been skipped
security-review / approved (pull_request_review) Has been skipped
sop-tier-check / tier-check (pull_request_review) Failing after 7s
331f502636
agent-reviewer-cr2 requested changes 2026-06-12 02:18:19 +00:00
agent-reviewer-cr2 left a comment
Member

Requesting changes on head 331f502636.

5-axis review:

Correctness/security blocker: the PR says AWS is the only default-visible option until the CTO-gated flip, and that Hetzner/GCP should be shown when the backend reports them registered and the customer is entitled. The implementation does not enforce that contract. The canvas hardcodes all three providers in PROVIDERS and always renders them in the selector, and the workspace-server validator accepts provider=hetzner/gcp for any caller as long as the instance type is in the hardcoded allowlist. That globally exposes non-AWS provisioning choices without a server-side registration/entitlement gate, so a tenant can save/restart onto Hetzner/GCP before the backend/entitlement path says it is allowed.

Please make provider availability server-authoritative before exposing/accepting non-AWS values: either keep the selector/backend limited to aws until the gated catalog/entitlement endpoint exists, or add the actual backend registration + customer entitlement check and tests proving unauthorized Hetzner/GCP is rejected.

Robustness: AWS back-compat for empty provider is covered, and cross-provider instance validation is good. Performance: no concern. Readability: small and understandable, but the hardcoded provider catalog duplicates CP pricing/provider state and is exactly where the gating drift shows up.

Note: this PR is currently not mergeable and I did not run Go locally in this runtime.

Requesting changes on head 331f5026365939ec80461a1c39d966805492ee23. 5-axis review: Correctness/security blocker: the PR says AWS is the only default-visible option until the CTO-gated flip, and that Hetzner/GCP should be shown when the backend reports them registered and the customer is entitled. The implementation does not enforce that contract. The canvas hardcodes all three providers in PROVIDERS and always renders them in the selector, and the workspace-server validator accepts provider=hetzner/gcp for any caller as long as the instance type is in the hardcoded allowlist. That globally exposes non-AWS provisioning choices without a server-side registration/entitlement gate, so a tenant can save/restart onto Hetzner/GCP before the backend/entitlement path says it is allowed. Please make provider availability server-authoritative before exposing/accepting non-AWS values: either keep the selector/backend limited to aws until the gated catalog/entitlement endpoint exists, or add the actual backend registration + customer entitlement check and tests proving unauthorized Hetzner/GCP is rejected. Robustness: AWS back-compat for empty provider is covered, and cross-provider instance validation is good. Performance: no concern. Readability: small and understandable, but the hardcoded provider catalog duplicates CP pricing/provider state and is exactly where the gating drift shows up. Note: this PR is currently not mergeable and I did not run Go locally in this runtime.
Some checks are pending
ci-arm64-advisory / fast-checks (pull_request) Waiting to run
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 4s
CI / Python Lint & Test (pull_request) Successful in 4s
E2E API Smoke Test / detect-changes (pull_request) Successful in 8s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 6s
Harness Replays / detect-changes (pull_request) Successful in 6s
CI / Detect changes (pull_request) Successful in 12s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 10s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 10s
E2E Chat / detect-changes (pull_request) Successful in 13s
Harness Replays / Harness Replays (pull_request) Successful in 2s
Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 10s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 7s
qa-review / approved (pull_request_target) Failing after 6s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 5s
gate-check-v3 / gate-check (pull_request_target) Successful in 11s
security-review / approved (pull_request_target) Failing after 6s
E2E Chat / E2E Chat (pull_request) Successful in 6s
sop-checklist / review-refire (pull_request_target) Has been skipped
Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (pull_request) Successful in 15s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: comprehensive-testing, local-postgres-e2
sop-checklist / na-declarations (pull_request) N/A: (none)
sop-checklist / all-items-acked (pull_request_target) Successful in 6s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Failing after 25s
Required
Details
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 25s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Failing after 43s
Required
Details
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m1s
sop-tier-check / tier-check (pull_request_target) Failing after 1m7s
CI / Platform (Go) (pull_request) Failing after 1m50s
CI / Canvas (Next.js) (pull_request) Failing after 8m8s
CI / all-required (pull_request) Has been skipped
Required
Details
CI / Canvas Deploy Status (pull_request) Has been skipped
qa-review / approved (pull_request_review) Has been skipped
security-review / approved (pull_request_review) Has been skipped
sop-tier-check / tier-check (pull_request_review) Failing after 7s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (pull_request)
Required
This pull request has changes conflicting with the target branch.
  • canvas/src/components/tabs/ContainerConfigTab.tsx
  • workspace-server/internal/handlers/workspace_compute.go
  • workspace-server/internal/handlers/workspace_compute_test.go
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/workspace-provider-field:feat/workspace-provider-field
git checkout feat/workspace-provider-field
Sign in to join this conversation.
No Reviewers
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#2322