mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 17:37:40 +00:00
* feat(cli): one enclosing-workspace rule, --environment local, and copyable workspace addresses current/active and cwd inference now pick the innermost workspace of either kind (worktree or folder workspace); at equal depth the caller terminal's own workspace wins, otherwise the choice is refused as ambiguous. --environment local names this machine's own Orca over an ambient ORCA_ENVIRONMENT or pairing code. worktree ps/show/current print an environment: line and an address: line (JSON environment, address, addressUnavailable, parent) that always carries its --environment, and name a parent's environment only when it is verified. * test: answer the folder catalog read in agent launch cwd tests * feat(cli): worktree rm refuses current/active and names the selector to pass Removal needs an explicit workspace, as git worktree remove needs a path. The refusal runs before rm decides between a worktree and a folder workspace, and reports what current resolves to now (one selector, the ambiguous choices, or none) in text and as invalid_argument data. * fix(cli): keep the remote-environment guidance when rm refuses current * fix(cli): surface folder-catalog failures for omitted targets; no address for a duplicated folder parent * fix(cli): surface a worktree-list failure for omitted browser and terminal targets too * test(cli): folder rm refuses current/active before the folder removal path * fix(cli): refuse a cwd owner whose folder host can't be derived instead of skipping it * fix(cli): compare cwd owners by filesystem identity, refuse every equal-path tie, surface worktree-list failures Paths on the caller's own filesystem compare by realpath (reusing resolveRealPathSync), so /tmp and /private/tmp aliases find the deeper owner in both the folder prefilter and ranking; other hosts' paths stay lexical. Equal-depth owners with different repo registrations now refuse without a caller instead of picking by catalog order. An omitted target no longer swallows worktree.list method_not_found; only the optional folder reads fall back. * fix(cli): read the realpath helper from shared so the packaged CLI ships it * refactor(cli): move the catalog row type and unresolved-owner refusal out of the selection/catalog cycle * fix(cli): resolve every caller-filesystem workspace path, not only basename matches A workspace registered through a differently named symlink was skipped by the basename gate. Containment now realpaths cwd and each row on the caller's own filesystem once per command, shared by the folder prefilter and ranking; folder hosts are derived first so another host's paths are never resolved locally. * test: answer the folder catalog read in the ambiguous orchestration-check caller test * feat(cli): --parent-environment names where a worktree's parent lives worktree create and worktree set take --parent-environment <local|saved id|name> next to --parent-worktree. The parent is resolved in that environment only, and sent to the child as a verified cross-store ref after the child's cross-machine capability check. Without the flag, the parent stays in the child's environment; active/current always mean this machine's own Orca. Preflight failures happen before any change: environment_not_paired, environment_unavailable, LINEAGE_PARENT_NOT_FOUND / LINEAGE_PARENT_AMBIGUOUS naming the searched environment, and incompatible_runtime with data.environment and data.requires. * fix(cli): parent lookup errors name and list the environment searched LINEAGE_PARENT_AMBIGUOUS and LINEAGE_PARENT_NOT_FOUND now always carry data.environment and a listing command for the environment the parent was looked up in, for parents in another environment and in the child's own. Steps inherited from the runtime listed the caller's default route instead. * docs(cli): a local address names the Orca that printed it