@staticn0va/wigolo 0.3.1 → 0.4.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/README.md +57 -2
- package/SKILL.md +149 -0
- package/dist/cache/change-detector.d.ts +7 -0
- package/dist/cache/change-detector.d.ts.map +1 -0
- package/dist/cache/change-detector.js +43 -0
- package/dist/cache/change-detector.js.map +1 -0
- package/dist/cache/diff-summary.d.ts +2 -0
- package/dist/cache/diff-summary.d.ts.map +1 -0
- package/dist/cache/diff-summary.js +87 -0
- package/dist/cache/diff-summary.js.map +1 -0
- package/dist/cache/store.d.ts +2 -0
- package/dist/cache/store.d.ts.map +1 -1
- package/dist/cache/store.js +10 -0
- package/dist/cache/store.js.map +1 -1
- package/dist/cli/auth.d.ts +2 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +95 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/daemon.d.ts +6 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +56 -3
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/health.d.ts +1 -1
- package/dist/cli/health.d.ts.map +1 -1
- package/dist/cli/health.js +41 -3
- package/dist/cli/health.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/plugin.d.ts +5 -0
- package/dist/cli/plugin.d.ts.map +1 -0
- package/dist/cli/plugin.js +188 -0
- package/dist/cli/plugin.js.map +1 -0
- package/dist/cli/shell.d.ts +2 -0
- package/dist/cli/shell.d.ts.map +1 -0
- package/dist/cli/shell.js +86 -0
- package/dist/cli/shell.js.map +1 -0
- package/dist/cli/warmup.d.ts +4 -0
- package/dist/cli/warmup.d.ts.map +1 -1
- package/dist/cli/warmup.js +48 -1
- package/dist/cli/warmup.js.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +15 -0
- package/dist/config.js.map +1 -1
- package/dist/daemon/health-check.d.ts +16 -0
- package/dist/daemon/health-check.d.ts.map +1 -0
- package/dist/daemon/health-check.js +36 -0
- package/dist/daemon/health-check.js.map +1 -0
- package/dist/daemon/http-server.d.ts +26 -0
- package/dist/daemon/http-server.d.ts.map +1 -0
- package/dist/daemon/http-server.js +282 -0
- package/dist/daemon/http-server.js.map +1 -0
- package/dist/daemon/proxy.d.ts +10 -0
- package/dist/daemon/proxy.d.ts.map +1 -0
- package/dist/daemon/proxy.js +99 -0
- package/dist/daemon/proxy.js.map +1 -0
- package/dist/fetch/action-executor.d.ts +28 -0
- package/dist/fetch/action-executor.d.ts.map +1 -0
- package/dist/fetch/action-executor.js +86 -0
- package/dist/fetch/action-executor.js.map +1 -0
- package/dist/fetch/auth.d.ts +2 -1
- package/dist/fetch/auth.d.ts.map +1 -1
- package/dist/fetch/auth.js +30 -2
- package/dist/fetch/auth.js.map +1 -1
- package/dist/fetch/browser-pool.d.ts +30 -11
- package/dist/fetch/browser-pool.d.ts.map +1 -1
- package/dist/fetch/browser-pool.js +165 -49
- package/dist/fetch/browser-pool.js.map +1 -1
- package/dist/fetch/browser-selector.d.ts +17 -0
- package/dist/fetch/browser-selector.d.ts.map +1 -0
- package/dist/fetch/browser-selector.js +70 -0
- package/dist/fetch/browser-selector.js.map +1 -0
- package/dist/fetch/browser-types.d.ts +3 -0
- package/dist/fetch/browser-types.d.ts.map +1 -0
- package/dist/fetch/browser-types.js +45 -0
- package/dist/fetch/browser-types.js.map +1 -0
- package/dist/fetch/cdp-client.d.ts +9 -0
- package/dist/fetch/cdp-client.d.ts.map +1 -0
- package/dist/fetch/cdp-client.js +90 -0
- package/dist/fetch/cdp-client.js.map +1 -0
- package/dist/fetch/router.d.ts +4 -1
- package/dist/fetch/router.d.ts.map +1 -1
- package/dist/fetch/router.js +8 -2
- package/dist/fetch/router.js.map +1 -1
- package/dist/index.js +32 -3
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +26 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +101 -0
- package/dist/instructions.js.map +1 -0
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/plugins/loader.d.ts +20 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +162 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/registry.d.ts +26 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +68 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/validate.d.ts +9 -0
- package/dist/plugins/validate.d.ts.map +1 -0
- package/dist/plugins/validate.js +70 -0
- package/dist/plugins/validate.js.map +1 -0
- package/dist/repl/commands/cache.d.ts +4 -0
- package/dist/repl/commands/cache.d.ts.map +1 -0
- package/dist/repl/commands/cache.js +44 -0
- package/dist/repl/commands/cache.js.map +1 -0
- package/dist/repl/commands/crawl.d.ts +7 -0
- package/dist/repl/commands/crawl.d.ts.map +1 -0
- package/dist/repl/commands/crawl.js +42 -0
- package/dist/repl/commands/crawl.js.map +1 -0
- package/dist/repl/commands/extract.d.ts +5 -0
- package/dist/repl/commands/extract.d.ts.map +1 -0
- package/dist/repl/commands/extract.js +37 -0
- package/dist/repl/commands/extract.js.map +1 -0
- package/dist/repl/commands/fetch.d.ts +5 -0
- package/dist/repl/commands/fetch.d.ts.map +1 -0
- package/dist/repl/commands/fetch.js +53 -0
- package/dist/repl/commands/fetch.js.map +1 -0
- package/dist/repl/commands/search.d.ts +5 -0
- package/dist/repl/commands/search.d.ts.map +1 -0
- package/dist/repl/commands/search.js +62 -0
- package/dist/repl/commands/search.js.map +1 -0
- package/dist/repl/commands/types.d.ts +9 -0
- package/dist/repl/commands/types.d.ts.map +1 -0
- package/dist/repl/commands/types.js +2 -0
- package/dist/repl/commands/types.js.map +1 -0
- package/dist/repl/formatters.d.ts +10 -0
- package/dist/repl/formatters.d.ts.map +1 -0
- package/dist/repl/formatters.js +209 -0
- package/dist/repl/formatters.js.map +1 -0
- package/dist/repl/parser.d.ts +9 -0
- package/dist/repl/parser.d.ts.map +1 -0
- package/dist/repl/parser.js +84 -0
- package/dist/repl/parser.js.map +1 -0
- package/dist/repl/shell.d.ts +8 -0
- package/dist/repl/shell.d.ts.map +1 -0
- package/dist/repl/shell.js +156 -0
- package/dist/repl/shell.js.map +1 -0
- package/dist/search/context-formatter.d.ts +3 -0
- package/dist/search/context-formatter.d.ts.map +1 -0
- package/dist/search/context-formatter.js +56 -0
- package/dist/search/context-formatter.js.map +1 -0
- package/dist/server.d.ts +17 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +204 -104
- package/dist/server.js.map +1 -1
- package/dist/tools/cache.d.ts +2 -1
- package/dist/tools/cache.d.ts.map +1 -1
- package/dist/tools/cache.js +56 -1
- package/dist/tools/cache.js.map +1 -1
- package/dist/tools/fetch.d.ts.map +1 -1
- package/dist/tools/fetch.js +16 -1
- package/dist/tools/fetch.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +10 -0
- package/dist/tools/search.js.map +1 -1
- package/dist/types.d.ts +48 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +36 -3
package/dist/cli/daemon.js
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { getConfig } from '../config.js';
|
|
2
|
+
import { DaemonHttpServer } from '../daemon/http-server.js';
|
|
3
|
+
function log(msg) {
|
|
4
|
+
process.stderr.write(`[wigolo serve] ${msg}\n`);
|
|
5
|
+
}
|
|
6
|
+
export function parseDaemonArgs(args) {
|
|
7
|
+
const config = getConfig();
|
|
8
|
+
let port = config.daemonPort;
|
|
9
|
+
let host = config.daemonHost;
|
|
10
|
+
for (let i = 0; i < args.length; i++) {
|
|
11
|
+
if (args[i] === '--port' && i + 1 < args.length) {
|
|
12
|
+
const parsed = parseInt(args[i + 1], 10);
|
|
13
|
+
if (!isNaN(parsed)) {
|
|
14
|
+
port = parsed;
|
|
15
|
+
}
|
|
16
|
+
i++;
|
|
17
|
+
}
|
|
18
|
+
else if (args[i] === '--host' && i + 1 < args.length) {
|
|
19
|
+
host = args[i + 1];
|
|
20
|
+
i++;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return { port, host };
|
|
24
|
+
}
|
|
25
|
+
export function runDaemon(args) {
|
|
26
|
+
const parsed = parseDaemonArgs(args);
|
|
27
|
+
log(`Starting daemon on ${parsed.host}:${parsed.port}...`);
|
|
28
|
+
const daemon = new DaemonHttpServer({
|
|
29
|
+
port: parsed.port,
|
|
30
|
+
host: parsed.host,
|
|
31
|
+
});
|
|
32
|
+
daemon.start()
|
|
33
|
+
.then((url) => {
|
|
34
|
+
log(`Daemon running at ${url}`);
|
|
35
|
+
log(`Health check: curl ${url}/health`);
|
|
36
|
+
log(`MCP endpoint: ${url}/mcp (StreamableHTTP)`);
|
|
37
|
+
log(`SSE endpoint: ${url}/sse`);
|
|
38
|
+
log('');
|
|
39
|
+
log('Press Ctrl+C to stop.');
|
|
40
|
+
})
|
|
41
|
+
.catch((err) => {
|
|
42
|
+
log(`Failed to start daemon: ${err instanceof Error ? err.message : String(err)}`);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
});
|
|
45
|
+
const shutdown = async () => {
|
|
46
|
+
log('Shutting down daemon...');
|
|
47
|
+
try {
|
|
48
|
+
await daemon.stop();
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
log(`Shutdown error: ${err instanceof Error ? err.message : String(err)}`);
|
|
52
|
+
}
|
|
53
|
+
process.exit(0);
|
|
54
|
+
};
|
|
55
|
+
process.on('SIGINT', () => void shutdown());
|
|
56
|
+
process.on('SIGTERM', () => void shutdown());
|
|
4
57
|
}
|
|
5
58
|
//# sourceMappingURL=daemon.js.map
|
package/dist/cli/daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/health.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function runHealthCheck():
|
|
1
|
+
export declare function runHealthCheck(): Promise<number>;
|
|
2
2
|
//# sourceMappingURL=health.d.ts.map
|
package/dist/cli/health.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAMA,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAyCtD"}
|
package/dist/cli/health.js
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
process.stderr.write(
|
|
1
|
+
import { getConfig } from '../config.js';
|
|
2
|
+
function log(msg) {
|
|
3
|
+
process.stderr.write(`[wigolo health] ${msg}\n`);
|
|
4
|
+
}
|
|
5
|
+
export async function runHealthCheck() {
|
|
6
|
+
const config = getConfig();
|
|
7
|
+
const host = config.daemonHost;
|
|
8
|
+
const port = config.daemonPort;
|
|
9
|
+
const url = `http://${host}:${port}/health`;
|
|
10
|
+
try {
|
|
11
|
+
const response = await fetch(url, {
|
|
12
|
+
signal: AbortSignal.timeout(5000),
|
|
13
|
+
});
|
|
14
|
+
if (!response.ok) {
|
|
15
|
+
log(`Daemon returned HTTP ${response.status}`);
|
|
16
|
+
const text = await response.text().catch(() => '');
|
|
17
|
+
if (text)
|
|
18
|
+
log(text);
|
|
19
|
+
return 1;
|
|
20
|
+
}
|
|
21
|
+
const report = await response.json();
|
|
22
|
+
log(`Status: ${report.status}`);
|
|
23
|
+
log(`SearXNG: ${report.searxng}`);
|
|
24
|
+
log(`Browsers: ${report.browsers}`);
|
|
25
|
+
log(`Cache: ${report.cache}`);
|
|
26
|
+
log(`Uptime: ${report.uptime_seconds}s`);
|
|
27
|
+
log('');
|
|
28
|
+
log(JSON.stringify(report, null, 2));
|
|
29
|
+
return report.status === 'healthy' ? 0 : 1;
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
33
|
+
if (message.includes('ECONNREFUSED') || message.includes('fetch failed') || message.includes('timed out')) {
|
|
34
|
+
log(`Daemon is not running at ${host}:${port}`);
|
|
35
|
+
log(`Start it with: npx @staticn0va/wigolo serve`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
log(`Health check failed: ${message}`);
|
|
39
|
+
}
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
4
42
|
}
|
|
5
43
|
//# sourceMappingURL=health.js.map
|
package/dist/cli/health.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc;
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI,IAAI,SAAS,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,GAAG,CAAC,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAErC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAClC,GAAG,CAAC,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,GAAG,CAAC,WAAW,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC;QACzC,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAErC,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1G,GAAG,CAAC,4BAA4B,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAChD,GAAG,CAAC,6CAA6C,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
package/dist/cli/index.d.ts
CHANGED
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErG,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAQ1D"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const KNOWN_COMMANDS = new Set(['warmup', 'serve', 'health', 'doctor']);
|
|
1
|
+
const KNOWN_COMMANDS = new Set(['warmup', 'serve', 'health', 'doctor', 'auth', 'plugin', 'shell']);
|
|
2
2
|
export function parseCommand(argv) {
|
|
3
3
|
const first = argv[0];
|
|
4
4
|
if (first && KNOWN_COMMANDS.has(first)) {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAOA,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAOA,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAExH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEtB,IAAI,KAAK,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,KAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function runPluginAdd(gitUrl: string): void;
|
|
2
|
+
export declare function runPluginList(): void;
|
|
3
|
+
export declare function runPluginRemove(name: string): void;
|
|
4
|
+
export declare function runPluginCommand(args: string[]): void;
|
|
5
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/cli/plugin.ts"],"names":[],"mappings":"AAgDA,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA+CjD;AAED,wBAAgB,aAAa,IAAI,IAAI,CAwDpC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAoBlD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAkCrD"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { existsSync, readdirSync, readFileSync, mkdirSync, rmSync, statSync } from 'node:fs';
|
|
3
|
+
import { join, basename } from 'node:path';
|
|
4
|
+
import { getConfig } from '../config.js';
|
|
5
|
+
function log(msg) {
|
|
6
|
+
process.stderr.write(`[wigolo plugin] ${msg}\n`);
|
|
7
|
+
}
|
|
8
|
+
function extractRepoName(gitUrl) {
|
|
9
|
+
// Handle SSH-style URLs: git@github.com:user/repo.git
|
|
10
|
+
if (gitUrl.includes(':') && !gitUrl.includes('://')) {
|
|
11
|
+
const parts = gitUrl.split(':');
|
|
12
|
+
const pathPart = parts[parts.length - 1];
|
|
13
|
+
const name = basename(pathPart, '.git');
|
|
14
|
+
if (!name)
|
|
15
|
+
throw new Error('could not extract repo name from URL');
|
|
16
|
+
return name;
|
|
17
|
+
}
|
|
18
|
+
// Handle HTTPS URLs
|
|
19
|
+
try {
|
|
20
|
+
const url = new URL(gitUrl);
|
|
21
|
+
const pathParts = url.pathname.split('/').filter(Boolean);
|
|
22
|
+
if (pathParts.length === 0) {
|
|
23
|
+
throw new Error('could not extract repo name from URL');
|
|
24
|
+
}
|
|
25
|
+
const last = pathParts[pathParts.length - 1];
|
|
26
|
+
return last.endsWith('.git') ? last.slice(0, -4) : last;
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
if (err instanceof TypeError) {
|
|
30
|
+
throw new Error(`invalid git URL: ${gitUrl}`);
|
|
31
|
+
}
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function validatePluginName(name) {
|
|
36
|
+
if (!name || name.trim().length === 0) {
|
|
37
|
+
throw new Error('plugin name is required');
|
|
38
|
+
}
|
|
39
|
+
if (name.includes('/') || name.includes('\\') || name.includes('..')) {
|
|
40
|
+
throw new Error(`invalid plugin name: ${name} (must not contain path separators or "..")`);
|
|
41
|
+
}
|
|
42
|
+
if (name.startsWith('/')) {
|
|
43
|
+
throw new Error(`invalid plugin name: ${name} (must not be an absolute path)`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function runPluginAdd(gitUrl) {
|
|
47
|
+
if (!gitUrl || gitUrl.trim().length === 0) {
|
|
48
|
+
throw new Error('git url is required');
|
|
49
|
+
}
|
|
50
|
+
const config = getConfig();
|
|
51
|
+
const pluginsDir = config.pluginsDir;
|
|
52
|
+
const repoName = extractRepoName(gitUrl);
|
|
53
|
+
const targetDir = join(pluginsDir, repoName);
|
|
54
|
+
if (existsSync(targetDir)) {
|
|
55
|
+
throw new Error(`plugin "${repoName}" already exists at ${targetDir}. ` +
|
|
56
|
+
`Remove it first: wigolo plugin remove ${repoName}`);
|
|
57
|
+
}
|
|
58
|
+
mkdirSync(pluginsDir, { recursive: true });
|
|
59
|
+
log(`cloning ${gitUrl} into ${targetDir}...`);
|
|
60
|
+
try {
|
|
61
|
+
execFileSync('git', ['clone', '--depth', '1', gitUrl, repoName], {
|
|
62
|
+
cwd: pluginsDir,
|
|
63
|
+
stdio: 'pipe',
|
|
64
|
+
timeout: 60000,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
69
|
+
throw new Error(`clone failed: ${message}`);
|
|
70
|
+
}
|
|
71
|
+
log(`plugin "${repoName}" installed successfully`);
|
|
72
|
+
// Check for package.json with main field
|
|
73
|
+
const pkgPath = join(targetDir, 'package.json');
|
|
74
|
+
if (!existsSync(pkgPath)) {
|
|
75
|
+
log('WARNING: plugin has no package.json -- it may not load correctly');
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
try {
|
|
79
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
80
|
+
if (!pkg.main) {
|
|
81
|
+
log('WARNING: package.json has no "main" field -- plugin may not load');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
log('WARNING: package.json is not valid JSON');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export function runPluginList() {
|
|
90
|
+
const config = getConfig();
|
|
91
|
+
const pluginsDir = config.pluginsDir;
|
|
92
|
+
if (!existsSync(pluginsDir)) {
|
|
93
|
+
log('no plugins installed');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
let entries;
|
|
97
|
+
try {
|
|
98
|
+
entries = readdirSync(pluginsDir);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
log('no plugins installed (could not read plugins directory)');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const plugins = [];
|
|
105
|
+
for (const entry of entries) {
|
|
106
|
+
const dir = join(pluginsDir, entry);
|
|
107
|
+
let stat;
|
|
108
|
+
try {
|
|
109
|
+
stat = statSync(dir);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (!stat.isDirectory() && !stat.isSymbolicLink())
|
|
115
|
+
continue;
|
|
116
|
+
let name = entry;
|
|
117
|
+
let version = 'unknown';
|
|
118
|
+
try {
|
|
119
|
+
const pkg = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf-8'));
|
|
120
|
+
name = pkg.name ?? entry;
|
|
121
|
+
version = pkg.version ?? 'unknown';
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// package.json missing or malformed -- use directory name
|
|
125
|
+
}
|
|
126
|
+
plugins.push({ name, version, dir });
|
|
127
|
+
}
|
|
128
|
+
if (plugins.length === 0) {
|
|
129
|
+
log('no plugins installed');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
log(`installed plugins (${plugins.length}):\n`);
|
|
133
|
+
for (const p of plugins) {
|
|
134
|
+
process.stderr.write(` ${p.name} (${p.version})\n`);
|
|
135
|
+
process.stderr.write(` ${p.dir}\n\n`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export function runPluginRemove(name) {
|
|
139
|
+
validatePluginName(name);
|
|
140
|
+
const config = getConfig();
|
|
141
|
+
const pluginsDir = config.pluginsDir;
|
|
142
|
+
const targetDir = join(pluginsDir, name);
|
|
143
|
+
if (!existsSync(targetDir)) {
|
|
144
|
+
throw new Error(`plugin "${name}" not found at ${targetDir}`);
|
|
145
|
+
}
|
|
146
|
+
log(`removing plugin "${name}"...`);
|
|
147
|
+
try {
|
|
148
|
+
rmSync(targetDir, { recursive: true, force: true });
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
152
|
+
throw new Error(`remove "${name}" failed: ${message}`);
|
|
153
|
+
}
|
|
154
|
+
log(`plugin "${name}" removed successfully`);
|
|
155
|
+
}
|
|
156
|
+
export function runPluginCommand(args) {
|
|
157
|
+
const subcommand = args[0];
|
|
158
|
+
switch (subcommand) {
|
|
159
|
+
case 'add': {
|
|
160
|
+
const gitUrl = args[1];
|
|
161
|
+
if (!gitUrl) {
|
|
162
|
+
process.stderr.write('Usage: wigolo plugin add <git-url>\n');
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
runPluginAdd(gitUrl);
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
case 'list':
|
|
169
|
+
runPluginList();
|
|
170
|
+
break;
|
|
171
|
+
case 'remove': {
|
|
172
|
+
const name = args[1];
|
|
173
|
+
if (!name) {
|
|
174
|
+
process.stderr.write('Usage: wigolo plugin remove <name>\n');
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
runPluginRemove(name);
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
default:
|
|
181
|
+
process.stderr.write('Usage: wigolo plugin <add|list|remove>\n\n' +
|
|
182
|
+
' add <git-url> Clone a plugin repository\n' +
|
|
183
|
+
' list List installed plugins\n' +
|
|
184
|
+
' remove <name> Remove an installed plugin\n');
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/cli/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/cli/shell.ts"],"names":[],"mappings":"AAoBA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE5D"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { mkdirSync } from 'node:fs';
|
|
3
|
+
import { SmartRouter } from '../fetch/router.js';
|
|
4
|
+
import { BrowserPool } from '../fetch/browser-pool.js';
|
|
5
|
+
import { httpFetch } from '../fetch/http-client.js';
|
|
6
|
+
import { initDatabase, closeDatabase } from '../cache/db.js';
|
|
7
|
+
import { SearxngClient } from '../search/searxng.js';
|
|
8
|
+
import { DuckDuckGoEngine } from '../search/engines/duckduckgo.js';
|
|
9
|
+
import { BingEngine } from '../search/engines/bing.js';
|
|
10
|
+
import { StartpageEngine } from '../search/engines/startpage.js';
|
|
11
|
+
import { resolveSearchBackend, getBootstrapState } from '../searxng/bootstrap.js';
|
|
12
|
+
import { SearxngProcess } from '../searxng/process.js';
|
|
13
|
+
import { BackendStatus } from '../server/backend-status.js';
|
|
14
|
+
import { getConfig } from '../config.js';
|
|
15
|
+
import { createLogger } from '../logger.js';
|
|
16
|
+
import { startShell } from '../repl/shell.js';
|
|
17
|
+
const log = createLogger('cli');
|
|
18
|
+
export async function runShell(args) {
|
|
19
|
+
const config = getConfig();
|
|
20
|
+
const jsonMode = args.includes('--json');
|
|
21
|
+
mkdirSync(config.dataDir, { recursive: true });
|
|
22
|
+
initDatabase(join(config.dataDir, 'wigolo.db'));
|
|
23
|
+
const httpClient = {
|
|
24
|
+
fetch: (url, options) => httpFetch(url, options),
|
|
25
|
+
};
|
|
26
|
+
const browserPool = new BrowserPool();
|
|
27
|
+
const router = new SmartRouter(httpClient, browserPool);
|
|
28
|
+
const backendStatus = new BackendStatus();
|
|
29
|
+
const searchEngines = [
|
|
30
|
+
new BingEngine(),
|
|
31
|
+
new DuckDuckGoEngine(),
|
|
32
|
+
new StartpageEngine(),
|
|
33
|
+
];
|
|
34
|
+
let searxngProcess = null;
|
|
35
|
+
try {
|
|
36
|
+
const backend = await resolveSearchBackend();
|
|
37
|
+
if (backend.type === 'external' && backend.url) {
|
|
38
|
+
searchEngines.unshift(new SearxngClient(backend.url));
|
|
39
|
+
backendStatus.markHealthy();
|
|
40
|
+
log.info('shell using external SearXNG', { url: backend.url });
|
|
41
|
+
}
|
|
42
|
+
else if (backend.type === 'native' && backend.searxngPath) {
|
|
43
|
+
const state = getBootstrapState(config.dataDir);
|
|
44
|
+
if (state?.status === 'ready') {
|
|
45
|
+
searxngProcess = new SearxngProcess(backend.searxngPath, config.dataDir, {
|
|
46
|
+
onUnhealthy: (reason) => {
|
|
47
|
+
backendStatus.markUnhealthy(reason);
|
|
48
|
+
const idx = searchEngines.findIndex(e => e.name === 'searxng');
|
|
49
|
+
if (idx >= 0)
|
|
50
|
+
searchEngines.splice(idx, 1);
|
|
51
|
+
log.warn('SearXNG unhealthy in shell', { reason });
|
|
52
|
+
},
|
|
53
|
+
onHealthy: () => {
|
|
54
|
+
const url = searxngProcess?.getUrl();
|
|
55
|
+
if (!url)
|
|
56
|
+
return;
|
|
57
|
+
backendStatus.markHealthy();
|
|
58
|
+
if (!searchEngines.some(e => e.name === 'searxng')) {
|
|
59
|
+
searchEngines.unshift(new SearxngClient(url));
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
const url = await searxngProcess.start();
|
|
64
|
+
if (url) {
|
|
65
|
+
searchEngines.unshift(new SearxngClient(url));
|
|
66
|
+
backendStatus.markHealthy();
|
|
67
|
+
log.info('SearXNG ready for shell', { url });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
log.warn('SearXNG setup failed for shell, using direct scraping', { error: String(err) });
|
|
74
|
+
backendStatus.markUnhealthy(`SearXNG setup failed: ${String(err)}`);
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
await startShell({ router, engines: searchEngines, backendStatus }, { jsonMode });
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
if (searxngProcess)
|
|
81
|
+
await searxngProcess.stop();
|
|
82
|
+
await browserPool.shutdown();
|
|
83
|
+
closeDatabase();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/cli/shell.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/warmup.d.ts
CHANGED
|
@@ -6,6 +6,10 @@ export interface WarmupResult {
|
|
|
6
6
|
trafilatura?: 'ok' | 'failed' | 'skipped';
|
|
7
7
|
reranker?: 'ok' | 'failed';
|
|
8
8
|
rerankerError?: string;
|
|
9
|
+
firefox?: 'ok' | 'failed';
|
|
10
|
+
firefoxError?: string;
|
|
11
|
+
webkit?: 'ok' | 'failed';
|
|
12
|
+
webkitError?: string;
|
|
9
13
|
}
|
|
10
14
|
export declare function runWarmup(flags?: string[]): Promise<WarmupResult>;
|
|
11
15
|
//# sourceMappingURL=warmup.d.ts.map
|
package/dist/cli/warmup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warmup.d.ts","sourceRoot":"","sources":["../../src/cli/warmup.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,IAAI,GAAG,QAAQ,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"warmup.d.ts","sourceRoot":"","sources":["../../src/cli/warmup.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,IAAI,GAAG,QAAQ,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAuHD,wBAAsB,SAAS,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CA4E3E"}
|
package/dist/cli/warmup.js
CHANGED
|
@@ -74,6 +74,32 @@ function installFlashRank() {
|
|
|
74
74
|
return { reranker: 'failed', rerankerError: message };
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
+
function installFirefox() {
|
|
78
|
+
log('Installing Playwright Firefox...');
|
|
79
|
+
try {
|
|
80
|
+
execSync('npx playwright install firefox', { stdio: 'pipe', timeout: 120000 });
|
|
81
|
+
log('Playwright Firefox installed');
|
|
82
|
+
return { firefox: 'ok' };
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
86
|
+
log(`Firefox install failed: ${message}`);
|
|
87
|
+
return { firefox: 'failed', firefoxError: message };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function installWebkit() {
|
|
91
|
+
log('Installing Playwright WebKit...');
|
|
92
|
+
try {
|
|
93
|
+
execSync('npx playwright install webkit', { stdio: 'pipe', timeout: 120000 });
|
|
94
|
+
log('Playwright WebKit installed');
|
|
95
|
+
return { webkit: 'ok' };
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
99
|
+
log(`WebKit install failed: ${message}`);
|
|
100
|
+
return { webkit: 'failed', webkitError: message };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
77
103
|
function setupSearxng(dataDir) {
|
|
78
104
|
const state = getBootstrapState(dataDir);
|
|
79
105
|
if (state?.status === 'ready') {
|
|
@@ -120,7 +146,22 @@ export async function runWarmup(flags = []) {
|
|
|
120
146
|
if (flagSet.has('--reranker') || flagSet.has('--all')) {
|
|
121
147
|
rerankerResult = installFlashRank();
|
|
122
148
|
}
|
|
123
|
-
|
|
149
|
+
let firefoxResult = {};
|
|
150
|
+
if (flagSet.has('--firefox') || flagSet.has('--all')) {
|
|
151
|
+
firefoxResult = installFirefox();
|
|
152
|
+
}
|
|
153
|
+
let webkitResult = {};
|
|
154
|
+
if (flagSet.has('--webkit') || flagSet.has('--all')) {
|
|
155
|
+
webkitResult = installWebkit();
|
|
156
|
+
}
|
|
157
|
+
const result = {
|
|
158
|
+
...pwResult,
|
|
159
|
+
...searxngResult,
|
|
160
|
+
trafilatura: trafStatus,
|
|
161
|
+
...rerankerResult,
|
|
162
|
+
...firefoxResult,
|
|
163
|
+
...webkitResult,
|
|
164
|
+
};
|
|
124
165
|
log('');
|
|
125
166
|
log('Summary:');
|
|
126
167
|
log(` Playwright: ${result.playwright}${result.playwrightError ? ` (${result.playwrightError})` : ''}`);
|
|
@@ -131,6 +172,12 @@ export async function runWarmup(flags = []) {
|
|
|
131
172
|
if (result.reranker) {
|
|
132
173
|
log(` FlashRank: ${result.reranker}${result.rerankerError ? ` (${result.rerankerError})` : ''}`);
|
|
133
174
|
}
|
|
175
|
+
if (result.firefox) {
|
|
176
|
+
log(` Firefox: ${result.firefox}${result.firefoxError ? ` (${result.firefoxError})` : ''}`);
|
|
177
|
+
}
|
|
178
|
+
if (result.webkit) {
|
|
179
|
+
log(` WebKit: ${result.webkit}${result.webkitError ? ` (${result.webkitError})` : ''}`);
|
|
180
|
+
}
|
|
134
181
|
return result;
|
|
135
182
|
}
|
|
136
183
|
//# sourceMappingURL=warmup.js.map
|
package/dist/cli/warmup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warmup.js","sourceRoot":"","sources":["../../src/cli/warmup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"warmup.js","sourceRoot":"","sources":["../../src/cli/warmup.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BrowserType } from './types.js';
|
|
1
2
|
export interface Config {
|
|
2
3
|
searxngUrl: string | null;
|
|
3
4
|
searxngMode: 'native' | 'docker';
|
|
@@ -16,6 +17,7 @@ export interface Config {
|
|
|
16
17
|
browserFallbackThreshold: number;
|
|
17
18
|
authStatePath: string | null;
|
|
18
19
|
chromeProfilePath: string | null;
|
|
20
|
+
cdpUrl: string | null;
|
|
19
21
|
dataDir: string;
|
|
20
22
|
cacheTtlSearch: number;
|
|
21
23
|
cacheTtlContent: number;
|
|
@@ -38,6 +40,11 @@ export interface Config {
|
|
|
38
40
|
bootstrapMaxAttempts: number;
|
|
39
41
|
bootstrapBackoffSeconds: number[];
|
|
40
42
|
healthProbeIntervalMs: number;
|
|
43
|
+
daemonPort: number;
|
|
44
|
+
daemonHost: string;
|
|
45
|
+
pluginsDir: string;
|
|
46
|
+
browserTypes: BrowserType[];
|
|
47
|
+
shellHistoryPath: string;
|
|
41
48
|
}
|
|
42
49
|
export declare function getConfig(): Config;
|
|
43
50
|
export declare function resetConfig(): void;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,EAAE,MAAM,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzC,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,qBAAqB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,EAAE,MAAM,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzC,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AA6BD,wBAAgB,SAAS,IAAI,MAAM,CA2DlC;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|