From a07d75ebf3475da698e75d6fc128407f9a58c048 Mon Sep 17 00:00:00 2001 From: "Tommy D. Rossi" Date: Sun, 16 Nov 2025 11:58:30 +0100 Subject: [PATCH] release --- playwriter/CHANGELOG.md | 8 ++++++++ playwriter/package.json | 4 ++-- playwriter/src/mcp.ts | 19 ++++++++++++++----- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/playwriter/CHANGELOG.md b/playwriter/CHANGELOG.md index 191d781..8f64995 100644 --- a/playwriter/CHANGELOG.md +++ b/playwriter/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.0.4 + +### Patch Changes + +- Added `context` field to `State` type +- Renamed `ToolState` interface to `State` +- Limit execute tool output to 1000 characters with truncation message + ## 0.0.3 ### Patch Changes diff --git a/playwriter/package.json b/playwriter/package.json index a6f31e4..6e459be 100644 --- a/playwriter/package.json +++ b/playwriter/package.json @@ -1,9 +1,9 @@ { "name": "playwriter", "description": "", - "version": "0.0.3", + "version": "0.0.4", "type": "module", - "repository": "https://github.com/remorses/", + "repository": "https://github.com/remorses/playwriter", "scripts": { "build": "rm -rf dist *.tsbuildinfo && mkdir dist && cp src/resource.md src/prompt.md dist/ && tsc", "prepublishOnly": "pnpm build", diff --git a/playwriter/src/mcp.ts b/playwriter/src/mcp.ts index 9b3f84c..be32e97 100644 --- a/playwriter/src/mcp.ts +++ b/playwriter/src/mcp.ts @@ -1,7 +1,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js' import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js' import { z } from 'zod' -import { Page, Browser, chromium } from 'playwright-core' +import { Page, Browser, BrowserContext, chromium } from 'playwright-core' import fs from 'node:fs' import path from 'node:path' import { spawn } from 'node:child_process' @@ -10,16 +10,18 @@ import vm from 'node:vm' const require = createRequire(import.meta.url) -interface ToolState { +interface State { isConnected: boolean page: Page | null browser: Browser | null + context: BrowserContext | null } -const state: ToolState = { +const state: State = { isConnected: false, page: null, browser: null, + context: null, } const RELAY_PORT = 19988 @@ -76,6 +78,7 @@ async function ensureConnection(): Promise<{ browser: Browser; page: Page }> { state.browser = browser state.page = page + state.context = context state.isConnected = true return { browser, page } @@ -125,7 +128,7 @@ server.tool( await ensureConnection() const page = await getCurrentPage() - const context = page.context() + const context = state.context || page.context() console.error('Executing code:', code) try { @@ -197,11 +200,17 @@ server.tool( responseText += 'Code executed successfully (no output)' } + const MAX_LENGTH = 1000 + let finalText = responseText.trim() + if (finalText.length > MAX_LENGTH) { + finalText = finalText.slice(0, MAX_LENGTH) + `\n\n[Truncated to ${MAX_LENGTH} characters. Better manage your logs or paginate them to read the full logs]` + } + return { content: [ { type: 'text', - text: responseText.trim(), + text: finalText, }, ], }