openzoo 0.50.79 → 0.50.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1634,8 +1634,12 @@ function entryPlainText(v) {
1634
1634
  */
1635
1635
  export function foldSameRole(messages) {
1636
1636
  const out = [];
1637
+ // An assistant entry with no content and no tool_calls (a failed/empty turn
1638
+ // recorded on the canvas) is invalid for every OpenAI-compatible provider:
1639
+ // measured 2026-09-02 as `400 Invalid model provider request` param=messages.
1640
+ messages = (messages || []).filter((m) => !(m && m.role === 'assistant' && (m.content == null || m.content === '') && !m.tool_calls));
1637
1641
  const foldable = (m) => m && (m.role === 'user' || m.role === 'assistant') && !m.tool_calls && !m.tool_call_id;
1638
- for (const m of messages || []) {
1642
+ for (const m of messages) {
1639
1643
  const last = out[out.length - 1];
1640
1644
  if (last && foldable(last) && foldable(m) && last.role === m.role) {
1641
1645
  const a = last.content; const b = m.content;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openzoo",
3
- "version": "0.50.79",
3
+ "version": "0.50.80",
4
4
  "description": "Local x402-paying proxy + MCP server for openzoo.fun — point any OpenAI-compatible harness (Cursor, Claude Code, aider, SDKs) at localhost and it pays per call from a local burner wallet. Solana and Base rails live; Robinhood experimental.",
5
5
  "license": "MIT",
6
6
  "type": "module",