| ... | ... | @@ -125,6 +125,31 @@ describe("parseModelsCliOutput", () => { |
| 125 | 125 | NodeAssert.ok(model.variants); |
| 126 | 126 | NodeAssert.equal(model.variants!["medium"] !== undefined, true); |
| 127 | 127 | }); |
| 128 | |
| 129 | it("keeps a model whose JSON body has a slash and no interior whitespace", () => { |
| 130 | // OpenRouter-style: the model id contains a `/` and no string value has a |
| 131 | // space, so the JSON body line itself matches the slug regex. It must still |
| 132 | // be treated as the body of the preceding slug, not a new slug. |
| 133 | const stdout = [ |
| 134 | "openrouter/qwen/qwen3-coder", |
| 135 | JSON.stringify({ |
| 136 | id: "qwen/qwen3-coder", |
| 137 | providerID: "openrouter", |
| 138 | name: "qwen3-coder", |
| 139 | status: "active", |
| 140 | }), |
| 141 | ].join("\n"); |
| 142 | |
| 143 | const result = parseModelsCliOutput(stdout); |
| 144 | NodeAssert.equal(result.providers.size, 1); |
| 145 | NodeAssert.deepEqual([...result.connected], ["openrouter"]); |
| 146 | const provider = result.providers.get("openrouter")!; |
| 147 | NodeAssert.ok(provider); |
| 148 | const model = provider.models["qwen/qwen3-coder"]!; |
| 149 | NodeAssert.ok(model); |
| 150 | NodeAssert.equal(model.id, "qwen/qwen3-coder"); |
| 151 | NodeAssert.equal(model.providerID, "openrouter"); |
| 152 | }); |
| 128 | 153 | }); |
| 129 | 154 | |
| 130 | 155 | describe("parseAgentListCliOutput", () => { |