( deps commandDeps, flags memorySelectorFlags, raw string, )
| 1430 | } |
| 1431 | |
| 1432 | func parseMemoryPromotionSelector( |
| 1433 | deps commandDeps, |
| 1434 | flags memorySelectorFlags, |
| 1435 | raw string, |
| 1436 | ) (contract.MemoryScopeSelectorPayload, error) { |
| 1437 | parts := strings.Split(strings.TrimSpace(raw), ":") |
| 1438 | if len(parts) > 2 || strings.TrimSpace(parts[0]) == "" { |
| 1439 | return contract.MemoryScopeSelectorPayload{}, errors.New( |
| 1440 | "memory.promote.selector_invalid: selector must be scope[:tier]", |
| 1441 | ) |
| 1442 | } |
| 1443 | scope, err := parseOptionalCLIMemoryScope(parts[0]) |
| 1444 | if err != nil { |
| 1445 | return contract.MemoryScopeSelectorPayload{}, err |
| 1446 | } |
| 1447 | if scope == "" { |
| 1448 | return contract.MemoryScopeSelectorPayload{}, errors.New( |
| 1449 | "memory.promote.selector_invalid: selector scope is required", |
| 1450 | ) |
| 1451 | } |
| 1452 | promoteFlags := flags |
| 1453 | promoteFlags.Scope = string(scope) |
| 1454 | if len(parts) == 2 { |
| 1455 | promoteFlags.AgentTier = strings.TrimSpace(parts[1]) |
| 1456 | } |
| 1457 | if scope != memcontract.ScopeAgent { |
| 1458 | promoteFlags.Agent = "" |
| 1459 | promoteFlags.AgentTier = "" |
| 1460 | } |
| 1461 | selector, err := resolveMemorySelectorFlags(deps, promoteFlags, memorySelectorOptions{DefaultWorkspace: true}) |
| 1462 | if err != nil { |
| 1463 | return contract.MemoryScopeSelectorPayload{}, err |
| 1464 | } |
| 1465 | return contract.MemoryScopeSelectorPayload{ |
| 1466 | Scope: selector.Scope, |
| 1467 | WorkspaceID: selector.WorkspaceID, |
| 1468 | AgentName: selector.AgentName, |
| 1469 | AgentTier: selector.AgentTier, |
| 1470 | }, nil |
| 1471 | } |
| 1472 | |
| 1473 | func boolStatus(value bool) string { |
| 1474 | if value { |
no test coverage detected