release
This commit is contained in:
@@ -1,5 +1,13 @@
|
|||||||
# Changelog
|
# 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
|
## 0.0.3
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "playwriter",
|
"name": "playwriter",
|
||||||
"description": "",
|
"description": "",
|
||||||
"version": "0.0.3",
|
"version": "0.0.4",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"repository": "https://github.com/remorses/",
|
"repository": "https://github.com/remorses/playwriter",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "rm -rf dist *.tsbuildinfo && mkdir dist && cp src/resource.md src/prompt.md dist/ && tsc",
|
"build": "rm -rf dist *.tsbuildinfo && mkdir dist && cp src/resource.md src/prompt.md dist/ && tsc",
|
||||||
"prepublishOnly": "pnpm build",
|
"prepublishOnly": "pnpm build",
|
||||||
|
|||||||
+14
-5
@@ -1,7 +1,7 @@
|
|||||||
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
||||||
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
||||||
import { z } from 'zod'
|
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 fs from 'node:fs'
|
||||||
import path from 'node:path'
|
import path from 'node:path'
|
||||||
import { spawn } from 'node:child_process'
|
import { spawn } from 'node:child_process'
|
||||||
@@ -10,16 +10,18 @@ import vm from 'node:vm'
|
|||||||
|
|
||||||
const require = createRequire(import.meta.url)
|
const require = createRequire(import.meta.url)
|
||||||
|
|
||||||
interface ToolState {
|
interface State {
|
||||||
isConnected: boolean
|
isConnected: boolean
|
||||||
page: Page | null
|
page: Page | null
|
||||||
browser: Browser | null
|
browser: Browser | null
|
||||||
|
context: BrowserContext | null
|
||||||
}
|
}
|
||||||
|
|
||||||
const state: ToolState = {
|
const state: State = {
|
||||||
isConnected: false,
|
isConnected: false,
|
||||||
page: null,
|
page: null,
|
||||||
browser: null,
|
browser: null,
|
||||||
|
context: null,
|
||||||
}
|
}
|
||||||
|
|
||||||
const RELAY_PORT = 19988
|
const RELAY_PORT = 19988
|
||||||
@@ -76,6 +78,7 @@ async function ensureConnection(): Promise<{ browser: Browser; page: Page }> {
|
|||||||
|
|
||||||
state.browser = browser
|
state.browser = browser
|
||||||
state.page = page
|
state.page = page
|
||||||
|
state.context = context
|
||||||
state.isConnected = true
|
state.isConnected = true
|
||||||
|
|
||||||
return { browser, page }
|
return { browser, page }
|
||||||
@@ -125,7 +128,7 @@ server.tool(
|
|||||||
await ensureConnection()
|
await ensureConnection()
|
||||||
|
|
||||||
const page = await getCurrentPage()
|
const page = await getCurrentPage()
|
||||||
const context = page.context()
|
const context = state.context || page.context()
|
||||||
|
|
||||||
console.error('Executing code:', code)
|
console.error('Executing code:', code)
|
||||||
try {
|
try {
|
||||||
@@ -197,11 +200,17 @@ server.tool(
|
|||||||
responseText += 'Code executed successfully (no output)'
|
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 {
|
return {
|
||||||
content: [
|
content: [
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
text: responseText.trim(),
|
text: finalText,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user