dffe5a305b
OpenCode 1.4.x ignores the agent `order` field (sst/opencode#19127), so its `Agent.list()` sorts purely by `agent.name` via Remeda `sortBy` which uses native string `<`/`>` comparison. Without intervention, the four core agents fall into alphabetical order (Atlas -> Hephaestus -> Prometheus -> Sisyphus), which is not the canonical sisyphus -> hephaestus -> prometheus -> atlas order the project ships. Prior attempts to bias the sort key with invisible characters (ZWSP, U+2060 WORD JOINER, U+00AD SOFT HYPHEN, ANSI escape) all caused `Bun.stringWidth()` vs terminal-width drift, producing visible gaps and column truncation in the TUI status bar (#3259, #3238). Solution: a narrowly-scoped shim of `Array.prototype.toSorted` and `Array.prototype.sort` that activates only when the array contains two or more agent objects whose `.name` matches a canonical core display name. The activation predicate guards against mixed-type arrays so unrelated `.sort()` / `.toSorted()` calls (string arrays, number arrays, mixed objects) execute native behavior unchanged. Install is idempotent. Cubic P1 mitigations from PR #3267: - `isAgentArray` rejects any array with non-object or null elements, eliminating the throw-on-mixed-array failure mode. - Strict activation predicate (>= 2 ranked elements) keeps the global prototype patch from affecting unrelated sort calls. Remove this shim once OpenCode honors the agent `order` field (sst/opencode#19127). Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>