@agimon-ai/po-core 0.0.0-alpha.13 → 0.0.0-alpha.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extensionFile.cjs +3 -0
- package/dist/extensionFile.d.mts +3 -2
- package/dist/extensionFile.mjs +3 -1
- package/dist/headlessHub.cjs +71 -76
- package/dist/headlessHub.cjs.map +1 -1
- package/dist/headlessHub.d.mts +23 -13
- package/dist/headlessHub.d.mts.map +1 -1
- package/dist/headlessHub.mjs +71 -76
- package/dist/headlessHub.mjs.map +1 -1
- package/dist/headlessSessionHost.d.mts +6 -5
- package/dist/headlessSessionHost.d.mts.map +1 -1
- package/dist/packageApiServer.cjs +32 -23
- package/dist/packageApiServer.cjs.map +1 -1
- package/dist/packageApiServer.d.mts +19 -12
- package/dist/packageApiServer.d.mts.map +1 -1
- package/dist/packageApiServer.mjs +32 -23
- package/dist/packageApiServer.mjs.map +1 -1
- package/dist/runtimeCordisHost.cjs.map +1 -1
- package/dist/runtimeCordisHost.d.mts +1 -1
- package/dist/runtimeCordisHost.mjs.map +1 -1
- package/dist/serverPlugin.cjs +39 -0
- package/dist/serverPlugin.d.mts +12 -0
- package/dist/serverPlugin.mjs +11 -0
- package/dist/src/extensions/extensionFile.cjs +18 -2
- package/dist/src/extensions/extensionFile.cjs.map +1 -1
- package/dist/src/extensions/extensionFile.d.mts +14 -1
- package/dist/src/extensions/extensionFile.d.mts.map +1 -1
- package/dist/src/extensions/extensionFile.mjs +18 -3
- package/dist/src/extensions/extensionFile.mjs.map +1 -1
- package/dist/src/extensions/serverPlugin.cjs +230 -91
- package/dist/src/extensions/serverPlugin.cjs.map +1 -1
- package/dist/src/extensions/serverPlugin.d.mts +2 -2
- package/dist/src/extensions/serverPlugin.d.mts.map +1 -1
- package/dist/src/extensions/serverPlugin.mjs +230 -91
- package/dist/src/extensions/serverPlugin.mjs.map +1 -1
- package/dist/src/schemas/extensionFile.d.mts +7 -3
- package/dist/src/schemas/extensionFile.d.mts.map +1 -1
- package/dist/src/schemas/headless.cjs +2 -2
- package/dist/src/schemas/headless.cjs.map +1 -1
- package/dist/src/schemas/headless.d.mts +11 -10
- package/dist/src/schemas/headless.d.mts.map +1 -1
- package/dist/src/schemas/headless.mjs +2 -2
- package/dist/src/schemas/headless.mjs.map +1 -1
- package/dist/src/schemas/hubChannel.cjs.map +1 -1
- package/dist/src/schemas/hubChannel.d.mts +1 -1
- package/dist/src/schemas/hubChannel.mjs.map +1 -1
- package/dist/src/schemas/packageApi.cjs.map +1 -1
- package/dist/src/schemas/packageApi.d.mts +1 -1
- package/dist/src/schemas/packageApi.mjs.map +1 -1
- package/dist/src/schemas/{serverFacet.cjs → serverPlugin.cjs} +29 -37
- package/dist/src/schemas/serverPlugin.cjs.map +1 -0
- package/dist/src/schemas/{serverFacet.d.mts → serverPlugin.d.mts} +54 -31
- package/dist/src/schemas/serverPlugin.d.mts.map +1 -0
- package/dist/src/schemas/serverPlugin.mjs +95 -0
- package/dist/src/schemas/serverPlugin.mjs.map +1 -0
- package/dist/src/schemas/serverScope.cjs +37 -0
- package/dist/src/schemas/serverScope.cjs.map +1 -0
- package/dist/src/schemas/serverScope.d.mts +77 -0
- package/dist/src/schemas/serverScope.d.mts.map +1 -0
- package/dist/src/schemas/serverScope.mjs +33 -0
- package/dist/src/schemas/serverScope.mjs.map +1 -0
- package/dist/src/server/liveImport.cjs +1 -1
- package/dist/src/server/liveImport.cjs.map +1 -1
- package/dist/src/server/liveImport.d.mts +1 -1
- package/dist/src/server/liveImport.mjs +1 -1
- package/dist/src/server/liveImport.mjs.map +1 -1
- package/dist/src/server/serverPackages.cjs +60 -0
- package/dist/src/server/serverPackages.cjs.map +1 -0
- package/dist/src/server/serverPackages.d.mts +44 -0
- package/dist/src/server/serverPackages.d.mts.map +1 -0
- package/dist/src/server/serverPackages.mjs +59 -0
- package/dist/src/server/serverPackages.mjs.map +1 -0
- package/dist/src/server/serverScope.cjs +507 -0
- package/dist/src/server/serverScope.cjs.map +1 -0
- package/dist/src/server/serverScope.d.mts +123 -0
- package/dist/src/server/serverScope.d.mts.map +1 -0
- package/dist/src/server/serverScope.mjs +507 -0
- package/dist/src/server/serverScope.mjs.map +1 -0
- package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -1
- package/dist/src/services/apiSurfaceAssert/index.d.mts +1 -1
- package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -1
- package/dist/src/services/chatgptImages/index.cjs +1 -1
- package/dist/src/services/chatgptImages/index.cjs.map +1 -1
- package/dist/src/services/chatgptImages/index.mjs +1 -1
- package/dist/src/services/chatgptImages/index.mjs.map +1 -1
- package/dist/src/services/chatgptWebSearch/index.cjs +1 -1
- package/dist/src/services/chatgptWebSearch/index.cjs.map +1 -1
- package/dist/src/services/chatgptWebSearch/index.mjs +1 -1
- package/dist/src/services/chatgptWebSearch/index.mjs.map +1 -1
- package/dist/src/services/headlessClient/index.cjs +1 -1
- package/dist/src/services/headlessClient/index.cjs.map +1 -1
- package/dist/src/services/headlessClient/index.mjs +1 -1
- package/dist/src/services/headlessClient/index.mjs.map +1 -1
- package/dist/src/services/piExtensionHost/index.cjs.map +1 -1
- package/dist/src/services/piExtensionHost/index.d.mts +1 -1
- package/dist/src/services/piExtensionHost/index.mjs.map +1 -1
- package/dist/src/services/{serverFacet → serverHost}/index.cjs +3 -3
- package/dist/src/services/serverHost/index.cjs.map +1 -0
- package/dist/src/services/{serverFacet → serverHost}/index.d.mts +4 -4
- package/dist/src/services/serverHost/index.d.mts.map +1 -0
- package/dist/src/services/{serverFacet → serverHost}/index.mjs +3 -3
- package/dist/src/services/serverHost/index.mjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessHost.cjs +3 -3
- package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.d.mts +3 -3
- package/dist/src/systems/main/adapters/headlessHost.mjs +3 -3
- package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs +23 -21
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs +23 -21
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -1
- package/dist/src/systems/main/types/headlessHost.d.mts +1 -1
- package/dist/src/types/kernel.d.mts +2 -2
- package/dist/src/types/server/directHarnessRuntime.d.mts +1 -1
- package/dist/src/web/types/webPlugin.d.mts +1 -1
- package/package.json +9 -9
- package/dist/serverFacet.cjs +0 -34
- package/dist/serverFacet.d.mts +0 -10
- package/dist/serverFacet.mjs +0 -9
- package/dist/src/schemas/serverFacet.cjs.map +0 -1
- package/dist/src/schemas/serverFacet.d.mts.map +0 -1
- package/dist/src/schemas/serverFacet.mjs +0 -101
- package/dist/src/schemas/serverFacet.mjs.map +0 -1
- package/dist/src/server/serverFacetLoader.cjs +0 -232
- package/dist/src/server/serverFacetLoader.cjs.map +0 -1
- package/dist/src/server/serverFacetLoader.d.mts +0 -75
- package/dist/src/server/serverFacetLoader.d.mts.map +0 -1
- package/dist/src/server/serverFacetLoader.mjs +0 -230
- package/dist/src/server/serverFacetLoader.mjs.map +0 -1
- package/dist/src/services/serverFacet/index.cjs.map +0 -1
- package/dist/src/services/serverFacet/index.d.mts.map +0 -1
- package/dist/src/services/serverFacet/index.mjs.map +0 -1
package/dist/extensionFile.cjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_extensionFile = require("./src/extensions/extensionFile.cjs");
|
|
3
|
+
const require_serverScope = require("./src/schemas/serverScope.cjs");
|
|
3
4
|
exports.composeRootHooks = require_extensionFile.composeRootHooks;
|
|
5
|
+
exports.composeRootInjects = require_extensionFile.composeRootInjects;
|
|
4
6
|
exports.defineActivity = require_extensionFile.defineActivity;
|
|
5
7
|
exports.defineChannel = require_extensionFile.defineChannel;
|
|
6
8
|
exports.defineCommand = require_extensionFile.defineCommand;
|
|
@@ -15,5 +17,6 @@ exports.defineRoutedContribution = require_extensionFile.defineRoutedContributio
|
|
|
15
17
|
exports.defineServerCommand = require_extensionFile.defineServerCommand;
|
|
16
18
|
exports.defineServerTool = require_extensionFile.defineServerTool;
|
|
17
19
|
exports.defineService = require_extensionFile.defineService;
|
|
20
|
+
exports.defineServiceContract = require_serverScope.defineServiceContract;
|
|
18
21
|
exports.defineTool = require_extensionFile.defineTool;
|
|
19
22
|
exports.defineToolRestriction = require_extensionFile.defineToolRestriction;
|
package/dist/extensionFile.d.mts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { defineServiceContract } from "./src/schemas/serverScope.mjs";
|
|
1
2
|
import { ActivityFile, ChannelFile, CommandContribution, CommandFile, HookFile, MethodFile, OrFactory, PathSupplied, RootDeclaration, RootFile, RouteFile, RoutedCardinality, RoutedFileOptions, ServerCommandFile, ServerToolFile, ServiceFile, ToolContribution, ToolFile, WithRoot } from "./src/schemas/extensionFile.mjs";
|
|
2
|
-
import { composeRootHooks, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineTool, defineToolRestriction } from "./src/extensions/extensionFile.mjs";
|
|
3
|
-
export { type ActivityFile, type ChannelFile, type CommandContribution, type CommandFile, type HookFile, type MethodFile, type OrFactory, type PathSupplied, type RootDeclaration, type RootFile, type RouteFile, type RoutedCardinality, type RoutedFileOptions, type ServerCommandFile, type ServerToolFile, type ServiceFile, type ToolContribution, type ToolFile, type WithRoot, composeRootHooks, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineTool, defineToolRestriction };
|
|
3
|
+
import { composeRootHooks, composeRootInjects, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineTool, defineToolRestriction } from "./src/extensions/extensionFile.mjs";
|
|
4
|
+
export { type ActivityFile, type ChannelFile, type CommandContribution, type CommandFile, type HookFile, type MethodFile, type OrFactory, type PathSupplied, type RootDeclaration, type RootFile, type RouteFile, type RoutedCardinality, type RoutedFileOptions, type ServerCommandFile, type ServerToolFile, type ServiceFile, type ToolContribution, type ToolFile, type WithRoot, composeRootHooks, composeRootInjects, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineServiceContract, defineTool, defineToolRestriction };
|
package/dist/extensionFile.mjs
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { composeRootHooks, composeRootInjects, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineTool, defineToolRestriction } from "./src/extensions/extensionFile.mjs";
|
|
2
|
+
import { defineServiceContract } from "./src/schemas/serverScope.mjs";
|
|
3
|
+
export { composeRootHooks, composeRootInjects, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineServiceContract, defineTool, defineToolRestriction };
|
package/dist/headlessHub.cjs
CHANGED
|
@@ -9,9 +9,9 @@ require("./src/schemas/sessionProtocol.cjs");
|
|
|
9
9
|
require("./src/constants/agentSettled.cjs");
|
|
10
10
|
const require_pluginProtocol = require("./src/schemas/pluginProtocol.cjs");
|
|
11
11
|
require("./pluginProtocol.cjs");
|
|
12
|
-
const require_index = require("./src/services/
|
|
13
|
-
const
|
|
14
|
-
require("./
|
|
12
|
+
const require_index = require("./src/services/serverHost/index.cjs");
|
|
13
|
+
const require_serverScope = require("./src/server/serverScope.cjs");
|
|
14
|
+
require("./serverPlugin.cjs");
|
|
15
15
|
const require_index$1 = require("./src/services/sessionGitStatus/index.cjs");
|
|
16
16
|
let node_crypto = require("node:crypto");
|
|
17
17
|
node_crypto = require_runtime.__toESM(node_crypto, 1);
|
|
@@ -90,13 +90,18 @@ function createHeadlessHub(options) {
|
|
|
90
90
|
const maxDirectEventLatest = 4096;
|
|
91
91
|
const communicationEndpoints = /* @__PURE__ */ new Map();
|
|
92
92
|
let closed = false;
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
93
|
+
/** The mount table each served global or workspace scope publishes, by mount key. */
|
|
94
|
+
const scopeHosts = /* @__PURE__ */ new Map();
|
|
95
|
+
let globalScope;
|
|
96
|
+
const workspaceScopes = /* @__PURE__ */ new Map();
|
|
97
|
+
const openGlobalScope = () => globalScope ??= require_serverScope.PoServerScope.open("global");
|
|
98
|
+
const openWorkspaceScope = (workspaceId) => {
|
|
99
|
+
let scope = workspaceScopes.get(workspaceId);
|
|
100
|
+
if (scope === void 0) {
|
|
101
|
+
scope = openGlobalScope().then((global) => require_serverScope.PoServerScope.open("workspace", global));
|
|
102
|
+
workspaceScopes.set(workspaceId, scope);
|
|
99
103
|
}
|
|
104
|
+
return scope;
|
|
100
105
|
};
|
|
101
106
|
const workspaces = /* @__PURE__ */ new Map();
|
|
102
107
|
const worktreeProvisioners = /* @__PURE__ */ new Map();
|
|
@@ -745,7 +750,7 @@ function createHeadlessHub(options) {
|
|
|
745
750
|
canCommunicate,
|
|
746
751
|
bindCommunication
|
|
747
752
|
};
|
|
748
|
-
const
|
|
753
|
+
const serveScope = async (suppliedContext, packages = []) => {
|
|
749
754
|
if (closed) throw new Error("The headless hub is closed.");
|
|
750
755
|
const context = suppliedContext ?? {
|
|
751
756
|
scope: "global",
|
|
@@ -754,14 +759,14 @@ function createHeadlessHub(options) {
|
|
|
754
759
|
directEvents,
|
|
755
760
|
onNotice: (message) => options.onNotice?.(message)
|
|
756
761
|
};
|
|
757
|
-
if (context.scope === "session") throw new Error("Session
|
|
762
|
+
if (context.scope === "session") throw new Error("Session packages belong to their session host.");
|
|
758
763
|
if (context.scope === "workspace" && (!context.workspaceId || !context.workspaceRoot)) throw new Error("Workspace mounts require an admitted identity and root.");
|
|
759
764
|
const mount = context.scope === "global" ? { scope: "global" } : {
|
|
760
765
|
scope: "workspace",
|
|
761
766
|
workspaceId: context.workspaceId
|
|
762
767
|
};
|
|
763
768
|
const key = mountKey(mount);
|
|
764
|
-
if (
|
|
769
|
+
if (scopeHosts.has(key)) throw new Error(`The '${key}' scope is already served.`);
|
|
765
770
|
const host = require_index.createPoServerHost({
|
|
766
771
|
scope: context.scope,
|
|
767
772
|
context: {
|
|
@@ -783,24 +788,20 @@ function createHeadlessHub(options) {
|
|
|
783
788
|
},
|
|
784
789
|
pluginRegistry
|
|
785
790
|
});
|
|
791
|
+
let scope;
|
|
786
792
|
try {
|
|
787
|
-
|
|
793
|
+
scope = await (mount.scope === "global" ? openGlobalScope() : openWorkspaceScope(mount.workspaceId));
|
|
794
|
+
await scope.serve({
|
|
788
795
|
host,
|
|
789
|
-
facets,
|
|
790
|
-
onNotice: options.onNotice,
|
|
791
796
|
platform: options.platform
|
|
792
797
|
});
|
|
793
|
-
|
|
794
|
-
await installed.dispose();
|
|
795
|
-
throw new Error("The headless hub was closed while mounting facets.");
|
|
796
|
-
}
|
|
797
|
-
mounts.set(key, {
|
|
798
|
+
scopeHosts.set(key, {
|
|
798
799
|
host,
|
|
799
|
-
|
|
800
|
-
context,
|
|
801
|
-
facets
|
|
800
|
+
scope
|
|
802
801
|
});
|
|
803
|
-
|
|
802
|
+
await scope.install(packages, { onNotice: (message) => options.onNotice?.(message) });
|
|
803
|
+
if (closed) throw new Error("The headless hub was closed while serving a scope.");
|
|
804
|
+
if (mount.scope === "workspace") {
|
|
804
805
|
const workspace = {
|
|
805
806
|
id: mount.workspaceId,
|
|
806
807
|
root: context.workspaceRoot,
|
|
@@ -813,35 +814,20 @@ function createHeadlessHub(options) {
|
|
|
813
814
|
});
|
|
814
815
|
}
|
|
815
816
|
} catch (error) {
|
|
817
|
+
if (scopeHosts.get(key)?.host === host) scopeHosts.delete(key);
|
|
816
818
|
host.dispose();
|
|
819
|
+
if (mount.scope === "workspace") workspaceScopes.delete(mount.workspaceId);
|
|
820
|
+
else globalScope = void 0;
|
|
821
|
+
await scope?.dispose();
|
|
817
822
|
throw error;
|
|
818
823
|
}
|
|
819
824
|
};
|
|
820
|
-
const
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
if (closed) throw new Error("The headless hub is closed.");
|
|
827
|
-
const previous = mounts.get(key);
|
|
828
|
-
if (previous === void 0) throw new Error(`The '${key}' facets are not mounted.`);
|
|
829
|
-
mounts.delete(key);
|
|
830
|
-
await disposeMount(previous);
|
|
831
|
-
if (closed || mount.scope === "workspace" && !workspaces.has(mount.workspaceId)) return;
|
|
832
|
-
try {
|
|
833
|
-
await installMount(facets, previous.context, false);
|
|
834
|
-
} catch (error) {
|
|
835
|
-
await installMount(previous.facets, previous.context, false).catch((rollbackError) => options.onNotice?.(`The '${key}' facets could not be restored (${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)})`));
|
|
836
|
-
throw error;
|
|
837
|
-
}
|
|
838
|
-
});
|
|
839
|
-
const settled = run.then(() => void 0, () => void 0);
|
|
840
|
-
replacements.set(key, settled);
|
|
841
|
-
settled.then(() => {
|
|
842
|
-
if (replacements.get(key) === settled) replacements.delete(key);
|
|
843
|
-
});
|
|
844
|
-
return run;
|
|
825
|
+
const installPackages = async (mount, packages) => {
|
|
826
|
+
if (mount.scope === "session") throw new Error("Session packages belong to their session host.");
|
|
827
|
+
if (closed) throw new Error("The headless hub is closed.");
|
|
828
|
+
const served = scopeHosts.get(mountKey(mount));
|
|
829
|
+
if (served === void 0) throw new Error(`The '${mountKey(mount)}' scope is not served.`);
|
|
830
|
+
await served.scope.install(packages, { onNotice: (message) => options.onNotice?.(message) });
|
|
845
831
|
};
|
|
846
832
|
return {
|
|
847
833
|
sessionService,
|
|
@@ -1017,8 +1003,12 @@ function createHeadlessHub(options) {
|
|
|
1017
1003
|
sessionId
|
|
1018
1004
|
});
|
|
1019
1005
|
},
|
|
1020
|
-
|
|
1021
|
-
|
|
1006
|
+
serveScope,
|
|
1007
|
+
installPackages,
|
|
1008
|
+
sessionParentScope: (workspaceId) => {
|
|
1009
|
+
if (closed) return Promise.reject(/* @__PURE__ */ new Error("The headless hub is closed."));
|
|
1010
|
+
return workspaceId === void 0 ? openGlobalScope() : openWorkspaceScope(workspaceId);
|
|
1011
|
+
},
|
|
1022
1012
|
workspaces: () => [...workspaces.values()],
|
|
1023
1013
|
registerWorkspace(workspace) {
|
|
1024
1014
|
workspaces.set(workspace.id, workspace);
|
|
@@ -1037,17 +1027,23 @@ function createHeadlessHub(options) {
|
|
|
1037
1027
|
scope: "workspace",
|
|
1038
1028
|
workspaceId: id
|
|
1039
1029
|
});
|
|
1040
|
-
const
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1030
|
+
const served = scopeHosts.get(key);
|
|
1031
|
+
scopeHosts.delete(key);
|
|
1032
|
+
const scope = workspaceScopes.get(id);
|
|
1033
|
+
workspaceScopes.delete(id);
|
|
1034
|
+
if (workspaces.has(id)) {
|
|
1035
|
+
options.onWorkspaceRemoved?.(id);
|
|
1036
|
+
workspaces.delete(id);
|
|
1037
|
+
emit({
|
|
1038
|
+
kind: "workspace_removed",
|
|
1039
|
+
workspaceId: id
|
|
1040
|
+
});
|
|
1041
|
+
}
|
|
1042
|
+
try {
|
|
1043
|
+
await (await scope)?.dispose();
|
|
1044
|
+
} finally {
|
|
1045
|
+
served?.host.dispose();
|
|
1046
|
+
}
|
|
1051
1047
|
},
|
|
1052
1048
|
async requestApi(mount, basePath, request) {
|
|
1053
1049
|
if (closed) return Response.json({ error: "Server is closed." }, { status: 503 });
|
|
@@ -1064,7 +1060,7 @@ function createHeadlessHub(options) {
|
|
|
1064
1060
|
body: request.body === null ? void 0 : new Uint8Array(await request.arrayBuffer())
|
|
1065
1061
|
});
|
|
1066
1062
|
}
|
|
1067
|
-
const handler =
|
|
1063
|
+
const handler = scopeHosts.get(mountKey(mount))?.scope.apiHandler(basePath);
|
|
1068
1064
|
if (!handler) return Response.json({ error: `API '${basePath}' is not mounted in ${mountKey(mount)}.` }, { status: 404 });
|
|
1069
1065
|
return handler.fetch(request);
|
|
1070
1066
|
},
|
|
@@ -1164,19 +1160,6 @@ function createHeadlessHub(options) {
|
|
|
1164
1160
|
for (const cleanup of presentationCleanups.values()) cleanup();
|
|
1165
1161
|
presentationCleanups.clear();
|
|
1166
1162
|
const failures = [];
|
|
1167
|
-
for (const mounted of [...mounts.values()].reverse()) {
|
|
1168
|
-
try {
|
|
1169
|
-
await mounted.installed.dispose();
|
|
1170
|
-
} catch (error) {
|
|
1171
|
-
failures.push(error);
|
|
1172
|
-
}
|
|
1173
|
-
try {
|
|
1174
|
-
mounted.host.dispose();
|
|
1175
|
-
} catch (error) {
|
|
1176
|
-
failures.push(error);
|
|
1177
|
-
}
|
|
1178
|
-
}
|
|
1179
|
-
mounts.clear();
|
|
1180
1163
|
pluginRegistry.dispose();
|
|
1181
1164
|
editPresence.clear();
|
|
1182
1165
|
workspaces.clear();
|
|
@@ -1191,6 +1174,18 @@ function createHeadlessHub(options) {
|
|
|
1191
1174
|
sessions.clear();
|
|
1192
1175
|
const outcomes = await Promise.allSettled(shutdowns);
|
|
1193
1176
|
for (const outcome of outcomes) if (outcome.status === "rejected") failures.push(outcome.reason);
|
|
1177
|
+
try {
|
|
1178
|
+
await (await globalScope)?.dispose();
|
|
1179
|
+
} catch (error) {
|
|
1180
|
+
failures.push(error);
|
|
1181
|
+
}
|
|
1182
|
+
for (const { host } of scopeHosts.values()) try {
|
|
1183
|
+
host.dispose();
|
|
1184
|
+
} catch (error) {
|
|
1185
|
+
failures.push(error);
|
|
1186
|
+
}
|
|
1187
|
+
scopeHosts.clear();
|
|
1188
|
+
workspaceScopes.clear();
|
|
1194
1189
|
if (failures.length) throw new AggregateError(failures, "Mount shutdown failed");
|
|
1195
1190
|
}
|
|
1196
1191
|
};
|