tauri-agent-tools 0.5.0 → 0.6.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/.agents/skills/tauri-agent-tools/SKILL.md +105 -12
- package/.agents/skills/tauri-bridge-setup/SKILL.md +42 -6
- package/AGENTS.md +9 -7
- package/README.md +53 -13
- package/dist/bridge/client.d.ts +5 -2
- package/dist/bridge/client.js +38 -3
- package/dist/bridge/client.js.map +1 -1
- package/dist/cli.js +22 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/capture.d.ts +3 -0
- package/dist/commands/capture.js +218 -0
- package/dist/commands/capture.js.map +1 -0
- package/dist/commands/check.d.ts +5 -0
- package/dist/commands/check.js +174 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/diff.js +6 -2
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/eval.js +16 -3
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/interact/click.d.ts +6 -0
- package/dist/commands/interact/click.js +102 -0
- package/dist/commands/interact/click.js.map +1 -0
- package/dist/commands/interact/focus.d.ts +3 -0
- package/dist/commands/interact/focus.js +40 -0
- package/dist/commands/interact/focus.js.map +1 -0
- package/dist/commands/interact/navigate.d.ts +3 -0
- package/dist/commands/interact/navigate.js +49 -0
- package/dist/commands/interact/navigate.js.map +1 -0
- package/dist/commands/interact/scroll.d.ts +11 -0
- package/dist/commands/interact/scroll.js +110 -0
- package/dist/commands/interact/scroll.js.map +1 -0
- package/dist/commands/interact/select.d.ts +3 -0
- package/dist/commands/interact/select.js +59 -0
- package/dist/commands/interact/select.js.map +1 -0
- package/dist/commands/interact/shared.d.ts +23 -0
- package/dist/commands/interact/shared.js +62 -0
- package/dist/commands/interact/shared.js.map +1 -0
- package/dist/commands/interact/type.d.ts +6 -0
- package/dist/commands/interact/type.js +59 -0
- package/dist/commands/interact/type.js.map +1 -0
- package/dist/commands/invoke.d.ts +3 -0
- package/dist/commands/invoke.js +53 -0
- package/dist/commands/invoke.js.map +1 -0
- package/dist/commands/probe.d.ts +2 -0
- package/dist/commands/probe.js +117 -0
- package/dist/commands/probe.js.map +1 -0
- package/dist/commands/shared.d.ts +10 -4
- package/dist/commands/shared.js +23 -3
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/storeInspect.d.ts +13 -0
- package/dist/commands/storeInspect.js +156 -0
- package/dist/commands/storeInspect.js.map +1 -0
- package/dist/platform/detect.js +65 -37
- package/dist/platform/detect.js.map +1 -1
- package/dist/platform/x11.js +3 -1
- package/dist/platform/x11.js.map +1 -1
- package/dist/schemas/bridge.d.ts +34 -0
- package/dist/schemas/bridge.js +13 -0
- package/dist/schemas/bridge.js.map +1 -1
- package/dist/schemas/commands.d.ts +126 -0
- package/dist/schemas/commands.js +28 -0
- package/dist/schemas/commands.js.map +1 -1
- package/dist/schemas/index.d.ts +3 -2
- package/dist/schemas/index.js +3 -2
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/interact.d.ts +118 -0
- package/dist/schemas/interact.js +31 -0
- package/dist/schemas/interact.js.map +1 -0
- package/dist/util/image.js +5 -2
- package/dist/util/image.js.map +1 -1
- package/dist/util/magick.d.ts +21 -0
- package/dist/util/magick.js +46 -0
- package/dist/util/magick.js.map +1 -0
- package/examples/tauri-bridge/src/dev_bridge.rs +88 -2
- package/package.json +1 -1
- package/rust-bridge/README.md +7 -5
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { detectDisplayServer } from '../platform/detect.js';
|
|
3
|
+
import { addBridgeOptions, resolveBridge } from './shared.js';
|
|
4
|
+
import { discoverBridgesByPid, discoverBridge } from '../bridge/tokenDiscovery.js';
|
|
5
|
+
export function registerProbe(program) {
|
|
6
|
+
const cmd = new Command('probe')
|
|
7
|
+
.description('Discover and report Tauri app targets and bridge health')
|
|
8
|
+
.option('--json', 'Output as JSON');
|
|
9
|
+
addBridgeOptions(cmd);
|
|
10
|
+
cmd.action(async (opts) => {
|
|
11
|
+
// 1. Discover all bridges by PID
|
|
12
|
+
const bridgesByPid = await discoverBridgesByPid();
|
|
13
|
+
const allBridges = [...bridgesByPid.entries()].map(([pid, cfg]) => ({
|
|
14
|
+
pid,
|
|
15
|
+
port: cfg.port,
|
|
16
|
+
}));
|
|
17
|
+
// 2. Resolve specific bridge (may throw if none found)
|
|
18
|
+
const bridge = await resolveBridge(opts);
|
|
19
|
+
// 3. Ping
|
|
20
|
+
const alive = await bridge.ping();
|
|
21
|
+
// 4. Get version (graceful null on 404)
|
|
22
|
+
const versionInfo = await bridge.version();
|
|
23
|
+
// 5. Get describe (graceful null on 404)
|
|
24
|
+
const describeInfo = await bridge.describe();
|
|
25
|
+
// 6. Get page info via eval (try/catch each independently)
|
|
26
|
+
let url = null;
|
|
27
|
+
let title = null;
|
|
28
|
+
let viewport = null;
|
|
29
|
+
try {
|
|
30
|
+
url = String(await bridge.eval('window.location.href'));
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// bridge may be unreachable or page not loaded
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
title = String(await bridge.eval('document.title'));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// ignore
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
viewport = await bridge.getViewportSize();
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// ignore
|
|
46
|
+
}
|
|
47
|
+
// 7. Detect platform
|
|
48
|
+
const platform = detectDisplayServer();
|
|
49
|
+
// Determine the port for the target by checking opts or discovered bridge
|
|
50
|
+
let targetPort = opts.port;
|
|
51
|
+
if (targetPort === undefined) {
|
|
52
|
+
if (opts.pid !== undefined) {
|
|
53
|
+
const pidEntry = bridgesByPid.get(opts.pid);
|
|
54
|
+
targetPort = pidEntry?.port;
|
|
55
|
+
}
|
|
56
|
+
if (targetPort === undefined) {
|
|
57
|
+
const first = await discoverBridge();
|
|
58
|
+
targetPort = first?.port;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const result = {
|
|
62
|
+
bridges: allBridges,
|
|
63
|
+
target: {
|
|
64
|
+
alive,
|
|
65
|
+
version: versionInfo,
|
|
66
|
+
describe: describeInfo,
|
|
67
|
+
page: { url, title, viewport },
|
|
68
|
+
},
|
|
69
|
+
platform,
|
|
70
|
+
};
|
|
71
|
+
if (opts.json) {
|
|
72
|
+
console.log(JSON.stringify(result, null, 2));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// Human-readable output
|
|
76
|
+
console.log('=== Tauri Bridge Probe ===');
|
|
77
|
+
console.log('');
|
|
78
|
+
if (allBridges.length === 0) {
|
|
79
|
+
console.log('Running bridges: none');
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.log(`Running bridges: ${allBridges.length}`);
|
|
83
|
+
for (const b of allBridges) {
|
|
84
|
+
console.log(` PID ${b.pid} port ${b.port}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
console.log('');
|
|
88
|
+
console.log(`Platform: ${platform}`);
|
|
89
|
+
console.log(`Bridge alive: ${alive ? 'yes' : 'no'}`);
|
|
90
|
+
if (versionInfo) {
|
|
91
|
+
console.log(`Bridge version: ${versionInfo.version}`);
|
|
92
|
+
console.log(`Endpoints: ${versionInfo.endpoints.join(', ')}`);
|
|
93
|
+
}
|
|
94
|
+
if (describeInfo) {
|
|
95
|
+
if (describeInfo.app !== undefined)
|
|
96
|
+
console.log(`App: ${describeInfo.app}`);
|
|
97
|
+
if (describeInfo.pid !== undefined)
|
|
98
|
+
console.log(`App PID: ${describeInfo.pid}`);
|
|
99
|
+
if (describeInfo.windows !== undefined)
|
|
100
|
+
console.log(`Windows: ${describeInfo.windows.join(', ')}`);
|
|
101
|
+
if (describeInfo.capabilities !== undefined)
|
|
102
|
+
console.log(`Capabilities: ${describeInfo.capabilities.join(', ')}`);
|
|
103
|
+
}
|
|
104
|
+
console.log('');
|
|
105
|
+
console.log('Page:');
|
|
106
|
+
console.log(` URL: ${url ?? '(unavailable)'}`);
|
|
107
|
+
console.log(` Title: ${title ?? '(unavailable)'}`);
|
|
108
|
+
if (viewport) {
|
|
109
|
+
console.log(` Viewport: ${viewport.width}x${viewport.height}`);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
console.log(' Viewport: (unavailable)');
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
program.addCommand(cmd);
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/commands/probe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
2
|
import type { z } from 'zod';
|
|
3
3
|
import { BridgeClient } from '../bridge/client.js';
|
|
4
|
+
/**
|
|
5
|
+
* Options parsed from the bridge-related CLI flags.
|
|
6
|
+
*/
|
|
7
|
+
export interface BridgeOpts {
|
|
8
|
+
port?: number;
|
|
9
|
+
token?: string;
|
|
10
|
+
pid?: number;
|
|
11
|
+
windowLabel?: string;
|
|
12
|
+
}
|
|
4
13
|
/**
|
|
5
14
|
* Parse a value with a Zod enum schema, throwing a human-readable error on failure.
|
|
6
15
|
* Replaces raw `.parse()` calls that would surface cryptic ZodError messages.
|
|
7
16
|
*/
|
|
8
17
|
export declare function parseEnum<T extends [string, ...string[]]>(schema: z.ZodEnum<T>, value: string, label: string): T[number];
|
|
9
18
|
export declare function addBridgeOptions(cmd: Command): Command;
|
|
10
|
-
export declare function resolveBridge(opts:
|
|
11
|
-
port?: number;
|
|
12
|
-
token?: string;
|
|
13
|
-
}): Promise<BridgeClient>;
|
|
19
|
+
export declare function resolveBridge(opts: BridgeOpts): Promise<BridgeClient>;
|
package/dist/commands/shared.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BridgeClient } from '../bridge/client.js';
|
|
2
|
-
import { discoverBridge } from '../bridge/tokenDiscovery.js';
|
|
2
|
+
import { discoverBridge, discoverBridgesByPid } from '../bridge/tokenDiscovery.js';
|
|
3
3
|
/**
|
|
4
4
|
* Parse a value with a Zod enum schema, throwing a human-readable error on failure.
|
|
5
5
|
* Replaces raw `.parse()` calls that would surface cryptic ZodError messages.
|
|
@@ -14,14 +14,34 @@ export function parseEnum(schema, value, label) {
|
|
|
14
14
|
export function addBridgeOptions(cmd) {
|
|
15
15
|
return cmd
|
|
16
16
|
.option('--port <number>', 'Bridge port (auto-discover if omitted)', parseInt)
|
|
17
|
-
.option('--token <string>', 'Bridge token (auto-discover if omitted)')
|
|
17
|
+
.option('--token <string>', 'Bridge token (auto-discover if omitted)')
|
|
18
|
+
.option('--pid <number>', 'Target app PID (auto-discover if omitted)', parseInt)
|
|
19
|
+
.option('--window-label <label>', 'Target window label (default: main)');
|
|
18
20
|
}
|
|
19
21
|
export async function resolveBridge(opts) {
|
|
20
22
|
let config;
|
|
21
23
|
if (opts.port && opts.token) {
|
|
24
|
+
// Explicit port + token: skip discovery entirely
|
|
22
25
|
config = { port: opts.port, token: opts.token };
|
|
23
26
|
}
|
|
27
|
+
else if (opts.pid !== undefined) {
|
|
28
|
+
// PID-targeted discovery
|
|
29
|
+
const bridges = await discoverBridgesByPid();
|
|
30
|
+
const match = bridges.get(opts.pid);
|
|
31
|
+
if (!match) {
|
|
32
|
+
const pids = [...bridges.keys()];
|
|
33
|
+
const listing = pids.length > 0
|
|
34
|
+
? `Running bridges:\n${pids.map((p) => ` PID ${p}`).join('\n')}`
|
|
35
|
+
: 'No running bridges found.';
|
|
36
|
+
throw new Error(`No bridge found for PID ${opts.pid}.\n${listing}`);
|
|
37
|
+
}
|
|
38
|
+
config = {
|
|
39
|
+
port: opts.port ?? match.port,
|
|
40
|
+
token: opts.token ?? match.token,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
24
43
|
else {
|
|
44
|
+
// First-match discovery
|
|
25
45
|
const discovered = await discoverBridge();
|
|
26
46
|
if (!discovered) {
|
|
27
47
|
throw new Error('No bridge found. Either:\n' +
|
|
@@ -33,6 +53,6 @@ export async function resolveBridge(opts) {
|
|
|
33
53
|
token: opts.token ?? discovered.token,
|
|
34
54
|
};
|
|
35
55
|
}
|
|
36
|
-
return new BridgeClient(config);
|
|
56
|
+
return new BridgeClient(config, opts.windowLabel);
|
|
37
57
|
}
|
|
38
58
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAYnF;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,MAAoB,EACpB,KAAa,EACb,KAAa;IAEb,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,KAAK,qBAAqB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,GAAG;SACP,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,EAAE,QAAQ,CAAC;SAC7E,MAAM,CAAC,kBAAkB,EAAE,yCAAyC,CAAC;SACrE,MAAM,CAAC,gBAAgB,EAAE,2CAA2C,EAAE,QAAQ,CAAC;SAC/E,MAAM,CAAC,wBAAwB,EAAE,qCAAqC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAgB;IAClD,IAAI,MAAoB,CAAC;IAEzB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,iDAAiD;QACjD,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;SAAM,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAClC,yBAAyB;QACzB,MAAM,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,OAAO,GACX,IAAI,CAAC,MAAM,GAAG,CAAC;gBACb,CAAC,CAAC,qBAAqB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACjE,CAAC,CAAC,2BAA2B,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,GAAG,MAAM,OAAO,EAAE,CACnD,CAAC;QACJ,CAAC;QACD,MAAM,GAAG;YACP,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;SACjC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,wBAAwB;QACxB,MAAM,UAAU,GAAG,MAAM,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,4BAA4B;gBAC1B,mDAAmD;gBACnD,0CAA0C,CAC7C,CAAC;QACJ,CAAC;QACD,MAAM,GAAG;YACP,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;YAClC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;SACtC,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a JavaScript IIFE that detects and serializes reactive stores
|
|
4
|
+
* from the target framework running in the Tauri webview.
|
|
5
|
+
*
|
|
6
|
+
* Detection priority:
|
|
7
|
+
* 1. window.__DEBUG_STORES__ (app-registered hook)
|
|
8
|
+
* 2. window.__pinia (Pinia store)
|
|
9
|
+
* 3. window.__VUE_DEVTOOLS_GLOBAL_HOOK__ (Vue devtools hook)
|
|
10
|
+
* 4. Fallback: unknown with empty stores
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildStoreDetectionScript(framework: string, storeName?: string, depth?: number): string;
|
|
13
|
+
export declare function registerStoreInspect(program: Command): void;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { addBridgeOptions, resolveBridge } from './shared.js';
|
|
3
|
+
import { StoreInspectResultSchema } from '../schemas/commands.js';
|
|
4
|
+
/**
|
|
5
|
+
* Builds a JavaScript IIFE that detects and serializes reactive stores
|
|
6
|
+
* from the target framework running in the Tauri webview.
|
|
7
|
+
*
|
|
8
|
+
* Detection priority:
|
|
9
|
+
* 1. window.__DEBUG_STORES__ (app-registered hook)
|
|
10
|
+
* 2. window.__pinia (Pinia store)
|
|
11
|
+
* 3. window.__VUE_DEVTOOLS_GLOBAL_HOOK__ (Vue devtools hook)
|
|
12
|
+
* 4. Fallback: unknown with empty stores
|
|
13
|
+
*/
|
|
14
|
+
export function buildStoreDetectionScript(framework, storeName, depth = 3) {
|
|
15
|
+
const storeNameFilter = storeName ? JSON.stringify(storeName) : 'null';
|
|
16
|
+
return `(function() {
|
|
17
|
+
var maxDepth = ${depth};
|
|
18
|
+
var storeNameFilter = ${storeNameFilter};
|
|
19
|
+
|
|
20
|
+
function serialize(obj, maxD, currentD) {
|
|
21
|
+
if (currentD === undefined) currentD = 0;
|
|
22
|
+
try {
|
|
23
|
+
if (obj === null || obj === undefined) return obj;
|
|
24
|
+
if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean') return obj;
|
|
25
|
+
if (currentD >= maxD) return '[max depth]';
|
|
26
|
+
if (Array.isArray(obj)) {
|
|
27
|
+
var arr = obj.slice(0, 100).map(function(item) { return serialize(item, maxD, currentD + 1); });
|
|
28
|
+
if (obj.length > 100) arr.push('[truncated, ' + (obj.length - 100) + ' more]');
|
|
29
|
+
return arr;
|
|
30
|
+
}
|
|
31
|
+
if (typeof obj === 'object') {
|
|
32
|
+
var keys = Object.keys(obj).slice(0, 50);
|
|
33
|
+
var result = {};
|
|
34
|
+
for (var i = 0; i < keys.length; i++) {
|
|
35
|
+
var k = keys[i];
|
|
36
|
+
try { result[k] = serialize(obj[k], maxD, currentD + 1); } catch(e) { result[k] = '[error]'; }
|
|
37
|
+
}
|
|
38
|
+
if (Object.keys(obj).length > 50) result['__truncated__'] = true;
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
return String(obj);
|
|
42
|
+
} catch(e) {
|
|
43
|
+
return '[error]';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Check for app-registered debug hook first
|
|
48
|
+
if (typeof window.__DEBUG_STORES__ === 'function') {
|
|
49
|
+
try {
|
|
50
|
+
var hookResult = window.__DEBUG_STORES__();
|
|
51
|
+
var hookStores = {};
|
|
52
|
+
if (hookResult && typeof hookResult === 'object') {
|
|
53
|
+
var hookKeys = Object.keys(hookResult);
|
|
54
|
+
for (var i = 0; i < hookKeys.length; i++) {
|
|
55
|
+
var key = hookKeys[i];
|
|
56
|
+
if (storeNameFilter === null || key === storeNameFilter) {
|
|
57
|
+
hookStores[key] = serialize(hookResult[key], maxDepth, 0);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return JSON.stringify({ framework: 'custom', stores: hookStores });
|
|
62
|
+
} catch(e) {
|
|
63
|
+
// fall through to framework detection
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var stores = {};
|
|
68
|
+
var detectedFramework = 'unknown';
|
|
69
|
+
|
|
70
|
+
// Pinia detection
|
|
71
|
+
if ((${framework === 'auto' || framework === 'pinia' ? 'true' : 'false'}) && window.__pinia) {
|
|
72
|
+
try {
|
|
73
|
+
var pinia = window.__pinia;
|
|
74
|
+
if (pinia._s && typeof pinia._s.forEach === 'function') {
|
|
75
|
+
pinia._s.forEach(function(store, id) {
|
|
76
|
+
if (storeNameFilter === null || id === storeNameFilter) {
|
|
77
|
+
try {
|
|
78
|
+
var state = store.$state;
|
|
79
|
+
stores[id] = serialize(state, maxDepth, 0);
|
|
80
|
+
} catch(e) {
|
|
81
|
+
stores[id] = '[error]';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
detectedFramework = 'pinia';
|
|
86
|
+
}
|
|
87
|
+
} catch(e) {
|
|
88
|
+
// continue to next detection
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Vue devtools hook detection
|
|
93
|
+
if ((${framework === 'auto' || framework === 'vue' ? 'true' : 'false'}) && detectedFramework === 'unknown' && window.__VUE_DEVTOOLS_GLOBAL_HOOK__) {
|
|
94
|
+
try {
|
|
95
|
+
var hook = window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
|
|
96
|
+
if (hook.store) {
|
|
97
|
+
var vueStoreId = storeNameFilter || 'vuex';
|
|
98
|
+
if (storeNameFilter === null || storeNameFilter === 'vuex') {
|
|
99
|
+
stores[vueStoreId] = serialize(hook.store.state, maxDepth, 0);
|
|
100
|
+
}
|
|
101
|
+
detectedFramework = 'vue';
|
|
102
|
+
} else if (hook.stores && typeof hook.stores.forEach === 'function') {
|
|
103
|
+
hook.stores.forEach(function(store) {
|
|
104
|
+
var sid = (store.$id || store.id || 'store');
|
|
105
|
+
if (storeNameFilter === null || sid === storeNameFilter) {
|
|
106
|
+
stores[sid] = serialize(store.$state || store.state, maxDepth, 0);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
detectedFramework = 'vue';
|
|
110
|
+
}
|
|
111
|
+
} catch(e) {
|
|
112
|
+
// continue to fallback
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return JSON.stringify({ framework: detectedFramework, stores: stores });
|
|
117
|
+
})()`;
|
|
118
|
+
}
|
|
119
|
+
function formatStoreInspectResult(result) {
|
|
120
|
+
const storeKeys = Object.keys(result.stores);
|
|
121
|
+
const lines = [`Framework: ${result.framework}`];
|
|
122
|
+
if (storeKeys.length === 0) {
|
|
123
|
+
lines.push('Stores: (none detected)');
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
lines.push(`Stores (${storeKeys.length}):`);
|
|
127
|
+
for (const key of storeKeys) {
|
|
128
|
+
lines.push(` ${key}:`);
|
|
129
|
+
lines.push(` ${JSON.stringify(result.stores[key], null, 2).replace(/\n/g, '\n ')}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return lines.join('\n');
|
|
133
|
+
}
|
|
134
|
+
export function registerStoreInspect(program) {
|
|
135
|
+
const cmd = new Command('store-inspect')
|
|
136
|
+
.description('Inspect reactive stores (Pinia, Vue, or custom app-registered hook)')
|
|
137
|
+
.option('--framework <name>', 'Framework to inspect: auto, pinia, vue', 'auto')
|
|
138
|
+
.option('--store <name>', 'Filter to a specific store by name')
|
|
139
|
+
.option('--depth <n>', 'Serialization depth', parseInt, 3)
|
|
140
|
+
.option('--json', 'Output as JSON');
|
|
141
|
+
addBridgeOptions(cmd);
|
|
142
|
+
cmd.action(async (opts) => {
|
|
143
|
+
const bridge = await resolveBridge(opts);
|
|
144
|
+
const script = buildStoreDetectionScript(opts.framework, opts.store, opts.depth);
|
|
145
|
+
const raw = await bridge.eval(script);
|
|
146
|
+
const result = StoreInspectResultSchema.parse(JSON.parse(String(raw)));
|
|
147
|
+
if (opts.json) {
|
|
148
|
+
console.log(JSON.stringify(result, null, 2));
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
console.log(formatStoreInspectResult(result));
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
program.addCommand(cmd);
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=storeInspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storeInspect.js","sourceRoot":"","sources":["../../src/commands/storeInspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,SAAkB,EAClB,QAAgB,CAAC;IAEjB,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEvE,OAAO;mBACU,KAAK;0BACE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAqDhC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;SAsBhE,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;KAwBlE,CAAC;AACN,CAAC;AAED,SAAS,wBAAwB,CAAC,MAA0B;IAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAa,CAAC,cAAc,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAE3D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC;SACrC,WAAW,CAAC,qEAAqE,CAAC;SAClF,MAAM,CAAC,oBAAoB,EAAE,wCAAwC,EAAE,MAAM,CAAC;SAC9E,MAAM,CAAC,gBAAgB,EAAE,oCAAoC,CAAC;SAC9D,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC,CAAC;SACzD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEtC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEtB,GAAG,CAAC,MAAM,CACR,KAAK,EAAE,IAKN,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEvE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/platform/detect.js
CHANGED
|
@@ -22,50 +22,78 @@ function commandExists(cmd) {
|
|
|
22
22
|
execFile(which, [cmd], (error) => resolve(!error));
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
|
+
async function checkImageMagick(installHint) {
|
|
26
|
+
// ImageMagick v7 uses a unified `magick` binary; v6 has standalone commands
|
|
27
|
+
const hasMagick = await commandExists('magick');
|
|
28
|
+
if (hasMagick) {
|
|
29
|
+
return { name: 'magick (ImageMagick)', available: true, installHint };
|
|
30
|
+
}
|
|
31
|
+
const hasConvert = await commandExists('convert');
|
|
32
|
+
return { name: 'magick (ImageMagick)', available: hasConvert, installHint };
|
|
33
|
+
}
|
|
25
34
|
export async function checkX11Tools() {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
const [xdotool, magick] = await Promise.all([
|
|
36
|
+
commandExists('xdotool').then((available) => ({
|
|
37
|
+
name: 'xdotool',
|
|
38
|
+
available,
|
|
39
|
+
installHint: 'sudo apt install xdotool',
|
|
40
|
+
})),
|
|
41
|
+
checkImageMagick('sudo apt install imagemagick'),
|
|
42
|
+
]);
|
|
43
|
+
return [xdotool, magick];
|
|
35
44
|
}
|
|
36
45
|
export async function checkSwayTools() {
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
const [swaymsg, grim, magick] = await Promise.all([
|
|
47
|
+
commandExists('swaymsg').then((available) => ({
|
|
48
|
+
name: 'swaymsg',
|
|
49
|
+
available,
|
|
50
|
+
installHint: 'sudo apt install sway',
|
|
51
|
+
})),
|
|
52
|
+
commandExists('grim').then((available) => ({
|
|
53
|
+
name: 'grim',
|
|
54
|
+
available,
|
|
55
|
+
installHint: 'sudo apt install grim',
|
|
56
|
+
})),
|
|
57
|
+
checkImageMagick('sudo apt install imagemagick'),
|
|
58
|
+
]);
|
|
59
|
+
return [swaymsg, grim, magick];
|
|
46
60
|
}
|
|
47
61
|
export async function checkHyprlandTools() {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
62
|
+
const [hyprctl, grim, magick] = await Promise.all([
|
|
63
|
+
commandExists('hyprctl').then((available) => ({
|
|
64
|
+
name: 'hyprctl',
|
|
65
|
+
available,
|
|
66
|
+
installHint: 'Included with Hyprland',
|
|
67
|
+
})),
|
|
68
|
+
commandExists('grim').then((available) => ({
|
|
69
|
+
name: 'grim',
|
|
70
|
+
available,
|
|
71
|
+
installHint: 'sudo apt install grim',
|
|
72
|
+
})),
|
|
73
|
+
checkImageMagick('sudo apt install imagemagick'),
|
|
74
|
+
]);
|
|
75
|
+
return [hyprctl, grim, magick];
|
|
57
76
|
}
|
|
58
77
|
export async function checkMacOSTools() {
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
78
|
+
const [screencapture, osascript, sips, magick] = await Promise.all([
|
|
79
|
+
commandExists('screencapture').then((available) => ({
|
|
80
|
+
name: 'screencapture',
|
|
81
|
+
available,
|
|
82
|
+
installHint: 'Built-in on macOS',
|
|
83
|
+
})),
|
|
84
|
+
commandExists('osascript').then((available) => ({
|
|
85
|
+
name: 'osascript',
|
|
86
|
+
available,
|
|
87
|
+
installHint: 'Built-in on macOS',
|
|
88
|
+
})),
|
|
89
|
+
commandExists('sips').then((available) => ({
|
|
90
|
+
name: 'sips',
|
|
91
|
+
available,
|
|
92
|
+
installHint: 'Built-in on macOS',
|
|
93
|
+
})),
|
|
94
|
+
checkImageMagick('brew install imagemagick'),
|
|
95
|
+
]);
|
|
96
|
+
return [screencapture, osascript, sips, magick];
|
|
69
97
|
}
|
|
70
98
|
export async function ensureTools(displayServer) {
|
|
71
99
|
let checks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/platform/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,mBAAmB;IACjC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAEnD,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC;IAC9F,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;YAAE,OAAO,cAAc,CAAC;QAChD,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B;YAAE,OAAO,kBAAkB,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/platform/detect.ts"],"names":[],"mappings":"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"}
|
package/dist/platform/x11.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { exec, validateWindowId } from '../util/exec.js';
|
|
2
|
+
import { magickCommand } from '../util/magick.js';
|
|
2
3
|
function parseShellVar(output, key, fallback) {
|
|
3
4
|
const match = output.match(new RegExp(`${key}=(\\d+)`));
|
|
4
5
|
if (!match) {
|
|
@@ -20,7 +21,8 @@ export class X11Adapter {
|
|
|
20
21
|
async captureWindow(windowId, format) {
|
|
21
22
|
validateWindowId(windowId);
|
|
22
23
|
const fmt = format === 'jpg' ? 'jpg' : 'png';
|
|
23
|
-
const
|
|
24
|
+
const cmd = await magickCommand('import');
|
|
25
|
+
const { stdout } = await exec(cmd.bin, [...cmd.args, '-window', windowId, `${fmt}:-`]);
|
|
24
26
|
return stdout;
|
|
25
27
|
}
|
|
26
28
|
async getWindowGeometry(windowId) {
|
package/dist/platform/x11.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x11.js","sourceRoot":"","sources":["../../src/platform/x11.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"x11.js","sourceRoot":"","sources":["../../src/platform/x11.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas/bridge.d.ts
CHANGED
|
@@ -118,3 +118,37 @@ export declare const BridgeLogsResponseSchema: z.ZodObject<{
|
|
|
118
118
|
source: string;
|
|
119
119
|
}[];
|
|
120
120
|
}>;
|
|
121
|
+
export declare const DescribeResponseSchema: z.ZodObject<{
|
|
122
|
+
app: z.ZodOptional<z.ZodString>;
|
|
123
|
+
pid: z.ZodOptional<z.ZodNumber>;
|
|
124
|
+
windows: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
125
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
126
|
+
surfaces: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
127
|
+
exports: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
128
|
+
}, "strip", z.ZodTypeAny, {
|
|
129
|
+
pid?: number | undefined;
|
|
130
|
+
app?: string | undefined;
|
|
131
|
+
windows?: string[] | undefined;
|
|
132
|
+
capabilities?: string[] | undefined;
|
|
133
|
+
surfaces?: Record<string, string> | undefined;
|
|
134
|
+
exports?: Record<string, string> | undefined;
|
|
135
|
+
}, {
|
|
136
|
+
pid?: number | undefined;
|
|
137
|
+
app?: string | undefined;
|
|
138
|
+
windows?: string[] | undefined;
|
|
139
|
+
capabilities?: string[] | undefined;
|
|
140
|
+
surfaces?: Record<string, string> | undefined;
|
|
141
|
+
exports?: Record<string, string> | undefined;
|
|
142
|
+
}>;
|
|
143
|
+
export type DescribeResponse = z.infer<typeof DescribeResponseSchema>;
|
|
144
|
+
export declare const VersionResponseSchema: z.ZodObject<{
|
|
145
|
+
version: z.ZodString;
|
|
146
|
+
endpoints: z.ZodArray<z.ZodString, "many">;
|
|
147
|
+
}, "strip", z.ZodTypeAny, {
|
|
148
|
+
version: string;
|
|
149
|
+
endpoints: string[];
|
|
150
|
+
}, {
|
|
151
|
+
version: string;
|
|
152
|
+
endpoints: string[];
|
|
153
|
+
}>;
|
|
154
|
+
export type VersionResponse = z.infer<typeof VersionResponseSchema>;
|
package/dist/schemas/bridge.js
CHANGED
|
@@ -35,4 +35,17 @@ export const BridgeEvalResponseSchema = z.object({
|
|
|
35
35
|
export const BridgeLogsResponseSchema = z.object({
|
|
36
36
|
entries: z.array(RustLogEntrySchema),
|
|
37
37
|
});
|
|
38
|
+
// === Probe / Discovery Responses ===
|
|
39
|
+
export const DescribeResponseSchema = z.object({
|
|
40
|
+
app: z.string().optional(),
|
|
41
|
+
pid: z.number().optional(),
|
|
42
|
+
windows: z.array(z.string()).optional(),
|
|
43
|
+
capabilities: z.array(z.string()).optional(),
|
|
44
|
+
surfaces: z.record(z.string(), z.string()).optional(),
|
|
45
|
+
exports: z.record(z.string(), z.string()).optional(),
|
|
46
|
+
});
|
|
47
|
+
export const VersionResponseSchema = z.object({
|
|
48
|
+
version: z.string(),
|
|
49
|
+
endpoints: z.array(z.string()),
|
|
50
|
+
});
|
|
38
51
|
//# sourceMappingURL=bridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/schemas/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0BAA0B;AAE1B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAGH,uBAAuB;AAEvB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IACb,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAGtF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAGH,gCAAgC;AAEhC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;CACrC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/schemas/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0BAA0B;AAE1B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAGH,uBAAuB;AAEvB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IACb,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAGtF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAGH,gCAAgC;AAEhC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;CACrC,CAAC,CAAC;AAEH,sCAAsC;AAEtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC/B,CAAC,CAAC"}
|