drafted 1.14.26 → 1.14.27

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.
Files changed (2) hide show
  1. package/mcp/server.mjs +4 -2
  2. package/package.json +1 -1
package/mcp/server.mjs CHANGED
@@ -2962,8 +2962,10 @@ tool('frame', 'Frame CRUD in the ACTIVE PROJECT. Dispatch by `action`: read (by
2962
2962
  result = await api('GET', `/api/fs/by-id/${frameId}${query}`);
2963
2963
  } else {
2964
2964
  const parts = path.replace(/^\/+/, '').split('/');
2965
- if (parts.length !== 3) throw new Error('Path must be /{layer}/{lane}/{filename}, a frame URL, or a frame ID');
2966
- result = await api('GET', `/api/fs/${parts[0]}/${parts[1]}/${parts[2]}${query}`);
2965
+ // 2 segments = a layer-root frame (empty lane, e.g. /designs/AGENTS.md);
2966
+ // 3 = /{layer}/{lane}/{filename}. Both resolve server-side.
2967
+ if (parts.length !== 2 && parts.length !== 3) throw new Error('Path must be /{layer}/{filename}, /{layer}/{lane}/{filename}, a frame URL, or a frame ID');
2968
+ result = await api('GET', `/api/fs/${parts.map(encodeURIComponent).join('/')}${query}`);
2967
2969
  }
2968
2970
  // Surface content as the visible text. Some Claude clients prefer
2969
2971
  // structuredContent over text when both are present and structured looks
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drafted",
3
- "version": "1.14.26",
3
+ "version": "1.14.27",
4
4
  "description": "Drafted — visual thinking surface for humans and AI agents. Renders HTML, markdown, images, and code as frames on a zoomable canvas, with MCP tools for AI agents and real-time sync for humans.",
5
5
  "type": "module",
6
6
  "files": [