playwriter 0.2.0 → 0.3.1
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.
- package/dist/bippy.js +1 -1
- package/dist/cdp-log.d.ts +4 -1
- package/dist/cdp-log.d.ts.map +1 -1
- package/dist/cdp-log.js +39 -2
- package/dist/cdp-log.js.map +1 -1
- package/dist/cdp-log.test.d.ts +2 -0
- package/dist/cdp-log.test.d.ts.map +1 -0
- package/dist/cdp-log.test.js +109 -0
- package/dist/cdp-log.test.js.map +1 -0
- package/dist/cdp-relay.d.ts.map +1 -1
- package/dist/cdp-relay.js +99 -6
- package/dist/cdp-relay.js.map +1 -1
- package/dist/cli.js +14 -12
- package/dist/cli.js.map +1 -1
- package/dist/executor.d.ts +3 -0
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +106 -36
- package/dist/executor.js.map +1 -1
- package/dist/extension/background.js +23 -12
- package/dist/extension/manifest.json +1 -1
- package/dist/prompt.md +32 -13
- package/dist/readability.js +1 -1
- package/dist/relay-client.d.ts +11 -0
- package/dist/relay-client.d.ts.map +1 -1
- package/dist/relay-client.js +46 -1
- package/dist/relay-client.js.map +1 -1
- package/dist/relay-core.test.js +10 -6
- package/dist/relay-core.test.js.map +1 -1
- package/dist/relay-session.test.js +9 -1
- package/dist/relay-session.test.js.map +1 -1
- package/dist/relay-state.test.js +57 -1
- package/dist/relay-state.test.js.map +1 -1
- package/dist/selector-generator.js +1 -1
- package/dist/start-relay-server.d.ts +1 -1
- package/dist/start-relay-server.d.ts.map +1 -1
- package/dist/start-relay-server.js +23 -1
- package/dist/start-relay-server.js.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -0
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/cdp-log.test.ts +131 -0
- package/src/cdp-log.ts +44 -2
- package/src/cdp-relay.ts +104 -6
- package/src/cli.ts +14 -13
- package/src/executor.ts +122 -39
- package/src/relay-client.ts +62 -5
- package/src/relay-core.test.ts +10 -6
- package/src/relay-session.test.ts +9 -1
- package/src/relay-state.test.ts +67 -1
- package/src/skill.md +32 -13
- package/src/start-relay-server.ts +22 -1
- package/src/utils.ts +4 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { startPlayWriterCDPRelayServer } from './cdp-relay.js'
|
|
2
2
|
import { createFileLogger } from './create-logger.js'
|
|
3
|
+
import { waitForRelayVersion } from './relay-client.js'
|
|
3
4
|
import { LOG_CDP_FILE_PATH } from './utils.js'
|
|
4
5
|
|
|
5
6
|
process.title = 'playwriter-ws-server'
|
|
@@ -25,7 +26,27 @@ export async function startServer({
|
|
|
25
26
|
host = '127.0.0.1',
|
|
26
27
|
token,
|
|
27
28
|
}: { port?: number; host?: string; token?: string } = {}) {
|
|
28
|
-
|
|
29
|
+
let server
|
|
30
|
+
try {
|
|
31
|
+
server = await startPlayWriterCDPRelayServer({ port, host, token, logger })
|
|
32
|
+
} catch (err: unknown) {
|
|
33
|
+
// When two relay processes race to start (issue #75), the loser gets
|
|
34
|
+
// EADDRINUSE. Check if the winner is a valid relay and exit cleanly
|
|
35
|
+
// instead of crashing with a scary error in the logs.
|
|
36
|
+
const errWithCode = err as NodeJS.ErrnoException
|
|
37
|
+
if (errWithCode?.code === 'EADDRINUSE') {
|
|
38
|
+
// The winner may have bound the port but not be ready to answer /version
|
|
39
|
+
// yet, so poll for up to 2 seconds before giving up.
|
|
40
|
+
const version = await waitForRelayVersion({ port })
|
|
41
|
+
if (version) {
|
|
42
|
+
await logger.log(`Another relay (v${version}) already bound to port ${port}, exiting gracefully`)
|
|
43
|
+
process.exit(0)
|
|
44
|
+
}
|
|
45
|
+
await logger.error(`Port ${port} is in use by a non-relay process`)
|
|
46
|
+
process.exit(1)
|
|
47
|
+
}
|
|
48
|
+
throw err
|
|
49
|
+
}
|
|
29
50
|
|
|
30
51
|
console.log('CDP Relay Server running. Press Ctrl+C to stop.')
|
|
31
52
|
console.log('Logs are being written to:', logger.logFilePath)
|
package/src/utils.ts
CHANGED
|
@@ -56,6 +56,10 @@ export function getCdpUrl({
|
|
|
56
56
|
return `${wsBaseUrl}/cdp/${id}${suffix}`
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
export function shouldAutoEnablePlaywriter(): boolean {
|
|
60
|
+
return process.env.PLAYWRITER_AUTO_ENABLE?.toLowerCase() !== 'false'
|
|
61
|
+
}
|
|
62
|
+
|
|
59
63
|
// Use ~/.playwriter for logs so each OS user gets their own dir (avoids permission errors on shared machines, see #44)
|
|
60
64
|
const LOG_BASE_DIR = path.join(os.homedir(), '.playwriter')
|
|
61
65
|
export const LOG_FILE_PATH = process.env.PLAYWRITER_LOG_FILE_PATH || path.join(LOG_BASE_DIR, 'relay-server.log')
|