( deps commandDeps, flags memorySelectorFlags, opts memorySelectorOptions, )
| 1242 | } |
| 1243 | |
| 1244 | func resolveMemorySelectorFlags( |
| 1245 | deps commandDeps, |
| 1246 | flags memorySelectorFlags, |
| 1247 | opts memorySelectorOptions, |
| 1248 | ) (MemorySelectorQuery, error) { |
| 1249 | scope, err := parseOptionalCLIMemoryScope(flags.Scope) |
| 1250 | if err != nil { |
| 1251 | return MemorySelectorQuery{}, err |
| 1252 | } |
| 1253 | agent := strings.TrimSpace(flags.Agent) |
| 1254 | tier, err := parseOptionalCLIAgentTier(flags.AgentTier) |
| 1255 | if err != nil { |
| 1256 | return MemorySelectorQuery{}, err |
| 1257 | } |
| 1258 | if scope == "" && (agent != "" || tier != "") { |
| 1259 | scope = memcontract.ScopeAgent |
| 1260 | } |
| 1261 | if scope == "" { |
| 1262 | scope = opts.DefaultScope |
| 1263 | } |
| 1264 | if scope != memcontract.ScopeAgent && (agent != "" || tier != "") { |
| 1265 | return MemorySelectorQuery{}, errors.New( |
| 1266 | "memory.scope.agent_flags_invalid: --agent and --agent-tier require --scope agent", |
| 1267 | ) |
| 1268 | } |
| 1269 | if scope == memcontract.ScopeAgent { |
| 1270 | if agent == "" { |
| 1271 | return MemorySelectorQuery{}, errors.New( |
| 1272 | "memory.scope.agent_required: --agent is required when --scope agent", |
| 1273 | ) |
| 1274 | } |
| 1275 | if tier == "" { |
| 1276 | return MemorySelectorQuery{}, errors.New( |
| 1277 | "memory.scope.agent_tier_required: --agent-tier is required when --scope agent", |
| 1278 | ) |
| 1279 | } |
| 1280 | } |
| 1281 | |
| 1282 | workspace := strings.TrimSpace(flags.Workspace) |
| 1283 | needsWorkspace := scope == memcontract.ScopeWorkspace || (scope == "" && opts.DefaultWorkspace) || |
| 1284 | (scope == memcontract.ScopeAgent && tier == memcontract.AgentTierWorkspace) |
| 1285 | if workspace == "" && needsWorkspace { |
| 1286 | var err error |
| 1287 | workspace, err = currentWorkingDirectory(deps) |
| 1288 | if err != nil { |
| 1289 | return MemorySelectorQuery{}, err |
| 1290 | } |
| 1291 | } |
| 1292 | return MemorySelectorQuery{ |
| 1293 | Scope: scope, |
| 1294 | WorkspaceID: workspace, |
| 1295 | AgentName: agent, |
| 1296 | AgentTier: tier, |
| 1297 | }, nil |
| 1298 | } |
| 1299 | |
| 1300 | func parseOptionalCLIMemoryScope(raw string) (memcontract.Scope, error) { |
| 1301 | scope := memcontract.Scope(strings.TrimSpace(raw)).Normalize() |
no test coverage detected