o: fix context parsing - slash is primary separator
Agent names may contain colons (e.g., src:ollie), so slash must be the primary separator. Colon separator is only for the rare case where session names contain slashes. default/src:ollie now correctly parses as: session = default agent = src:ollie
This commit is contained in:
parent
aa939b0f84
commit
9b063a24ce
|
|
@ -7,9 +7,8 @@
|
|||
# o <session>/<agent> <cmd> Agent level
|
||||
# o <session>:<agent> <cmd> Agent level (colon separator)
|
||||
#
|
||||
# The slash or colon in session/agent disambiguates context level.
|
||||
# Use colon when session or agent names contain slashes.
|
||||
# Names with spaces can be quoted: o "my session:my agent" prompt
|
||||
# Slash is the primary separator. Agent names may contain colons.
|
||||
# Use colon separator only when session names contain slashes.
|
||||
#
|
||||
# Subcommands:
|
||||
# read <path> Read a file (-l to loop)
|
||||
|
|
@ -485,9 +484,8 @@ Context is determined by the first argument:
|
|||
o <session>/<agent> <cmd> Agent level
|
||||
o <session>:<agent> <cmd> Agent level (colon separator)
|
||||
|
||||
The slash or colon in session/agent disambiguates context level.
|
||||
Use colon when session or agent names contain slashes.
|
||||
Names with spaces can be quoted: o "my session:my agent" prompt
|
||||
Slash is the primary separator. Agent names may contain colons.
|
||||
Use colon separator only when session names contain slashes.
|
||||
|
||||
Paths starting with / are root-relative (ignore context):
|
||||
o myproj ls /bypass List root bypass/ even in session context
|
||||
|
|
@ -573,21 +571,23 @@ dispatch_cmd() {
|
|||
|
||||
# Parse context from first argument
|
||||
# Supports:
|
||||
# session/agent (slash separator)
|
||||
# session:agent (colon separator)
|
||||
# session/agent (slash separator - primary)
|
||||
# session:agent (colon separator - for session names with slashes)
|
||||
# "session name/agent" (quoted with spaces)
|
||||
# session\ name/agent (escaped spaces)
|
||||
#
|
||||
# Slash is the primary separator. Use colon only when session names contain slashes.
|
||||
# Agent names may contain colons (e.g., "src:ollie").
|
||||
parse_context() {
|
||||
local arg="$1"
|
||||
|
||||
# Check for colon or slash separator
|
||||
# Colon takes precedence if both present (allows session with / in name)
|
||||
if [[ "$arg" == *:* ]]; then
|
||||
CTX_SESSION="${arg%%:*}"
|
||||
CTX_AGENT="${arg#*:}"
|
||||
elif [[ "$arg" == */* ]]; then
|
||||
# Slash is the primary separator
|
||||
if [[ "$arg" == */* ]]; then
|
||||
CTX_SESSION="${arg%%/*}"
|
||||
CTX_AGENT="${arg#*/}"
|
||||
elif [[ "$arg" == *:* ]]; then
|
||||
# Colon separator (for session names containing slashes)
|
||||
CTX_SESSION="${arg%%:*}"
|
||||
CTX_AGENT="${arg#*:}"
|
||||
else
|
||||
# session only
|
||||
CTX_SESSION="$arg"
|
||||
|
|
|
|||
Loading…
Reference in New Issue