poke-browser 0.4.1 → 0.4.2

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/run.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAwGA,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAkBvD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAqBA;AAuMD,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAa1C"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAqNA,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAkBvD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAqBA;AAyMD,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAa1C"}
package/dist/run.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { execFileSync, spawn } from "node:child_process";
2
+ import { createServer } from "node:http";
2
3
  import { PassThrough } from "node:stream";
3
4
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
5
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
@@ -12,6 +13,7 @@ let stdioMcpConnected = false;
12
13
  /** Active stdio MCP transport (stdio mode only); closed on graceful shutdown. */
13
14
  let mcpTransport = null;
14
15
  let tunnelChild = null;
16
+ let pokeProxyServerRunning = false;
15
17
  let processGuardsInstalled = false;
16
18
  function installProcessGuards() {
17
19
  if (processGuardsInstalled)
@@ -84,6 +86,107 @@ function installShutdownHandlers() {
84
86
  process.on("SIGINT", () => shutdownWithTimeout("SIGINT"));
85
87
  process.on("SIGTERM", () => shutdownWithTimeout("SIGTERM"));
86
88
  }
89
+ function readRequestBody(req, limitBytes = 64 * 1024) {
90
+ return new Promise((resolve, reject) => {
91
+ let body = "";
92
+ let size = 0;
93
+ req.setEncoding("utf8");
94
+ req.on("data", (chunk) => {
95
+ size += Buffer.byteLength(chunk, "utf8");
96
+ if (size > limitBytes) {
97
+ reject(new Error("Request body too large"));
98
+ req.destroy();
99
+ return;
100
+ }
101
+ body += chunk;
102
+ });
103
+ req.on("end", () => resolve(body));
104
+ req.on("error", reject);
105
+ });
106
+ }
107
+ function writeJson(res, status, payload) {
108
+ const body = JSON.stringify(payload);
109
+ res.statusCode = status;
110
+ res.setHeader("content-type", "application/json; charset=utf-8");
111
+ res.setHeader("content-length", String(Buffer.byteLength(body, "utf8")));
112
+ // Allow extension clients (chrome-extension://...) to call localhost proxy.
113
+ res.setHeader("access-control-allow-origin", "*");
114
+ res.setHeader("access-control-allow-methods", "POST, OPTIONS");
115
+ res.setHeader("access-control-allow-headers", "content-type");
116
+ res.end(body);
117
+ }
118
+ async function startPokeLocalProxyServer(wsPort) {
119
+ if (pokeProxyServerRunning)
120
+ return;
121
+ const proxyPort = wsPort + 1;
122
+ const server = createServer(async (req, res) => {
123
+ if (req.method === "OPTIONS") {
124
+ res.statusCode = 204;
125
+ res.setHeader("access-control-allow-origin", "*");
126
+ res.setHeader("access-control-allow-methods", "POST, OPTIONS");
127
+ res.setHeader("access-control-allow-headers", "content-type");
128
+ res.end();
129
+ return;
130
+ }
131
+ if (req.method !== "POST" || req.url !== "/poke/send-message") {
132
+ writeJson(res, 404, { error: "Not found" });
133
+ return;
134
+ }
135
+ try {
136
+ const raw = await readRequestBody(req);
137
+ let parsed;
138
+ try {
139
+ parsed = JSON.parse(raw);
140
+ }
141
+ catch {
142
+ writeJson(res, 400, { error: "Invalid JSON body" });
143
+ return;
144
+ }
145
+ const body = parsed && typeof parsed === "object" ? parsed : {};
146
+ const apiKey = typeof body.apiKey === "string" ? body.apiKey.trim() : "";
147
+ const message = typeof body.message === "string" ? body.message : "";
148
+ if (!apiKey || !message.trim()) {
149
+ writeJson(res, 400, { error: "apiKey and message are required" });
150
+ return;
151
+ }
152
+ const upstream = await fetch("https://poke.com/api/v1/inbound/api-message", {
153
+ method: "POST",
154
+ headers: {
155
+ Authorization: `Bearer ${apiKey}`,
156
+ "Content-Type": "application/json",
157
+ },
158
+ body: JSON.stringify({ message }),
159
+ });
160
+ const text = await upstream.text();
161
+ let json = { error: { message: text || upstream.statusText, status: upstream.status } };
162
+ try {
163
+ json = JSON.parse(text);
164
+ }
165
+ catch {
166
+ // keep fallback object
167
+ }
168
+ writeJson(res, upstream.status, json);
169
+ }
170
+ catch (err) {
171
+ writeJson(res, 500, {
172
+ error: {
173
+ message: err instanceof Error ? err.message : String(err),
174
+ status: 500,
175
+ },
176
+ });
177
+ }
178
+ });
179
+ await new Promise((resolve, reject) => {
180
+ server.listen(proxyPort, "127.0.0.1", (err) => {
181
+ if (err)
182
+ reject(err);
183
+ else
184
+ resolve();
185
+ });
186
+ });
187
+ pokeProxyServerRunning = true;
188
+ log(`[poke-browser-mcp] Local Poke proxy → http://127.0.0.1:${proxyPort}/poke/send-message`);
189
+ }
87
190
  function readMcpHttpPortFromEnv() {
88
191
  const raw = process.env.POKE_BROWSER_MCP_PORT ??
89
192
  process.env.POKE_BROWSER_PORT ??
@@ -146,6 +249,7 @@ async function runStdio() {
146
249
  const WS_PORT = readPort();
147
250
  try {
148
251
  await logAndStartExtensionWebSocket(WS_PORT);
252
+ await startPokeLocalProxyServer(WS_PORT);
149
253
  }
150
254
  catch (err) {
151
255
  logError("[poke-browser-mcp] WebSocket server failed to bind (is another poke-browser or process using the port?):", err);
@@ -180,6 +284,7 @@ async function runHttp(opts) {
180
284
  const WS_PORT = readPort();
181
285
  try {
182
286
  await logAndStartExtensionWebSocket(WS_PORT);
287
+ await startPokeLocalProxyServer(WS_PORT);
183
288
  }
184
289
  catch (err) {
185
290
  logError("[poke-browser-mcp] WebSocket server failed to bind:", err);
package/dist/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,EACL,MAAM,EACN,wBAAwB,EACxB,8BAA8B,EAC9B,QAAQ,EACR,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,wHAAwH;AACxH,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAE9B,iFAAiF;AACjF,IAAI,YAAY,GAAgC,IAAI,CAAC;AAErD,IAAI,WAAW,GAAwB,IAAI,CAAC;AAE5C,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAEnC,SAAS,oBAAoB;IAC3B,IAAI,sBAAsB;QAAE,OAAO;IACnC,sBAAsB,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;QACtC,QAAQ,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC1C,QAAQ,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,yBAAyB,GAAG,KAAK,CAAC;AAEtC,kFAAkF;AAClF,KAAK,UAAU,QAAQ,CAAC,MAAc;IACpC,GAAG,CAAC,2BAA2B,MAAM,oBAAoB,CAAC,CAAC;IAE3D,MAAM,GAAG,GAAG,wBAAwB,CAAC;IACrC,IAAI,GAAG,EAAE,CAAC;QACR,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChB,IAAI,GAAG;oBAAE,GAAG,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;;oBAChD,GAAG,CAAC,uDAAuD,CAAC,CAAC;gBAClE,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QACD,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QACD,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,GAAG,CAAC,6CAA6C,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,uBAAuB;IAC9B,IAAI,yBAAyB;QAAE,OAAO;IACtC,yBAAyB,GAAG,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9D,CAAC;AAID,SAAS,sBAAsB;IAC7B,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACrC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,qBAAqB,CAAC;IAClE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;QAC/C,QAAQ,CACN,qDAAqD,GAAG,YAAY,qBAAqB,EAAE,CAC5F,CAAC;QACF,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAc;IAItC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,eAAe,IAAI,CAAC,KAAK,UAAU,CACjD,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,GACR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QAC/B,MAAM,IAAI,GACR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,EAAE,CAAC;AAClE,CAAC;AAED,kFAAkF;AAClF,SAAS,iCAAiC,CAAC,IAAY;IACrD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE;YACnE,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,GAAG,CACD,uBAAuB,IAAI,8CAA8C,IAAI,0GAA0G,CACxL,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAY;IACjD,iCAAiC,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,8BAA8B,EAAE,CAAC;IACnD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,GAAG,CAAC,mEAAmE,SAAS,EAAE,CAAC,CAAC;QACpF,GAAG,CACD,oGAAoG,CACrG,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,GAAG,CACD,kDAAkD,IAAI,2BAA2B,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CACN,0GAA0G,EAC1G,GAAG,CACJ,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;IACnC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAwB,EAAE,EAAE;QACrD,GAAG,CAAC,kEAAkE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,IAAI,iBAAiB,EAAE,CAAC;QACtB,GAAG,CACD,yGAAyG,CAC1G,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,0BAA0B,EAAE,CAAC;IACzC,YAAY,GAAG,IAAI,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAChC,iBAAiB,GAAG,IAAI,CAAC;IACzB,uBAAuB,EAAE,CAAC;IAC1B,GAAG,CACD,0EAA0E,CAC3E,CAAC;IACF,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAChD,GAAG,CACD,8EAA8E,CAC/E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAGtB;IACC,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,qDAAqD,EAAE,GAAG,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;IAElC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACrD,MAAM,GAAG,GAAG,0BAA0B,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;gBAClD,kBAAkB,EAAE,SAAS;aAC9B,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7B,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAClD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBACvB,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE;oBACzD,EAAE,EAAE,IAAI;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE;YACvD,EAAE,EAAE,IAAI;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAEtB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,GAAW,EAAE,EAAE;YAC5C,IAAI,GAAG;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;gBAChB,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uBAAuB,EAAE,CAAC;IAE1B,MAAM,GAAG,GAAG,oBAAoB,IAAI,MAAM,CAAC;IAC3C,GAAG,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;IAC9C,GAAG,CAAC,2DAA2D,OAAO,EAAE,CAAC,CAAC;IAC1E,GAAG,CAAC,8CAA8C,GAAG,EAAE,CAAC,CAAC;IAEzD,MAAM,eAAe,GACnB,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC;IAEjE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,GAAG,CAAC,qDAAqD,CAAC,CAAC;QAC3D,GAAG,CAAC,EAAE,CAAC,CAAC;QAER,MAAM,MAAM,GAAG,KAAK,CAClB,KAAK,EACL;YACE,OAAO;YACP,aAAa;YACb,QAAQ;YACR,GAAG;YACH,IAAI;YACJ,eAAe;SAChB,EACD,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CACvC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YAChD,QAAQ,CACN,uDAAuD,GAAG,CAAC,OAAO,EAAE,CACrE,CAAC;YACF,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,QAAQ,CACN,sEAAsE,CACvE,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,WAAW,GAAG,MAAM,CAAC;QAErB,UAAU,CAAC,GAAG,EAAE;YACd,SAAS,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;YACpD,GAAG,CACD,8EAA8E,CAC/E,CAAC;QACJ,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,GAAG,CACD,yDAAyD,GAAG,QAAQ,eAAe,GAAG,CACvF,CAAC;QACF,GAAG,CACD,8EAA8E,CAC/E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,oBAAoB,EAAE,CAAC;IACvB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/D,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,QAAQ,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,OAAO,CAAC;QACZ,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,IAAI,KAAK,aAAa;KACpC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,10 @@ const POKE_TERMINAL_ONLY_INSTRUCTION =
39
39
  "You are in a browser extension initiated terminal-style session.\n" +
40
40
  "DO NOT reply via iMessage. DO NOT reply via SMS. DO NOT reply via Telegram.\n" +
41
41
  "DO NOT send any normal chat reply text.\n" +
42
+ "You MUST use browser MCP tools for actions.\n" +
43
+ "The user is probably already on the target page.\n" +
44
+ "Start with a screenshot tool call first to understand current page state.\n" +
45
+ "Continue from the current page and avoid navigate_to unless absolutely needed.\n" +
42
46
  "Your only allowed behavior is to execute browser tasks and deliver output through the terminal/tool channel.\n" +
43
47
  "Be strict: immediately start the browser process and proceed with the requested browser actions.\n" +
44
48
  "[END BROWSER EXTENSION SESSION]\n\n";
@@ -46,6 +50,7 @@ const POKE_TERMINAL_ONLY_INSTRUCTION =
46
50
  const POKE_TERMINAL_FALLBACK_INSTRUCTION =
47
51
  "[BROWSER SESSION]\n" +
48
52
  "No chat reply. No iMessage/SMS/Telegram reply.\n" +
53
+ "Use browser MCP tools. Take screenshot first, continue from current page, avoid navigate_to unless needed.\n" +
49
54
  "Start browser actions immediately and respond only through tool/terminal channel.\n\n";
50
55
 
51
56
  function logCommand(direction, summary) {
@@ -110,6 +115,52 @@ async function postPokeMessage(apiKey, message) {
110
115
  };
111
116
  }
112
117
 
118
+ /**
119
+ * Prefer localhost proxy to avoid extension-origin upstream edge cases.
120
+ * @param {string} apiKey
121
+ * @param {string} message
122
+ */
123
+ async function postPokeMessageViaLocalProxy(apiKey, message) {
124
+ const wsPort = await getWsPort();
125
+ const proxyPort = wsPort + 1;
126
+ const resp = await fetch(`http://127.0.0.1:${proxyPort}/poke/send-message`, {
127
+ method: "POST",
128
+ headers: {
129
+ "Content-Type": "application/json",
130
+ },
131
+ body: JSON.stringify({ apiKey, message }),
132
+ signal: AbortSignal.timeout(3500),
133
+ });
134
+
135
+ if (resp.ok) {
136
+ const data = await resp.json().catch(() => null);
137
+ return { ok: true, data };
138
+ }
139
+
140
+ const bodyText = await resp.text();
141
+ let serverMsg = "";
142
+ try {
143
+ const parsed = JSON.parse(bodyText);
144
+ if (parsed && typeof parsed === "object") {
145
+ const errObj = parsed.error;
146
+ if (errObj && typeof errObj === "object" && typeof errObj.message === "string") {
147
+ serverMsg = errObj.message;
148
+ } else if (typeof parsed.message === "string") {
149
+ serverMsg = parsed.message;
150
+ }
151
+ }
152
+ } catch {
153
+ /* non-json response body */
154
+ }
155
+
156
+ return {
157
+ ok: false,
158
+ status: resp.status,
159
+ statusText: resp.statusText || "",
160
+ serverMsg: serverMsg || bodyText.slice(0, 300),
161
+ };
162
+ }
163
+
113
164
  async function getWsPort() {
114
165
  const { wsPort } = await chrome.storage.local.get("wsPort");
115
166
  if (typeof wsPort === "number" && Number.isFinite(wsPort) && wsPort > 0 && wsPort < 65536) {
@@ -2039,10 +2090,17 @@ const RUNTIME_HANDLERS = {
2039
2090
  return;
2040
2091
  }
2041
2092
  try {
2042
- const primary = await postPokeMessage(
2043
- apiKey,
2044
- `${POKE_TERMINAL_ONLY_INSTRUCTION}${userMessage}`,
2045
- );
2093
+ const primaryPrompt = `${POKE_TERMINAL_ONLY_INSTRUCTION}${userMessage}`;
2094
+ const fallbackPrompt = `${POKE_TERMINAL_FALLBACK_INSTRUCTION}${userMessage}`;
2095
+
2096
+ // First path: localhost proxy through poke-browser Node process.
2097
+ let primary;
2098
+ try {
2099
+ primary = await postPokeMessageViaLocalProxy(apiKey, primaryPrompt);
2100
+ } catch {
2101
+ // Proxy unavailable; fallback to direct extension fetch.
2102
+ primary = await postPokeMessage(apiKey, primaryPrompt);
2103
+ }
2046
2104
 
2047
2105
  if (primary.ok) {
2048
2106
  sendResponse({ ok: true, data: primary.data });
@@ -2051,10 +2109,12 @@ const RUNTIME_HANDLERS = {
2051
2109
 
2052
2110
  // If backend fails with a 5xx, retry once with shorter strict instruction.
2053
2111
  if (primary.status >= 500) {
2054
- const fallback = await postPokeMessage(
2055
- apiKey,
2056
- `${POKE_TERMINAL_FALLBACK_INSTRUCTION}${userMessage}`,
2057
- );
2112
+ let fallback;
2113
+ try {
2114
+ fallback = await postPokeMessageViaLocalProxy(apiKey, fallbackPrompt);
2115
+ } catch {
2116
+ fallback = await postPokeMessage(apiKey, fallbackPrompt);
2117
+ }
2058
2118
  if (fallback.ok) {
2059
2119
  sendResponse({
2060
2120
  ok: true,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "poke-browser",
4
- "version": "0.4.0",
4
+ "version": "0.4.1",
5
5
  "description": "Browser automation bridge for MCP agents via WebSocket.",
6
6
  "permissions": [
7
7
  "tabs",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poke-browser",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "MCP server + WebSocket bridge for the poke-browser Chrome extension",
5
5
  "type": "module",
6
6
  "engines": {