tabwright 1.0.1 → 2.0.0
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/agent-skills/tabwright/SKILL.md +3 -0
- package/dist/bippy.js +5 -5
- package/dist/capability-package.js +47 -1
- package/dist/cli.js +1 -54
- package/dist/extension/background.js +5 -5
- package/dist/extension/options.js +1 -1
- package/dist/extension/rrweb-recorder.js +1 -1
- package/dist/readability.js +4 -4
- package/dist/selector-generator.js +2 -2
- package/package.json +1 -2
- package/readme.md +8 -0
- package/src/skill.md +5 -2
- package/dist/builtin-capabilities.d.ts +0 -27
- package/dist/builtin-capabilities.js +0 -2672
- package/src/agent-skills/conan-config/SKILL.md +0 -141
- package/src/agent-skills/conan-config/agents/openai.yaml +0 -4
|
@@ -53,8 +53,11 @@ When the user asks to package, share, export, or install a saved capability, use
|
|
|
53
53
|
tabwright capability pack <capability-id>
|
|
54
54
|
tabwright capability install ./<capability-id>.tgz
|
|
55
55
|
tabwright capability install https://example.com/<capability-id>.tgz
|
|
56
|
+
tabwright capability install 'git@example.com:team/capabilities.git#v1.0.0:capabilities/<capability-id>'
|
|
56
57
|
```
|
|
57
58
|
|
|
59
|
+
Git sources use `<remote>#<ref>:<capability-path>` and read only that directory with `git archive`, so private SSH repositories do not need to be cloned. Prefer a release tag over a moving branch.
|
|
60
|
+
|
|
58
61
|
`capability pack` includes only the manifest, entry script, optional README, and optional agent skills. It excludes `secrets.json`, `runs.jsonl`, and `artifacts/`. Shared capabilities always install as `draft`. Do not trust one until its contract and script have been inspected and it has passed a `capability run --force` validation. Authentication must be refreshed from the recipient's own browser. Packaged agent skills are not installed unless the user explicitly passes `--with-agent-skill` or later runs `capability skill install <capability-id>`.
|
|
59
62
|
|
|
60
63
|
## Replay-to-Capability Handoff
|
package/dist/bippy.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
(() => {
|
|
2
|
-
//
|
|
2
|
+
// ../../playwriter/node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/rdt-hook.js
|
|
3
3
|
var e = `0.5.43`;
|
|
4
4
|
var t = `bippy-${e}`;
|
|
5
5
|
var n = Object.defineProperty;
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
} catch {}
|
|
79
79
|
};
|
|
80
80
|
|
|
81
|
-
//
|
|
81
|
+
// ../../playwriter/node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/install-hook-only.js
|
|
82
82
|
_();
|
|
83
83
|
|
|
84
|
-
//
|
|
84
|
+
// ../../playwriter/node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/core.js
|
|
85
85
|
var b = (e2) => {
|
|
86
86
|
switch (e2.tag) {
|
|
87
87
|
case 5:
|
|
@@ -199,7 +199,7 @@
|
|
|
199
199
|
var Z = Error();
|
|
200
200
|
var Q = new Set;
|
|
201
201
|
|
|
202
|
-
//
|
|
202
|
+
// ../../playwriter/node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/source.js
|
|
203
203
|
var i2 = /^[a-zA-Z][a-zA-Z\d+\-.]*:/;
|
|
204
204
|
var a2 = [`rsc://`, `file:///`, `webpack-internal://`, `webpack://`, `node:`, `turbopack://`, `metro://`, `/app-pages-browser/`, `/(app-pages-browser)/`];
|
|
205
205
|
var o2 = [`<anonymous>`, `eval`, ``];
|
|
@@ -879,7 +879,7 @@ ${e3.stack}` : ``;
|
|
|
879
879
|
var gt = new Set([`Context`, `Context (use)`, `DebugValue`, `Promise`, `Unresolved`, `HostTransitionStatus`]);
|
|
880
880
|
var kt = new Set([`Effect`, `LayoutEffect`, `InsertionEffect`, `ImperativeHandle`, `DebugValue`]);
|
|
881
881
|
|
|
882
|
-
// dist/_bippy-entry-
|
|
882
|
+
// dist/_bippy-entry-53465-1784102736730.js
|
|
883
883
|
globalThis.__bippy = {
|
|
884
884
|
getFiberFromHostInstance: Pe,
|
|
885
885
|
getDisplayName: Ee,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import crypto from 'node:crypto';
|
|
2
|
+
import childProcess from 'node:child_process';
|
|
2
3
|
import fs from 'node:fs';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import { Readable } from 'node:stream';
|
|
@@ -214,6 +215,10 @@ async function readPackageSource(options) {
|
|
|
214
215
|
integrity: bufferIntegrity(archive),
|
|
215
216
|
};
|
|
216
217
|
}
|
|
218
|
+
const gitSource = parseGitCapabilitySource(options.source);
|
|
219
|
+
if (gitSource) {
|
|
220
|
+
return readGitCapabilitySource({ source: options.source, gitSource });
|
|
221
|
+
}
|
|
217
222
|
if (!/^https?:\/\//.test(options.source)) {
|
|
218
223
|
throw new Error(`Capability source not found: ${options.source}`);
|
|
219
224
|
}
|
|
@@ -233,6 +238,47 @@ async function readPackageSource(options) {
|
|
|
233
238
|
integrity: bufferIntegrity(archive),
|
|
234
239
|
};
|
|
235
240
|
}
|
|
241
|
+
function parseGitCapabilitySource(source) {
|
|
242
|
+
const fragmentIndex = source.indexOf('#');
|
|
243
|
+
if (fragmentIndex <= 0) {
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
const remote = source.slice(0, fragmentIndex);
|
|
247
|
+
const isSupportedRemote = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+:.+/.test(remote) || remote.startsWith('ssh://') || remote.startsWith('file://');
|
|
248
|
+
if (!isSupportedRemote) {
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
const selector = source.slice(fragmentIndex + 1);
|
|
252
|
+
const pathSeparatorIndex = selector.indexOf(':');
|
|
253
|
+
if (pathSeparatorIndex <= 0 || pathSeparatorIndex === selector.length - 1) {
|
|
254
|
+
throw new Error('Git capability source must use <remote>#<ref>:<capability-path>');
|
|
255
|
+
}
|
|
256
|
+
const ref = selector.slice(0, pathSeparatorIndex);
|
|
257
|
+
if (!/^[a-zA-Z0-9][a-zA-Z0-9._/@-]*$/.test(ref)) {
|
|
258
|
+
throw new Error(`Git capability source has an invalid ref: ${ref}`);
|
|
259
|
+
}
|
|
260
|
+
const capabilityPath = normalizeRelativePath(selector.slice(pathSeparatorIndex + 1));
|
|
261
|
+
return { remote, ref, capabilityPath };
|
|
262
|
+
}
|
|
263
|
+
async function readGitCapabilitySource(options) {
|
|
264
|
+
const treeish = `${options.gitSource.ref}:${options.gitSource.capabilityPath}`;
|
|
265
|
+
const archive = await new Promise((resolve, reject) => {
|
|
266
|
+
childProcess.execFile('git', ['archive', '--format=tar.gz', '--prefix=package/', `--remote=${options.gitSource.remote}`, treeish], { encoding: 'buffer', maxBuffer: MAX_ARCHIVE_BYTES }, (error, stdout, stderr) => {
|
|
267
|
+
if (error) {
|
|
268
|
+
const detail = stderr.toString('utf-8').trim();
|
|
269
|
+
reject(new Error(detail || `Failed to read Git capability source: ${options.source}`, { cause: error }));
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
resolve(stdout);
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
assertArchiveSize({ size: archive.length, label: options.source });
|
|
276
|
+
return {
|
|
277
|
+
label: options.source,
|
|
278
|
+
files: await extractArchiveFiles(archive),
|
|
279
|
+
integrity: bufferIntegrity(archive),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
236
282
|
async function readArchive(archive) {
|
|
237
283
|
const extracted = await extractArchiveFiles(archive);
|
|
238
284
|
const metadataFile = extracted.find((file) => {
|
|
@@ -249,12 +295,12 @@ async function extractArchiveFiles(archive) {
|
|
|
249
295
|
let totalBytes = 0;
|
|
250
296
|
const extraction = new Promise((resolve, reject) => {
|
|
251
297
|
extractor.on('entry', (header, stream, next) => {
|
|
252
|
-
const relativePath = normalizeArchiveEntryPath(header.name);
|
|
253
298
|
if (header.type === 'directory') {
|
|
254
299
|
stream.resume();
|
|
255
300
|
next();
|
|
256
301
|
return;
|
|
257
302
|
}
|
|
303
|
+
const relativePath = normalizeArchiveEntryPath(header.name);
|
|
258
304
|
if (header.type !== 'file' && header.type !== null && header.type !== undefined) {
|
|
259
305
|
stream.resume();
|
|
260
306
|
next(new Error(`Capability archives cannot contain ${header.type} entries: ${header.name}`));
|
package/dist/cli.js
CHANGED
|
@@ -23,7 +23,6 @@ import { getTabwrightAgentSkillStatus, installTabwrightAgentSkill, } from './tab
|
|
|
23
23
|
import { installCapabilityPackage, packCapability } from './capability-package.js';
|
|
24
24
|
import { refreshCapabilityAuthWithExecutor } from './capability-auth.js';
|
|
25
25
|
import { finalizeCapabilityRun, normalizeCapabilityExecutionText, prepareCapabilityRun, readCapabilityExecutionObservation, runNodeCapability, } from './capability-runner.js';
|
|
26
|
-
import { installBuiltinCapabilitySuite, isBuiltinCapabilitySuite } from './builtin-capabilities.js';
|
|
27
26
|
import { createReplayAiIndexFromRecording, saveReplayAiIndex } from './replay-ai-index.js';
|
|
28
27
|
import { listSavedRrwebRecordings } from './rrweb-recording-relay.js';
|
|
29
28
|
import { compileReplayWorkflow, UnsupportedReplayWorkflowError, } from './replay-workflow-compiler.js';
|
|
@@ -1216,65 +1215,13 @@ cli
|
|
|
1216
1215
|
}
|
|
1217
1216
|
});
|
|
1218
1217
|
cli
|
|
1219
|
-
.command('capability install <source>', 'Install a
|
|
1218
|
+
.command('capability install <source>', 'Install a capability directory, Git source, local .tgz, or .tgz URL')
|
|
1220
1219
|
.option('--project', 'Install under .tabwright/capabilities in the current project')
|
|
1221
1220
|
.option('--force', 'Overwrite existing installed capabilities')
|
|
1222
|
-
.option('--draft', 'Install a built-in suite as draft instead of trusted')
|
|
1223
|
-
.option('--skip-agent-skills', 'Do not install bundled agent skills such as Codex skills')
|
|
1224
1221
|
.option('--with-agent-skill', 'Install a shared package agent skill after reviewing the source')
|
|
1225
1222
|
.option('--json', 'Print JSON')
|
|
1226
1223
|
.action(async (source, options) => {
|
|
1227
1224
|
try {
|
|
1228
|
-
if (isBuiltinCapabilitySuite(source)) {
|
|
1229
|
-
const installed = installBuiltinCapabilitySuite({
|
|
1230
|
-
suite: source,
|
|
1231
|
-
cwd: process.cwd(),
|
|
1232
|
-
location: options.project ? 'project' : 'user',
|
|
1233
|
-
overwrite: options.force,
|
|
1234
|
-
trust: options.draft ? false : true,
|
|
1235
|
-
installAgentSkills: options.skipAgentSkills ? false : true,
|
|
1236
|
-
});
|
|
1237
|
-
const summary = {
|
|
1238
|
-
type: 'builtin',
|
|
1239
|
-
suite: installed.suite,
|
|
1240
|
-
capabilities: installed.capabilities.map((capability) => {
|
|
1241
|
-
return toCapabilitySummary(capability);
|
|
1242
|
-
}),
|
|
1243
|
-
agentSkills: installed.agentSkills,
|
|
1244
|
-
next: installed.capabilities.flatMap((capability) => {
|
|
1245
|
-
if (capability.manifest.auth.refresh !== 'from-browser') {
|
|
1246
|
-
return [];
|
|
1247
|
-
}
|
|
1248
|
-
return [`tabwright capability refresh-auth ${capability.manifest.id} --browser user --json`];
|
|
1249
|
-
}),
|
|
1250
|
-
};
|
|
1251
|
-
if (options.json) {
|
|
1252
|
-
console.log(JSON.stringify(summary, null, 2));
|
|
1253
|
-
return;
|
|
1254
|
-
}
|
|
1255
|
-
console.log(`Installed ${installed.suite}:`);
|
|
1256
|
-
installed.capabilities.map((capability) => {
|
|
1257
|
-
console.log(`- ${capability.manifest.id} (${capability.location}, ${capability.manifest.status})`);
|
|
1258
|
-
return capability.manifest.id;
|
|
1259
|
-
});
|
|
1260
|
-
if (installed.agentSkills.length > 0) {
|
|
1261
|
-
console.log('');
|
|
1262
|
-
console.log('Installed agent skills:');
|
|
1263
|
-
installed.agentSkills.map((agentSkill) => {
|
|
1264
|
-
console.log(`- ${agentSkill.target}:${agentSkill.name} at ${agentSkill.dir}`);
|
|
1265
|
-
return agentSkill.name;
|
|
1266
|
-
});
|
|
1267
|
-
}
|
|
1268
|
-
if (summary.next.length > 0) {
|
|
1269
|
-
console.log('');
|
|
1270
|
-
console.log('Refresh auth with:');
|
|
1271
|
-
summary.next.map((command) => {
|
|
1272
|
-
console.log(` ${command}`);
|
|
1273
|
-
return command;
|
|
1274
|
-
});
|
|
1275
|
-
}
|
|
1276
|
-
return;
|
|
1277
|
-
}
|
|
1278
1225
|
const installed = await installCapabilityPackage({
|
|
1279
1226
|
source,
|
|
1280
1227
|
cwd: process.cwd(),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region
|
|
1
|
+
//#region ../../playwriter/node_modules/.pnpm/string-dedent@3.0.2/node_modules/string-dedent/dist/dedent.mjs
|
|
2
2
|
var cache = /* @__PURE__ */ new WeakMap();
|
|
3
3
|
var newline = /(\n|\r\n?|\u2028|\u2029)/g;
|
|
4
4
|
var leadingWhitespace = /^\s*/;
|
|
@@ -167,7 +167,7 @@ function hexToInt(c) {
|
|
|
167
167
|
return -1;
|
|
168
168
|
}
|
|
169
169
|
//#endregion
|
|
170
|
-
//#region
|
|
170
|
+
//#region ../../playwriter/node_modules/.pnpm/zustand@5.0.14_@types+react@19.2.17_react@19.2.7/node_modules/zustand/esm/vanilla.mjs
|
|
171
171
|
var createStoreImpl = (createState) => {
|
|
172
172
|
let state;
|
|
173
173
|
const listeners = /* @__PURE__ */ new Set();
|
|
@@ -1458,7 +1458,7 @@ var RELAY_FEATURE = {
|
|
|
1458
1458
|
Object.values(RELAY_FEATURE);
|
|
1459
1459
|
RELAY_FEATURE.capabilityOptions, RELAY_FEATURE.capabilityAuth, RELAY_FEATURE.capabilityAuthAutoTab, RELAY_FEATURE.rrwebRecording;
|
|
1460
1460
|
//#endregion
|
|
1461
|
-
//#region
|
|
1461
|
+
//#region ../../playwriter/tabwright/src/ghost-browser.ts
|
|
1462
1462
|
/**
|
|
1463
1463
|
* Handles ghost-browser commands in the extension.
|
|
1464
1464
|
* Calls the appropriate chrome.* API and returns the result.
|
|
@@ -1563,7 +1563,7 @@ var ConnectionOwnership = class {
|
|
|
1563
1563
|
var ghost_cursor_client_default = "(() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n function __accessProp(key) {\n return this[key];\n }\n var __toCommonJS = (from) => {\n var entry = (__moduleCache ??= new WeakMap).get(from), desc;\n if (entry)\n return entry;\n entry = __defProp({}, \"__esModule\", { value: true });\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (var key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(entry, key))\n __defProp(entry, key, {\n get: __accessProp.bind(from, key),\n enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n });\n }\n __moduleCache.set(from, entry);\n return entry;\n };\n var __moduleCache;\n\n // src/ghost-cursor-client.ts\n var exports_ghost_cursor_client = {};\n\n // src/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.ts\n var SCREENSTUDIO_POINTER_MACOS_TAHOE_DATA_URL = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjE4IiBoZWlnaHQ9Ijk1OCIgdmlld0JveD0iMCAwIDYxOCA5NTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2RfMzg0XzI3KSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTI3LjA2MiAzNy4wMzMxTDU0MC42OTYgNDUxLjU1NUM1OTIuNjUzIDUwMy42NiA1NTUuNzk0IDU5Mi41NzQgNDgyLjIyNiA1OTIuNTc0TDQyMS44MzEgNTkyLjU2OUw0ODEuODIxIDczNS4wNTRDNDkyLjMzMSA3NjAuMDIxIDQ5Mi40NzkgNzg3LjY1MiA0ODIuMjY1IDgxMi43NjdDNDcyLjAwMiA4MzcuOTMyIDQ1Mi41NjEgODU3LjU3IDQyNy40OTYgODY4LjA4QzQxNC44NjQgODczLjM1OSA0MDEuNjQgODc2LjAyNCAzODguMTIxIDg3Ni4wMjRDMzQ3LjExNyA4NzYuMDI0IDMxMC4zNTggODUxLjYgMjk0LjQ3IDgxMy44MDRMMjMxLjQyIDY2My45MThMMTkwLjM2OCA3MDAuMzM3QzEzNy4wMjkgNzQ3LjUwOCA1MyA3MDkuNjYzIDUzIDYzOC40MTNWNjcuNjc0NEM1MyAyOC45OTAzIDk5LjcyNjggOS42NDgyOCAxMjcuMDYyIDM3LjAzMzFaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEwMi4zMTYgOTkuNjUyQzEwMi4zMTYgOTMuMTg4MiAxMTAuMTYyIDg5LjkzMTYgMTE0LjcwMSA5NC41MjA0TDUwNC44OTcgNDg1LjU1NUM1MjYuMTY0IDUwNi44NzEgNTExLjA2NSA1NDMuMjM2IDQ4MC45NjcgNTQzLjIzNkwzNDcuNTQ2IDU0My4xNjFMNDM2LjM0MiA3NTQuMTQzQzQ0Ny41NDIgNzgwLjc4OCA0MzUuMDA5IDgxMS40MjkgNDA4LjQxNCA4MjIuNTgxQzM4MS43MiA4MzMuNzgxIDM1MS4xMjggODIxLjI5OCAzMzkuOTc3IDc5NC43MDJMMjUwLjI5MyA1ODEuMzUyTDE1OC41MTcgNjYyLjY0NEMxMzcuOTkxIDY4MC44MDEgMTA2LjMxOSA2NjguMTQ1IDEwMi42NjQgNjQyLjMyM0wxMDIuMzE2IDYzNy4zMzFWOTkuNjUyWiIgZmlsbD0iYmxhY2siLz4KPC9nPgo8ZGVmcz4KPGZpbHRlciBpZD0iZmlsdGVyMF9kXzM4NF8yNyIgeD0iMC4zNCIgeT0iMC43OTkyMTkiIHdpZHRoPSI2MTcuMzIiIGhlaWdodD0iOTU3LjE0NCIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgo8ZmVDb2xvck1hdHJpeCBpbj0iU291cmNlQWxwaGEiIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMCIgcmVzdWx0PSJoYXJkQWxwaGEiLz4KPGZlT2Zmc2V0IGR5PSIyOS4yNiIvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyNi4zMyIvPgo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJvdXQiLz4KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuNjUgMCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvd18zODRfMjciLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3dfMzg0XzI3IiByZXN1bHQ9InNoYXBlIi8+CjwvZmlsdGVyPgo8L2RlZnM+Cjwvc3ZnPg==\";\n\n // src/ghost-cursor-client.ts\n var isTopFrame = (() => {\n try {\n return window === window.top;\n } catch {\n return false;\n }\n })();\n var CURSOR_ID = \"__playwriter_ghost_cursor__\";\n var SCREENSTUDIO_POINTER_ASPECT_RATIO = 618 / 958;\n var SCREENSTUDIO_HOTSPOT_X_RATIO = 0.14;\n var SCREENSTUDIO_HOTSPOT_Y_RATIO = 0.06;\n var MINIMAL_TRIANGLE_HOTSPOT_X_RATIO = 0.07;\n var MINIMAL_TRIANGLE_HOTSPOT_Y_RATIO = 0.06;\n var MOVE_EASING = \"cubic-bezier(0.65, 0, 0.35, 1)\";\n var PRESS_EASING = \"cubic-bezier(0.23, 1, 0.32, 1)\";\n var PRESS_DURATION_MS = 140;\n var IDLE_HIDE_DELAY_MS = 5000;\n var IDLE_FADE_OUT_MS = 600;\n var DEFAULT_OPTIONS = {\n style: \"minimal\",\n color: \"#111827\",\n size: 22,\n zIndex: 2147483647,\n easing: MOVE_EASING,\n minDurationMs: 220,\n maxDurationMs: 1500,\n speedPxPerMs: 1.2\n };\n var runtime = {\n outerElement: null,\n innerElement: null,\n options: DEFAULT_OPTIONS,\n x: 0,\n y: 0,\n scale: 1,\n hasPosition: false,\n enabled: false,\n idleHidden: false\n };\n var idleHideTimer = null;\n function clamp(options) {\n const { value, min, max } = options;\n return Math.min(max, Math.max(min, value));\n }\n function mergeOptions(options) {\n if (!options) {\n return DEFAULT_OPTIONS;\n }\n return {\n style: options.style ?? DEFAULT_OPTIONS.style,\n color: options.color ?? DEFAULT_OPTIONS.color,\n size: options.size ?? DEFAULT_OPTIONS.size,\n zIndex: options.zIndex ?? DEFAULT_OPTIONS.zIndex,\n easing: options.easing ?? DEFAULT_OPTIONS.easing,\n minDurationMs: options.minDurationMs ?? DEFAULT_OPTIONS.minDurationMs,\n maxDurationMs: options.maxDurationMs ?? DEFAULT_OPTIONS.maxDurationMs,\n speedPxPerMs: options.speedPxPerMs ?? DEFAULT_OPTIONS.speedPxPerMs\n };\n }\n function getCursorDimensions() {\n if (runtime.options.style === \"screenstudio\") {\n const height = runtime.options.size;\n const width = Math.max(10, Math.round(height * SCREENSTUDIO_POINTER_ASPECT_RATIO));\n return { width, height };\n }\n if (runtime.options.style === \"minimal\") {\n const size = Math.max(12, runtime.options.size);\n return { width: size, height: size };\n }\n return { width: runtime.options.size, height: runtime.options.size };\n }\n function getHotspotOffsetPx() {\n const dimensions = getCursorDimensions();\n if (runtime.options.style === \"screenstudio\") {\n return {\n x: Math.round(dimensions.width * SCREENSTUDIO_HOTSPOT_X_RATIO),\n y: Math.round(dimensions.height * SCREENSTUDIO_HOTSPOT_Y_RATIO)\n };\n }\n if (runtime.options.style === \"minimal\") {\n return {\n x: Math.round(dimensions.width * MINIMAL_TRIANGLE_HOTSPOT_X_RATIO),\n y: Math.round(dimensions.height * MINIMAL_TRIANGLE_HOTSPOT_Y_RATIO)\n };\n }\n return {\n x: Math.round(dimensions.width / 2),\n y: Math.round(dimensions.height / 2)\n };\n }\n function getBaseOpacity() {\n if (runtime.options.style === \"screenstudio\") {\n return \"0.95\";\n }\n if (runtime.options.style === \"minimal\") {\n return \"1\";\n }\n return \"0.72\";\n }\n function applyTranslate() {\n if (!runtime.outerElement) {\n return;\n }\n const hotspot = getHotspotOffsetPx();\n runtime.outerElement.style.transform = `translate3d(${runtime.x - hotspot.x}px, ${runtime.y - hotspot.y}px, 0)`;\n }\n function applyScale() {\n if (!runtime.innerElement) {\n return;\n }\n runtime.innerElement.style.transform = `scale(${runtime.scale})`;\n }\n function computeDurationMs(options) {\n if (!runtime.hasPosition) {\n return 0;\n }\n const dx = options.targetX - runtime.x;\n const dy = options.targetY - runtime.y;\n const distance = Math.hypot(dx, dy);\n const rawDurationMs = distance / runtime.options.speedPxPerMs;\n return clamp({\n value: rawDurationMs,\n min: runtime.options.minDurationMs,\n max: runtime.options.maxDurationMs\n });\n }\n function createCursorElement() {\n const outer = document.createElement(\"div\");\n outer.id = CURSOR_ID;\n outer.setAttribute(\"aria-hidden\", \"true\");\n outer.style.position = \"fixed\";\n outer.style.left = \"0\";\n outer.style.top = \"0\";\n outer.style.pointerEvents = \"none\";\n outer.style.zIndex = `${runtime.options.zIndex}`;\n outer.style.transitionProperty = \"transform\";\n outer.style.transitionTimingFunction = runtime.options.easing;\n outer.style.transitionDuration = \"0ms\";\n outer.style.willChange = \"transform\";\n const inner = document.createElement(\"div\");\n inner.style.transitionProperty = \"transform, opacity\";\n inner.style.transitionTimingFunction = PRESS_EASING;\n inner.style.transitionDuration = `${PRESS_DURATION_MS}ms`;\n inner.style.opacity = getBaseOpacity();\n outer.appendChild(inner);\n runtime.outerElement = outer;\n runtime.innerElement = inner;\n applyRuntimeVisualOptions();\n return outer;\n }\n function ensureCursorElement() {\n const existing = document.getElementById(CURSOR_ID);\n if (existing) {\n runtime.outerElement = existing;\n runtime.innerElement = existing.firstElementChild || null;\n return existing;\n }\n const outer = createCursorElement();\n const root = document.documentElement || document.body;\n root.appendChild(outer);\n return outer;\n }\n function applyRuntimeVisualOptions() {\n if (!runtime.innerElement) {\n return;\n }\n const dimensions = getCursorDimensions();\n runtime.innerElement.style.width = `${dimensions.width}px`;\n runtime.innerElement.style.height = `${dimensions.height}px`;\n if (runtime.outerElement) {\n runtime.outerElement.style.zIndex = `${runtime.options.zIndex}`;\n runtime.outerElement.style.transitionTimingFunction = runtime.options.easing;\n }\n const hotspot = getHotspotOffsetPx();\n runtime.innerElement.style.transformOrigin = `${hotspot.x}px ${hotspot.y}px`;\n if (runtime.options.style === \"screenstudio\") {\n runtime.innerElement.style.borderRadius = \"0\";\n runtime.innerElement.style.border = \"none\";\n runtime.innerElement.style.backgroundColor = \"transparent\";\n runtime.innerElement.style.backgroundImage = `url(\"${SCREENSTUDIO_POINTER_MACOS_TAHOE_DATA_URL}\")`;\n runtime.innerElement.style.backgroundRepeat = \"no-repeat\";\n runtime.innerElement.style.backgroundPosition = \"left top\";\n runtime.innerElement.style.backgroundSize = \"contain\";\n runtime.innerElement.style.backdropFilter = \"none\";\n runtime.innerElement.style.filter = \"none\";\n runtime.innerElement.style.boxShadow = \"none\";\n runtime.innerElement.style.opacity = getBaseOpacity();\n return;\n }\n if (runtime.options.style === \"minimal\") {\n const triangleSvg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"-1 -1 26 26\"><path fill=\"white\" stroke=\"${runtime.options.color}\" stroke-width=\"1.5\" stroke-linejoin=\"round\" d=\"m23.284 19.124l-6.866-6.895a.4.4 0 0 1-.118-.296a.43.43 0 0 1 .163-.282l4.439-3.077a1.48 1.48 0 0 0 .621-1.48a1.48 1.48 0 0 0-1.036-1.198L1.623.302a1.14 1.14 0 0 0-1.11.282A1.13 1.13 0 0 0 .29 1.649L5.928 20.44a1.48 1.48 0 0 0 1.183 1.035a1.48 1.48 0 0 0 1.48-.621l3.078-4.44a.37.37 0 0 1 .31-.118a.43.43 0 0 1 .296.104l6.91 6.91a1.48 1.48 0 0 0 2.087 0l2.086-2.086a1.48 1.48 0 0 0-.074-2.101\"/></svg>`;\n const triangleDataUrl = `url(\"data:image/svg+xml,${encodeURIComponent(triangleSvg)}\")`;\n runtime.innerElement.style.borderRadius = \"0\";\n runtime.innerElement.style.border = \"none\";\n runtime.innerElement.style.backgroundColor = \"transparent\";\n runtime.innerElement.style.backgroundImage = triangleDataUrl;\n runtime.innerElement.style.backgroundRepeat = \"no-repeat\";\n runtime.innerElement.style.backgroundSize = \"contain\";\n runtime.innerElement.style.backgroundPosition = \"left top\";\n runtime.innerElement.style.backdropFilter = \"none\";\n runtime.innerElement.style.boxShadow = \"none\";\n runtime.innerElement.style.filter = \"drop-shadow(0 1px 2px rgba(0, 0, 0, 0.4))\";\n runtime.innerElement.style.opacity = getBaseOpacity();\n return;\n }\n runtime.innerElement.style.borderRadius = \"999px\";\n runtime.innerElement.style.border = \"none\";\n runtime.innerElement.style.backgroundColor = runtime.options.color;\n runtime.innerElement.style.backgroundImage = \"none\";\n runtime.innerElement.style.backdropFilter = \"none\";\n runtime.innerElement.style.filter = \"none\";\n runtime.innerElement.style.boxShadow = \"0 2px 10px rgba(0, 0, 0, 0.18), inset 0 0 0 2px rgba(255, 255, 255, 0.55)\";\n runtime.innerElement.style.opacity = getBaseOpacity();\n }\n function clearIdleHideTimer() {\n if (idleHideTimer !== null) {\n clearTimeout(idleHideTimer);\n idleHideTimer = null;\n }\n }\n function scheduleIdleHide() {\n clearIdleHideTimer();\n idleHideTimer = setTimeout(() => {\n idleHideTimer = null;\n if (!runtime.enabled || !runtime.innerElement) {\n return;\n }\n runtime.idleHidden = true;\n runtime.innerElement.style.transitionDuration = `${IDLE_FADE_OUT_MS}ms`;\n runtime.innerElement.style.transitionTimingFunction = PRESS_EASING;\n runtime.innerElement.style.opacity = \"0\";\n }, IDLE_HIDE_DELAY_MS);\n }\n function wakeFromIdle(options) {\n runtime.x = options.x;\n runtime.y = options.y;\n runtime.hasPosition = true;\n if (runtime.innerElement) {\n runtime.innerElement.style.transitionDuration = `${PRESS_DURATION_MS}ms`;\n runtime.innerElement.style.transitionTimingFunction = PRESS_EASING;\n runtime.innerElement.style.opacity = getBaseOpacity();\n }\n }\n function moveCursor(options) {\n if (!runtime.enabled) {\n return;\n }\n ensureCursorElement();\n const durationMs = computeDurationMs({ targetX: options.x, targetY: options.y });\n if (runtime.outerElement) {\n runtime.outerElement.style.transitionDuration = `${Math.round(durationMs)}ms`;\n runtime.outerElement.style.transitionTimingFunction = runtime.options.easing;\n }\n runtime.x = options.x;\n runtime.y = options.y;\n runtime.hasPosition = true;\n applyTranslate();\n }\n function setPressed(options) {\n if (!runtime.enabled || !runtime.innerElement) {\n return;\n }\n runtime.scale = options.pressed ? runtime.options.style === \"dot\" ? 0.92 : 0.95 : 1;\n runtime.innerElement.style.transitionDuration = `${PRESS_DURATION_MS}ms`;\n runtime.innerElement.style.transitionTimingFunction = PRESS_EASING;\n runtime.innerElement.style.opacity = options.pressed ? \"1\" : getBaseOpacity();\n applyScale();\n }\n function enable(options) {\n runtime.options = mergeOptions(options);\n runtime.enabled = true;\n ensureCursorElement();\n applyRuntimeVisualOptions();\n if (!runtime.hasPosition) {\n runtime.x = Math.round(window.innerWidth / 2);\n runtime.y = Math.round(window.innerHeight / 2);\n runtime.scale = 1;\n runtime.hasPosition = true;\n }\n runtime.idleHidden = false;\n if (runtime.innerElement) {\n runtime.innerElement.style.opacity = getBaseOpacity();\n }\n applyTranslate();\n applyScale();\n scheduleIdleHide();\n }\n function disable() {\n runtime.enabled = false;\n runtime.scale = 1;\n runtime.hasPosition = false;\n runtime.idleHidden = false;\n clearIdleHideTimer();\n if (runtime.outerElement) {\n runtime.outerElement.remove();\n runtime.outerElement = null;\n runtime.innerElement = null;\n }\n }\n function applyMouseAction(action) {\n if (!runtime.enabled) {\n return;\n }\n if (runtime.idleHidden) {\n runtime.idleHidden = false;\n wakeFromIdle({ x: action.x, y: action.y });\n }\n if (action.type === \"move\" || action.type === \"wheel\") {\n moveCursor({ x: action.x, y: action.y });\n } else if (action.type === \"down\") {\n moveCursor({ x: action.x, y: action.y });\n setPressed({ pressed: true });\n } else if (action.type === \"up\") {\n moveCursor({ x: action.x, y: action.y });\n setPressed({ pressed: false });\n }\n scheduleIdleHide();\n }\n var api = {\n enable,\n disable,\n applyMouseAction,\n isEnabled: () => {\n return runtime.enabled;\n }\n };\n if (isTopFrame) {\n globalThis.__playwriterGhostCursor = api;\n try {\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => {\n try {\n api.enable();\n } catch {}\n }, { once: true });\n } else {\n api.enable();\n }\n } catch {}\n }\n})();\n";
|
|
1564
1564
|
//#endregion
|
|
1565
1565
|
//#region ../tabwright/dist/bippy.js?raw
|
|
1566
|
-
var bippy_default = "(() => {\n // ../node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/rdt-hook.js\n var e = `0.5.43`;\n var t = `bippy-${e}`;\n var n = Object.defineProperty;\n var r = Object.prototype.hasOwnProperty;\n var i = () => {};\n var a = (e2) => {\n try {\n Function.prototype.toString.call(e2).indexOf(`^_^`) > -1 && setTimeout(() => {\n throw Error(`React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build`);\n });\n } catch {}\n };\n var o = (e2 = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) => !!(e2 && (`getFiberRoots` in e2));\n var s = false;\n var c;\n var l = (e2 = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) => s ? true : (e2 && typeof e2.inject == `function` && (c = e2.inject.toString()), !!c?.includes(`(injected)`));\n var u = new Set;\n var d = new Set;\n var f = (e2) => {\n let r2 = new Map, o2 = 0, s2 = { _instrumentationIsActive: false, _instrumentationSource: t, checkDCE: a, hasUnsupportedRendererAttached: false, inject(e3) {\n let t2 = ++o2;\n return r2.set(t2, e3), d.add(e3), s2._instrumentationIsActive || (s2._instrumentationIsActive = true, u.forEach((e4) => e4())), t2;\n }, on: i, onCommitFiberRoot: i, onCommitFiberUnmount: i, onPostCommitFiberRoot: i, renderers: r2, supportsFiber: true, supportsFlight: true };\n try {\n n(globalThis, `__REACT_DEVTOOLS_GLOBAL_HOOK__`, { configurable: true, enumerable: true, get() {\n return s2;\n }, set(t3) {\n if (t3 && typeof t3 == `object`) {\n let n2 = s2.renderers;\n s2 = t3, n2.size > 0 && (n2.forEach((e3, n3) => {\n d.add(e3), t3.renderers.set(n3, e3);\n }), p(e2));\n }\n } });\n let t2 = window.hasOwnProperty, r3 = false;\n n(window, `hasOwnProperty`, { configurable: true, value: function(...e3) {\n try {\n if (!r3 && e3[0] === `__REACT_DEVTOOLS_GLOBAL_HOOK__`)\n return globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__ = undefined, r3 = true, -0;\n } catch {}\n return t2.apply(this, e3);\n }, writable: true });\n } catch {\n p(e2);\n }\n return s2;\n };\n var p = (e2) => {\n e2 && u.add(e2);\n try {\n let n2 = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (!n2)\n return;\n if (!n2._instrumentationSource) {\n n2.checkDCE = a, n2.supportsFiber = true, n2.supportsFlight = true, n2.hasUnsupportedRendererAttached = false, n2._instrumentationSource = t, n2._instrumentationIsActive = false;\n let e3 = o(n2);\n if (e3 || (n2.on = i), n2.renderers.size) {\n n2._instrumentationIsActive = true, u.forEach((e4) => e4());\n return;\n }\n let r2 = n2.inject, c2 = l(n2);\n c2 && !e3 && (s = true, n2.inject({ scheduleRefresh() {} }) && (n2._instrumentationIsActive = true)), n2.inject = (e4) => {\n let t2 = r2(e4);\n return d.add(e4), c2 && n2.renderers.set(t2, e4), n2._instrumentationIsActive = true, u.forEach((e5) => e5()), t2;\n };\n }\n (n2.renderers.size || n2._instrumentationIsActive || l()) && e2?.();\n } catch {}\n };\n var m = () => r.call(globalThis, `__REACT_DEVTOOLS_GLOBAL_HOOK__`);\n var h = (e2) => m() ? (p(e2), globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) : f(e2);\n var g = () => !!(typeof window < `u` && (window.document?.createElement || window.navigator?.product === `ReactNative`));\n var _ = () => {\n try {\n g() && h();\n } catch {}\n };\n\n // ../node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/install-hook-only.js\n _();\n\n // ../node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/core.js\n var b = (e2) => {\n switch (e2.tag) {\n case 5:\n case 26:\n case 27:\n return true;\n default:\n return typeof e2.type == `string`;\n }\n };\n var be = (e2) => {\n switch (e2.tag) {\n case 1:\n case 11:\n case 0:\n case 14:\n case 15:\n return true;\n default:\n return false;\n }\n };\n function A(e2, t2, n2 = false) {\n if (!e2)\n return null;\n let r2 = t2(e2);\n if (r2 instanceof Promise)\n return (async () => {\n if (await r2 === true)\n return e2;\n let i3 = n2 ? e2.return : e2.child;\n for (;i3; ) {\n let e3 = await M(i3, t2, n2);\n if (e3)\n return e3;\n i3 = n2 ? null : i3.sibling;\n }\n return null;\n })();\n if (r2 === true)\n return e2;\n let i2 = n2 ? e2.return : e2.child;\n for (;i2; ) {\n let e3 = j(i2, t2, n2);\n if (e3)\n return e3;\n i2 = n2 ? null : i2.sibling;\n }\n return null;\n }\n var j = (e2, t2, n2 = false) => {\n if (!e2)\n return null;\n if (t2(e2) === true)\n return e2;\n let r2 = n2 ? e2.return : e2.child;\n for (;r2; ) {\n let e3 = j(r2, t2, n2);\n if (e3)\n return e3;\n r2 = n2 ? null : r2.sibling;\n }\n return null;\n };\n var M = async (e2, t2, n2 = false) => {\n if (!e2)\n return null;\n if (await t2(e2) === true)\n return e2;\n let r2 = n2 ? e2.return : e2.child;\n for (;r2; ) {\n let e3 = await M(r2, t2, n2);\n if (e3)\n return e3;\n r2 = n2 ? null : r2.sibling;\n }\n return null;\n };\n var N = (e2) => {\n let t2 = e2;\n return typeof t2 == `function` ? t2 : typeof t2 == `object` && t2 ? N(t2.type || t2.render) : null;\n };\n var Ee = (e2) => {\n let t2 = e2;\n if (typeof t2 == `string`)\n return t2;\n if (typeof t2 != `function` && !(typeof t2 == `object` && t2))\n return null;\n let n2 = t2.displayName || t2.name || null;\n if (n2)\n return n2;\n let r2 = N(t2);\n return r2 && (r2.displayName || r2.name) || null;\n };\n var I = new WeakMap;\n var U = new WeakMap;\n var Pe = (e2) => {\n let t2 = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (t2?.renderers)\n for (let n2 of t2.renderers.values())\n try {\n let t3 = n2.findFiberByHostInstance?.(e2);\n if (t3)\n return t3;\n } catch {}\n if (typeof e2 == `object` && e2) {\n if (`_reactRootContainer` in e2)\n return e2._reactRootContainer?._internalRoot?.current?.child;\n for (let t3 in e2)\n if (t3.startsWith(`__reactContainer$`) || t3.startsWith(`__reactInternalInstance$`) || t3.startsWith(`__reactFiber`))\n return e2[t3] || null;\n }\n return null;\n };\n var Z = Error();\n var Q = new Set;\n\n // ../node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/source.js\n var i2 = /^[a-zA-Z][a-zA-Z\\d+\\-.]*:/;\n var a2 = [`rsc://`, `file:///`, `webpack-internal://`, `webpack://`, `node:`, `turbopack://`, `metro://`, `/app-pages-browser/`, `/(app-pages-browser)/`];\n var o2 = [`<anonymous>`, `eval`, ``];\n var s2 = /\\.(jsx|tsx|ts|js)$/;\n var c2 = /(\\.min|bundle|chunk|vendor|vendors|runtime|polyfill|polyfills)\\.(js|mjs|cjs)$|(chunk|bundle|vendor|vendors|runtime|polyfill|polyfills|framework|app|main|index)[-_.][A-Za-z0-9_-]{4,}\\.(js|mjs|cjs)$|[\\da-f]{8,}\\.(js|mjs|cjs)$|[-_.][\\da-f]{20,}\\.(js|mjs|cjs)$|\\/dist\\/|\\/build\\/|\\/.next\\/|\\/out\\/|\\/node_modules\\/|\\.webpack\\.|\\.vite\\.|\\.turbopack\\./i;\n var l2 = /^\\?[\\w~.-]+(?:=[^&#]*)?(?:&[\\w~.-]+(?:=[^&#]*)?)*$/;\n var u2 = /\\(at [^)]+\\)$/;\n var d3 = /(^|@)\\S+:\\d+/;\n var f3 = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var ee2 = /^(eval@)?(\\[native code\\])?$/;\n var m3 = (e2, t2) => {\n if (t2?.includeInElement !== false) {\n let n2 = e2.split(`\n`), r2 = [];\n for (let e3 of n2)\n if (/^\\s*at\\s+/.test(e3)) {\n let t3 = _3(e3, undefined)[0];\n t3 && r2.push(t3);\n } else if (/^\\s*in\\s+/.test(e3)) {\n let t3 = e3.replace(/^\\s*in\\s+/, ``).replace(/\\s*\\(at .*\\)$/, ``);\n r2.push({ functionName: t3, source: e3 });\n } else if (e3.match(d3)) {\n let t3 = v2(e3, undefined)[0];\n t3 && r2.push(t3);\n }\n return g3(r2, t2);\n }\n return e2.match(f3) ? _3(e2, t2) : v2(e2, t2);\n };\n var h3 = (e2) => {\n if (!e2.includes(`:`))\n return [e2, undefined, undefined];\n let t2 = e2.startsWith(`(`) && /:\\d+\\)$/.test(e2) ? e2.slice(1, -1) : e2, n2 = /(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(t2);\n return n2 ? [n2[1], n2[2] || undefined, n2[3] || undefined] : [t2, undefined, undefined];\n };\n var g3 = (e2, t2) => t2 && t2.slice != null ? Array.isArray(t2.slice) ? e2.slice(t2.slice[0], t2.slice[1]) : e2.slice(0, t2.slice) : e2;\n var _3 = (e2, t2) => g3(e2.split(`\n`).filter((e3) => !!e3.match(f3)), t2).map((e3) => {\n let t3 = e3;\n t3.includes(`(eval `) && (t3 = t3.replace(/eval code/g, `eval`).replace(/(\\(eval at [^()]*)|(,.*$)/g, ``));\n let n2 = t3.replace(/^\\s+/, ``).replace(/\\(eval code/g, `(`).replace(/^.*?\\s+/, ``), r2 = n2.match(/ (\\(.+\\)$)/);\n n2 = r2 ? n2.replace(r2[0], ``) : n2;\n let i3 = h3(r2 ? r2[1] : n2);\n return { functionName: r2 && n2 || undefined, fileName: [`eval`, `<anonymous>`].includes(i3[0]) ? undefined : i3[0], lineNumber: i3[1] ? +i3[1] : undefined, columnNumber: i3[2] ? +i3[2] : undefined, source: t3 };\n });\n var v2 = (e2, t2) => g3(e2.split(`\n`).filter((e3) => !e3.match(ee2)), t2).map((e3) => {\n let t3 = e3;\n if (t3.includes(` > eval`) && (t3 = t3.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, `:$1`)), !t3.includes(`@`) && !t3.includes(`:`))\n return { functionName: t3 };\n {\n let e4 = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/, n2 = t3.match(e4), r2 = n2 && n2[1] ? n2[1] : undefined, i3 = h3(t3.replace(e4, ``));\n return { functionName: r2, fileName: i3[0], lineNumber: i3[1] ? +i3[1] : undefined, columnNumber: i3[2] ? +i3[2] : undefined, source: t3 };\n }\n });\n var se2 = 44;\n var y = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`;\n var ce2 = new Uint8Array(64);\n var le2 = new Uint8Array(128);\n for (let e2 = 0;e2 < y.length; e2++) {\n let t2 = y.charCodeAt(e2);\n ce2[e2] = t2, le2[t2] = e2;\n }\n function b2(e2, t2) {\n let n2 = 0, r2 = 0, i3 = 0;\n do\n i3 = le2[e2.next()], n2 |= (i3 & 31) << r2, r2 += 5;\n while (i3 & 32);\n let a3 = n2 & 1;\n return n2 >>>= 1, a3 && (n2 = -2147483648 | -n2), t2 + n2;\n }\n function ue2(e2, t2) {\n return e2.pos >= t2 ? false : e2.peek() !== se2;\n }\n var de2 = class {\n constructor(e2) {\n this.pos = 0, this.buffer = e2;\n }\n next() {\n return this.buffer.charCodeAt(this.pos++);\n }\n peek() {\n return this.buffer.charCodeAt(this.pos);\n }\n indexOf(e2) {\n let { buffer: t2, pos: n2 } = this, r2 = t2.indexOf(e2, n2);\n return r2 === -1 ? t2.length : r2;\n }\n };\n function x2(e2) {\n let { length: t2 } = e2, n2 = new de2(e2), r2 = [], i3 = 0, a3 = 0, o3 = 0, s3 = 0, c3 = 0;\n do {\n let e3 = n2.indexOf(`;`), t3 = [], l3 = true, u3 = 0;\n for (i3 = 0;n2.pos < e3; ) {\n let r3;\n i3 = b2(n2, i3), i3 < u3 && (l3 = false), u3 = i3, ue2(n2, e3) ? (a3 = b2(n2, a3), o3 = b2(n2, o3), s3 = b2(n2, s3), ue2(n2, e3) ? (c3 = b2(n2, c3), r3 = [i3, a3, o3, s3, c3]) : r3 = [i3, a3, o3, s3]) : r3 = [i3], t3.push(r3), n2.pos++;\n }\n l3 || fe2(t3), r2.push(t3), n2.pos = e3 + 1;\n } while (n2.pos <= t2);\n return r2;\n }\n function fe2(e2) {\n e2.sort(pe2);\n }\n function pe2(e2, t2) {\n return e2[0] - t2[0];\n }\n var S2 = /^[a-zA-Z][a-zA-Z\\d+\\-.]*:/;\n var me2 = /^data:application\\/json[^,]+base64,/;\n var he2 = /(?:\\/\\/[@#][ \\t]+sourceMappingURL=([^\\s'\"]+?)[ \\t]*$)|(?:\\/\\*[@#][ \\t]+sourceMappingURL=([^*]+?)[ \\t]*(?:\\*\\/)[ \\t]*$)/;\n var C2 = new Map;\n var w2 = new Map;\n var T2 = (e2, t2, n2, r2) => {\n if (n2 < 0 || n2 >= e2.length)\n return null;\n let i3 = e2[n2];\n if (!i3 || i3.length === 0)\n return null;\n let a3 = null;\n for (let e3 of i3)\n if (e3[0] <= r2)\n a3 = e3;\n else\n break;\n if (!a3 || a3.length < 4)\n return null;\n let [, o3, s3, c3] = a3;\n if (o3 === undefined || s3 === undefined || c3 === undefined)\n return null;\n let l3 = t2[o3];\n return l3 ? { columnNumber: c3, fileName: l3, lineNumber: s3 + 1 } : null;\n };\n var E2 = (e2, t2, n2) => {\n if (e2.sections) {\n let r2 = null;\n for (let i4 of e2.sections)\n if (t2 > i4.offset.line || t2 === i4.offset.line && n2 >= i4.offset.column)\n r2 = i4;\n else\n break;\n if (!r2)\n return null;\n let i3 = t2 - r2.offset.line, a3 = t2 === r2.offset.line ? n2 - r2.offset.column : n2;\n return T2(r2.map.mappings, r2.map.sources, i3, a3);\n }\n return T2(e2.mappings, e2.sources, t2 - 1, n2);\n };\n var ge2 = (e2, t2) => {\n let n2 = t2.split(`\n`), r2;\n for (let e3 = n2.length - 1;e3 >= 0 && !r2; e3--) {\n let t3 = n2[e3].match(he2);\n t3 && (r2 = t3[1] || t3[2]);\n }\n if (!r2)\n return null;\n let i3 = S2.test(r2);\n if (!(me2.test(r2) || i3 || r2.startsWith(`/`))) {\n let t3 = e2.split(`/`);\n t3[t3.length - 1] = r2, r2 = t3.join(`/`);\n }\n return r2;\n };\n var _e2 = (e2) => ({ file: e2.file, mappings: x2(e2.mappings), names: e2.names, sourceRoot: e2.sourceRoot, sources: e2.sources, sourcesContent: e2.sourcesContent, version: 3 });\n var ve2 = (e2) => {\n let t2 = e2.sections.map(({ map: e3, offset: t3 }) => ({ map: { ...e3, mappings: x2(e3.mappings) }, offset: t3 })), n2 = new Set;\n for (let e3 of t2)\n for (let t3 of e3.map.sources)\n n2.add(t3);\n return { file: e2.file, mappings: [], names: [], sections: t2, sourceRoot: undefined, sources: Array.from(n2), sourcesContent: undefined, version: 3 };\n };\n var D2 = (e2) => {\n if (!e2)\n return false;\n let t2 = e2.trim();\n if (!t2)\n return false;\n let n2 = t2.match(S2);\n if (!n2)\n return true;\n let r2 = n2[0].toLowerCase();\n return r2 === `http:` || r2 === `https:`;\n };\n var ye2 = async (e2, t2 = fetch) => {\n if (!D2(e2))\n return null;\n let n2 = await t2(e2);\n if (!n2.ok)\n return null;\n let r2 = await n2.text();\n if (!r2)\n return null;\n let i3 = ge2(e2, r2);\n if (!i3 || !D2(i3))\n return null;\n let a3 = await t2(i3);\n if (!a3.ok)\n return null;\n try {\n let e3 = await a3.json();\n return `sections` in e3 ? ve2(e3) : _e2(e3);\n } catch {\n return null;\n }\n };\n var O2 = async (e2, t2 = true, n2) => {\n if (t2 && C2.has(e2))\n return C2.get(e2) ?? null;\n let r2 = t2 ? w2.get(e2) : undefined;\n if (r2)\n return (await r2).sourceMap;\n let i3 = ye2(e2, n2).then((e3) => ({ sourceMap: e3, isTransientFailure: false }), () => ({ sourceMap: null, isTransientFailure: true }));\n t2 && w2.set(e2, i3);\n let { sourceMap: a3, isTransientFailure: o3 } = await i3;\n return t2 && (w2.delete(e2), o3 || C2.set(e2, a3)), a3;\n };\n var be2 = async (e2, t2 = true, n2) => await Promise.all(e2.map(async (e3) => {\n if (!e3.fileName)\n return e3;\n let r2 = await O2(e3.fileName, t2, n2);\n if (!r2 || typeof e3.lineNumber != `number` || typeof e3.columnNumber != `number`)\n return e3;\n let i3 = E2(r2, e3.lineNumber, e3.columnNumber);\n return i3 ? { ...e3, source: i3.fileName && e3.source ? e3.source.replace(e3.fileName, i3.fileName) : e3.source, fileName: i3.fileName, lineNumber: i3.lineNumber, columnNumber: i3.columnNumber, isSymbolicated: true } : e3;\n }));\n var xe2 = (e2) => e2._debugStack instanceof Error && typeof e2._debugStack?.stack == `string`;\n var Se2 = () => {\n let n2 = h();\n for (let t2 of [...Array.from(d), ...Array.from(n2.renderers.values())]) {\n let e2 = t2.currentDispatcherRef;\n if (e2 && typeof e2 == `object`)\n return `H` in e2 ? e2.H : e2.current;\n }\n return null;\n };\n var Ce2 = (t2) => {\n for (let n2 of d) {\n let e2 = n2.currentDispatcherRef;\n e2 && typeof e2 == `object` && (`H` in e2 ? e2.H = t2 : e2.current = t2);\n }\n };\n var k2 = (e2) => `\n in ${e2}`;\n var we2 = (e2, t2) => {\n let n2 = k2(e2);\n return t2 && (n2 += ` (at ${t2})`), n2;\n };\n var A2 = false;\n var j2 = (e2, t2) => {\n if (!e2 || A2)\n return ``;\n let r2 = Error.prepareStackTrace;\n Error.prepareStackTrace = undefined, A2 = true;\n let i3 = Se2();\n Ce2(null);\n let { error: a3, warn: o3 } = console;\n console.error = () => {}, console.warn = () => {};\n try {\n let r3 = { DetermineComponentFrameRoot() {\n let n2;\n try {\n if (t2) {\n let t3 = function() {\n throw Error();\n };\n if (Object.defineProperty(t3.prototype, `props`, { set: function() {\n throw Error();\n } }), typeof Reflect == `object` && Reflect.construct) {\n try {\n Reflect.construct(t3, []);\n } catch (e3) {\n n2 = e3;\n }\n Reflect.construct(e2, [], t3);\n } else {\n try {\n t3.call();\n } catch (e3) {\n n2 = e3;\n }\n e2.call(t3.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (e3) {\n n2 = e3;\n }\n let t3 = e2();\n t3 && typeof t3.catch == `function` && t3.catch(() => {});\n }\n } catch (e3) {\n if (e3 instanceof Error && n2 instanceof Error && typeof e3.stack == `string`)\n return [e3.stack, n2.stack];\n }\n return [null, null];\n } };\n r3.DetermineComponentFrameRoot.displayName = `DetermineComponentFrameRoot`, Object.getOwnPropertyDescriptor(r3.DetermineComponentFrameRoot, `name`)?.configurable && Object.defineProperty(r3.DetermineComponentFrameRoot, `name`, { value: `DetermineComponentFrameRoot` });\n let [i4, a4] = r3.DetermineComponentFrameRoot();\n if (i4 && a4) {\n let t3 = i4.split(`\n`), r4 = a4.split(`\n`), o4 = 0, s4 = 0;\n for (;o4 < t3.length && !t3[o4].includes(`DetermineComponentFrameRoot`); )\n o4++;\n for (;s4 < r4.length && !r4[s4].includes(`DetermineComponentFrameRoot`); )\n s4++;\n if (o4 === t3.length || s4 === r4.length)\n for (o4 = t3.length - 1, s4 = r4.length - 1;o4 >= 1 && s4 >= 0 && t3[o4] !== r4[s4]; )\n s4--;\n for (;o4 >= 1 && s4 >= 0; o4--, s4--)\n if (t3[o4] !== r4[s4]) {\n if (o4 !== 1 || s4 !== 1)\n do\n if (o4--, s4--, s4 < 0 || t3[o4] !== r4[s4]) {\n let r5 = `\n${t3[o4].replace(` at new `, ` at `)}`, i5 = Ee(e2);\n return i5 && r5.includes(`<anonymous>`) && (r5 = r5.replace(`<anonymous>`, i5)), r5;\n }\n while (o4 >= 1 && s4 >= 0);\n break;\n }\n }\n } finally {\n A2 = false, Error.prepareStackTrace = r2, Ce2(i3), console.error = a3, console.warn = o3;\n }\n let s3 = e2 ? Ee(e2) : ``;\n return s3 ? k2(s3) : ``;\n };\n var M2 = (e2, t2) => {\n let n2 = e2.tag, r2 = ``;\n switch (n2) {\n case 28:\n r2 = k2(`Activity`);\n break;\n case 1:\n r2 = j2(e2.type, true);\n break;\n case 11:\n r2 = j2(e2.type.render, false);\n break;\n case 0:\n case 15:\n r2 = j2(e2.type, false);\n break;\n case 5:\n case 26:\n case 27:\n r2 = k2(e2.type);\n break;\n case 16:\n r2 = k2(`Lazy`);\n break;\n case 13:\n r2 = e2.child !== t2 && t2 !== null ? k2(`Suspense Fallback`) : k2(`Suspense`);\n break;\n case 19:\n r2 = k2(`SuspenseList`);\n break;\n case 30:\n r2 = k2(`ViewTransition`);\n break;\n default:\n return ``;\n }\n return r2;\n };\n var N2 = (e2) => {\n try {\n let t2 = ``, n2 = e2, r2 = null;\n do {\n t2 += M2(n2, r2);\n let e3 = n2._debugInfo;\n if (e3 && Array.isArray(e3))\n for (let n3 = e3.length - 1;n3 >= 0; n3--) {\n let r3 = e3[n3];\n typeof r3.name == `string` && (t2 += we2(r3.name, r3.env));\n }\n r2 = n2, n2 = n2.return;\n } while (n2);\n return t2;\n } catch (e3) {\n return e3 instanceof Error ? `\nError generating stack: ${e3.message}\n${e3.stack}` : ``;\n }\n };\n var P2 = (e2) => {\n let t2 = Error.prepareStackTrace;\n Error.prepareStackTrace = undefined;\n let n2 = e2;\n if (!n2)\n return ``;\n Error.prepareStackTrace = t2, n2.startsWith(`Error: react-stack-top-frame\n`) && (n2 = n2.slice(29));\n let r2 = n2.indexOf(`\n`);\n if (r2 !== -1 && (n2 = n2.slice(r2 + 1)), r2 = Math.max(n2.indexOf(`react_stack_bottom_frame`), n2.indexOf(`react-stack-bottom-frame`)), r2 !== -1 && (r2 = n2.lastIndexOf(`\n`, r2)), r2 !== -1)\n n2 = n2.slice(0, r2);\n else\n return ``;\n return n2;\n };\n var Te2 = (e2) => !!(e2.functionName && e2.fileName && (e2.fileName.startsWith(`rsc://`) || e2.fileName.startsWith(`about://React/`)));\n var Ee2 = (e2, t2) => e2.fileName === t2.fileName && e2.lineNumber === t2.lineNumber && e2.columnNumber === t2.columnNumber;\n var De2 = (e2) => {\n let t2 = new Map;\n for (let n2 of e2)\n for (let e3 of n2.stackFrames) {\n if (!Te2(e3))\n continue;\n let n3 = e3.functionName, r2 = t2.get(n3) ?? [];\n r2.some((t3) => Ee2(t3, e3)) || (r2.push(e3), t2.set(n3, r2));\n }\n return t2;\n };\n var Oe2 = (e2, t2, n2) => {\n if (!e2.functionName)\n return { ...e2, isServer: true };\n let r2 = t2.get(e2.functionName);\n if (!r2 || r2.length === 0)\n return { ...e2, isServer: true };\n let i3 = n2.get(e2.functionName) ?? 0, a3 = r2[i3 % r2.length];\n return n2.set(e2.functionName, i3 + 1), { ...e2, isServer: true, fileName: a3.fileName, lineNumber: a3.lineNumber, columnNumber: a3.columnNumber, source: e2.source?.replace(`(at Server)`, `(${a3.fileName}:${a3.lineNumber}:${a3.columnNumber})`) };\n };\n var ke = (e2) => {\n let t2 = [];\n return A(e2, (e3) => {\n if (!xe2(e3))\n return;\n let r2 = typeof e3.type == `string` ? e3.type : Ee(e3.type) || `<anonymous>`;\n t2.push({ componentName: r2, stackFrames: m3(P2(e3._debugStack?.stack)) });\n }, true), t2;\n };\n var F = async (e2, t2 = true, n2) => {\n let r2 = ke(e2), i3 = m3(N2(e2)), a3 = De2(r2), o3 = new Map;\n return be2(i3.map((e3) => (e3.source?.includes(`(at Server)`) ?? false) || e3.source != null && u2.test(e3.source) ? Oe2(e3, a3, o3) : e3).filter((e3, t3, n3) => {\n if (t3 === 0)\n return true;\n let r3 = n3[t3 - 1];\n return e3.functionName !== r3.functionName;\n }), t2, n2);\n };\n var I2 = (e2) => {\n let t2 = e2._debugSource;\n return t2 ? typeof t2 == `object` && !!t2 && `fileName` in t2 && typeof t2.fileName == `string` && `lineNumber` in t2 && typeof t2.lineNumber == `number` : false;\n };\n var Ae2 = async (e2, t2 = true, n2) => {\n if (I2(e2))\n return e2._debugSource || null;\n let r2 = await F(e2, t2, n2);\n for (let e3 of r2)\n if (e3.fileName)\n return { fileName: e3.fileName, lineNumber: e3.lineNumber, columnNumber: e3.columnNumber, functionName: e3.functionName };\n return null;\n };\n var L2 = (e2) => e2.split(`/`).filter(Boolean).length;\n var je2 = (e2) => e2.split(`/`).filter(Boolean)[0] ?? null;\n var Me2 = (e2) => {\n let t2 = e2.indexOf(`/`, 1);\n if (t2 === -1 || L2(e2.slice(0, t2)) !== 1)\n return e2;\n let n2 = e2.slice(t2);\n if (!s2.test(n2) || L2(n2) < 2)\n return e2;\n let r2 = je2(n2);\n return !r2 || r2.startsWith(`@`) || r2.length > 4 ? e2 : n2;\n };\n var R2 = (e2) => {\n if (!e2 || o2.some((t3) => t3 === e2))\n return ``;\n let t2 = e2, n2 = t2.startsWith(`http://`) || t2.startsWith(`https://`);\n if (n2)\n try {\n t2 = new URL(t2).pathname;\n } catch {}\n if (n2 && (t2 = Me2(t2)), t2.startsWith(`about://React/`)) {\n let e3 = t2.slice(14), n3 = e3.indexOf(`/`), r3 = e3.indexOf(`:`);\n t2 = n3 !== -1 && (r3 === -1 || n3 < r3) ? e3.slice(n3 + 1) : e3;\n }\n let r2 = true;\n for (;r2; ) {\n r2 = false;\n for (let e3 of a2)\n if (t2.startsWith(e3)) {\n t2 = t2.slice(e3.length), e3 === `file:///` && (t2 = `/${t2.replace(/^\\/+/, ``)}`), r2 = true;\n break;\n }\n }\n if (i2.test(t2)) {\n let e3 = t2.match(i2);\n e3 && (t2 = t2.slice(e3[0].length));\n }\n if (t2.startsWith(`//`)) {\n let e3 = t2.indexOf(`/`, 2);\n t2 = e3 === -1 ? `` : t2.slice(e3);\n }\n let s3 = t2.indexOf(`?`);\n if (s3 !== -1) {\n let e3 = t2.slice(s3);\n l2.test(e3) && (t2 = t2.slice(0, s3));\n }\n return t2;\n };\n var Ne2 = (e2) => {\n let t2 = R2(e2);\n return !(!t2 || !s2.test(t2) || c2.test(t2));\n };\n var z2 = Symbol.for(`react.context`);\n var Ie2 = Symbol.for(`react.memo_cache_sentinel`);\n var B2 = [];\n var H2 = null;\n var U2 = null;\n var W = null;\n var G = 0;\n var K = null;\n var q2 = Error(\"Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render.\");\n var Y = () => {\n let e2 = U2;\n return e2 !== null && (U2 = e2.next), e2;\n };\n var X2 = (e2) => {\n if (H2 === null)\n return e2._currentValue;\n if (W === null)\n throw Error(`Context reads do not line up with context dependencies.`);\n if (Object.prototype.hasOwnProperty.call(W, `memoizedValue`)) {\n let e3 = W.memoizedValue;\n return W = W.next, e3;\n }\n return e2._currentValue;\n };\n var Z2 = (e2, t2, n2, r2 = null) => {\n B2.push({ displayName: r2, primitive: e2, stackError: Error(), value: t2, dispatcherHookName: n2 });\n };\n var Be = (e2) => {\n if (typeof e2 == `object` && e2) {\n let t2 = e2;\n if (typeof t2.then == `function`) {\n let e3 = K !== null && G < K.length ? K[G++] : t2;\n switch (e3.status) {\n case `fulfilled`:\n return Z2(`Promise`, e3.value, `Use`), e3.value;\n case `rejected`:\n throw e3.reason;\n }\n throw Z2(`Unresolved`, e3, `Use`), q2;\n }\n if (t2.$$typeof === z2 && `_currentValue` in t2) {\n let e3 = t2, n2 = X2(e3);\n return Z2(`Context (use)`, n2, `Use`, e3.displayName || `Context`), n2;\n }\n }\n throw Error(`An unsupported type was passed to use(): ` + String(e2));\n };\n var Ve = (e2) => {\n let t2 = X2(e2);\n return Z2(`Context`, t2, `Context`, e2.displayName || null), t2;\n };\n var He = (e2) => {\n let t2 = Y(), n2 = t2 === null ? typeof e2 == `function` ? e2() : e2 : t2.memoizedState;\n return Z2(`State`, n2, `State`), [n2, () => {}];\n };\n var Ue = (e2, t2, n2) => {\n let r2 = Y(), i3 = r2 === null ? n2 === undefined ? t2 : n2(t2) : r2.memoizedState;\n return Z2(`Reducer`, i3, `Reducer`), [i3, () => {}];\n };\n var We = (e2) => {\n let t2 = Y(), n2 = t2 === null ? { current: e2 } : t2.memoizedState;\n return Z2(`Ref`, n2.current, `Ref`), n2;\n };\n var Ge = () => {\n let e2 = Y();\n return Z2(`CacheRefresh`, e2 === null ? () => {} : e2.memoizedState, `CacheRefresh`), () => {};\n };\n var Ke = (e2) => {\n Y(), Z2(`LayoutEffect`, e2, `LayoutEffect`);\n };\n var qe = (e2) => {\n Y(), Z2(`InsertionEffect`, e2, `InsertionEffect`);\n };\n var Je = (e2) => {\n Y(), Z2(`Effect`, e2, `Effect`);\n };\n var Ye = (e2) => {\n Y();\n let t2;\n typeof e2 == `object` && e2 && `current` in e2 && (t2 = e2.current), Z2(`ImperativeHandle`, t2, `ImperativeHandle`);\n };\n var Xe = (e2, t2) => {\n Z2(`DebugValue`, typeof t2 == `function` ? t2(e2) : e2, `DebugValue`);\n };\n var Ze = (e2) => {\n let t2 = Y();\n return Z2(`Callback`, t2 === null ? e2 : t2.memoizedState[0], `Callback`), e2;\n };\n var Qe = (e2) => {\n let t2 = Y(), n2 = t2 === null ? e2() : t2.memoizedState[0];\n return Z2(`Memo`, n2, `Memo`), n2;\n };\n var $e = (e2, t2) => {\n let n2 = Y();\n Y();\n let r2 = n2 === null ? t2() : n2.memoizedState;\n return Z2(`SyncExternalStore`, r2, `SyncExternalStore`), r2;\n };\n var et = () => {\n let e2 = Y();\n Y();\n let t2 = e2 === null ? false : e2.memoizedState;\n return Z2(`Transition`, t2, `Transition`), [t2, () => {}];\n };\n var tt = (e2) => {\n let t2 = Y(), n2 = t2 === null ? e2 : t2.memoizedState;\n return Z2(`DeferredValue`, n2, `DeferredValue`), n2;\n };\n var nt = () => {\n let e2 = Y(), t2 = e2 === null ? `` : e2.memoizedState;\n return Z2(`Id`, t2, `Id`), t2;\n };\n var rt = (e2) => {\n let t2 = H2;\n if (t2 == null)\n return [];\n let n2 = t2.updateQueue?.memoCache;\n if (n2 == null)\n return [];\n let r2 = n2.data[n2.index];\n return r2 === undefined && (r2 = n2.data[n2.index] = Array.from({ length: e2 }, () => Ie2)), n2.index++, r2;\n };\n var it = (e2) => {\n let t2 = Y(), n2 = t2 === null ? e2 : t2.memoizedState;\n return Z2(`Optimistic`, n2, `Optimistic`), [n2, () => {}];\n };\n var at = (e2, t2) => {\n let n2, r2 = null;\n if (e2 !== null) {\n let t3 = e2.memoizedState;\n if (typeof t3 == `object` && t3 && `then` in t3 && typeof t3.then == `function`) {\n let e3 = t3;\n switch (e3.status) {\n case `fulfilled`:\n n2 = e3.value;\n break;\n case `rejected`:\n r2 = e3.reason;\n break;\n default:\n r2 = q2, n2 = e3;\n }\n } else\n n2 = t3;\n } else\n n2 = t2;\n return { value: n2, error: r2 };\n };\n var ot = (e2) => (t2, n2) => {\n let r2 = Y();\n Y(), Y();\n let i3 = Error(), { value: a3, error: o3 } = at(r2, n2);\n if (B2.push({ displayName: null, primitive: e2, stackError: i3, value: a3, dispatcherHookName: e2 }), o3 !== null)\n throw o3;\n return [a3, () => {}, false];\n };\n var st = ot(`ActionState`);\n var Q2 = { readContext: X2, use: Be, useCallback: Ze, useContext: Ve, useEffect: Je, useImperativeHandle: Ye, useLayoutEffect: Ke, useInsertionEffect: qe, useMemo: Qe, useReducer: Ue, useRef: We, useState: He, useDebugValue: Xe, useDeferredValue: tt, useTransition: et, useSyncExternalStore: $e, useId: nt, useHostTransitionStatus: () => {\n let e2 = X2({ _currentValue: null });\n return Z2(`HostTransitionStatus`, e2, `HostTransitionStatus`), e2;\n }, useFormState: ot(`FormState`), useActionState: st, useOptimistic: it, useMemoCache: rt, useCacheRefresh: Ge, useEffectEvent: (e2) => (Y(), Z2(`EffectEvent`, e2, `EffectEvent`), e2) };\n var ct = typeof Proxy > `u` ? Q2 : new Proxy(Q2, { get(e2, t2) {\n if (Object.prototype.hasOwnProperty.call(e2, t2))\n return e2[t2];\n let n2 = Error(`Missing method in Dispatcher: ` + t2);\n throw n2.name = `ReactDebugToolsUnsupportedHookError`, n2;\n } });\n var gt = new Set([`Context`, `Context (use)`, `DebugValue`, `Promise`, `Unresolved`, `HostTransitionStatus`]);\n var kt = new Set([`Effect`, `LayoutEffect`, `InsertionEffect`, `ImperativeHandle`, `DebugValue`]);\n\n // dist/_bippy-entry-27735-1784093019578.js\n globalThis.__bippy = {\n getFiberFromHostInstance: Pe,\n getDisplayName: Ee,\n traverseFiber: A,\n isCompositeFiber: be,\n isHostFiber: b,\n getSource: Ae2,\n getOwnerStack: F,\n normalizeFileName: R2,\n isSourceFile: Ne2\n };\n})();\n";
|
|
1566
|
+
var bippy_default = "(() => {\n // ../../playwriter/node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/rdt-hook.js\n var e = `0.5.43`;\n var t = `bippy-${e}`;\n var n = Object.defineProperty;\n var r = Object.prototype.hasOwnProperty;\n var i = () => {};\n var a = (e2) => {\n try {\n Function.prototype.toString.call(e2).indexOf(`^_^`) > -1 && setTimeout(() => {\n throw Error(`React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build`);\n });\n } catch {}\n };\n var o = (e2 = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) => !!(e2 && (`getFiberRoots` in e2));\n var s = false;\n var c;\n var l = (e2 = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) => s ? true : (e2 && typeof e2.inject == `function` && (c = e2.inject.toString()), !!c?.includes(`(injected)`));\n var u = new Set;\n var d = new Set;\n var f = (e2) => {\n let r2 = new Map, o2 = 0, s2 = { _instrumentationIsActive: false, _instrumentationSource: t, checkDCE: a, hasUnsupportedRendererAttached: false, inject(e3) {\n let t2 = ++o2;\n return r2.set(t2, e3), d.add(e3), s2._instrumentationIsActive || (s2._instrumentationIsActive = true, u.forEach((e4) => e4())), t2;\n }, on: i, onCommitFiberRoot: i, onCommitFiberUnmount: i, onPostCommitFiberRoot: i, renderers: r2, supportsFiber: true, supportsFlight: true };\n try {\n n(globalThis, `__REACT_DEVTOOLS_GLOBAL_HOOK__`, { configurable: true, enumerable: true, get() {\n return s2;\n }, set(t3) {\n if (t3 && typeof t3 == `object`) {\n let n2 = s2.renderers;\n s2 = t3, n2.size > 0 && (n2.forEach((e3, n3) => {\n d.add(e3), t3.renderers.set(n3, e3);\n }), p(e2));\n }\n } });\n let t2 = window.hasOwnProperty, r3 = false;\n n(window, `hasOwnProperty`, { configurable: true, value: function(...e3) {\n try {\n if (!r3 && e3[0] === `__REACT_DEVTOOLS_GLOBAL_HOOK__`)\n return globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__ = undefined, r3 = true, -0;\n } catch {}\n return t2.apply(this, e3);\n }, writable: true });\n } catch {\n p(e2);\n }\n return s2;\n };\n var p = (e2) => {\n e2 && u.add(e2);\n try {\n let n2 = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (!n2)\n return;\n if (!n2._instrumentationSource) {\n n2.checkDCE = a, n2.supportsFiber = true, n2.supportsFlight = true, n2.hasUnsupportedRendererAttached = false, n2._instrumentationSource = t, n2._instrumentationIsActive = false;\n let e3 = o(n2);\n if (e3 || (n2.on = i), n2.renderers.size) {\n n2._instrumentationIsActive = true, u.forEach((e4) => e4());\n return;\n }\n let r2 = n2.inject, c2 = l(n2);\n c2 && !e3 && (s = true, n2.inject({ scheduleRefresh() {} }) && (n2._instrumentationIsActive = true)), n2.inject = (e4) => {\n let t2 = r2(e4);\n return d.add(e4), c2 && n2.renderers.set(t2, e4), n2._instrumentationIsActive = true, u.forEach((e5) => e5()), t2;\n };\n }\n (n2.renderers.size || n2._instrumentationIsActive || l()) && e2?.();\n } catch {}\n };\n var m = () => r.call(globalThis, `__REACT_DEVTOOLS_GLOBAL_HOOK__`);\n var h = (e2) => m() ? (p(e2), globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) : f(e2);\n var g = () => !!(typeof window < `u` && (window.document?.createElement || window.navigator?.product === `ReactNative`));\n var _ = () => {\n try {\n g() && h();\n } catch {}\n };\n\n // ../../playwriter/node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/install-hook-only.js\n _();\n\n // ../../playwriter/node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/core.js\n var b = (e2) => {\n switch (e2.tag) {\n case 5:\n case 26:\n case 27:\n return true;\n default:\n return typeof e2.type == `string`;\n }\n };\n var be = (e2) => {\n switch (e2.tag) {\n case 1:\n case 11:\n case 0:\n case 14:\n case 15:\n return true;\n default:\n return false;\n }\n };\n function A(e2, t2, n2 = false) {\n if (!e2)\n return null;\n let r2 = t2(e2);\n if (r2 instanceof Promise)\n return (async () => {\n if (await r2 === true)\n return e2;\n let i3 = n2 ? e2.return : e2.child;\n for (;i3; ) {\n let e3 = await M(i3, t2, n2);\n if (e3)\n return e3;\n i3 = n2 ? null : i3.sibling;\n }\n return null;\n })();\n if (r2 === true)\n return e2;\n let i2 = n2 ? e2.return : e2.child;\n for (;i2; ) {\n let e3 = j(i2, t2, n2);\n if (e3)\n return e3;\n i2 = n2 ? null : i2.sibling;\n }\n return null;\n }\n var j = (e2, t2, n2 = false) => {\n if (!e2)\n return null;\n if (t2(e2) === true)\n return e2;\n let r2 = n2 ? e2.return : e2.child;\n for (;r2; ) {\n let e3 = j(r2, t2, n2);\n if (e3)\n return e3;\n r2 = n2 ? null : r2.sibling;\n }\n return null;\n };\n var M = async (e2, t2, n2 = false) => {\n if (!e2)\n return null;\n if (await t2(e2) === true)\n return e2;\n let r2 = n2 ? e2.return : e2.child;\n for (;r2; ) {\n let e3 = await M(r2, t2, n2);\n if (e3)\n return e3;\n r2 = n2 ? null : r2.sibling;\n }\n return null;\n };\n var N = (e2) => {\n let t2 = e2;\n return typeof t2 == `function` ? t2 : typeof t2 == `object` && t2 ? N(t2.type || t2.render) : null;\n };\n var Ee = (e2) => {\n let t2 = e2;\n if (typeof t2 == `string`)\n return t2;\n if (typeof t2 != `function` && !(typeof t2 == `object` && t2))\n return null;\n let n2 = t2.displayName || t2.name || null;\n if (n2)\n return n2;\n let r2 = N(t2);\n return r2 && (r2.displayName || r2.name) || null;\n };\n var I = new WeakMap;\n var U = new WeakMap;\n var Pe = (e2) => {\n let t2 = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (t2?.renderers)\n for (let n2 of t2.renderers.values())\n try {\n let t3 = n2.findFiberByHostInstance?.(e2);\n if (t3)\n return t3;\n } catch {}\n if (typeof e2 == `object` && e2) {\n if (`_reactRootContainer` in e2)\n return e2._reactRootContainer?._internalRoot?.current?.child;\n for (let t3 in e2)\n if (t3.startsWith(`__reactContainer$`) || t3.startsWith(`__reactInternalInstance$`) || t3.startsWith(`__reactFiber`))\n return e2[t3] || null;\n }\n return null;\n };\n var Z = Error();\n var Q = new Set;\n\n // ../../playwriter/node_modules/.pnpm/bippy@0.5.43_react@19.2.7/node_modules/bippy/dist/source.js\n var i2 = /^[a-zA-Z][a-zA-Z\\d+\\-.]*:/;\n var a2 = [`rsc://`, `file:///`, `webpack-internal://`, `webpack://`, `node:`, `turbopack://`, `metro://`, `/app-pages-browser/`, `/(app-pages-browser)/`];\n var o2 = [`<anonymous>`, `eval`, ``];\n var s2 = /\\.(jsx|tsx|ts|js)$/;\n var c2 = /(\\.min|bundle|chunk|vendor|vendors|runtime|polyfill|polyfills)\\.(js|mjs|cjs)$|(chunk|bundle|vendor|vendors|runtime|polyfill|polyfills|framework|app|main|index)[-_.][A-Za-z0-9_-]{4,}\\.(js|mjs|cjs)$|[\\da-f]{8,}\\.(js|mjs|cjs)$|[-_.][\\da-f]{20,}\\.(js|mjs|cjs)$|\\/dist\\/|\\/build\\/|\\/.next\\/|\\/out\\/|\\/node_modules\\/|\\.webpack\\.|\\.vite\\.|\\.turbopack\\./i;\n var l2 = /^\\?[\\w~.-]+(?:=[^&#]*)?(?:&[\\w~.-]+(?:=[^&#]*)?)*$/;\n var u2 = /\\(at [^)]+\\)$/;\n var d3 = /(^|@)\\S+:\\d+/;\n var f3 = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var ee2 = /^(eval@)?(\\[native code\\])?$/;\n var m3 = (e2, t2) => {\n if (t2?.includeInElement !== false) {\n let n2 = e2.split(`\n`), r2 = [];\n for (let e3 of n2)\n if (/^\\s*at\\s+/.test(e3)) {\n let t3 = _3(e3, undefined)[0];\n t3 && r2.push(t3);\n } else if (/^\\s*in\\s+/.test(e3)) {\n let t3 = e3.replace(/^\\s*in\\s+/, ``).replace(/\\s*\\(at .*\\)$/, ``);\n r2.push({ functionName: t3, source: e3 });\n } else if (e3.match(d3)) {\n let t3 = v2(e3, undefined)[0];\n t3 && r2.push(t3);\n }\n return g3(r2, t2);\n }\n return e2.match(f3) ? _3(e2, t2) : v2(e2, t2);\n };\n var h3 = (e2) => {\n if (!e2.includes(`:`))\n return [e2, undefined, undefined];\n let t2 = e2.startsWith(`(`) && /:\\d+\\)$/.test(e2) ? e2.slice(1, -1) : e2, n2 = /(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(t2);\n return n2 ? [n2[1], n2[2] || undefined, n2[3] || undefined] : [t2, undefined, undefined];\n };\n var g3 = (e2, t2) => t2 && t2.slice != null ? Array.isArray(t2.slice) ? e2.slice(t2.slice[0], t2.slice[1]) : e2.slice(0, t2.slice) : e2;\n var _3 = (e2, t2) => g3(e2.split(`\n`).filter((e3) => !!e3.match(f3)), t2).map((e3) => {\n let t3 = e3;\n t3.includes(`(eval `) && (t3 = t3.replace(/eval code/g, `eval`).replace(/(\\(eval at [^()]*)|(,.*$)/g, ``));\n let n2 = t3.replace(/^\\s+/, ``).replace(/\\(eval code/g, `(`).replace(/^.*?\\s+/, ``), r2 = n2.match(/ (\\(.+\\)$)/);\n n2 = r2 ? n2.replace(r2[0], ``) : n2;\n let i3 = h3(r2 ? r2[1] : n2);\n return { functionName: r2 && n2 || undefined, fileName: [`eval`, `<anonymous>`].includes(i3[0]) ? undefined : i3[0], lineNumber: i3[1] ? +i3[1] : undefined, columnNumber: i3[2] ? +i3[2] : undefined, source: t3 };\n });\n var v2 = (e2, t2) => g3(e2.split(`\n`).filter((e3) => !e3.match(ee2)), t2).map((e3) => {\n let t3 = e3;\n if (t3.includes(` > eval`) && (t3 = t3.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, `:$1`)), !t3.includes(`@`) && !t3.includes(`:`))\n return { functionName: t3 };\n {\n let e4 = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/, n2 = t3.match(e4), r2 = n2 && n2[1] ? n2[1] : undefined, i3 = h3(t3.replace(e4, ``));\n return { functionName: r2, fileName: i3[0], lineNumber: i3[1] ? +i3[1] : undefined, columnNumber: i3[2] ? +i3[2] : undefined, source: t3 };\n }\n });\n var se2 = 44;\n var y = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`;\n var ce2 = new Uint8Array(64);\n var le2 = new Uint8Array(128);\n for (let e2 = 0;e2 < y.length; e2++) {\n let t2 = y.charCodeAt(e2);\n ce2[e2] = t2, le2[t2] = e2;\n }\n function b2(e2, t2) {\n let n2 = 0, r2 = 0, i3 = 0;\n do\n i3 = le2[e2.next()], n2 |= (i3 & 31) << r2, r2 += 5;\n while (i3 & 32);\n let a3 = n2 & 1;\n return n2 >>>= 1, a3 && (n2 = -2147483648 | -n2), t2 + n2;\n }\n function ue2(e2, t2) {\n return e2.pos >= t2 ? false : e2.peek() !== se2;\n }\n var de2 = class {\n constructor(e2) {\n this.pos = 0, this.buffer = e2;\n }\n next() {\n return this.buffer.charCodeAt(this.pos++);\n }\n peek() {\n return this.buffer.charCodeAt(this.pos);\n }\n indexOf(e2) {\n let { buffer: t2, pos: n2 } = this, r2 = t2.indexOf(e2, n2);\n return r2 === -1 ? t2.length : r2;\n }\n };\n function x2(e2) {\n let { length: t2 } = e2, n2 = new de2(e2), r2 = [], i3 = 0, a3 = 0, o3 = 0, s3 = 0, c3 = 0;\n do {\n let e3 = n2.indexOf(`;`), t3 = [], l3 = true, u3 = 0;\n for (i3 = 0;n2.pos < e3; ) {\n let r3;\n i3 = b2(n2, i3), i3 < u3 && (l3 = false), u3 = i3, ue2(n2, e3) ? (a3 = b2(n2, a3), o3 = b2(n2, o3), s3 = b2(n2, s3), ue2(n2, e3) ? (c3 = b2(n2, c3), r3 = [i3, a3, o3, s3, c3]) : r3 = [i3, a3, o3, s3]) : r3 = [i3], t3.push(r3), n2.pos++;\n }\n l3 || fe2(t3), r2.push(t3), n2.pos = e3 + 1;\n } while (n2.pos <= t2);\n return r2;\n }\n function fe2(e2) {\n e2.sort(pe2);\n }\n function pe2(e2, t2) {\n return e2[0] - t2[0];\n }\n var S2 = /^[a-zA-Z][a-zA-Z\\d+\\-.]*:/;\n var me2 = /^data:application\\/json[^,]+base64,/;\n var he2 = /(?:\\/\\/[@#][ \\t]+sourceMappingURL=([^\\s'\"]+?)[ \\t]*$)|(?:\\/\\*[@#][ \\t]+sourceMappingURL=([^*]+?)[ \\t]*(?:\\*\\/)[ \\t]*$)/;\n var C2 = new Map;\n var w2 = new Map;\n var T2 = (e2, t2, n2, r2) => {\n if (n2 < 0 || n2 >= e2.length)\n return null;\n let i3 = e2[n2];\n if (!i3 || i3.length === 0)\n return null;\n let a3 = null;\n for (let e3 of i3)\n if (e3[0] <= r2)\n a3 = e3;\n else\n break;\n if (!a3 || a3.length < 4)\n return null;\n let [, o3, s3, c3] = a3;\n if (o3 === undefined || s3 === undefined || c3 === undefined)\n return null;\n let l3 = t2[o3];\n return l3 ? { columnNumber: c3, fileName: l3, lineNumber: s3 + 1 } : null;\n };\n var E2 = (e2, t2, n2) => {\n if (e2.sections) {\n let r2 = null;\n for (let i4 of e2.sections)\n if (t2 > i4.offset.line || t2 === i4.offset.line && n2 >= i4.offset.column)\n r2 = i4;\n else\n break;\n if (!r2)\n return null;\n let i3 = t2 - r2.offset.line, a3 = t2 === r2.offset.line ? n2 - r2.offset.column : n2;\n return T2(r2.map.mappings, r2.map.sources, i3, a3);\n }\n return T2(e2.mappings, e2.sources, t2 - 1, n2);\n };\n var ge2 = (e2, t2) => {\n let n2 = t2.split(`\n`), r2;\n for (let e3 = n2.length - 1;e3 >= 0 && !r2; e3--) {\n let t3 = n2[e3].match(he2);\n t3 && (r2 = t3[1] || t3[2]);\n }\n if (!r2)\n return null;\n let i3 = S2.test(r2);\n if (!(me2.test(r2) || i3 || r2.startsWith(`/`))) {\n let t3 = e2.split(`/`);\n t3[t3.length - 1] = r2, r2 = t3.join(`/`);\n }\n return r2;\n };\n var _e2 = (e2) => ({ file: e2.file, mappings: x2(e2.mappings), names: e2.names, sourceRoot: e2.sourceRoot, sources: e2.sources, sourcesContent: e2.sourcesContent, version: 3 });\n var ve2 = (e2) => {\n let t2 = e2.sections.map(({ map: e3, offset: t3 }) => ({ map: { ...e3, mappings: x2(e3.mappings) }, offset: t3 })), n2 = new Set;\n for (let e3 of t2)\n for (let t3 of e3.map.sources)\n n2.add(t3);\n return { file: e2.file, mappings: [], names: [], sections: t2, sourceRoot: undefined, sources: Array.from(n2), sourcesContent: undefined, version: 3 };\n };\n var D2 = (e2) => {\n if (!e2)\n return false;\n let t2 = e2.trim();\n if (!t2)\n return false;\n let n2 = t2.match(S2);\n if (!n2)\n return true;\n let r2 = n2[0].toLowerCase();\n return r2 === `http:` || r2 === `https:`;\n };\n var ye2 = async (e2, t2 = fetch) => {\n if (!D2(e2))\n return null;\n let n2 = await t2(e2);\n if (!n2.ok)\n return null;\n let r2 = await n2.text();\n if (!r2)\n return null;\n let i3 = ge2(e2, r2);\n if (!i3 || !D2(i3))\n return null;\n let a3 = await t2(i3);\n if (!a3.ok)\n return null;\n try {\n let e3 = await a3.json();\n return `sections` in e3 ? ve2(e3) : _e2(e3);\n } catch {\n return null;\n }\n };\n var O2 = async (e2, t2 = true, n2) => {\n if (t2 && C2.has(e2))\n return C2.get(e2) ?? null;\n let r2 = t2 ? w2.get(e2) : undefined;\n if (r2)\n return (await r2).sourceMap;\n let i3 = ye2(e2, n2).then((e3) => ({ sourceMap: e3, isTransientFailure: false }), () => ({ sourceMap: null, isTransientFailure: true }));\n t2 && w2.set(e2, i3);\n let { sourceMap: a3, isTransientFailure: o3 } = await i3;\n return t2 && (w2.delete(e2), o3 || C2.set(e2, a3)), a3;\n };\n var be2 = async (e2, t2 = true, n2) => await Promise.all(e2.map(async (e3) => {\n if (!e3.fileName)\n return e3;\n let r2 = await O2(e3.fileName, t2, n2);\n if (!r2 || typeof e3.lineNumber != `number` || typeof e3.columnNumber != `number`)\n return e3;\n let i3 = E2(r2, e3.lineNumber, e3.columnNumber);\n return i3 ? { ...e3, source: i3.fileName && e3.source ? e3.source.replace(e3.fileName, i3.fileName) : e3.source, fileName: i3.fileName, lineNumber: i3.lineNumber, columnNumber: i3.columnNumber, isSymbolicated: true } : e3;\n }));\n var xe2 = (e2) => e2._debugStack instanceof Error && typeof e2._debugStack?.stack == `string`;\n var Se2 = () => {\n let n2 = h();\n for (let t2 of [...Array.from(d), ...Array.from(n2.renderers.values())]) {\n let e2 = t2.currentDispatcherRef;\n if (e2 && typeof e2 == `object`)\n return `H` in e2 ? e2.H : e2.current;\n }\n return null;\n };\n var Ce2 = (t2) => {\n for (let n2 of d) {\n let e2 = n2.currentDispatcherRef;\n e2 && typeof e2 == `object` && (`H` in e2 ? e2.H = t2 : e2.current = t2);\n }\n };\n var k2 = (e2) => `\n in ${e2}`;\n var we2 = (e2, t2) => {\n let n2 = k2(e2);\n return t2 && (n2 += ` (at ${t2})`), n2;\n };\n var A2 = false;\n var j2 = (e2, t2) => {\n if (!e2 || A2)\n return ``;\n let r2 = Error.prepareStackTrace;\n Error.prepareStackTrace = undefined, A2 = true;\n let i3 = Se2();\n Ce2(null);\n let { error: a3, warn: o3 } = console;\n console.error = () => {}, console.warn = () => {};\n try {\n let r3 = { DetermineComponentFrameRoot() {\n let n2;\n try {\n if (t2) {\n let t3 = function() {\n throw Error();\n };\n if (Object.defineProperty(t3.prototype, `props`, { set: function() {\n throw Error();\n } }), typeof Reflect == `object` && Reflect.construct) {\n try {\n Reflect.construct(t3, []);\n } catch (e3) {\n n2 = e3;\n }\n Reflect.construct(e2, [], t3);\n } else {\n try {\n t3.call();\n } catch (e3) {\n n2 = e3;\n }\n e2.call(t3.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (e3) {\n n2 = e3;\n }\n let t3 = e2();\n t3 && typeof t3.catch == `function` && t3.catch(() => {});\n }\n } catch (e3) {\n if (e3 instanceof Error && n2 instanceof Error && typeof e3.stack == `string`)\n return [e3.stack, n2.stack];\n }\n return [null, null];\n } };\n r3.DetermineComponentFrameRoot.displayName = `DetermineComponentFrameRoot`, Object.getOwnPropertyDescriptor(r3.DetermineComponentFrameRoot, `name`)?.configurable && Object.defineProperty(r3.DetermineComponentFrameRoot, `name`, { value: `DetermineComponentFrameRoot` });\n let [i4, a4] = r3.DetermineComponentFrameRoot();\n if (i4 && a4) {\n let t3 = i4.split(`\n`), r4 = a4.split(`\n`), o4 = 0, s4 = 0;\n for (;o4 < t3.length && !t3[o4].includes(`DetermineComponentFrameRoot`); )\n o4++;\n for (;s4 < r4.length && !r4[s4].includes(`DetermineComponentFrameRoot`); )\n s4++;\n if (o4 === t3.length || s4 === r4.length)\n for (o4 = t3.length - 1, s4 = r4.length - 1;o4 >= 1 && s4 >= 0 && t3[o4] !== r4[s4]; )\n s4--;\n for (;o4 >= 1 && s4 >= 0; o4--, s4--)\n if (t3[o4] !== r4[s4]) {\n if (o4 !== 1 || s4 !== 1)\n do\n if (o4--, s4--, s4 < 0 || t3[o4] !== r4[s4]) {\n let r5 = `\n${t3[o4].replace(` at new `, ` at `)}`, i5 = Ee(e2);\n return i5 && r5.includes(`<anonymous>`) && (r5 = r5.replace(`<anonymous>`, i5)), r5;\n }\n while (o4 >= 1 && s4 >= 0);\n break;\n }\n }\n } finally {\n A2 = false, Error.prepareStackTrace = r2, Ce2(i3), console.error = a3, console.warn = o3;\n }\n let s3 = e2 ? Ee(e2) : ``;\n return s3 ? k2(s3) : ``;\n };\n var M2 = (e2, t2) => {\n let n2 = e2.tag, r2 = ``;\n switch (n2) {\n case 28:\n r2 = k2(`Activity`);\n break;\n case 1:\n r2 = j2(e2.type, true);\n break;\n case 11:\n r2 = j2(e2.type.render, false);\n break;\n case 0:\n case 15:\n r2 = j2(e2.type, false);\n break;\n case 5:\n case 26:\n case 27:\n r2 = k2(e2.type);\n break;\n case 16:\n r2 = k2(`Lazy`);\n break;\n case 13:\n r2 = e2.child !== t2 && t2 !== null ? k2(`Suspense Fallback`) : k2(`Suspense`);\n break;\n case 19:\n r2 = k2(`SuspenseList`);\n break;\n case 30:\n r2 = k2(`ViewTransition`);\n break;\n default:\n return ``;\n }\n return r2;\n };\n var N2 = (e2) => {\n try {\n let t2 = ``, n2 = e2, r2 = null;\n do {\n t2 += M2(n2, r2);\n let e3 = n2._debugInfo;\n if (e3 && Array.isArray(e3))\n for (let n3 = e3.length - 1;n3 >= 0; n3--) {\n let r3 = e3[n3];\n typeof r3.name == `string` && (t2 += we2(r3.name, r3.env));\n }\n r2 = n2, n2 = n2.return;\n } while (n2);\n return t2;\n } catch (e3) {\n return e3 instanceof Error ? `\nError generating stack: ${e3.message}\n${e3.stack}` : ``;\n }\n };\n var P2 = (e2) => {\n let t2 = Error.prepareStackTrace;\n Error.prepareStackTrace = undefined;\n let n2 = e2;\n if (!n2)\n return ``;\n Error.prepareStackTrace = t2, n2.startsWith(`Error: react-stack-top-frame\n`) && (n2 = n2.slice(29));\n let r2 = n2.indexOf(`\n`);\n if (r2 !== -1 && (n2 = n2.slice(r2 + 1)), r2 = Math.max(n2.indexOf(`react_stack_bottom_frame`), n2.indexOf(`react-stack-bottom-frame`)), r2 !== -1 && (r2 = n2.lastIndexOf(`\n`, r2)), r2 !== -1)\n n2 = n2.slice(0, r2);\n else\n return ``;\n return n2;\n };\n var Te2 = (e2) => !!(e2.functionName && e2.fileName && (e2.fileName.startsWith(`rsc://`) || e2.fileName.startsWith(`about://React/`)));\n var Ee2 = (e2, t2) => e2.fileName === t2.fileName && e2.lineNumber === t2.lineNumber && e2.columnNumber === t2.columnNumber;\n var De2 = (e2) => {\n let t2 = new Map;\n for (let n2 of e2)\n for (let e3 of n2.stackFrames) {\n if (!Te2(e3))\n continue;\n let n3 = e3.functionName, r2 = t2.get(n3) ?? [];\n r2.some((t3) => Ee2(t3, e3)) || (r2.push(e3), t2.set(n3, r2));\n }\n return t2;\n };\n var Oe2 = (e2, t2, n2) => {\n if (!e2.functionName)\n return { ...e2, isServer: true };\n let r2 = t2.get(e2.functionName);\n if (!r2 || r2.length === 0)\n return { ...e2, isServer: true };\n let i3 = n2.get(e2.functionName) ?? 0, a3 = r2[i3 % r2.length];\n return n2.set(e2.functionName, i3 + 1), { ...e2, isServer: true, fileName: a3.fileName, lineNumber: a3.lineNumber, columnNumber: a3.columnNumber, source: e2.source?.replace(`(at Server)`, `(${a3.fileName}:${a3.lineNumber}:${a3.columnNumber})`) };\n };\n var ke = (e2) => {\n let t2 = [];\n return A(e2, (e3) => {\n if (!xe2(e3))\n return;\n let r2 = typeof e3.type == `string` ? e3.type : Ee(e3.type) || `<anonymous>`;\n t2.push({ componentName: r2, stackFrames: m3(P2(e3._debugStack?.stack)) });\n }, true), t2;\n };\n var F = async (e2, t2 = true, n2) => {\n let r2 = ke(e2), i3 = m3(N2(e2)), a3 = De2(r2), o3 = new Map;\n return be2(i3.map((e3) => (e3.source?.includes(`(at Server)`) ?? false) || e3.source != null && u2.test(e3.source) ? Oe2(e3, a3, o3) : e3).filter((e3, t3, n3) => {\n if (t3 === 0)\n return true;\n let r3 = n3[t3 - 1];\n return e3.functionName !== r3.functionName;\n }), t2, n2);\n };\n var I2 = (e2) => {\n let t2 = e2._debugSource;\n return t2 ? typeof t2 == `object` && !!t2 && `fileName` in t2 && typeof t2.fileName == `string` && `lineNumber` in t2 && typeof t2.lineNumber == `number` : false;\n };\n var Ae2 = async (e2, t2 = true, n2) => {\n if (I2(e2))\n return e2._debugSource || null;\n let r2 = await F(e2, t2, n2);\n for (let e3 of r2)\n if (e3.fileName)\n return { fileName: e3.fileName, lineNumber: e3.lineNumber, columnNumber: e3.columnNumber, functionName: e3.functionName };\n return null;\n };\n var L2 = (e2) => e2.split(`/`).filter(Boolean).length;\n var je2 = (e2) => e2.split(`/`).filter(Boolean)[0] ?? null;\n var Me2 = (e2) => {\n let t2 = e2.indexOf(`/`, 1);\n if (t2 === -1 || L2(e2.slice(0, t2)) !== 1)\n return e2;\n let n2 = e2.slice(t2);\n if (!s2.test(n2) || L2(n2) < 2)\n return e2;\n let r2 = je2(n2);\n return !r2 || r2.startsWith(`@`) || r2.length > 4 ? e2 : n2;\n };\n var R2 = (e2) => {\n if (!e2 || o2.some((t3) => t3 === e2))\n return ``;\n let t2 = e2, n2 = t2.startsWith(`http://`) || t2.startsWith(`https://`);\n if (n2)\n try {\n t2 = new URL(t2).pathname;\n } catch {}\n if (n2 && (t2 = Me2(t2)), t2.startsWith(`about://React/`)) {\n let e3 = t2.slice(14), n3 = e3.indexOf(`/`), r3 = e3.indexOf(`:`);\n t2 = n3 !== -1 && (r3 === -1 || n3 < r3) ? e3.slice(n3 + 1) : e3;\n }\n let r2 = true;\n for (;r2; ) {\n r2 = false;\n for (let e3 of a2)\n if (t2.startsWith(e3)) {\n t2 = t2.slice(e3.length), e3 === `file:///` && (t2 = `/${t2.replace(/^\\/+/, ``)}`), r2 = true;\n break;\n }\n }\n if (i2.test(t2)) {\n let e3 = t2.match(i2);\n e3 && (t2 = t2.slice(e3[0].length));\n }\n if (t2.startsWith(`//`)) {\n let e3 = t2.indexOf(`/`, 2);\n t2 = e3 === -1 ? `` : t2.slice(e3);\n }\n let s3 = t2.indexOf(`?`);\n if (s3 !== -1) {\n let e3 = t2.slice(s3);\n l2.test(e3) && (t2 = t2.slice(0, s3));\n }\n return t2;\n };\n var Ne2 = (e2) => {\n let t2 = R2(e2);\n return !(!t2 || !s2.test(t2) || c2.test(t2));\n };\n var z2 = Symbol.for(`react.context`);\n var Ie2 = Symbol.for(`react.memo_cache_sentinel`);\n var B2 = [];\n var H2 = null;\n var U2 = null;\n var W = null;\n var G = 0;\n var K = null;\n var q2 = Error(\"Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render.\");\n var Y = () => {\n let e2 = U2;\n return e2 !== null && (U2 = e2.next), e2;\n };\n var X2 = (e2) => {\n if (H2 === null)\n return e2._currentValue;\n if (W === null)\n throw Error(`Context reads do not line up with context dependencies.`);\n if (Object.prototype.hasOwnProperty.call(W, `memoizedValue`)) {\n let e3 = W.memoizedValue;\n return W = W.next, e3;\n }\n return e2._currentValue;\n };\n var Z2 = (e2, t2, n2, r2 = null) => {\n B2.push({ displayName: r2, primitive: e2, stackError: Error(), value: t2, dispatcherHookName: n2 });\n };\n var Be = (e2) => {\n if (typeof e2 == `object` && e2) {\n let t2 = e2;\n if (typeof t2.then == `function`) {\n let e3 = K !== null && G < K.length ? K[G++] : t2;\n switch (e3.status) {\n case `fulfilled`:\n return Z2(`Promise`, e3.value, `Use`), e3.value;\n case `rejected`:\n throw e3.reason;\n }\n throw Z2(`Unresolved`, e3, `Use`), q2;\n }\n if (t2.$$typeof === z2 && `_currentValue` in t2) {\n let e3 = t2, n2 = X2(e3);\n return Z2(`Context (use)`, n2, `Use`, e3.displayName || `Context`), n2;\n }\n }\n throw Error(`An unsupported type was passed to use(): ` + String(e2));\n };\n var Ve = (e2) => {\n let t2 = X2(e2);\n return Z2(`Context`, t2, `Context`, e2.displayName || null), t2;\n };\n var He = (e2) => {\n let t2 = Y(), n2 = t2 === null ? typeof e2 == `function` ? e2() : e2 : t2.memoizedState;\n return Z2(`State`, n2, `State`), [n2, () => {}];\n };\n var Ue = (e2, t2, n2) => {\n let r2 = Y(), i3 = r2 === null ? n2 === undefined ? t2 : n2(t2) : r2.memoizedState;\n return Z2(`Reducer`, i3, `Reducer`), [i3, () => {}];\n };\n var We = (e2) => {\n let t2 = Y(), n2 = t2 === null ? { current: e2 } : t2.memoizedState;\n return Z2(`Ref`, n2.current, `Ref`), n2;\n };\n var Ge = () => {\n let e2 = Y();\n return Z2(`CacheRefresh`, e2 === null ? () => {} : e2.memoizedState, `CacheRefresh`), () => {};\n };\n var Ke = (e2) => {\n Y(), Z2(`LayoutEffect`, e2, `LayoutEffect`);\n };\n var qe = (e2) => {\n Y(), Z2(`InsertionEffect`, e2, `InsertionEffect`);\n };\n var Je = (e2) => {\n Y(), Z2(`Effect`, e2, `Effect`);\n };\n var Ye = (e2) => {\n Y();\n let t2;\n typeof e2 == `object` && e2 && `current` in e2 && (t2 = e2.current), Z2(`ImperativeHandle`, t2, `ImperativeHandle`);\n };\n var Xe = (e2, t2) => {\n Z2(`DebugValue`, typeof t2 == `function` ? t2(e2) : e2, `DebugValue`);\n };\n var Ze = (e2) => {\n let t2 = Y();\n return Z2(`Callback`, t2 === null ? e2 : t2.memoizedState[0], `Callback`), e2;\n };\n var Qe = (e2) => {\n let t2 = Y(), n2 = t2 === null ? e2() : t2.memoizedState[0];\n return Z2(`Memo`, n2, `Memo`), n2;\n };\n var $e = (e2, t2) => {\n let n2 = Y();\n Y();\n let r2 = n2 === null ? t2() : n2.memoizedState;\n return Z2(`SyncExternalStore`, r2, `SyncExternalStore`), r2;\n };\n var et = () => {\n let e2 = Y();\n Y();\n let t2 = e2 === null ? false : e2.memoizedState;\n return Z2(`Transition`, t2, `Transition`), [t2, () => {}];\n };\n var tt = (e2) => {\n let t2 = Y(), n2 = t2 === null ? e2 : t2.memoizedState;\n return Z2(`DeferredValue`, n2, `DeferredValue`), n2;\n };\n var nt = () => {\n let e2 = Y(), t2 = e2 === null ? `` : e2.memoizedState;\n return Z2(`Id`, t2, `Id`), t2;\n };\n var rt = (e2) => {\n let t2 = H2;\n if (t2 == null)\n return [];\n let n2 = t2.updateQueue?.memoCache;\n if (n2 == null)\n return [];\n let r2 = n2.data[n2.index];\n return r2 === undefined && (r2 = n2.data[n2.index] = Array.from({ length: e2 }, () => Ie2)), n2.index++, r2;\n };\n var it = (e2) => {\n let t2 = Y(), n2 = t2 === null ? e2 : t2.memoizedState;\n return Z2(`Optimistic`, n2, `Optimistic`), [n2, () => {}];\n };\n var at = (e2, t2) => {\n let n2, r2 = null;\n if (e2 !== null) {\n let t3 = e2.memoizedState;\n if (typeof t3 == `object` && t3 && `then` in t3 && typeof t3.then == `function`) {\n let e3 = t3;\n switch (e3.status) {\n case `fulfilled`:\n n2 = e3.value;\n break;\n case `rejected`:\n r2 = e3.reason;\n break;\n default:\n r2 = q2, n2 = e3;\n }\n } else\n n2 = t3;\n } else\n n2 = t2;\n return { value: n2, error: r2 };\n };\n var ot = (e2) => (t2, n2) => {\n let r2 = Y();\n Y(), Y();\n let i3 = Error(), { value: a3, error: o3 } = at(r2, n2);\n if (B2.push({ displayName: null, primitive: e2, stackError: i3, value: a3, dispatcherHookName: e2 }), o3 !== null)\n throw o3;\n return [a3, () => {}, false];\n };\n var st = ot(`ActionState`);\n var Q2 = { readContext: X2, use: Be, useCallback: Ze, useContext: Ve, useEffect: Je, useImperativeHandle: Ye, useLayoutEffect: Ke, useInsertionEffect: qe, useMemo: Qe, useReducer: Ue, useRef: We, useState: He, useDebugValue: Xe, useDeferredValue: tt, useTransition: et, useSyncExternalStore: $e, useId: nt, useHostTransitionStatus: () => {\n let e2 = X2({ _currentValue: null });\n return Z2(`HostTransitionStatus`, e2, `HostTransitionStatus`), e2;\n }, useFormState: ot(`FormState`), useActionState: st, useOptimistic: it, useMemoCache: rt, useCacheRefresh: Ge, useEffectEvent: (e2) => (Y(), Z2(`EffectEvent`, e2, `EffectEvent`), e2) };\n var ct = typeof Proxy > `u` ? Q2 : new Proxy(Q2, { get(e2, t2) {\n if (Object.prototype.hasOwnProperty.call(e2, t2))\n return e2[t2];\n let n2 = Error(`Missing method in Dispatcher: ` + t2);\n throw n2.name = `ReactDebugToolsUnsupportedHookError`, n2;\n } });\n var gt = new Set([`Context`, `Context (use)`, `DebugValue`, `Promise`, `Unresolved`, `HostTransitionStatus`]);\n var kt = new Set([`Effect`, `LayoutEffect`, `InsertionEffect`, `ImperativeHandle`, `DebugValue`]);\n\n // dist/_bippy-entry-53465-1784102736730.js\n globalThis.__bippy = {\n getFiberFromHostInstance: Pe,\n getDisplayName: Ee,\n traverseFiber: A,\n isCompositeFiber: be,\n isHostFiber: b,\n getSource: Ae2,\n getOwnerStack: F,\n normalizeFileName: R2,\n isSourceFile: Ne2\n };\n})();\n";
|
|
1567
1567
|
//#endregion
|
|
1568
1568
|
//#region src/rrweb-recording.ts
|
|
1569
1569
|
var activeRrwebRecordings = /* @__PURE__ */ new Map();
|
|
@@ -2270,7 +2270,7 @@ var ConnectionManager = class {
|
|
|
2270
2270
|
if (identity.email) relayUrl.searchParams.set("email", identity.email);
|
|
2271
2271
|
if (identity.id) relayUrl.searchParams.set("id", identity.id);
|
|
2272
2272
|
if (identity.installId) relayUrl.searchParams.set("installId", identity.installId);
|
|
2273
|
-
relayUrl.searchParams.set("v", "
|
|
2273
|
+
relayUrl.searchParams.set("v", "2.0.0");
|
|
2274
2274
|
relayUrl.searchParams.set("protocolVersion", String(1));
|
|
2275
2275
|
relayUrl.searchParams.set("features", CURRENT_EXTENSION_FEATURES.join(","));
|
|
2276
2276
|
logger.debug("Creating WebSocket connection to:", relayUrl);
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
}
|
|
30
30
|
})();
|
|
31
31
|
//#endregion
|
|
32
|
-
//#region
|
|
32
|
+
//#region ../../playwriter/node_modules/.pnpm/rrweb@2.1.0/node_modules/rrweb/dist/rrweb.js
|
|
33
33
|
var __defProp = Object.defineProperty;
|
|
34
34
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
|
|
35
35
|
enumerable: true,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var TabwrightRrwebRecorder = (() => {
|
|
3
|
-
//
|
|
3
|
+
// ../../playwriter/node_modules/.pnpm/rrweb@2.1.0/node_modules/rrweb/dist/rrweb.js
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
5
5
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
6
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist/readability.js
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
};
|
|
32
32
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
33
33
|
|
|
34
|
-
//
|
|
34
|
+
// ../../playwriter/node_modules/.pnpm/@mozilla+readability@0.6.0/node_modules/@mozilla/readability/Readability.js
|
|
35
35
|
var require_Readability = __commonJS((exports, module) => {
|
|
36
36
|
function Readability(doc, options) {
|
|
37
37
|
if (options && options.documentElement) {
|
|
@@ -1602,7 +1602,7 @@
|
|
|
1602
1602
|
}
|
|
1603
1603
|
});
|
|
1604
1604
|
|
|
1605
|
-
//
|
|
1605
|
+
// ../../playwriter/node_modules/.pnpm/@mozilla+readability@0.6.0/node_modules/@mozilla/readability/Readability-readerable.js
|
|
1606
1606
|
var require_Readability_readerable = __commonJS((exports, module) => {
|
|
1607
1607
|
var REGEXPS = {
|
|
1608
1608
|
unlikelyCandidates: /-ad-|ai2html|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|footer|gdpr|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i,
|
|
@@ -1658,7 +1658,7 @@
|
|
|
1658
1658
|
}
|
|
1659
1659
|
});
|
|
1660
1660
|
|
|
1661
|
-
//
|
|
1661
|
+
// ../../playwriter/node_modules/.pnpm/@mozilla+readability@0.6.0/node_modules/@mozilla/readability/index.js
|
|
1662
1662
|
var require_readability = __commonJS((exports, module) => {
|
|
1663
1663
|
var Readability = require_Readability();
|
|
1664
1664
|
var isProbablyReaderable = require_Readability_readerable();
|
|
@@ -1668,7 +1668,7 @@
|
|
|
1668
1668
|
};
|
|
1669
1669
|
});
|
|
1670
1670
|
|
|
1671
|
-
// dist/_readability-entry-
|
|
1671
|
+
// dist/_readability-entry-53465-1784102736730.js
|
|
1672
1672
|
var import_readability = __toESM(require_readability(), 1);
|
|
1673
1673
|
globalThis.__readability = { Readability: import_readability.Readability, isProbablyReaderable: import_readability.isProbablyReaderable };
|
|
1674
1674
|
})();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
(() => {
|
|
2
|
-
//
|
|
2
|
+
// ../../playwriter/node_modules/.pnpm/@mizchi+selector-generator@1.50.0-next/node_modules/@mizchi/selector-generator/dist/index.js
|
|
3
3
|
var __create = Object.create;
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
5
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -7373,6 +7373,6 @@ x-locator-editor.does-not-match {
|
|
|
7373
7373
|
return asLocator2(lang, selector);
|
|
7374
7374
|
}
|
|
7375
7375
|
|
|
7376
|
-
// dist/_selector-generator-entry-
|
|
7376
|
+
// dist/_selector-generator-entry-53465-1784102736728.js
|
|
7377
7377
|
globalThis.__selectorGenerator = { createSelectorGenerator, toLocator };
|
|
7378
7378
|
})();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tabwright",
|
|
3
3
|
"description": "Let AI agents control your existing Chrome through a local CLI and MCP server.",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
14
|
"dist",
|
|
15
|
-
"src/agent-skills",
|
|
16
15
|
"src/skill.md",
|
|
17
16
|
"bin.js",
|
|
18
17
|
"readme.md"
|
package/readme.md
CHANGED
|
@@ -32,4 +32,12 @@ Use the published package without installing it globally:
|
|
|
32
32
|
npx tabwright@latest session new
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
+
Install one capability directly from a tagged private Git repository without cloning it:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
tabwright capability install 'git@example.com:team/capabilities.git#v1.0.0:capabilities/query-user'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Git and access to the repository are required. Add `--with-agent-skill` only after reviewing a packaged agent skill.
|
|
42
|
+
|
|
35
43
|
Run `tabwright skill` for the complete CLI and browser automation reference. See the [GitHub repository](https://github.com/Yuyang-Hou/tabwright) for architecture, development, remote access, and release documentation.
|
package/src/skill.md
CHANGED
|
@@ -304,16 +304,19 @@ tabwright capability update bilibili-current-user --contract-file contract.json
|
|
|
304
304
|
tabwright capability trust query-user
|
|
305
305
|
```
|
|
306
306
|
|
|
307
|
-
Share a user-authored capability as a sanitized `.tgz`, or install it directly from a directory
|
|
307
|
+
Share a user-authored capability as a sanitized `.tgz`, or install it directly from a directory, HTTPS `.tgz` URL, or one directory in a Git repository:
|
|
308
308
|
|
|
309
309
|
```bash
|
|
310
310
|
tabwright capability pack query-user
|
|
311
311
|
tabwright capability install ./query-user.tgz
|
|
312
312
|
tabwright capability install ../shared-capabilities/query-user --project
|
|
313
313
|
tabwright capability install https://example.com/query-user.tgz
|
|
314
|
+
tabwright capability install 'git@example.com:team/capabilities.git#v1.0.0:capabilities/query-user'
|
|
314
315
|
```
|
|
315
316
|
|
|
316
|
-
|
|
317
|
+
Git sources use `<remote>#<ref>:<capability-path>`. Tabwright runs `git archive` against that ref and reads only the selected capability directory, so private SSH repositories can be installed in one command without cloning. Pin a release tag instead of a moving branch for reproducible installs.
|
|
318
|
+
|
|
319
|
+
Capability packages contain only `capability.json`, the configured entry script, optional `README.md`, and optional `agent-skills/`. The pack command excludes `secrets.json`, `runs.jsonl`, and `artifacts/`. A shared capability always installs as `draft`, even if its author trusted it locally. Inspect its contract and script, refresh auth with the recipient's own browser session when needed, validate it with `capability run --force`, and only then trust it. Packaged agent skills are not installed by default because they influence agent behavior; review one and run `capability skill install <id>`, or explicitly pass `--with-agent-skill`.
|
|
317
320
|
|
|
318
321
|
When an AI is turning a user workflow into a durable capability, keep these responsibilities separate:
|
|
319
322
|
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { type CapabilityLocation, type CapabilityRecord } from './capability-registry.js';
|
|
2
|
-
export interface InstallBuiltinCapabilitySuiteOptions {
|
|
3
|
-
suite: string;
|
|
4
|
-
cwd?: string;
|
|
5
|
-
location?: CapabilityLocation;
|
|
6
|
-
overwrite?: boolean;
|
|
7
|
-
trust?: boolean;
|
|
8
|
-
installAgentSkills?: boolean;
|
|
9
|
-
codexHome?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface InstalledBuiltinCapabilitySuite {
|
|
12
|
-
suite: string;
|
|
13
|
-
capabilities: CapabilityRecord[];
|
|
14
|
-
agentSkills: InstalledBuiltinAgentSkill[];
|
|
15
|
-
}
|
|
16
|
-
export declare function isBuiltinCapabilitySuite(suite: string): suite is 'conan-config';
|
|
17
|
-
export interface InstalledBuiltinAgentSkillFile {
|
|
18
|
-
path: string;
|
|
19
|
-
status: 'created' | 'updated' | 'unchanged';
|
|
20
|
-
}
|
|
21
|
-
export interface InstalledBuiltinAgentSkill {
|
|
22
|
-
target: 'codex';
|
|
23
|
-
name: string;
|
|
24
|
-
dir: string;
|
|
25
|
-
files: InstalledBuiltinAgentSkillFile[];
|
|
26
|
-
}
|
|
27
|
-
export declare function installBuiltinCapabilitySuite(options: InstallBuiltinCapabilitySuiteOptions): InstalledBuiltinCapabilitySuite;
|