tauri-agent-tools 0.9.2 → 0.9.3
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 +25 -11
- package/.agents/skills/tauri-bridge-setup/SKILL.md +4 -3
- package/.agents/skills/tauri-debug-quickstart/SKILL.md +3 -1
- package/AGENTS.md +7 -3
- package/README.md +31 -12
- package/dist/bridge/client.d.ts +1 -0
- package/dist/bridge/client.js +2 -0
- package/dist/bridge/client.js.map +1 -1
- package/dist/bridge/evaluate.d.ts +11 -0
- package/dist/bridge/evaluate.js +33 -0
- package/dist/bridge/evaluate.js.map +1 -0
- package/dist/bridge/logReader.d.ts +27 -0
- package/dist/bridge/logReader.js +26 -0
- package/dist/bridge/logReader.js.map +1 -0
- package/dist/bridge/observers.d.ts +11 -0
- package/dist/bridge/observers.js +195 -0
- package/dist/bridge/observers.js.map +1 -0
- package/dist/cli.js +28 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/bundle.js +122 -101
- package/dist/commands/bundle.js.map +1 -1
- package/dist/commands/capture.d.ts +3 -3
- package/dist/commands/capture.js +167 -141
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/check.js +44 -59
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/consoleMonitor.js +18 -85
- package/dist/commands/consoleMonitor.js.map +1 -1
- package/dist/commands/diagnose.js +4 -32
- package/dist/commands/diagnose.js.map +1 -1
- package/dist/commands/diff.js +28 -38
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/dom.js +2 -2
- package/dist/commands/dom.js.map +1 -1
- package/dist/commands/eval.js +11 -1
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/forensics.js +1 -7
- package/dist/commands/forensics.js.map +1 -1
- package/dist/commands/info.d.ts +2 -2
- package/dist/commands/info.js +3 -1
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/interact/click.js +14 -44
- package/dist/commands/interact/click.js.map +1 -1
- package/dist/commands/interact/scroll.js +6 -0
- package/dist/commands/interact/scroll.js.map +1 -1
- package/dist/commands/ipcMonitor.d.ts +3 -3
- package/dist/commands/ipcMonitor.js +26 -96
- package/dist/commands/ipcMonitor.js.map +1 -1
- package/dist/commands/listWindows.d.ts +2 -2
- package/dist/commands/listWindows.js.map +1 -1
- package/dist/commands/logs.d.ts +4 -27
- package/dist/commands/logs.js +12 -41
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/mutations.js +20 -101
- package/dist/commands/mutations.js.map +1 -1
- package/dist/commands/osLogs.js +2 -5
- package/dist/commands/osLogs.js.map +1 -1
- package/dist/commands/probe.js +18 -16
- package/dist/commands/probe.js.map +1 -1
- package/dist/commands/rustLogs.js +23 -43
- package/dist/commands/rustLogs.js.map +1 -1
- package/dist/commands/screenshot.d.ts +2 -2
- package/dist/commands/screenshot.js +7 -4
- package/dist/commands/screenshot.js.map +1 -1
- package/dist/commands/shared.d.ts +4 -1
- package/dist/commands/shared.js +34 -4
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/sidecarReplay.js +4 -0
- package/dist/commands/sidecarReplay.js.map +1 -1
- package/dist/commands/snapshot.d.ts +2 -2
- package/dist/commands/snapshot.js +4 -4
- package/dist/commands/snapshot.js.map +1 -1
- package/dist/commands/storeInspect.js +2 -2
- package/dist/commands/storeInspect.js.map +1 -1
- package/dist/commands/wait.d.ts +2 -2
- package/dist/commands/wait.js +42 -57
- package/dist/commands/wait.js.map +1 -1
- package/dist/errors.d.ts +10 -0
- package/dist/errors.js +26 -0
- package/dist/errors.js.map +1 -0
- package/dist/platform/detect.d.ts +2 -2
- package/dist/platform/detect.js +11 -2
- package/dist/platform/detect.js.map +1 -1
- package/dist/platform/x11.d.ts +1 -0
- package/dist/platform/x11.js +16 -5
- package/dist/platform/x11.js.map +1 -1
- package/dist/schemas/commands.d.ts +6 -0
- package/dist/schemas/commands.js +2 -0
- package/dist/schemas/commands.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/util/exec.d.ts +6 -0
- package/dist/util/exec.js +13 -1
- package/dist/util/exec.js.map +1 -1
- package/dist/util/incidentFiles.d.ts +5 -0
- package/dist/util/incidentFiles.js +61 -0
- package/dist/util/incidentFiles.js.map +1 -0
- package/dist/util/monitor.d.ts +11 -0
- package/dist/util/monitor.js +42 -0
- package/dist/util/monitor.js.map +1 -0
- package/dist/util/poll.d.ts +2 -0
- package/dist/util/poll.js +28 -0
- package/dist/util/poll.js.map +1 -0
- package/dist/util/redactText.d.ts +5 -2
- package/dist/util/redactText.js +44 -11
- package/dist/util/redactText.js.map +1 -1
- package/dist/util/tauriConfig.js +15 -18
- package/dist/util/tauriConfig.js.map +1 -1
- package/examples/tauri-bridge/Cargo.lock +4742 -0
- package/package.json +7 -3
- package/rust-bridge/README.md +7 -1
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
// Keep observation bounded and serializable without changing app values.
|
|
4
|
+
const SERIALIZE = `
|
|
5
|
+
function snapshot(value) {
|
|
6
|
+
var seen = new WeakSet();
|
|
7
|
+
var count = 0;
|
|
8
|
+
var remaining = 32000;
|
|
9
|
+
function visit(item, depth) {
|
|
10
|
+
if (++count > 2000 || depth > 10 || remaining <= 0) return '[Truncated]';
|
|
11
|
+
if (typeof item === 'bigint' || typeof item === 'symbol' || typeof item === 'function') return visit(String(item), depth);
|
|
12
|
+
if (typeof item === 'string') {
|
|
13
|
+
var text = item.slice(0, Math.min(16000, remaining));
|
|
14
|
+
remaining -= text.length;
|
|
15
|
+
return text;
|
|
16
|
+
}
|
|
17
|
+
if (!item || typeof item !== 'object') return item === undefined ? null : item;
|
|
18
|
+
if (seen.has(item)) return '[Circular]';
|
|
19
|
+
seen.add(item);
|
|
20
|
+
if (item instanceof Error) return visit({ name: item.name, message: item.message, stack: item.stack }, depth + 1);
|
|
21
|
+
var result = Array.isArray(item) ? [] : Object.create(null);
|
|
22
|
+
var keys = Object.keys(item);
|
|
23
|
+
for (var i = 0; i < keys.length; i++) {
|
|
24
|
+
if (i >= 200 || count >= 2000 || remaining <= 0) {
|
|
25
|
+
if (Array.isArray(result)) result.push('[Truncated]');
|
|
26
|
+
else result['[Truncated]'] = true;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
var key = keys[i];
|
|
30
|
+
remaining -= key.length;
|
|
31
|
+
var descriptor = Object.getOwnPropertyDescriptor(item, key);
|
|
32
|
+
// Observing a value must not invoke its getters or custom toJSON.
|
|
33
|
+
result[key.slice(0, 1000)] = descriptor && 'value' in descriptor ? visit(descriptor.value, depth + 1) : '[Getter]';
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
try { return visit(value, 0); }
|
|
38
|
+
catch (_) { return '[Unserializable]'; }
|
|
39
|
+
}
|
|
40
|
+
function push(session, entry) {
|
|
41
|
+
if (session.entries.length >= 1000) { session.entries.shift(); session.dropped++; }
|
|
42
|
+
session.entries.push(entry);
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
function sharedScripts(key, id, install) {
|
|
46
|
+
const registryKey = JSON.stringify(key);
|
|
47
|
+
const sessionId = JSON.stringify(id);
|
|
48
|
+
return {
|
|
49
|
+
patch: `(() => {
|
|
50
|
+
${SERIALIZE}
|
|
51
|
+
var registry = window[${registryKey}];
|
|
52
|
+
if (!registry) {
|
|
53
|
+
registry = { sessions: new Map(), restore: function() {} };
|
|
54
|
+
${install}
|
|
55
|
+
window[${registryKey}] = registry;
|
|
56
|
+
}
|
|
57
|
+
if (registry.sessions.has(${sessionId})) return 'already_patched';
|
|
58
|
+
registry.sessions.set(${sessionId}, { entries: [], dropped: 0 });
|
|
59
|
+
return 'patched';
|
|
60
|
+
})()`,
|
|
61
|
+
drain: `(() => {
|
|
62
|
+
var registry = window[${registryKey}];
|
|
63
|
+
var session = registry && registry.sessions.get(${sessionId});
|
|
64
|
+
if (!session) throw new Error('Observer session ended or the page navigated');
|
|
65
|
+
var batch = { entries: session.entries.splice(0), dropped: session.dropped };
|
|
66
|
+
session.dropped = 0;
|
|
67
|
+
return JSON.stringify(batch);
|
|
68
|
+
})()`,
|
|
69
|
+
cleanup: `(() => {
|
|
70
|
+
var registry = window[${registryKey}];
|
|
71
|
+
if (registry) {
|
|
72
|
+
registry.sessions.delete(${sessionId});
|
|
73
|
+
if (!registry.sessions.size) {
|
|
74
|
+
registry.restore();
|
|
75
|
+
if (window[${registryKey}] === registry) delete window[${registryKey}];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return 'cleaned';
|
|
79
|
+
})()`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export function consoleObserver(id = randomUUID()) {
|
|
83
|
+
return sharedScripts('__tauriAgentConsole', id, `
|
|
84
|
+
var originals = {}, wrappers = {};
|
|
85
|
+
['log', 'warn', 'error', 'info', 'debug'].forEach(function(level) {
|
|
86
|
+
var original = console[level];
|
|
87
|
+
originals[level] = original;
|
|
88
|
+
var wrapper = function() {
|
|
89
|
+
var result = original.apply(this, arguments);
|
|
90
|
+
try {
|
|
91
|
+
var message = Array.from(arguments).map(function(arg) {
|
|
92
|
+
return typeof arg === 'object' ? JSON.stringify(snapshot(arg)) : String(arg);
|
|
93
|
+
}).join(' ').slice(0, 16000);
|
|
94
|
+
var entry = { level: level, message: message, timestamp: Date.now() };
|
|
95
|
+
registry.sessions.forEach(function(session) { push(session, entry); });
|
|
96
|
+
} catch (_) { /* Instrumentation must never throw into the app. */ }
|
|
97
|
+
return result;
|
|
98
|
+
};
|
|
99
|
+
wrappers[level] = wrapper;
|
|
100
|
+
console[level] = wrapper;
|
|
101
|
+
});
|
|
102
|
+
registry.restore = function() {
|
|
103
|
+
Object.keys(originals).forEach(function(level) {
|
|
104
|
+
if (console[level] === wrappers[level]) console[level] = originals[level];
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
`);
|
|
108
|
+
}
|
|
109
|
+
export function ipcObserver(id = randomUUID()) {
|
|
110
|
+
return sharedScripts('__tauriAgentIpc', id, `
|
|
111
|
+
var owner = window.__TAURI_INTERNALS__;
|
|
112
|
+
if (!owner || typeof owner.invoke !== 'function') owner = window.__TAURI__ && window.__TAURI__.core;
|
|
113
|
+
if (!owner || typeof owner.invoke !== 'function') return 'no_tauri';
|
|
114
|
+
var original = owner.invoke;
|
|
115
|
+
var wrapper = function(cmd, args, options) {
|
|
116
|
+
// This also keeps the callback captured before cleanup usable afterward.
|
|
117
|
+
if (cmd === '__dev_bridge_result') return original.call(this, cmd, args, options);
|
|
118
|
+
var start = performance.now();
|
|
119
|
+
var recipients = Array.from(registry.sessions.values());
|
|
120
|
+
var entry = { command: cmd, args: snapshot(args || {}), timestamp: Date.now() };
|
|
121
|
+
function record(result, failed) {
|
|
122
|
+
try {
|
|
123
|
+
entry.duration = Math.round(performance.now() - start);
|
|
124
|
+
if (failed) entry.error = result && result.message ? String(result.message) : String(result);
|
|
125
|
+
else entry.result = snapshot(result);
|
|
126
|
+
recipients.forEach(function(session) {
|
|
127
|
+
// A settled call cannot resurrect a collector that already closed.
|
|
128
|
+
if (Array.from(registry.sessions.values()).includes(session)) push(session, entry);
|
|
129
|
+
});
|
|
130
|
+
} catch (_) { /* Keep the original command's outcome. */ }
|
|
131
|
+
}
|
|
132
|
+
var promise;
|
|
133
|
+
try { promise = original.call(this, cmd, args, options); }
|
|
134
|
+
catch (error) { record(error, true); throw error; }
|
|
135
|
+
return promise.then(function(result) { record(result, false); return result; },
|
|
136
|
+
function(error) { record(error, true); throw error; });
|
|
137
|
+
};
|
|
138
|
+
owner.invoke = wrapper;
|
|
139
|
+
registry.restore = function() { if (owner.invoke === wrapper) owner.invoke = original; };
|
|
140
|
+
`);
|
|
141
|
+
}
|
|
142
|
+
export function mutationObserver(selector, attributes, id = randomUUID()) {
|
|
143
|
+
// An independent observer per selector/session avoids mixing different roots.
|
|
144
|
+
const key = `__tauriAgentMutations_${id}`;
|
|
145
|
+
return sharedScripts(key, id, `
|
|
146
|
+
var target = document.querySelector(${JSON.stringify(selector)});
|
|
147
|
+
if (!target) return 'not_found';
|
|
148
|
+
function describe(el) {
|
|
149
|
+
if (!el || el.nodeType !== 1) return null;
|
|
150
|
+
var value = { tag: el.tagName.toLowerCase() };
|
|
151
|
+
if (el.id) value.id = el.id;
|
|
152
|
+
if (el.classList.length) value.class = Array.from(el.classList).join(' ');
|
|
153
|
+
return value;
|
|
154
|
+
}
|
|
155
|
+
var observer = new MutationObserver(function(records) {
|
|
156
|
+
try {
|
|
157
|
+
records.forEach(function(record) {
|
|
158
|
+
var target = record.target;
|
|
159
|
+
var entry = { type: record.type, timestamp: Date.now(),
|
|
160
|
+
target: target.id ? '#' + target.id : target.tagName ? target.tagName.toLowerCase() : '?' };
|
|
161
|
+
if (record.type === 'childList') {
|
|
162
|
+
entry.added = Array.from(record.addedNodes).map(describe).filter(Boolean);
|
|
163
|
+
entry.removed = Array.from(record.removedNodes).map(describe).filter(Boolean);
|
|
164
|
+
} else if (record.type === 'attributes') {
|
|
165
|
+
entry.attribute = record.attributeName;
|
|
166
|
+
entry.oldValue = record.oldValue;
|
|
167
|
+
entry.newValue = target.getAttribute(record.attributeName);
|
|
168
|
+
}
|
|
169
|
+
registry.sessions.forEach(function(session) { push(session, snapshot(entry)); });
|
|
170
|
+
});
|
|
171
|
+
} catch (_) { /* Keep application mutation delivery unaffected. */ }
|
|
172
|
+
});
|
|
173
|
+
observer.observe(target, { childList: true, subtree: true, attributes: ${attributes}, attributeOldValue: ${attributes} });
|
|
174
|
+
registry.restore = function() { observer.disconnect(); };
|
|
175
|
+
`);
|
|
176
|
+
}
|
|
177
|
+
const BatchSchema = z.object({ entries: z.array(z.unknown()), dropped: z.number().int().nonnegative() });
|
|
178
|
+
export async function readObserver(bridge, scripts, warn = console.error) {
|
|
179
|
+
const raw = await bridge.eval(scripts.drain);
|
|
180
|
+
const batch = BatchSchema.parse(JSON.parse(String(raw)));
|
|
181
|
+
if (batch.dropped)
|
|
182
|
+
warn(`warning: observer dropped ${batch.dropped} buffered entries`);
|
|
183
|
+
return batch.entries;
|
|
184
|
+
}
|
|
185
|
+
export async function closeObserver(bridge, scripts, warn = console.error) {
|
|
186
|
+
try {
|
|
187
|
+
const result = await bridge.eval(scripts.cleanup);
|
|
188
|
+
if (result !== 'cleaned')
|
|
189
|
+
throw new Error(String(result));
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
warn(`warning: observer cleanup failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=observers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observers.js","sourceRoot":"","sources":["../../src/bridge/observers.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
import { readFileSync } from 'fs';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
import { dirname, resolve } from 'path';
|
|
5
|
-
import { Command } from 'commander';
|
|
5
|
+
import { Command, CommanderError } from 'commander';
|
|
6
6
|
import { detectDisplayServer, ensureTools } from './platform/detect.js';
|
|
7
7
|
import { PackageJsonSchema } from './schemas/commands.js';
|
|
8
8
|
import { X11Adapter } from './platform/x11.js';
|
|
9
9
|
import { WaylandAdapter } from './platform/wayland.js';
|
|
10
10
|
import { HyprlandAdapter } from './platform/hyprland.js';
|
|
11
11
|
import { MacOSAdapter } from './platform/macos.js';
|
|
12
|
+
import { errorDetail } from './errors.js';
|
|
12
13
|
import { registerScreenshot } from './commands/screenshot.js';
|
|
13
14
|
import { registerInfo } from './commands/info.js';
|
|
14
15
|
import { registerDom } from './commands/dom.js';
|
|
@@ -53,15 +54,16 @@ const program = new Command()
|
|
|
53
54
|
.name('tauri-agent-tools')
|
|
54
55
|
.description('Agent-driven inspection toolkit for Tauri desktop apps')
|
|
55
56
|
.version(pkg.version);
|
|
56
|
-
|
|
57
|
-
async function getAdapter() {
|
|
57
|
+
const checkedTools = new Set();
|
|
58
|
+
async function getAdapter(operation = 'inspect') {
|
|
58
59
|
const ds = detectDisplayServer();
|
|
59
60
|
if (ds === 'unknown') {
|
|
60
|
-
throw new Error('Could not detect display server. Set DISPLAY (X11) or WAYLAND_DISPLAY (Wayland).');
|
|
61
|
+
throw new Error(process.platform === 'win32' ? 'Native window inspection is supported on macOS and Linux. Bridge and bridge-free diagnostic commands remain available.' : 'Could not detect display server. Set DISPLAY (X11) or WAYLAND_DISPLAY (Wayland).');
|
|
61
62
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
const key = `${ds}:${operation}`;
|
|
64
|
+
if (!checkedTools.has(key)) {
|
|
65
|
+
await ensureTools(ds, operation);
|
|
66
|
+
checkedTools.add(key);
|
|
65
67
|
}
|
|
66
68
|
if (ds === 'darwin')
|
|
67
69
|
return new MacOSAdapter();
|
|
@@ -112,8 +114,26 @@ registerHealth(program);
|
|
|
112
114
|
// ── Tier 3: super-commands (compose Tier 1 + Tier 2) ─────────────────────────
|
|
113
115
|
registerDiagnose(program);
|
|
114
116
|
registerBundle(program);
|
|
117
|
+
const args = process.argv.slice(2);
|
|
118
|
+
const endOfOptions = args.indexOf('--');
|
|
119
|
+
const jsonRequested = (endOfOptions === -1 ? args : args.slice(0, endOfOptions)).includes('--json');
|
|
120
|
+
function configureErrors(command) {
|
|
121
|
+
command.exitOverride();
|
|
122
|
+
command.configureOutput({ writeErr: message => { if (!jsonRequested)
|
|
123
|
+
process.stderr.write(message); } });
|
|
124
|
+
command.commands.forEach(configureErrors);
|
|
125
|
+
}
|
|
126
|
+
configureErrors(program);
|
|
115
127
|
program.parseAsync().catch((err) => {
|
|
116
|
-
|
|
128
|
+
if (err instanceof CommanderError && err.exitCode === 0)
|
|
129
|
+
return;
|
|
130
|
+
const detail = err instanceof CommanderError
|
|
131
|
+
? { code: 'INVALID_ARGUMENT', message: err.message, hint: 'Use this command with --help for supported options.' }
|
|
132
|
+
: errorDetail(err);
|
|
133
|
+
if (jsonRequested)
|
|
134
|
+
console.error(JSON.stringify({ error: detail }));
|
|
135
|
+
else if (!(err instanceof CommanderError))
|
|
136
|
+
console.error(`${detail.message}\nHint: ${detail.hint}`);
|
|
117
137
|
process.exitCode = 1;
|
|
118
138
|
});
|
|
119
139
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,mBAAmB,CAAC;KACzB,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;AAEvC,KAAK,UAAU,UAAU,CAAC,YAA8B,SAAS;IAC/D,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACjC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,wHAAwH,CAAC,CAAC,CAAC,kFAAkF,CAC7O,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC;IACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,YAAY,EAAE,CAAC;IAC/C,IAAI,EAAE,KAAK,kBAAkB;QAAE,OAAO,IAAI,eAAe,EAAE,CAAC;IAC5D,IAAI,EAAE,KAAK,cAAc,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,IAAI,cAAc,EAAE,CAAC;IAC3E,OAAO,IAAI,UAAU,EAAE,CAAC;AAC1B,CAAC;AAED,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACxC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACzC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACtC,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAErC,gFAAgF;AAChF,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,YAAY,CAAC,OAAO,CAAC,CAAC;AAEtB,gFAAgF;AAChF,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,cAAc,CAAC,OAAO,CAAC,CAAC;AAExB,gFAAgF;AAChF,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;AAExB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,aAAa,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpG,SAAS,eAAe,CAAC,OAAgB;IACvC,OAAO,CAAC,YAAY,EAAE,CAAC;IACvB,OAAO,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C,CAAC;AACD,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC1C,IAAI,GAAG,YAAY,cAAc,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO;IAChE,MAAM,MAAM,GAAG,GAAG,YAAY,cAAc;QAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,qDAAqD,EAAE;QACjH,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACrB,IAAI,aAAa;QAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;SAC/D,IAAI,CAAC,CAAC,GAAG,YAAY,cAAc,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACpG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
package/dist/commands/bundle.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { spawn } from 'node:child_process';
|
|
3
|
-
import { mkdir, writeFile } from 'node:fs/promises';
|
|
4
|
-
import {
|
|
3
|
+
import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { basename, dirname, join, relative, resolve } from 'node:path';
|
|
5
6
|
import { addBridgeOptions } from './shared.js';
|
|
6
7
|
import { exec } from '../util/exec.js';
|
|
7
|
-
import { redactDir } from '../util/redactText.js';
|
|
8
|
+
import { redactDir, redactJson, redactText, scanResidualSecrets } from '../util/redactText.js';
|
|
9
|
+
import { artifactFiles, publishArtifacts, publishFile } from '../util/incidentFiles.js';
|
|
10
|
+
import { CliError } from '../errors.js';
|
|
8
11
|
export function registerBundle(program) {
|
|
9
12
|
const cmd = new Command('bundle')
|
|
10
13
|
.description('Collect a shareable incident bundle: merged logs, deep process tree, app paths, forensics ' +
|
|
@@ -19,92 +22,99 @@ export function registerBundle(program) {
|
|
|
19
22
|
addBridgeOptions(cmd);
|
|
20
23
|
cmd.action(async (opts) => {
|
|
21
24
|
const outDir = opts.out ?? `./bundle-${timestampSlug()}`;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
outcomes.push(await runCapturingStdout(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const args = ['app-paths', '--platform', 'all', '--exists', '--json'];
|
|
43
|
-
if (opts.config)
|
|
44
|
-
args.push('--config', opts.config);
|
|
45
|
-
if (opts.identifier)
|
|
46
|
-
args.push('--identifier', opts.identifier);
|
|
47
|
-
outcomes.push(await runCapturingStdout(args, join(outDir, 'app-paths.json')));
|
|
48
|
-
}
|
|
49
|
-
// ── Forensics bundle (bridge-free; works on a dead app) ─────────────────
|
|
50
|
-
{
|
|
51
|
-
const args = ['forensics', '-o', join(outDir, 'forensics')];
|
|
52
|
-
if (opts.config)
|
|
53
|
-
args.push('--config', opts.config);
|
|
54
|
-
if (opts.identifier)
|
|
55
|
-
args.push('--identifier', opts.identifier);
|
|
25
|
+
const output = resolve(outDir);
|
|
26
|
+
if (dirname(output) === output)
|
|
27
|
+
throw new Error('Choose an output directory below the filesystem root.');
|
|
28
|
+
const stage = await mkdtemp(join(tmpdir(), 'tauri-bundle-'));
|
|
29
|
+
const collected = join(stage, basename(output));
|
|
30
|
+
try {
|
|
31
|
+
await mkdir(collected);
|
|
32
|
+
const outcomes = [];
|
|
33
|
+
const targeting = (args) => { forwardBridge(args, opts); return args; };
|
|
34
|
+
const project = (args) => {
|
|
35
|
+
if (opts.config)
|
|
36
|
+
args.push('--config', opts.config);
|
|
37
|
+
if (opts.identifier)
|
|
38
|
+
args.push('--identifier', opts.identifier);
|
|
39
|
+
return args;
|
|
40
|
+
};
|
|
41
|
+
outcomes.push(await runCapturingStdout(targeting(project(['logs', '--json'])), join(collected, 'logs.ndjson')));
|
|
42
|
+
outcomes.push(await runCapturingStdout(targeting(['process-tree', '--deep', '--json']), join(collected, 'process-tree.json')));
|
|
43
|
+
outcomes.push(await runCapturingStdout(project(['app-paths', '--platform', 'all', '--exists', '--json']), join(collected, 'app-paths.json')));
|
|
44
|
+
const forensicArgs = project(['forensics', '-o', join(collected, 'forensics')]);
|
|
56
45
|
if (opts.since)
|
|
57
|
-
|
|
58
|
-
outcomes.push(await runToDir('forensics',
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
// ── Summary ─────────────────────────────────────────────────────────────
|
|
74
|
-
const summary = {
|
|
75
|
-
outDir,
|
|
76
|
-
createdPhases: outcomes,
|
|
77
|
-
ok: outcomes.filter((o) => o.ok).length,
|
|
78
|
-
total: outcomes.length,
|
|
79
|
-
};
|
|
80
|
-
await writeFile(join(outDir, 'summary.json'), JSON.stringify(summary, null, 2));
|
|
81
|
-
await writeFile(join(outDir, 'summary.md'), renderSummary(outDir, outcomes));
|
|
82
|
-
// ── Archive ─────────────────────────────────────────────────────────────
|
|
83
|
-
let archivePath = null;
|
|
84
|
-
if (opts.archive !== false) {
|
|
85
|
-
archivePath = `${outDir.replace(/\/+$/, '')}.tar.gz`;
|
|
86
|
-
try {
|
|
87
|
-
await exec('tar', ['-czf', archivePath, '-C', dirnameOf(outDir), basenameOf(outDir)]);
|
|
46
|
+
forensicArgs.push('--since', opts.since);
|
|
47
|
+
outcomes.push(await runToDir('forensics', forensicArgs));
|
|
48
|
+
if (opts.withCapture) {
|
|
49
|
+
outcomes.push(await runToDir('capture', targeting(['capture', '-o', join(collected, 'capture'), '--json'])));
|
|
50
|
+
}
|
|
51
|
+
const redacted = await redactDir(collected, { verify: true, relativeTo: collected });
|
|
52
|
+
const warnings = redacted.warnings.map(issue => ({ ...issue, path: relative(collected, issue.path) }));
|
|
53
|
+
if (redacted.failures.length) {
|
|
54
|
+
const details = redacted.failures.map(issue => `${relative(collected, issue.path)} (${issue.reason})`).join(', ');
|
|
55
|
+
throw new CliError('REDACTION_FAILED', `Bundle was not published: ${details}`, 'Resolve the listed redaction failures before generating a shareable bundle.');
|
|
56
|
+
}
|
|
57
|
+
outcomes.push({ phase: 'redact', ok: true,
|
|
58
|
+
detail: `redacted ${redacted.redactions} value(s), ${warnings.length} warning(s), 0 failure(s)` });
|
|
59
|
+
const artifacts = [...await artifactFiles(collected), 'summary.json', 'summary.md'].sort();
|
|
60
|
+
let archivePath = opts.archive === false ? null : `${output}.tar.gz`;
|
|
61
|
+
if (archivePath)
|
|
88
62
|
outcomes.push({ phase: 'archive', ok: true, detail: `→ ${archivePath}` });
|
|
63
|
+
const writeSummary = async () => {
|
|
64
|
+
const normalized = outcomes.map(o => ({ ...o, detail: o.detail.split(collected).join('.') }));
|
|
65
|
+
const summary = redactJson({ outDir, createdPhases: normalized,
|
|
66
|
+
ok: normalized.filter(o => o.ok).length, total: normalized.length,
|
|
67
|
+
partial: normalized.some(o => !o.ok), warnings, artifacts, archive: archivePath });
|
|
68
|
+
const json = JSON.stringify(summary, null, 2);
|
|
69
|
+
const markdown = redactText(renderSummary(outDir, normalized) +
|
|
70
|
+
(warnings.length ? '\n## Warnings\n\n' + warnings.map(w => `- ${w.path}: ${w.reason}`).join('\n') + '\n' : ''));
|
|
71
|
+
if (scanResidualSecrets(json, 'summary.json').length || scanResidualSecrets(markdown, 'summary.md').length) {
|
|
72
|
+
throw new CliError('REDACTION_FAILED', 'Bundle summary contains a possible credential', 'Remove credentials from output paths and retry.');
|
|
73
|
+
}
|
|
74
|
+
await writeFile(join(collected, 'summary.json'), json);
|
|
75
|
+
await writeFile(join(collected, 'summary.md'), markdown);
|
|
76
|
+
return summary;
|
|
77
|
+
};
|
|
78
|
+
let summary = await writeSummary();
|
|
79
|
+
const stagedArchive = join(stage, 'archive.tar.gz');
|
|
80
|
+
if (archivePath) {
|
|
81
|
+
try {
|
|
82
|
+
const metadataFlags = process.platform === 'darwin' ? ['--no-mac-metadata'] : [];
|
|
83
|
+
await exec('tar', [...metadataFlags, '-czf', stagedArchive, '-C', stage, '--', basename(collected)]);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
archivePath = null;
|
|
87
|
+
outcomes[outcomes.length - 1] = { phase: 'archive', ok: false, detail: error instanceof Error ? error.message : String(error) };
|
|
88
|
+
summary = await writeSummary();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
await publishArtifacts(collected, output);
|
|
92
|
+
if (archivePath) {
|
|
93
|
+
try {
|
|
94
|
+
await publishFile(stagedArchive, archivePath);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
archivePath = null;
|
|
98
|
+
outcomes[outcomes.length - 1] = { phase: 'archive', ok: false, detail: error instanceof Error ? error.message : String(error) };
|
|
99
|
+
summary = await writeSummary();
|
|
100
|
+
await publishFile(join(collected, 'summary.json'), join(output, 'summary.json'));
|
|
101
|
+
await publishFile(join(collected, 'summary.md'), join(output, 'summary.md'));
|
|
102
|
+
}
|
|
89
103
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
104
|
+
if (opts.json)
|
|
105
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
106
|
+
else {
|
|
107
|
+
console.log(`Incident bundle written to ${outDir}`);
|
|
108
|
+
console.log(` ${outcomes.filter(o => o.ok).length}/${outcomes.length} phases succeeded`);
|
|
109
|
+
if (archivePath)
|
|
110
|
+
console.log(` Archive: ${archivePath}`);
|
|
111
|
+
for (const warning of warnings)
|
|
112
|
+
console.log(` Warning: ${warning.path} (${warning.reason})`);
|
|
113
|
+
console.log(` Open ${join(outDir, 'summary.md')} first.`);
|
|
97
114
|
}
|
|
98
115
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
console.log(`✓ Incident bundle written to ${outDir}`);
|
|
104
|
-
console.log(` ${summary.ok}/${summary.total} phases succeeded`);
|
|
105
|
-
if (archivePath)
|
|
106
|
-
console.log(` Archive: ${archivePath}`);
|
|
107
|
-
console.log(` Open ${join(outDir, 'summary.md')} first.`);
|
|
116
|
+
finally {
|
|
117
|
+
await rm(stage, { recursive: true, force: true });
|
|
108
118
|
}
|
|
109
119
|
});
|
|
110
120
|
program.addCommand(cmd);
|
|
@@ -122,16 +132,6 @@ function forwardBridge(args, opts) {
|
|
|
122
132
|
function timestampSlug() {
|
|
123
133
|
return new Date().toISOString().replace(/[:.]/g, '-');
|
|
124
134
|
}
|
|
125
|
-
function dirnameOf(p) {
|
|
126
|
-
const norm = p.replace(/\/+$/, '');
|
|
127
|
-
const idx = norm.lastIndexOf('/');
|
|
128
|
-
return idx <= 0 ? '.' : norm.slice(0, idx);
|
|
129
|
-
}
|
|
130
|
-
function basenameOf(p) {
|
|
131
|
-
const norm = p.replace(/\/+$/, '');
|
|
132
|
-
const idx = norm.lastIndexOf('/');
|
|
133
|
-
return idx < 0 ? norm : norm.slice(idx + 1);
|
|
134
|
-
}
|
|
135
135
|
/** Spawn this same CLI binary, capturing stdout into `outFile`. */
|
|
136
136
|
function runCapturingStdout(args, outFile) {
|
|
137
137
|
return new Promise((resolve) => {
|
|
@@ -152,8 +152,9 @@ function runCapturingStdout(args, outFile) {
|
|
|
152
152
|
try {
|
|
153
153
|
await writeFile(outFile, stdout);
|
|
154
154
|
}
|
|
155
|
-
catch {
|
|
156
|
-
|
|
155
|
+
catch (error) {
|
|
156
|
+
resolve({ phase: args[0] ?? 'phase', ok: false, detail: `Could not write artifact: ${String(error)}` });
|
|
157
|
+
return;
|
|
157
158
|
}
|
|
158
159
|
resolve({
|
|
159
160
|
phase: args[0] ?? 'phase',
|
|
@@ -176,11 +177,31 @@ function runToDir(phase, args) {
|
|
|
176
177
|
child.stderr.setEncoding('utf-8');
|
|
177
178
|
child.stderr.on('data', (c) => (stderr += c));
|
|
178
179
|
child.on('error', (err) => resolve({ phase, ok: false, detail: err.message }));
|
|
179
|
-
child.on('close', (code) =>
|
|
180
|
-
|
|
181
|
-
ok
|
|
182
|
-
|
|
183
|
-
|
|
180
|
+
child.on('close', async (code) => {
|
|
181
|
+
let detail = code === 0 ? 'ok' : `exit ${code}${stderr ? ': ' + stderr.trim().slice(0, 200) : ''}`;
|
|
182
|
+
let ok = code === 0;
|
|
183
|
+
if (ok) {
|
|
184
|
+
try {
|
|
185
|
+
const dir = args[args.indexOf('-o') + 1];
|
|
186
|
+
const file = phase === 'capture' ? 'manifest.json' : 'summary.json';
|
|
187
|
+
const manifest = JSON.parse(await readFile(join(dir, file), 'utf8'));
|
|
188
|
+
const failed = manifest.errorCount ?? manifest.phases?.filter(p => !p.ok).length ?? 0;
|
|
189
|
+
if (failed) {
|
|
190
|
+
ok = false;
|
|
191
|
+
detail = `${failed} artifact/collection phase(s) failed; see ${phase}/${file}`;
|
|
192
|
+
}
|
|
193
|
+
else if (manifest.partial) {
|
|
194
|
+
ok = false;
|
|
195
|
+
detail = `Partial capture; see ${phase}/${file} for warnings`;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
ok = false;
|
|
200
|
+
detail = `Could not read ${phase} manifest: ${String(error)}`;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
resolve({ phase, ok, detail });
|
|
204
|
+
});
|
|
184
205
|
});
|
|
185
206
|
}
|
|
186
207
|
function renderSummary(outDir, outcomes) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/commands/bundle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/commands/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAkBxC,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;SAC9B,WAAW,CACV,4FAA4F;QAC1F,sGAAsG,CACzG;SACA,MAAM,CAAC,iBAAiB,EAAE,uEAAuE,CAAC;SAClG,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;SACzD,MAAM,CAAC,iBAAiB,EAAE,kDAAkD,CAAC;SAC7E,MAAM,CAAC,oBAAoB,EAAE,yEAAyE,CAAC;SACvG,MAAM,CAAC,gBAAgB,EAAE,oEAAoE,CAAC;SAC9F,MAAM,CAAC,cAAc,EAAE,mDAAmD,CAAC;SAC3E,MAAM,CAAC,QAAQ,EAAE,6DAA6D,CAAC,CAAC;IAEnF,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEtB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAgB,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,YAAY,aAAa,EAAE,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACzG,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,QAAQ,GAAmB,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,CAAC,IAAc,EAAY,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,CAAC,IAAc,EAAY,EAAE;gBAC3C,IAAI,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,IAAI,CAAC,UAAU;oBAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;YAChH,QAAQ,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC/H,QAAQ,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC9I,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;YAChF,IAAI,IAAI,CAAC,KAAK;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,QAAQ,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/G,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;YACrF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACvG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClH,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,6BAA6B,OAAO,EAAE,EAAE,6EAA6E,CAAC,CAAC;YAChK,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI;gBACvC,MAAM,EAAE,YAAY,QAAQ,CAAC,UAAU,cAAc,QAAQ,CAAC,MAAM,2BAA2B,EAAE,CAAC,CAAC;YACrG,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3F,IAAI,WAAW,GAAkB,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,SAAS,CAAC;YACpF,IAAI,WAAW;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,EAAE,CAAC,CAAC;YAE3F,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;gBAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9F,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU;oBAC5D,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM;oBACjE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;gBACrF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC;oBAC3D,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClH,IAAI,mBAAmB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;oBAC3G,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,+CAA+C,EAAE,iDAAiD,CAAC,CAAC;gBAC7I,CAAC;gBACD,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;gBACvD,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACzD,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC;YACF,IAAI,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;YACnC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACpD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACvG,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,WAAW,GAAG,IAAI,CAAC;oBACnB,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChI,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;gBACjC,CAAC;YACH,CAAC;YACD,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBAAC,MAAM,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;gBAAC,CAAC;gBACtD,OAAO,KAAK,EAAE,CAAC;oBACb,WAAW,GAAG,IAAI,CAAC;oBACnB,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChI,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;oBAC/B,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;oBACjF,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;iBACxD,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,mBAAmB,CAAC,CAAC;gBAC1F,IAAI,WAAW;oBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC;gBAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ;oBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC9F,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,IAAc,EAAE,IAAgB;IACrD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,mEAAmE;AACnE,SAAS,kBAAkB,CAAC,IAAc,EAAE,OAAe;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC,CAAC;YACzF,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACjG,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CACxB,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CACvE,CAAC;QACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC/B,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxG,OAAO;YACT,CAAC;YACD,OAAO,CAAC;gBACN,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO;gBACzB,EAAE,EAAE,IAAI,KAAK,CAAC;gBACd,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;aACxG,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,SAAS,QAAQ,CAAC,KAAa,EAAE,IAAc;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACnG,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC/B,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACnG,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;YACpB,IAAI,EAAE,EAAE,CAAC;gBACP,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,CAAC;oBAC1C,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;oBACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAwE,CAAC;oBAC5I,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;oBACtF,IAAI,MAAM,EAAE,CAAC;wBAAC,EAAE,GAAG,KAAK,CAAC;wBAAC,MAAM,GAAG,GAAG,MAAM,6CAA6C,KAAK,IAAI,IAAI,EAAE,CAAC;oBAAC,CAAC;yBACtG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;wBAAC,EAAE,GAAG,KAAK,CAAC;wBAAC,MAAM,GAAG,wBAAwB,KAAK,IAAI,IAAI,eAAe,CAAC;oBAAC,CAAC;gBAC3G,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAAC,EAAE,GAAG,KAAK,CAAC;oBAAC,MAAM,GAAG,kBAAkB,KAAK,cAAc,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAC,CAAC;YAChG,CAAC;YACD,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,QAAwB;IAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClG,OAAO;;kBAES,MAAM;;;;;;;;;;;;EAYtB,IAAI;;;;;;;;CAQL,CAAC;AACF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import type { PlatformAdapter } from '../types.js';
|
|
2
|
+
import type { PlatformAdapter, AdapterFactory } from '../types.js';
|
|
3
3
|
import type { CaptureManifest } from '../schemas/commands.js';
|
|
4
4
|
import type { BridgeClient } from '../bridge/client.js';
|
|
5
5
|
export interface CaptureToDirOptions {
|
|
@@ -11,5 +11,5 @@ export interface CaptureToDirOptions {
|
|
|
11
11
|
eval?: string;
|
|
12
12
|
logsDuration: number;
|
|
13
13
|
}
|
|
14
|
-
export declare function captureToDir(bridge: BridgeClient, adapter: PlatformAdapter, opts: CaptureToDirOptions): Promise<CaptureManifest>;
|
|
15
|
-
export declare function registerCapture(program: Command, getAdapter:
|
|
14
|
+
export declare function captureToDir(bridge: BridgeClient, adapter: PlatformAdapter | AdapterFactory, opts: CaptureToDirOptions): Promise<CaptureManifest>;
|
|
15
|
+
export declare function registerCapture(program: Command, getAdapter: AdapterFactory): void;
|