claudewheel v0.24.2 /claudewheel.workspace
Edit
On this page

Workspace: the single root object owning all claudewheel filesystem paths.

#claudewheel.workspace

#claudewheel.workspace

Workspace: the single root object owning all claudewheel filesystem paths.

#Workspace

Immutable owner of every claudewheel filesystem path, rooted at root.

Path properties are derived purely from root; store accessors hand back path-injected facades. Construction performs zero filesystem or terminal I/O -- it is pure value assembly. The only env var read in the entire package (CLAUDEWHEEL_CONFIG_DIR) lives in :meth:default.

#open

python
def open(cls, root: Path, claude_dir: Path | None=None) -> Workspace

Build a Workspace at root. Pure value construction -- no I/O.

claude_dir defaults to Path.home()/".claude" evaluated at call time (never at import), so a poisoned/sandboxed home is honored.

#default

python
def default(cls) -> Workspace

Build the default Workspace, honoring CLAUDEWHEEL_CONFIG_DIR.

This is the ONLY place in the package that reads the CLAUDEWHEEL_CONFIG_DIR env var. When set, its expanduser'd value is the root; otherwise the root is Path.home()/".claudewheel".

#profiles_dir

python
def profiles_dir(self) -> Path

Path to the profiles directory.

#tokens_file

python
def tokens_file(self) -> Path

Path to the tokens.json file.

#options_file

python
def options_file(self) -> Path

Path to the options.json file.

#state_file

python
def state_file(self) -> Path

Path to the state.json file.

#config_file

python
def config_file(self) -> Path

Path to the config.json file.

#segments_file

python
def segments_file(self) -> Path

Path to the segments.json file.

#themes_dir

python
def themes_dir(self) -> Path

Path to the themes directory.

#hooks_dir

python
def hooks_dir(self) -> Path

Path to the hooks directory.

#scripts_dir

python
def scripts_dir(self) -> Path

Path to the scripts directory.

#shared_dir

python
def shared_dir(self) -> Path

Path to the shared data directory.

#skills_dir

python
def skills_dir(self) -> Path

Path to the skills directory.

#shared_settings_file

python
def shared_settings_file(self) -> Path

Path to the shared-settings.json file.

#inodes_file

python
def inodes_file(self) -> Path

Path to the inodes.json file in the shared directory.

#tokens

python
def tokens(self) -> TokenStore

The path-injected TokenStore over this workspace's tokens.json.

#shared

python
def shared(self) -> SharedStore

The path-injected SharedStore over this workspace's shared + skills dirs.

#profiles

python
def profiles(self) -> ProfileStore

The path-injected ProfileStore over this workspace's profiles + tokens.

Wires ALL write-path stores (shared/options/state) so the store's write operations (create/delete/rename/recover) are usable; the read APIs work with or without them.

#appconfig

python
def appconfig(self) -> 'AppConfigStore'

Construct the workspace-backed :class:AppConfigStore.

This is a METHOD, not a property, because construction has side effects (it ensures dirs, runs schema migrations, recovers interrupted profile renames, and materializes shared-settings.json). Making the cost explicit at the call site is deliberate. The import is local to avoid an import cycle -- config imports workspace types for hints, so workspace must not import config at module top.

Search