Active tree's cwd, honoring the player's workspace.tree
setting. In mirror mode the two cwds are kept in sync so
either reads work; this returns the content cwd canonically.
Effective default tree for a verb that doesn't carry an
explicit -c / -s flag. Reads workspace.tree; mirror mode
collapses to 'content' for read operations.
Resolved workspace.home setting. Schema-defaulted; the
accessor exists so controllers don't reach for raw setting
keys.
Return the user-explicit override for key without falling back to
the schema default. undefined when nothing has been
setSetting'd — even when the schema declares a default. Lets
consumers distinguish "user explicitly set this" from "schema
default is in effect" for chain-resolution flows (e.g.,
LocomotionApi.defaultModeFor defers to the bodyplan default
only when there's no explicit override).
Resolved workspace.pageSize setting. Same accessor-pattern
rationale as getHome().
Raw workspace.tree setting value (including 'mirror').
Verbs that write (cd, mkdir, rm, cp, mv) check this to
decide whether to mirror the operation across both trees.
Copy the active tree's cwd to the other tree. v1 carry-over
for cd --mirror as a one-shot operation, distinct from the
persistent workspace.tree = 'mirror' mode.
Resolve which tree a verb invocation acts on, given the parsed
tree flags. Encapsulates the precedence: explicit -s wins
over explicit -c, otherwise the workspace.tree setting's
default-tree resolution. Controllers thread this so the
priority lives in one place.
Set the cwd for one tree. Plain assignment — validation
(does the path actually exist?) is the caller's job (the cd
controller validates against TemplateApi / SourceTreeApi
before invoking this).
Set the cwd in the way the active tree mode dictates: in
mirror mode this updates both cwds; otherwise it updates
only the named tree. Verb controllers prefer this over raw
setCwd so the mirror invariant fires automatically.
Public shape provided by
WorkspaceMixin. Methods only, per the inter-stuff contract —contentCwd/sourceCwdare public fields for the Hydrator's reflection but external callers go through these accessors.Extends
Environmentbecause Workspace always co-composes withEnvironmentMixinonShelledCharacter. The interface extension lets controllers narrow once viaMixinApi.isWorkspace(giver)and reach Environment'sgetSetting/setSettingsurface without a second narrow.