@cydm/pie 1.0.51 → 2.1.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.
Files changed (73) hide show
  1. package/README.md +36 -16
  2. package/dist/builtin/extensions/ask-user/index.js +4 -3
  3. package/dist/builtin/extensions/ask-user/package.json +8 -7
  4. package/dist/builtin/extensions/changelog/package.json +9 -9
  5. package/dist/builtin/extensions/computer-use/index.js +9352 -0
  6. package/dist/builtin/extensions/computer-use/package.json +11 -0
  7. package/dist/builtin/extensions/computer-use/prebuilt/linux/arm64/linux-bridge +0 -0
  8. package/dist/builtin/extensions/computer-use/prebuilt/linux/x64/linux-bridge +0 -0
  9. package/dist/builtin/extensions/computer-use/prebuilt/macos/arm64/pie-computer-use +0 -0
  10. package/dist/builtin/extensions/computer-use/prebuilt/macos/universal/pie-computer-use.app/Contents/Info.plist +24 -0
  11. package/dist/builtin/extensions/computer-use/prebuilt/macos/universal/pie-computer-use.app/Contents/MacOS/pie-computer-use +0 -0
  12. package/dist/builtin/extensions/computer-use/prebuilt/macos/universal/pie-computer-use.app/Contents/_CodeSignature/CodeResources +115 -0
  13. package/dist/builtin/extensions/computer-use/prebuilt/macos/x64/pie-computer-use +0 -0
  14. package/dist/builtin/extensions/computer-use/prebuilt/windows/windows-bridge.exe +0 -0
  15. package/dist/builtin/extensions/computer-use/scripts/build-native.mjs +277 -0
  16. package/dist/builtin/extensions/computer-use/scripts/helper-path.mjs +48 -0
  17. package/dist/builtin/extensions/computer-use/scripts/setup-helper.mjs +549 -0
  18. package/dist/builtin/extensions/document-attachments/package.json +9 -9
  19. package/dist/builtin/extensions/init/package.json +9 -9
  20. package/dist/builtin/extensions/mcp-adapter/index.js +25250 -0
  21. package/dist/builtin/extensions/mcp-adapter/package.json +11 -0
  22. package/dist/builtin/extensions/plan-mode/index.js +4 -3
  23. package/dist/builtin/extensions/plan-mode/package.json +9 -9
  24. package/dist/builtin/extensions/subagent/index.js +6 -4
  25. package/dist/builtin/extensions/subagent/package.json +16 -12
  26. package/dist/builtin/extensions/todo/index.js +4 -3
  27. package/dist/builtin/extensions/todo/package.json +9 -9
  28. package/dist/builtin/skills/chrome-devtools-axi/CHANGELOG.md +5 -0
  29. package/dist/builtin/skills/chrome-devtools-axi/LICENSE +21 -0
  30. package/dist/builtin/skills/chrome-devtools-axi/README.md +17 -0
  31. package/dist/builtin/skills/chrome-devtools-axi/SKILL.md +50 -0
  32. package/dist/builtin/skills/chrome-devtools-axi/chrome-devtools-axi-bridge.js +20034 -0
  33. package/dist/builtin/skills/chrome-devtools-axi/chrome-devtools-axi-cli.js +83 -0
  34. package/dist/builtin/skills/chrome-devtools-axi/chrome-devtools-axi-runtime.js +26 -0
  35. package/dist/builtin/skills/chrome-devtools-axi/chunk-42SGITKJ.js +11 -0
  36. package/dist/builtin/skills/chrome-devtools-axi/chunk-OJ6N23UZ.js +47 -0
  37. package/dist/builtin/skills/chrome-devtools-axi/chunk-UPATXALW.js +215 -0
  38. package/dist/builtin/skills/chrome-devtools-axi/cli-F2VCSVL4.js +4424 -0
  39. package/dist/builtin/skills/chrome-devtools-axi/package.json +12 -0
  40. package/dist/builtin/skills/skill-creator/SKILL.md +5 -2
  41. package/dist/builtin/skills/skill-creator/eval-viewer/generate_review.mjs +7 -20
  42. package/dist/builtin/skills/skill-creator/eval-viewer/viewer.html +15 -15
  43. package/dist/builtin/skills/skill-creator/scripts/aggregate_benchmark.mjs +20 -19
  44. package/dist/builtin/skills/skill-creator/scripts/generate_report.mjs +3 -3
  45. package/dist/builtin/skills/skill-creator/scripts/improve_description.mjs +12 -8
  46. package/dist/builtin/skills/skill-creator/scripts/package_skill.mjs +1 -0
  47. package/dist/builtin/skills/skill-creator/scripts/pie_runner.mjs +77 -31
  48. package/dist/builtin/skills/skill-creator/scripts/run_eval.mjs +38 -11
  49. package/dist/builtin/skills/skill-creator/scripts/run_loop.mjs +12 -6
  50. package/dist/builtin/skills/skill-creator/scripts/skill_metadata.mjs +12 -1
  51. package/dist/builtin/skills/tui-use/LICENSE +21 -0
  52. package/dist/builtin/skills/tui-use/README.md +17 -0
  53. package/dist/builtin/skills/tui-use/SKILL.md +106 -0
  54. package/dist/builtin/skills/tui-use/tui-use-cli.cjs +10608 -0
  55. package/dist/builtin/skills/tui-use/tui-use-cli.js +39 -0
  56. package/dist/builtin/skills/tui-use/tui-use-daemon.cjs +7916 -0
  57. package/dist/chunks/chunk-5353DEEC.js +130 -0
  58. package/dist/chunks/{chunk-S2J3SZZX.js → chunk-IM43UYVV.js} +827 -3385
  59. package/dist/chunks/{chunk-A644H2XX.js → chunk-LU7RKALH.js} +241 -96
  60. package/dist/chunks/{chunk-B3SMW2XW.js → chunk-QJH6YN2W.js} +1 -1
  61. package/dist/chunks/{chunk-KDPAGHYY.js → chunk-TJ2F4FL5.js} +190 -207
  62. package/dist/chunks/chunk-XXGYUYXI.js +2718 -0
  63. package/dist/chunks/{src-UKCIAX6F.js → src-QSP2OPHU.js} +3 -2
  64. package/dist/chunks/{test-stream-NCBFPM2I.js → test-stream-CVGWFLSX.js} +2 -1
  65. package/dist/chunks/webapi-MBCKO7ZV.js +2481 -0
  66. package/dist/cli.js +7866 -369
  67. package/package.json +29 -20
  68. package/scripts/repair-node-pty.mjs +45 -0
  69. package/dist/builtin/skills/browser-tools/CHANGELOG.md +0 -5
  70. package/dist/builtin/skills/browser-tools/README.md +0 -17
  71. package/dist/builtin/skills/browser-tools/SKILL.md +0 -43
  72. package/dist/builtin/skills/browser-tools/package.json +0 -12
  73. package/dist/builtin/skills/browser-tools/playwright-cli.js +0 -45
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { spawnSync } from "node:child_process";
4
+ import fs from "node:fs";
5
+ import { createRequire } from "node:module";
6
+ import path from "node:path";
7
+ import { fileURLToPath } from "node:url";
8
+
9
+ const require = createRequire(import.meta.url);
10
+
11
+ export function resolveChromeDevtoolsAxiCli() {
12
+ // An explicit override wins (e.g. when the skill dir is copied out of the
13
+ // package and node module resolution cannot reach Pie's dependencies).
14
+ const override = process.env.CHROME_DEVTOOLS_AXI_CLI_PATH?.trim();
15
+ if (override) return override;
16
+ const here = path.dirname(fileURLToPath(import.meta.url));
17
+ for (const candidate of [
18
+ path.join(here, "chrome-devtools-axi-runtime.js"),
19
+ path.resolve(here, "../../../dist/builtin/skills/chrome-devtools-axi/chrome-devtools-axi-runtime.js"),
20
+ ]) {
21
+ if (fs.existsSync(candidate)) return candidate;
22
+ }
23
+ throw new Error("Pie's AXI runtime is missing. Rebuild or reinstall Pie.");
24
+ }
25
+
26
+ /**
27
+ * Resolve the pinned chrome-devtools-mcp stdio script. Without
28
+ * CHROME_DEVTOOLS_AXI_MCP_PATH the axi bridge spawns
29
+ * `npx -y chrome-devtools-mcp@latest` — an unpinned network fetch on first
30
+ * use. Pie pins chrome-devtools-mcp as a dependency and always points the
31
+ * bridge at the local build so the whole browser chain is version-locked
32
+ * and works offline after install.
33
+ */
34
+ export function resolveChromeDevtoolsMcpScript() {
35
+ const packageJson = require.resolve("chrome-devtools-mcp/package.json");
36
+ return path.join(path.dirname(packageJson), "build", "src", "bin", "chrome-devtools-mcp.js");
37
+ }
38
+
39
+ export function runChromeDevtoolsAxiCli(args = process.argv.slice(2), options = {}) {
40
+ const bin = resolveChromeDevtoolsAxiCli();
41
+ return spawnSync(process.execPath, [bin, ...args], {
42
+ stdio: "inherit",
43
+ shell: false,
44
+ ...options,
45
+ env: {
46
+ ...process.env,
47
+ CHROME_DEVTOOLS_AXI_MCP_PATH: process.env.CHROME_DEVTOOLS_AXI_MCP_PATH?.trim() || resolveChromeDevtoolsMcpScript(),
48
+ // Pie pins chrome-devtools-mcp; its daily background update check
49
+ // (network + ~/.cache write + "install @latest" nag) stays off unless
50
+ // the environment or caller explicitly provides a value.
51
+ CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS: process.env.CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS || "1",
52
+ ...options.env,
53
+ },
54
+ });
55
+ }
56
+
57
+ function normalizeDirectEntryPath(candidate) {
58
+ const resolved = path.resolve(candidate);
59
+ const real = fs.realpathSync.native(resolved);
60
+ const normalized = path.normalize(real);
61
+ return process.platform === "win32" ? normalized.toLowerCase() : normalized;
62
+ }
63
+
64
+ export function isDirectEntry(moduleUrl = import.meta.url, argvPath = process.argv[1]) {
65
+ if (!argvPath) return false;
66
+ try {
67
+ const modulePath = normalizeDirectEntryPath(fileURLToPath(moduleUrl));
68
+ const entryPath = normalizeDirectEntryPath(argvPath);
69
+ return modulePath === entryPath;
70
+ } catch {
71
+ return false;
72
+ }
73
+ }
74
+
75
+ if (isDirectEntry()) {
76
+ try {
77
+ const result = runChromeDevtoolsAxiCli();
78
+ process.exitCode = result.status ?? 1;
79
+ } catch (error) {
80
+ console.error(`chrome-devtools-axi CLI could not be resolved from Pie's installed dependencies. Run this wrapper from Pie's package location, or set CHROME_DEVTOOLS_AXI_CLI_PATH to the CLI's dist/bin/chrome-devtools-axi.js. (${error instanceof Error ? error.message : String(error)})`);
81
+ process.exitCode = 1;
82
+ }
83
+ }
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __axiRequire } from "node:module"; const require = __axiRequire(import.meta.url);
3
+ import {
4
+ VERSION
5
+ } from "./chunk-42SGITKJ.js";
6
+ import "./chunk-OJ6N23UZ.js";
7
+
8
+ // ../../node_modules/axi-sdk-js/dist/fast-path.js
9
+ function tryFastPath(argv, options) {
10
+ if (argv.length !== 1) {
11
+ return false;
12
+ }
13
+ const flag = argv[0];
14
+ if (flag !== "-v" && flag !== "-V" && flag !== "--version") {
15
+ return false;
16
+ }
17
+ (options.stdout ?? process.stdout).write(`${options.version}
18
+ `);
19
+ return true;
20
+ }
21
+
22
+ // vendor/chrome-devtools-axi/bin/chrome-devtools-axi.ts
23
+ if (!tryFastPath(process.argv.slice(2), { version: VERSION })) {
24
+ const { main } = await import("./cli-F2VCSVL4.js");
25
+ await main(process.argv.slice(2));
26
+ }
@@ -0,0 +1,11 @@
1
+ import { createRequire as __axiRequire } from "node:module"; const require = __axiRequire(import.meta.url);
2
+
3
+ // vendor/chrome-devtools-axi/package.json
4
+ var version = "0.1.35-pie.1";
5
+
6
+ // vendor/chrome-devtools-axi/src/version.ts
7
+ var VERSION = version;
8
+
9
+ export {
10
+ VERSION
11
+ };
@@ -0,0 +1,47 @@
1
+ import { createRequire as __axiRequire } from "node:module"; const require = __axiRequire(import.meta.url);
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
9
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
10
+ }) : x)(function(x) {
11
+ if (typeof require !== "undefined") return require.apply(this, arguments);
12
+ throw Error('Dynamic require of "' + x + '" is not supported');
13
+ });
14
+ var __commonJS = (cb, mod) => function __require2() {
15
+ try {
16
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
17
+ } catch (e) {
18
+ throw mod = 0, e;
19
+ }
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
34
+ // If the importer is in node compatibility mode or this is not an ESM
35
+ // file that has been converted to a CommonJS file using a Babel-
36
+ // compatible transform (i.e. "__esModule" has not been set), then set
37
+ // "default" to the CommonJS "module.exports" for node compatibility.
38
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
39
+ mod
40
+ ));
41
+
42
+ export {
43
+ __require,
44
+ __commonJS,
45
+ __export,
46
+ __toESM
47
+ };
@@ -0,0 +1,215 @@
1
+ import { createRequire as __axiRequire } from "node:module"; const require = __axiRequire(import.meta.url);
2
+
3
+ // vendor/chrome-devtools-axi/src/selected-page.ts
4
+ import {
5
+ existsSync,
6
+ mkdirSync,
7
+ readFileSync,
8
+ unlinkSync,
9
+ writeFileSync
10
+ } from "node:fs";
11
+ import { dirname, join as join2 } from "node:path";
12
+
13
+ // vendor/chrome-devtools-axi/src/sessions.ts
14
+ import { join } from "node:path";
15
+ import { homedir } from "node:os";
16
+ var DEFAULT_SESSION_NAME = "default";
17
+ var DEFAULT_BASE_PORT = 9224;
18
+ var SESSION_PORT_RANGE = 1e3;
19
+ var STATE_DIR_NAME = ".chrome-devtools-axi";
20
+ function resolveSessionName() {
21
+ const raw = process.env.CHROME_DEVTOOLS_AXI_SESSION?.trim();
22
+ const name = raw && raw.length > 0 ? raw : DEFAULT_SESSION_NAME;
23
+ validateSessionName(name);
24
+ return name;
25
+ }
26
+ function validateSessionName(name) {
27
+ if (name === DEFAULT_SESSION_NAME) return;
28
+ if (!/^[A-Za-z0-9._-]{1,64}$/.test(name)) {
29
+ throw new Error(
30
+ `Invalid CHROME_DEVTOOLS_AXI_SESSION "${name}": use 1-64 chars from [A-Za-z0-9._-]`
31
+ );
32
+ }
33
+ if (/^\.+$/.test(name)) {
34
+ throw new Error(
35
+ `Invalid CHROME_DEVTOOLS_AXI_SESSION "${name}": a name made only of dots would collapse onto the default session's state directory`
36
+ );
37
+ }
38
+ }
39
+ function defaultPortForSession(name) {
40
+ if (name === DEFAULT_SESSION_NAME) return DEFAULT_BASE_PORT;
41
+ let hash = 2166136261;
42
+ for (let i = 0; i < name.length; i++) {
43
+ hash ^= name.charCodeAt(i);
44
+ hash = Math.imul(hash, 16777619);
45
+ }
46
+ return DEFAULT_BASE_PORT + Math.abs(hash) % SESSION_PORT_RANGE + 1;
47
+ }
48
+ function resolveSessionPort(name = resolveSessionName()) {
49
+ const explicit = process.env.CHROME_DEVTOOLS_AXI_PORT;
50
+ if (explicit) {
51
+ const parsed = Number.parseInt(explicit, 10);
52
+ if (!Number.isNaN(parsed) && parsed > 0) return parsed;
53
+ }
54
+ return defaultPortForSession(name);
55
+ }
56
+ function resolveSessionStateDir(name = resolveSessionName()) {
57
+ const base = join(homedir(), STATE_DIR_NAME);
58
+ return name === DEFAULT_SESSION_NAME ? base : join(base, "sessions", name);
59
+ }
60
+ function resolveSessionPidFile(name = resolveSessionName()) {
61
+ return join(resolveSessionStateDir(name), "bridge.pid");
62
+ }
63
+
64
+ // vendor/chrome-devtools-axi/src/selected-page.ts
65
+ function selectedPageFile() {
66
+ return join2(resolveSessionStateDir(), "selected-page-id");
67
+ }
68
+ function getSelectedPageId() {
69
+ const file = selectedPageFile();
70
+ try {
71
+ if (!existsSync(file)) return null;
72
+ const parsed = Number.parseInt(readFileSync(file, "utf-8").trim(), 10);
73
+ return Number.isInteger(parsed) && parsed >= 0 ? parsed : null;
74
+ } catch {
75
+ return null;
76
+ }
77
+ }
78
+ function setSelectedPageId(pageId) {
79
+ const file = selectedPageFile();
80
+ try {
81
+ mkdirSync(dirname(file), { recursive: true });
82
+ writeFileSync(file, String(pageId));
83
+ } catch {
84
+ }
85
+ }
86
+ function clearSelectedPageId() {
87
+ const hadSelection = getSelectedPageId() !== null;
88
+ const file = selectedPageFile();
89
+ try {
90
+ if (existsSync(file)) unlinkSync(file);
91
+ } catch {
92
+ }
93
+ return hadSelection && getSelectedPageId() === null;
94
+ }
95
+ function overlaySessionSelected(pages, selectedId = getSelectedPageId()) {
96
+ return pages.map((page) => ({
97
+ ...page,
98
+ selected: selectedId !== null && page.id === selectedId
99
+ }));
100
+ }
101
+ function rememberToolRouting(name, args, result) {
102
+ if (name === "select_page" && typeof args.pageId === "number") {
103
+ setSelectedPageId(args.pageId);
104
+ return;
105
+ }
106
+ if (name === "new_page") {
107
+ const requested = typeof args.url === "string" ? args.url : "";
108
+ const created = createdPageIdFromNewPageDump(result, requested);
109
+ if (created !== null) setSelectedPageId(created);
110
+ else clearSelectedPageId();
111
+ return;
112
+ }
113
+ if (name === "close_page" && typeof args.pageId === "number") {
114
+ if (getSelectedPageId() === args.pageId) clearSelectedPageId();
115
+ }
116
+ }
117
+ var MCP_PAGES_HEADER = /^## Pages$/;
118
+ var MCP_OTHER_SECTION = /^##\s+(Extension Pages|Extension Service Workers|Third-party developer tools|WebMCP tools)$/;
119
+ var GENERIC_SCHEME_SLASH_URL = /^[a-z][a-z0-9+.-]*:\/\//i;
120
+ var COLON_ONLY_SCHEME_URL = /^(?:about:|data:|view-source:|blob:)/i;
121
+ var PAGE_ID_LINE = /^(\d+):\s*(.*)$/;
122
+ function isSchemeUrl(label) {
123
+ return GENERIC_SCHEME_SLASH_URL.test(label) || COLON_ONLY_SCHEME_URL.test(label);
124
+ }
125
+ function stripMcpSuffixes(rest) {
126
+ let label = rest.replace(/\s+isolatedContext=.*$/, "");
127
+ label = label.replace(/\s*\[selected\]\s*$/, "").trimEnd();
128
+ return label;
129
+ }
130
+ function isCompletePageLabel(rest) {
131
+ const body = stripMcpSuffixes(rest);
132
+ if (isSchemeUrl(body)) return true;
133
+ if (!body.endsWith(")")) return false;
134
+ const open = body.lastIndexOf(" (");
135
+ if (open === -1) return false;
136
+ return isSchemeUrl(body.slice(open + 2, -1));
137
+ }
138
+ function pageUrlFromLabel(rest) {
139
+ const body = stripMcpSuffixes(rest);
140
+ if (isSchemeUrl(body)) return body;
141
+ const open = body.lastIndexOf(" (");
142
+ if (open !== -1 && body.endsWith(")")) {
143
+ return body.slice(open + 2, -1);
144
+ }
145
+ return body;
146
+ }
147
+ function urlsMatch(pageUrl, requested) {
148
+ if (!requested) return false;
149
+ if (pageUrl === requested) return true;
150
+ const trimSlash = (url) => url.length > 1 && url.endsWith("/") ? url.slice(0, -1) : url;
151
+ return trimSlash(pageUrl) === trimSlash(requested);
152
+ }
153
+ function createdPageIdFromNewPageDump(text, requestedUrl) {
154
+ let inPages = false;
155
+ let matchedIds = [];
156
+ let incomplete = false;
157
+ for (const raw of text.split(/\r?\n/)) {
158
+ const line = raw.trim();
159
+ if (MCP_PAGES_HEADER.test(line)) {
160
+ inPages = true;
161
+ matchedIds = [];
162
+ incomplete = false;
163
+ continue;
164
+ }
165
+ if (MCP_OTHER_SECTION.test(line)) {
166
+ inPages = false;
167
+ continue;
168
+ }
169
+ if (!inPages) continue;
170
+ const m = line.match(PAGE_ID_LINE);
171
+ if (!m) continue;
172
+ const id = Number.parseInt(m[1], 10);
173
+ const rest = m[2];
174
+ if (!isCompletePageLabel(rest)) {
175
+ incomplete = true;
176
+ continue;
177
+ }
178
+ const pageUrl = pageUrlFromLabel(rest);
179
+ if (pageUrl.startsWith("chrome-extension:")) continue;
180
+ if (urlsMatch(pageUrl, requestedUrl)) matchedIds.push(id);
181
+ }
182
+ if (incomplete) return null;
183
+ if (matchedIds.length !== 1) return null;
184
+ return matchedIds[0];
185
+ }
186
+
187
+ // vendor/chrome-devtools-axi/src/bridge-script.ts
188
+ import { existsSync as existsSync2 } from "node:fs";
189
+ import { resolve } from "node:path";
190
+ function resolveBridgeScript(importMetaDir) {
191
+ const bundled = resolve(importMetaDir, "chrome-devtools-axi-bridge.js");
192
+ if (existsSync2(bundled)) return bundled;
193
+ const builtScript = resolve(
194
+ importMetaDir,
195
+ "../bin/chrome-devtools-axi-bridge.js"
196
+ );
197
+ const sourceScript = builtScript.replace(/\.js$/, ".ts");
198
+ return existsSync2(sourceScript) ? sourceScript : builtScript;
199
+ }
200
+ var BRIDGE_PORT_IN_USE_EXIT_CODE = 48;
201
+ var PAGE_IDENTITY_CHANGED_ERROR = "The browser reconnected and every page id changed, so this call did not target the page you selected";
202
+
203
+ export {
204
+ resolveBridgeScript,
205
+ BRIDGE_PORT_IN_USE_EXIT_CODE,
206
+ PAGE_IDENTITY_CHANGED_ERROR,
207
+ resolveSessionName,
208
+ resolveSessionPort,
209
+ resolveSessionStateDir,
210
+ resolveSessionPidFile,
211
+ getSelectedPageId,
212
+ clearSelectedPageId,
213
+ overlaySessionSelected,
214
+ rememberToolRouting
215
+ };