@xingular/harness 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -5
- package/README.md +70 -19
- package/dist/cli.js +10321 -5785
- package/dist/sdk/agents/builtin.d.ts +2 -0
- package/dist/sdk/agents/builtin.js +34 -0
- package/dist/sdk/agents/narrow.d.ts +13 -0
- package/dist/sdk/agents/narrow.js +29 -0
- package/dist/sdk/agents/profiles.d.ts +80 -0
- package/dist/sdk/agents/profiles.js +221 -0
- package/dist/sdk/annotations/bridge.d.ts +42 -0
- package/dist/sdk/annotations/bridge.js +264 -0
- package/dist/sdk/annotations/capture.d.ts +116 -0
- package/dist/sdk/annotations/capture.js +308 -0
- package/dist/sdk/annotations/delivery.d.ts +72 -0
- package/dist/sdk/annotations/delivery.js +130 -0
- package/dist/sdk/annotations/inspect.d.ts +10 -0
- package/dist/sdk/annotations/inspect.js +33 -0
- package/dist/sdk/annotations/isolated.d.ts +6 -0
- package/dist/sdk/annotations/isolated.js +51 -0
- package/dist/sdk/annotations/pageScript.d.ts +28 -0
- package/dist/sdk/annotations/pageScript.js +570 -0
- package/dist/sdk/annotations/part.d.ts +10 -0
- package/dist/sdk/annotations/part.js +144 -0
- package/dist/sdk/annotations/queue.d.ts +4 -0
- package/dist/sdk/annotations/queue.js +40 -0
- package/dist/sdk/annotations/serverMethods.d.ts +3 -0
- package/dist/sdk/annotations/serverMethods.js +62 -0
- package/dist/sdk/annotations/store.d.ts +160 -0
- package/dist/sdk/annotations/store.js +386 -0
- package/dist/sdk/browser/index.d.ts +14 -3
- package/dist/sdk/browser/index.js +11 -4
- package/dist/sdk/browser/serverMethods.d.ts +3 -0
- package/dist/sdk/browser/serverMethods.js +7 -0
- package/dist/sdk/browser/session.d.ts +1 -0
- package/dist/sdk/browser/session.js +45 -9
- package/dist/sdk/cli.js +19 -11
- package/dist/sdk/core/bus.js +1 -1
- package/dist/sdk/core/env.d.ts +1 -1
- package/dist/sdk/core/env.js +1 -1
- package/dist/sdk/doctor/serverMethods.d.ts +3 -0
- package/dist/sdk/doctor/serverMethods.js +8 -0
- package/dist/sdk/harness.d.ts +15 -0
- package/dist/sdk/harness.js +44 -5
- package/dist/sdk/history/recall.js +8 -8
- package/dist/sdk/history/serverMethods.d.ts +3 -0
- package/dist/sdk/history/serverMethods.js +8 -0
- package/dist/sdk/hub/cli.d.ts +1 -1
- package/dist/sdk/hub/cli.js +1 -1
- package/dist/sdk/hub/schema.d.ts +1 -1
- package/dist/sdk/hub/serverMethods.d.ts +3 -0
- package/dist/sdk/hub/serverMethods.js +11 -0
- package/dist/sdk/index.d.ts +10 -0
- package/dist/sdk/index.js +7 -0
- package/dist/sdk/mcp/connections.js +14 -7
- package/dist/sdk/mcp/serverMethods.d.ts +3 -0
- package/dist/sdk/mcp/serverMethods.js +22 -0
- package/dist/sdk/plugins/builtin.d.ts +1 -0
- package/dist/sdk/plugins/builtin.js +128 -33
- package/dist/sdk/plugins/builtinRegistry.d.ts +53 -0
- package/dist/sdk/plugins/builtinRegistry.js +49 -0
- package/dist/sdk/plugins/cli.d.ts +1 -1
- package/dist/sdk/plugins/cli.js +4 -3
- package/dist/sdk/prompt/compile.d.ts +5 -2
- package/dist/sdk/prompt/compile.js +25 -8
- package/dist/sdk/refine/cli.d.ts +1 -1
- package/dist/sdk/refine/cli.js +2 -2
- package/dist/sdk/refine/serverMethods.d.ts +3 -0
- package/dist/sdk/refine/serverMethods.js +20 -0
- package/dist/sdk/server/methods.js +9 -86
- package/dist/sdk/server/params.d.ts +4 -0
- package/dist/sdk/server/params.js +11 -0
- package/dist/sdk/sessions/contracts.d.ts +17 -0
- package/dist/sdk/sessions/contracts.js +42 -3
- package/dist/sdk/sessions/planMode.d.ts +5 -2
- package/dist/sdk/sessions/planMode.js +12 -3
- package/dist/sdk/sessions/reasoningSummaries.d.ts +2 -2
- package/dist/sdk/sessions/reasoningSummaries.js +3 -3
- package/dist/sdk/sessions/registry.d.ts +1 -0
- package/dist/sdk/sessions/registry.js +4 -1
- package/dist/sdk/sessions/runIndex.js +7 -7
- package/dist/sdk/sessions/runStore.js +3 -1
- package/dist/sdk/sessions/runner.js +2 -2
- package/dist/sdk/sessions/sessions.d.ts +17 -5
- package/dist/sdk/sessions/sessions.js +79 -12
- package/dist/sdk/sessions/sideQuestionServerMethods.d.ts +3 -0
- package/dist/sdk/sessions/sideQuestionServerMethods.js +19 -0
- package/dist/sdk/sessions/sideQuestions.d.ts +66 -0
- package/dist/sdk/sessions/sideQuestions.js +290 -0
- package/dist/sdk/sessions/subagentServerMethods.d.ts +3 -0
- package/dist/sdk/sessions/subagentServerMethods.js +41 -0
- package/dist/sdk/sessions/subagentService.d.ts +13 -2
- package/dist/sdk/sessions/subagentService.js +34 -16
- package/dist/sdk/sessions/subagents.d.ts +9 -1
- package/dist/sdk/sessions/subagents.js +19 -0
- package/dist/sdk/terminal/browser.d.ts +62 -0
- package/dist/sdk/terminal/browser.js +41 -0
- package/dist/sdk/terminal/browserControl.d.ts +29 -0
- package/dist/sdk/terminal/browserControl.js +186 -0
- package/dist/sdk/terminal/commandHelp.d.ts +17 -0
- package/dist/sdk/terminal/commandHelp.js +20 -0
- package/dist/sdk/terminal/controller.d.ts +7 -1
- package/dist/sdk/terminal/controller.js +34 -2
- package/dist/sdk/terminal/opentui/subagentsWidget.d.ts +28 -0
- package/dist/sdk/terminal/opentui/subagentsWidget.js +52 -0
- package/dist/sdk/terminal/piExtension.js +33 -48
- package/dist/sdk/terminal/socket.d.ts +6 -3
- package/dist/sdk/terminal/socket.js +40 -9
- package/dist/sdk/terminal/standalone.d.ts +2 -0
- package/dist/sdk/terminal/standalone.js +50 -10
- package/dist/sdk/terminal/subagentMonitor.d.ts +38 -0
- package/dist/sdk/terminal/subagentMonitor.js +121 -0
- package/dist/sdk/terminal/terminals.d.ts +42 -6
- package/dist/sdk/terminal/terminals.js +359 -18
- package/dist/sdk/terminal/trajectory.js +2 -2
- package/dist/sdk/terminal/tui/annotateCommand.d.ts +3 -0
- package/dist/sdk/terminal/tui/annotateCommand.js +22 -0
- package/dist/sdk/terminal/tui/commandPages.d.ts +5 -1
- package/dist/sdk/terminal/tui/commandPages.js +54 -6
- package/dist/sdk/terminal/tui/commands.d.ts +8 -4
- package/dist/sdk/terminal/tui/commands.js +181 -58
- package/dist/sdk/terminal/tui/dialogGeometry.d.ts +2 -2
- package/dist/sdk/terminal/tui/dialogGeometry.js +4 -2
- package/dist/sdk/terminal/tui/dialogs.d.ts +6 -1
- package/dist/sdk/terminal/tui/dialogs.js +9 -2
- package/dist/sdk/terminal/tui/modelPicker.js +1 -6
- package/dist/sdk/terminal/tui/page.d.ts +3 -0
- package/dist/sdk/terminal/tui/pageOverlay.js +17 -6
- package/dist/sdk/terminal/tui/pages/accountsPage.d.ts +26 -4
- package/dist/sdk/terminal/tui/pages/accountsPage.js +264 -36
- package/dist/sdk/terminal/tui/pages/agentsPage.d.ts +74 -0
- package/dist/sdk/terminal/tui/pages/agentsPage.js +190 -0
- package/dist/sdk/terminal/tui/pages/annotatePage.d.ts +94 -0
- package/dist/sdk/terminal/tui/pages/annotatePage.js +341 -0
- package/dist/sdk/terminal/tui/pages/browserPage.d.ts +87 -0
- package/dist/sdk/terminal/tui/pages/browserPage.js +738 -0
- package/dist/sdk/terminal/tui/pages/doctorPage.d.ts +2 -0
- package/dist/sdk/terminal/tui/pages/doctorPage.js +103 -15
- package/dist/sdk/terminal/tui/pages/notesPage.d.ts +75 -0
- package/dist/sdk/terminal/tui/pages/notesPage.js +201 -0
- package/dist/sdk/terminal/tui/pages/settingsPage.d.ts +8 -0
- package/dist/sdk/terminal/tui/pages/settingsPage.js +16 -1
- package/dist/sdk/terminal/tui/pages/subagentsPage.d.ts +23 -0
- package/dist/sdk/terminal/tui/pages/subagentsPage.js +70 -0
- package/dist/sdk/terminal/tui/pages/trajectoryPage.d.ts +12 -5
- package/dist/sdk/terminal/tui/pages/trajectoryPage.js +156 -83
- package/dist/sdk/terminal/tui/pages/worktreesPage.d.ts +72 -0
- package/dist/sdk/terminal/tui/pages/worktreesPage.js +203 -0
- package/dist/sdk/terminal/tui/planMode.d.ts +1 -1
- package/dist/sdk/terminal/tui/planMode.js +1 -1
- package/dist/sdk/terminal/tui/pluginCommands.d.ts +14 -0
- package/dist/sdk/terminal/tui/pluginCommands.js +27 -0
- package/dist/sdk/terminal/tui/questions.d.ts +2 -0
- package/dist/sdk/terminal/tui/runtime.js +4 -2
- package/dist/sdk/terminal/tui/settingsModel.d.ts +2 -0
- package/dist/sdk/terminal/tui/settingsModel.js +32 -2
- package/dist/sdk/terminal/tui/sideQuestion.d.ts +26 -26
- package/dist/sdk/terminal/tui/sideQuestion.js +131 -98
- package/dist/sdk/terminal/tui/ui.d.ts +2 -0
- package/dist/sdk/terminal/tui/ui.js +1 -0
- package/dist/sdk/tools/askUser.js +26 -8
- package/dist/sdk/tools/checklist.js +2 -2
- package/dist/sdk/tools/harnessTools.d.ts +2 -0
- package/dist/sdk/tools/harnessTools.js +1 -1
- package/dist/sdk/tools/spawnSubagent.js +13 -4
- package/dist/sdk/web/part.d.ts +10 -0
- package/dist/sdk/web/part.js +6 -0
- package/dist/sdk/web/serverMethods.d.ts +3 -0
- package/dist/sdk/web/serverMethods.js +7 -0
- package/dist/sdk/wiki/serverMethods.d.ts +3 -0
- package/dist/sdk/wiki/serverMethods.js +26 -0
- package/dist/sdk/worktrees/cli.d.ts +11 -0
- package/dist/sdk/worktrees/cli.js +146 -0
- package/dist/sdk/worktrees/copy.d.ts +9 -0
- package/dist/sdk/worktrees/copy.js +111 -0
- package/dist/sdk/worktrees/git.d.ts +16 -0
- package/dist/sdk/worktrees/git.js +81 -0
- package/dist/sdk/worktrees/serverMethods.d.ts +3 -0
- package/dist/sdk/worktrees/serverMethods.js +30 -0
- package/dist/sdk/worktrees/service.d.ts +73 -0
- package/dist/sdk/worktrees/service.js +483 -0
- package/dist/sdk/worktrees/setup.d.ts +23 -0
- package/dist/sdk/worktrees/setup.js +65 -0
- package/dist/sdk/worktrees/types.d.ts +91 -0
- package/dist/sdk/worktrees/types.js +1 -0
- package/dist/sdk/world/cli.d.ts +2 -2
- package/dist/sdk/world/cli.js +6 -6
- package/dist/sdk/world/world.d.ts +3 -1
- package/dist/sdk/world/world.js +8 -9
- package/dist/terminal-opentui.js +14540 -7374
- package/dist/terminal-pi.js +285 -666
- package/docs/README.md +22 -2
- package/docs/architecture/00-overview.md +28 -16
- package/docs/architecture/02-sessions-and-runs.md +72 -15
- package/docs/architecture/03-variants.md +10 -2
- package/docs/architecture/04-prompt.md +26 -6
- package/docs/architecture/06-plugins-and-capabilities.md +39 -3
- package/docs/architecture/07-tools-and-gate.md +21 -6
- package/docs/architecture/09-accounts-and-connectors.md +8 -0
- package/docs/architecture/10-server-protocol.md +111 -2
- package/docs/architecture/11-terminal.md +185 -5
- package/docs/architecture/12-storage.md +15 -1
- package/docs/architecture/13-world-tools.md +28 -6
- package/docs/architecture/14-surfaces-and-parity.md +89 -0
- package/docs/architecture/README.md +15 -4
- package/docs/architecture/proposals/PROP-0006-run-checklist.md +4 -2
- package/docs/architecture/proposals/PROP-0013-resource-browser.md +58 -0
- package/docs/architecture/proposals/PROP-0014-fullscreen-browser-tabs.md +58 -0
- package/docs/architecture/proposals/PROP-0015-one-capability-surface.md +88 -0
- package/docs/architecture/proposals/PROP-0016-managed-worktrees.md +156 -0
- package/docs/architecture/proposals/PROP-0017-page-annotations.md +127 -0
- package/docs/architecture/proposals/PROP-0018-annotation-queue-and-app-targets.md +179 -0
- package/docs/architecture/proposals/PROP-0019-contextual-side-questions.md +122 -0
- package/docs/architecture/proposals/PROP-0020-builtin-feature-plugins.md +105 -0
- package/docs/architecture/proposals/PROP-0021-command-namespaces-and-duplicates.md +99 -0
- package/docs/architecture/proposals/PROP-0022-plan-only-questions.md +102 -0
- package/docs/architecture/proposals/PROP-0023-xagent-cli-name.md +61 -0
- package/docs/architecture/proposals/PROP-0024-question-sketch-previews.md +130 -0
- package/docs/architecture/proposals/PROP-0025-contextual-question-wireframes.md +49 -0
- package/docs/architecture/proposals/PROP-0026-connected-sketch-display.md +94 -0
- package/docs/architecture/proposals/PROP-0027-xingular-agent-product-identity.md +60 -0
- package/docs/architecture/proposals/PROP-0028-normalize-question-wireframes.md +55 -0
- package/docs/architecture/proposals/PROP-0029-agent-profiles.md +124 -0
- package/docs/architecture/proposals/PROP-0030-subagent-title.md +86 -0
- package/docs/architecture/proposals/README.md +25 -0
- package/docs/decisions/ADR-0009-xharness-command.md +6 -5
- package/docs/decisions/ADR-0014-public-release-baseline.md +3 -2
- package/docs/decisions/ADR-0015-resource-browser.md +28 -0
- package/docs/decisions/ADR-0016-fullscreen-browser-tabs.md +31 -0
- package/docs/decisions/ADR-0017-one-capability-surface.md +34 -0
- package/docs/decisions/ADR-0018-builtin-feature-plugins.md +35 -0
- package/docs/decisions/ADR-0019-managed-git-worktrees.md +31 -0
- package/docs/decisions/ADR-0020-page-annotations.md +37 -0
- package/docs/decisions/ADR-0021-required-command-namespaces.md +40 -0
- package/docs/decisions/ADR-0022-plan-only-question-tools.md +34 -0
- package/docs/decisions/ADR-0023-contextual-side-question-runs.md +35 -0
- package/docs/decisions/ADR-0024-xagent-command.md +40 -0
- package/docs/decisions/ADR-0025-question-choice-sketches.md +49 -0
- package/docs/decisions/ADR-0026-contextual-question-wireframes.md +58 -0
- package/docs/decisions/ADR-0027-connected-sketch-display.md +60 -0
- package/docs/decisions/ADR-0028-xingular-agent-product-identity.md +56 -0
- package/docs/decisions/ADR-0029-normalized-question-wireframe-borders.md +33 -0
- package/docs/decisions/ADR-0030-agent-profiles.md +43 -0
- package/docs/doctor.md +10 -4
- package/docs/features/README.md +26 -0
- package/docs/features/interfaces/README.md +1 -1
- package/docs/future-work.md +48 -0
- package/docs/parity.md +78 -0
- package/docs/releases/1.0.0.md +2 -2
- package/docs/releases/4.0.0.md +46 -0
- package/docs/releases/README.md +20 -15
- package/docs/study/00-index.md +5 -0
- package/docs/study/autonomous-engineering-sources.md +277 -0
- package/docs/study/autonomy-sources.md +147 -0
- package/docs/study/proactive-autonomy.md +408 -0
- package/docs/study/tui-resource-browser.md +78 -0
- package/docs/terminal-tui.md +325 -93
- package/package.json +3 -3
package/dist/sdk/world/cli.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type SecretStore } from "../accounts/secrets.js";
|
|
2
|
-
export declare const WEB_USAGE = "Usage:
|
|
3
|
-
export declare const BROWSER_USAGE = "Usage:
|
|
2
|
+
export declare const WEB_USAGE = "Usage: xagent web <status | key <provider> [--remove] | keyless on|off> [--state <dir>] [--data <dir>]\n\n status Which search services are ready\n key <provider> Save a key for brave, tavily or exa, read from standard input\n key <provider> --remove\n Forget that key\n keyless on|off Search DuckDuckGo's public results page when no key is saved\n (default off; it often answers automated requests with a bot check)\n";
|
|
3
|
+
export declare const BROWSER_USAGE = "Usage: xagent browser [status | set <options>] [--state <dir>]\n\n status How the browser runs\n set --headed | --headless Show the browser window, or not (default: headless)\n set --allow-private | --public-only\n Let pages reach this machine and private networks (local\n development), or only public addresses (default)\n set --domains a.com,b.org | --any-domain\n Only these sites (and their subdomains), or any\n set --attach <http://127.0.0.1:9222> | --launch\n Use a browser you already run (its DevTools address, on this\n machine), or launch one (default: Chrome, Edge, then Chromium)\n set --executable <path> | --default-executable\n";
|
|
4
4
|
interface CliDependencies {
|
|
5
5
|
home?: string;
|
|
6
6
|
write?: (text: string) => void;
|
package/dist/sdk/world/cli.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// `
|
|
1
|
+
// `xagent web` and `xagent browser`: the settings a person keeps for the world tools on this
|
|
2
2
|
// device. Keys are read from standard input, never from the command line, so they stay out of
|
|
3
3
|
// shell history.
|
|
4
4
|
import { homedir } from 'node:os';
|
|
@@ -9,7 +9,7 @@ import { settingValue } from "../plugins/firstParty.js";
|
|
|
9
9
|
import { readBrowserConfig, writeBrowserConfig } from "../browser/config.js";
|
|
10
10
|
import { SEARCH_PROVIDERS } from "../web/search.js";
|
|
11
11
|
import { KEYLESS_SEARCH, WEB_PLUGIN, WEB_SETTINGS } from "../web/tools.js";
|
|
12
|
-
export const WEB_USAGE = `Usage:
|
|
12
|
+
export const WEB_USAGE = `Usage: xagent web <status | key <provider> [--remove] | keyless on|off> [--state <dir>] [--data <dir>]
|
|
13
13
|
|
|
14
14
|
status Which search services are ready
|
|
15
15
|
key <provider> Save a key for brave, tavily or exa, read from standard input
|
|
@@ -18,7 +18,7 @@ export const WEB_USAGE = `Usage: xharness web <status | key <provider> [--remove
|
|
|
18
18
|
keyless on|off Search DuckDuckGo's public results page when no key is saved
|
|
19
19
|
(default off; it often answers automated requests with a bot check)
|
|
20
20
|
`;
|
|
21
|
-
export const BROWSER_USAGE = `Usage:
|
|
21
|
+
export const BROWSER_USAGE = `Usage: xagent browser [status | set <options>] [--state <dir>]
|
|
22
22
|
|
|
23
23
|
status How the browser runs
|
|
24
24
|
set --headed | --headless Show the browser window, or not (default: headless)
|
|
@@ -66,7 +66,7 @@ export async function runWebCli(argv, dependencies = {}) {
|
|
|
66
66
|
if (command === 'status') {
|
|
67
67
|
for (const provider of SEARCH_PROVIDERS) {
|
|
68
68
|
if (!provider.key) {
|
|
69
|
-
write(`${provider.title.padEnd(22)} ${keylessOn(dataRoot) ? 'on' : 'off (
|
|
69
|
+
write(`${provider.title.padEnd(22)} ${keylessOn(dataRoot) ? 'on' : 'off (xagent web keyless on)'}\n`);
|
|
70
70
|
continue;
|
|
71
71
|
}
|
|
72
72
|
write(`${provider.title.padEnd(22)} ${(await secrets.get(provider.key)) ? 'key saved' : 'no key'}\n`);
|
|
@@ -75,7 +75,7 @@ export async function runWebCli(argv, dependencies = {}) {
|
|
|
75
75
|
}
|
|
76
76
|
if (command === 'keyless') {
|
|
77
77
|
if (name !== 'on' && name !== 'off') {
|
|
78
|
-
write('Say on or off:
|
|
78
|
+
write('Say on or off: xagent web keyless on\n');
|
|
79
79
|
return 2;
|
|
80
80
|
}
|
|
81
81
|
const choices = attachments.load(dataRoot);
|
|
@@ -97,7 +97,7 @@ export async function runWebCli(argv, dependencies = {}) {
|
|
|
97
97
|
}
|
|
98
98
|
const key = (await (dependencies.read ?? readStdin)()).trim();
|
|
99
99
|
if (!key || /\s/.test(key)) {
|
|
100
|
-
write('Give the key on standard input, for example: pbpaste |
|
|
100
|
+
write('Give the key on standard input, for example: pbpaste | xagent web key brave\n');
|
|
101
101
|
return 2;
|
|
102
102
|
}
|
|
103
103
|
await secrets.set(provider.key, key);
|
|
@@ -27,6 +27,8 @@ export interface WorldOptions {
|
|
|
27
27
|
request?: WebRequest;
|
|
28
28
|
/** Replaces the browser's launcher and address check in tests. */
|
|
29
29
|
browser?: Omit<BrowserPartOptions, 'stateDir'> | false;
|
|
30
|
+
/** Told when the agent marks a page note fixed, so front ends refresh (PROP-0018). */
|
|
31
|
+
notesChanged?: (sessionId: string | null, ids: string[]) => void;
|
|
30
32
|
}
|
|
31
33
|
/** A family of world tools, switched as one plugin. */
|
|
32
34
|
export interface WorldPart {
|
|
@@ -40,7 +42,7 @@ export interface WorldPart {
|
|
|
40
42
|
export declare class World {
|
|
41
43
|
private readonly options;
|
|
42
44
|
readonly parts: WorldPart[];
|
|
43
|
-
private readonly
|
|
45
|
+
private readonly browserEngine;
|
|
44
46
|
constructor(options: WorldOptions);
|
|
45
47
|
add(part: WorldPart): void;
|
|
46
48
|
get plugins(): PluginDescriptor[];
|
package/dist/sdk/world/world.js
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import * as attachments from "../plugins/attachments.js";
|
|
2
|
+
import { BUILTIN_PLUGIN_REGISTRY } from "../plugins/builtin.js";
|
|
2
3
|
import { settingValue } from "../plugins/firstParty.js";
|
|
3
4
|
import { contributionId } from "../plugins/identity.js";
|
|
4
5
|
import { findRun } from "../sessions/runStore.js";
|
|
5
|
-
import { KEYLESS_SEARCH, WEB_PLUGIN, WEB_SETTINGS
|
|
6
|
+
import { KEYLESS_SEARCH, WEB_PLUGIN, WEB_SETTINGS } from "../web/tools.js";
|
|
6
7
|
import { SEARCH_PROVIDERS } from "../web/search.js";
|
|
7
8
|
import { invalid } from "../core/errors.js";
|
|
8
9
|
import { readBrowserConfig, writeBrowserConfig } from "../browser/config.js";
|
|
9
|
-
import {
|
|
10
|
+
import { createBrowserEngine } from "../browser/index.js";
|
|
10
11
|
const UNATTENDED = new Set(['probe', 'improver', 'reflection']);
|
|
11
12
|
export class World {
|
|
12
13
|
options;
|
|
13
14
|
parts = [];
|
|
14
|
-
|
|
15
|
+
browserEngine;
|
|
15
16
|
constructor(options) {
|
|
16
17
|
this.options = options;
|
|
17
|
-
this.
|
|
18
|
-
this.parts.push({
|
|
19
|
-
if (options.browser !== false)
|
|
20
|
-
this.parts.push(browserPart({ stateDir: options.stateDir, ...options.browser }));
|
|
18
|
+
this.browserEngine = options.browser === false ? null : createBrowserEngine({ stateDir: options.stateDir, ...options.browser });
|
|
19
|
+
this.parts.push(...BUILTIN_PLUGIN_REGISTRY.worldParts({ options, setting: (pluginId, key) => this.setting(pluginId, key), browserEngine: this.browserEngine }));
|
|
21
20
|
}
|
|
22
21
|
add(part) {
|
|
23
22
|
this.parts.push(part);
|
|
@@ -72,9 +71,9 @@ export class World {
|
|
|
72
71
|
return writeBrowserConfig(this.options.stateDir, change);
|
|
73
72
|
}
|
|
74
73
|
async release(sessionKey) {
|
|
75
|
-
await Promise.all(this.parts.map((part) => part.release?.(sessionKey)));
|
|
74
|
+
await Promise.all([...this.parts.map((part) => part.release?.(sessionKey)), this.browserEngine?.release(sessionKey)]);
|
|
76
75
|
}
|
|
77
76
|
async close() {
|
|
78
|
-
await Promise.all(this.parts.map((part) => part.close?.()));
|
|
77
|
+
await Promise.all([...this.parts.map((part) => part.close?.()), this.browserEngine?.close()]);
|
|
79
78
|
}
|
|
80
79
|
}
|