super-dsh 0.1.5 → 0.1.9
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/client/index.js +1010 -345
- package/cordis.patch.yml +22 -5
- package/package.json +8 -3
- package/superd-hub/dist/a2a-delivery.d.ts +189 -0
- package/superd-hub/dist/a2a-delivery.js +240 -0
- package/superd-hub/dist/a2a-host.d.ts +76 -0
- package/superd-hub/dist/a2a-host.js +145 -0
- package/superd-hub/dist/a2a-ingest.d.ts +31 -0
- package/superd-hub/dist/a2a-ingest.js +636 -0
- package/superd-hub/dist/a2a-log.d.ts +17 -0
- package/superd-hub/dist/a2a-log.js +42 -0
- package/superd-hub/dist/a2a-row.d.ts +65 -0
- package/superd-hub/dist/a2a-row.js +162 -0
- package/superd-hub/dist/a2a-service.d.ts +357 -0
- package/superd-hub/dist/a2a-service.js +980 -0
- package/superd-hub/dist/a2a-wire.d.ts +220 -0
- package/superd-hub/dist/a2a-wire.js +305 -0
- package/superd-hub/dist/agent-ids.d.ts +10 -0
- package/superd-hub/dist/agent-ids.js +68 -0
- package/superd-hub/dist/agent-roster.d.ts +32 -17
- package/superd-hub/dist/agent-roster.js +54 -15
- package/superd-hub/dist/agent-status.d.ts +119 -0
- package/superd-hub/dist/agent-status.js +386 -0
- package/superd-hub/dist/client/mesh-api.d.ts +134 -0
- package/superd-hub/dist/client/mesh-api.js +219 -0
- package/superd-hub/dist/client/mesh-groups.d.ts +63 -0
- package/superd-hub/dist/client/mesh-groups.js +66 -0
- package/superd-hub/dist/client/roster.d.ts +48 -0
- package/superd-hub/dist/client/roster.js +96 -0
- package/superd-hub/dist/exec-pty-channel.d.ts +58 -0
- package/superd-hub/dist/exec-pty-channel.js +162 -0
- package/superd-hub/dist/exec-pty-framing.d.ts +32 -0
- package/superd-hub/dist/exec-pty-framing.js +81 -0
- package/superd-hub/dist/exec-pty-rpc.d.ts +21 -0
- package/superd-hub/dist/exec-pty-rpc.js +128 -0
- package/superd-hub/dist/exec-pty-session.d.ts +76 -0
- package/superd-hub/dist/exec-pty-session.js +234 -0
- package/superd-hub/dist/exec.d.ts +56 -0
- package/superd-hub/dist/exec.js +225 -0
- package/superd-hub/dist/fusion-transport.d.ts +23 -21
- package/superd-hub/dist/fusion-transport.js +12 -40
- package/superd-hub/dist/gateway.d.ts +39 -2
- package/superd-hub/dist/gateway.js +62 -3
- package/superd-hub/dist/hub-tool.d.ts +174 -0
- package/superd-hub/dist/hub-tool.js +464 -0
- package/superd-hub/dist/index.d.ts +18 -4
- package/superd-hub/dist/index.js +19 -3
- package/superd-hub/dist/machines.d.ts +45 -0
- package/superd-hub/dist/machines.js +125 -0
- package/superd-hub/dist/mesh-federate.d.ts +138 -0
- package/superd-hub/dist/mesh-federate.js +223 -0
- package/superd-hub/dist/mesh-gateway.d.ts +67 -0
- package/superd-hub/dist/mesh-gateway.js +408 -0
- package/superd-hub/dist/mesh-link.d.ts +274 -0
- package/superd-hub/dist/mesh-link.js +441 -0
- package/superd-hub/dist/mesh-rpc.d.ts +123 -0
- package/superd-hub/dist/mesh-rpc.js +250 -0
- package/superd-hub/dist/mux-client.d.ts +71 -0
- package/superd-hub/dist/mux-client.js +281 -0
- package/superd-hub/dist/pack-version.d.ts +2 -0
- package/superd-hub/dist/pack-version.js +30 -0
- package/superd-hub/dist/roster.d.ts +10 -0
- package/superd-hub/dist/roster.js +9 -1
- package/superd-hub/dist/rpc.d.ts +18 -2
- package/superd-hub/dist/rpc.js +34 -4
- package/superd-hub/dist/spawn-world.js +3 -1
- package/superd-hub/dist/switch-core.d.ts +98 -21
- package/superd-hub/dist/switch-core.js +123 -28
- package/superd-hub/dist/system-head.d.ts +22 -12
- package/superd-hub/dist/system-head.js +100 -84
- package/superd-hub/dist/toast-core.d.ts +43 -0
- package/superd-hub/dist/toast-core.js +63 -0
- package/superd-hub/dist/wire-endpoints.d.ts +264 -0
- package/superd-hub/dist/wire-endpoints.js +180 -0
- package/superd-hub/dist/world-join.js +8 -3
- package/superd-hub/dist/world-mount.d.ts +27 -0
- package/superd-hub/dist/world-mount.js +67 -0
- package/superd-hub/lib/client/index.js +1010 -345
- package/superd-hub/package.json +11 -2
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-plane wire vocabulary (mesh P3 Task 1).
|
|
3
|
+
*
|
|
4
|
+
* The hub CALLS the native session-plane RPCs through a GatewayFace
|
|
5
|
+
* (`CarrierGatewayFace.dispatchRpc` / `.openWireStream`, P2 machinery — local
|
|
6
|
+
* in-process or remote wire). These endpoint strings are exactly the ones the
|
|
7
|
+
* official browser UI reaches the Host through: the generated
|
|
8
|
+
* `ctx.remote.session` namespace emits `connection.rpc.call('/api', endpoint,
|
|
9
|
+
* { args }, signal)` with `endpoint = '<namespace>/<method>'`, and the native
|
|
10
|
+
* gateway dispatches that same string.
|
|
11
|
+
*
|
|
12
|
+
* Every constant below is extracted from the upstream checkout
|
|
13
|
+
* (`upstream/deepseek-harness` @ `dsh-v0.1.7-rc.1`, read-only). Each JSDoc
|
|
14
|
+
* block carries the primary anchor (the `@Remote` declaration on the Host
|
|
15
|
+
* controller) plus the payload-type anchor. Missing methods are `undefined`
|
|
16
|
+
* with a comment — names are NEVER invented here.
|
|
17
|
+
*
|
|
18
|
+
* Wire-arg convention (how a GatewayFace payload is built):
|
|
19
|
+
* payload = { args: { <parameterWireName>: <value> } }
|
|
20
|
+
* The client gateway builds it at
|
|
21
|
+
* `packages/api/gateway/src/client/index.ts:445` (`{ args: prepared.args }`,
|
|
22
|
+
* with `args[parameter.wire] = value` at :525); the Host gateway unpacks it at
|
|
23
|
+
* `packages/api/gateway/src/index.ts:692–704` (`assertExactArguments` +
|
|
24
|
+
* `resolveParameter` per declared parameter). For every session-plane method
|
|
25
|
+
* the single business parameter is named `request` — EXCEPT `session/list`,
|
|
26
|
+
* whose parameter is declared `_request` (the controller ignores it), so its
|
|
27
|
+
* args key is `_request`. The trailing `signal` parameter never travels in
|
|
28
|
+
* `args` (it is carried by the envelope/stream carrier, not the payload).
|
|
29
|
+
*
|
|
30
|
+
* Namespace binding: `super(ctx, 'sessionController', { namespace: 'session' })`
|
|
31
|
+
* — packages/api/session-controller/src/index.ts:136 (Cordis service key
|
|
32
|
+
* `sessionController`, wire namespace `session`).
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* `session/list` — cold Session list (the sidebar's session rows).
|
|
36
|
+
*
|
|
37
|
+
* Upstream anchors:
|
|
38
|
+
* - `@Remote('list')`: packages/api/session-controller/src/index.ts:251
|
|
39
|
+
* (method `list(_request: SessionListRequest, signal)` at :252)
|
|
40
|
+
* - payload type: packages/api/session-controller/src/types.ts:262
|
|
41
|
+
* (`SessionListRequest`), value at :267 (`SessionListValue`)
|
|
42
|
+
* - generated client string: packages/api/session-controller/lib/typert.remote-client.d.ts:47
|
|
43
|
+
* - wire-arg key quirk: `_request` (declared name, ignored by the Host) —
|
|
44
|
+
* typert.remote-client.js `session/list` descriptor, parameter wire `_request`
|
|
45
|
+
*
|
|
46
|
+
* Wire payload: `{ args: { _request: SessionListRequestMirror } }`.
|
|
47
|
+
*/
|
|
48
|
+
export const WIRE_SESSION_LIST = 'session/list';
|
|
49
|
+
/**
|
|
50
|
+
* `session/create` — create a Session (or adopt an explicit id).
|
|
51
|
+
*
|
|
52
|
+
* Upstream anchors:
|
|
53
|
+
* - `@Remote('create')`: packages/api/session-controller/src/index.ts:272
|
|
54
|
+
* (method `create(request: SessionCreateRequest)` at :273)
|
|
55
|
+
* - payload type: packages/api/session-controller/src/types.ts:283
|
|
56
|
+
* (`SessionCreateRequest`), value at :291 (`SessionCreateValue`)
|
|
57
|
+
* - generated client string: .../typert.remote-client.d.ts:44
|
|
58
|
+
*
|
|
59
|
+
* Wire payload: `{ args: { request: SessionCreateRequestMirror } }`.
|
|
60
|
+
*/
|
|
61
|
+
export const WIRE_SESSION_CREATE = 'session/create';
|
|
62
|
+
/**
|
|
63
|
+
* `session/rename` — set a Session's title (the dedicated title-set RPC).
|
|
64
|
+
*
|
|
65
|
+
* Upstream anchors:
|
|
66
|
+
* - `@Remote('rename')`: packages/api/session-controller/src/index.ts:384
|
|
67
|
+
* (method `rename(request: SessionRenameRequest)` at :385)
|
|
68
|
+
* - payload type: packages/api/session-controller/src/types.ts:307
|
|
69
|
+
* (`SessionRenameRequest`), value at :313 (`SessionRenameValue`)
|
|
70
|
+
* - generated client string: .../typert.remote-client.d.ts:53
|
|
71
|
+
* - invalid title → typed error `session/title-invalid`
|
|
72
|
+
* (types.ts:223, thrown at commands.ts:204)
|
|
73
|
+
*
|
|
74
|
+
* Wire payload: `{ args: { request: SessionRenameRequestMirror } }`.
|
|
75
|
+
*/
|
|
76
|
+
export const WIRE_SESSION_TITLE = 'session/rename';
|
|
77
|
+
/**
|
|
78
|
+
* `session/prompt` — submit one user turn into a Session.
|
|
79
|
+
*
|
|
80
|
+
* Upstream anchors:
|
|
81
|
+
* - `@Remote('prompt')`: packages/api/session-controller/src/index.ts:407
|
|
82
|
+
* (method `prompt(request: SessionPromptRequest, signal)` at :408)
|
|
83
|
+
* - payload type: packages/api/session-controller/src/types.ts:331
|
|
84
|
+
* (`SessionPromptRequest`), value at :342 (`SessionPromptValue`)
|
|
85
|
+
* - generated client string: .../typert.remote-client.d.ts:52
|
|
86
|
+
* - typed rejections: `session/agent-busy` / `session/attachment-invalid` /
|
|
87
|
+
* `session/not-found` (commands.ts:366–398)
|
|
88
|
+
*
|
|
89
|
+
* Wire payload: `{ args: { request: SessionPromptRequestMirror } }`.
|
|
90
|
+
*/
|
|
91
|
+
export const WIRE_PROMPT_SUBMIT = 'session/prompt';
|
|
92
|
+
/**
|
|
93
|
+
* `session/follow` — open the event/log stream the UI renders (logical stream).
|
|
94
|
+
*
|
|
95
|
+
* Upstream anchors:
|
|
96
|
+
* - `@Remote({ mode: 'stream' })`: packages/api/session-controller/src/index.ts:461
|
|
97
|
+
* (method `follow(request: SessionFollowRequest, signal): AsyncIterable<SessionFollowFrame>` at :462)
|
|
98
|
+
* - payload type: packages/api/session-controller/src/types.ts:485
|
|
99
|
+
* (`SessionFollowRequest`), frame union at :550 (`SessionFollowFrame`)
|
|
100
|
+
* - generated client string: .../typert.remote-client.d.ts:45
|
|
101
|
+
* - UI consumption: packages/api/session-controller/src/client/transport.ts:172
|
|
102
|
+
* (`SessionEventStream.follow` → `remote.session.follow({ address, assistantStream: true, ... })`)
|
|
103
|
+
*
|
|
104
|
+
* Wire payload: `{ args: { request: SessionFollowRequestMirror } }`, opened
|
|
105
|
+
* via `openWireStream` (not `dispatchRpc`). The opening frame is
|
|
106
|
+
* `{ type: 'snapshot', header, cursor, records, hasMore, projections }`; then
|
|
107
|
+
* ordered `{ type: 'event', event }` entries.
|
|
108
|
+
*/
|
|
109
|
+
export const WIRE_STREAM_OPEN = 'session/follow';
|
|
110
|
+
/**
|
|
111
|
+
* `session/cancel` — cancel/interrupt the active Agent turn.
|
|
112
|
+
*
|
|
113
|
+
* Upstream anchors:
|
|
114
|
+
* - `@Remote('cancel')`: packages/api/session-controller/src/index.ts:438
|
|
115
|
+
* (method `cancel(request: SessionCancelRequest)` at :439)
|
|
116
|
+
* - payload type: packages/api/session-controller/src/types.ts:371
|
|
117
|
+
* (`SessionCancelRequest`), value at :376 (`SessionCancelValue`)
|
|
118
|
+
* - generated client string: .../typert.remote-client.d.ts:41
|
|
119
|
+
*
|
|
120
|
+
* Wire payload: `{ args: { request: SessionCancelRequestMirror } }`.
|
|
121
|
+
*/
|
|
122
|
+
export const WIRE_TURN_CANCEL = 'session/cancel';
|
|
123
|
+
/**
|
|
124
|
+
* `session/close` / session delete — DOES NOT EXIST upstream.
|
|
125
|
+
*
|
|
126
|
+
* The session namespace (packages/api/session-controller/src/index.ts:251–501,
|
|
127
|
+
* complete `@Remote` set: list, search, create, selectModel, modelCatalog,
|
|
128
|
+
* canOpenWorkspacePath, openWorkspacePath, workspacePathApplications, rename,
|
|
129
|
+
* fork, prompt, attachment, updateQueue, cancel, page, follow, projections,
|
|
130
|
+
* control) has no close/dispose/delete/archive method. Session lifetime is
|
|
131
|
+
* Host-owned (Agent lifecycle + `session/disposed` events); the browser never
|
|
132
|
+
* closes a session over the wire. The nearest upstream analogues live on a
|
|
133
|
+
* DIFFERENT namespace (workspace, not session-plane): `workspace/archiveSession`
|
|
134
|
+
* (packages/api/workspace-controller/src/index.ts:159) and
|
|
135
|
+
* `workspace/unarchiveSession` (:169). Kept `undefined` per the no-invention
|
|
136
|
+
* rule; Task 2 must not route a close through the session plane.
|
|
137
|
+
*/
|
|
138
|
+
export const WIRE_SESSION_CLOSE = undefined;
|
|
139
|
+
/**
|
|
140
|
+
* The session-plane endpoint vocabulary (mesh P3 Task 1 deliverable).
|
|
141
|
+
* Undefined keys = no upstream counterpart (see the constant's JSDoc).
|
|
142
|
+
*/
|
|
143
|
+
export const WIRE = {
|
|
144
|
+
sessionList: WIRE_SESSION_LIST,
|
|
145
|
+
sessionCreate: WIRE_SESSION_CREATE,
|
|
146
|
+
sessionTitle: WIRE_SESSION_TITLE,
|
|
147
|
+
promptSubmit: WIRE_PROMPT_SUBMIT,
|
|
148
|
+
streamOpen: WIRE_STREAM_OPEN,
|
|
149
|
+
turnCancel: WIRE_TURN_CANCEL,
|
|
150
|
+
sessionClose: WIRE_SESSION_CLOSE,
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Wire-arg wrapper keys per endpoint, as the native gateway's
|
|
154
|
+
* `assertExactArguments`/`resolveParameter` expects them
|
|
155
|
+
* (packages/api/gateway/src/index.ts:692–704; client builds
|
|
156
|
+
* `{ args: { [parameter.wire]: value } }` at api/gateway/src/client/index.ts:525).
|
|
157
|
+
* `session/list` alone uses `_request` (its controller parameter is declared
|
|
158
|
+
* `_request` and ignored).
|
|
159
|
+
*/
|
|
160
|
+
export const WIRE_ARGS = {
|
|
161
|
+
[WIRE_SESSION_LIST]: '_request',
|
|
162
|
+
[WIRE_SESSION_CREATE]: 'request',
|
|
163
|
+
[WIRE_SESSION_TITLE]: 'request',
|
|
164
|
+
[WIRE_PROMPT_SUBMIT]: 'request',
|
|
165
|
+
[WIRE_STREAM_OPEN]: 'request',
|
|
166
|
+
[WIRE_TURN_CANCEL]: 'request',
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Build the GatewayFace payload (`{ args: { <key>: value } }`) for one
|
|
170
|
+
* session-plane endpoint.
|
|
171
|
+
* @param endpoint - one of the defined `WIRE` constants.
|
|
172
|
+
* @param value - the mirrored request object for that endpoint.
|
|
173
|
+
* @returns the wire payload accepted by `dispatchRpc`/`openWireStream`.
|
|
174
|
+
*/
|
|
175
|
+
export function wireArgsOf(endpoint, value) {
|
|
176
|
+
const key = WIRE_ARGS[endpoint];
|
|
177
|
+
if (key === undefined)
|
|
178
|
+
throw new Error(`wire-endpoints: no wire-arg key for ${endpoint}`);
|
|
179
|
+
return { args: { [key]: value } };
|
|
180
|
+
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
import { mkdirSync } from 'node:fs';
|
|
33
33
|
import { resolveDshHome } from '@deepseek-ai/dsh-home-paths';
|
|
34
34
|
import { join } from 'node:path';
|
|
35
|
-
import { registerAgent, setReady } from './roster.js';
|
|
35
|
+
import { registerAgent, setFailed, setReady } from './roster.js';
|
|
36
36
|
import { registerForeignTarget } from './targets.js';
|
|
37
37
|
import { spawnWorld } from './spawn-world.js';
|
|
38
38
|
import { provisionWorldProfile, resolveInstallAnchor } from './world-provision.js';
|
|
@@ -92,9 +92,14 @@ export function apply(ctx, config) {
|
|
|
92
92
|
}, `superd-join: ${key} mount`);
|
|
93
93
|
return ctxW;
|
|
94
94
|
})().catch((cause) => {
|
|
95
|
-
// A failed world degrades to a
|
|
96
|
-
//
|
|
95
|
+
// A failed world degrades to a FAILED roster row (mount stays for
|
|
96
|
+
// diagnosis; ready stays false); a rejected provided promise would fail
|
|
97
|
+
// the entire host boot (loader entry apply).
|
|
97
98
|
console.error(`[super-dsh] ${key} world failed:`, cause);
|
|
99
|
+
try {
|
|
100
|
+
setFailed(key, true);
|
|
101
|
+
}
|
|
102
|
+
catch { /* roster row already gone */ }
|
|
98
103
|
return null;
|
|
99
104
|
});
|
|
100
105
|
ctx.provide(`superd.world.${key}`, world);
|
|
@@ -79,4 +79,31 @@ export type WorldPatchLayer = {
|
|
|
79
79
|
* @param key - runtime key (`omp`, `codex`, …) — the mount label.
|
|
80
80
|
* @returns patch layers to append to the world's composition.
|
|
81
81
|
*/
|
|
82
|
+
/**
|
|
83
|
+
* Wave-1 of world composition minimization (spec
|
|
84
|
+
* docs/specs/world-composition-minimization): native-agent machinery the
|
|
85
|
+
* foreign runtimes replace. Dependency-cleared 2026-09-27 against the KEEP
|
|
86
|
+
* set (api controllers, session core, adapters' agents/sessions/llm/
|
|
87
|
+
* agentDefaultModel/settings/agentPresets). Wave-2 candidates (client-ui
|
|
88
|
+
* family, tools, bash-sandbox, terminal-controller, …) live in the spec,
|
|
89
|
+
* NOT here.
|
|
90
|
+
*/
|
|
91
|
+
export declare const WORLD_WAVE1_DISABLED_ROWS: readonly string[];
|
|
92
|
+
/**
|
|
93
|
+
* Wave-2 of world composition minimization: the CLIENT lane. The
|
|
94
|
+
* multi-ctx-multi-ui → native-ui-only transition (0.1.5 / T-D) retired the
|
|
95
|
+
* world's own web UI (webserver/hmr/web-runtime/client-hmr above); wave-2
|
|
96
|
+
* completes it by stripping the browser-half rows of the web-app bundle —
|
|
97
|
+
* every dsh-client-* row plus the cordis client runner. In a world these
|
|
98
|
+
* only registered modules into a table no browser ever reads.
|
|
99
|
+
*
|
|
100
|
+
* Dependency-cleared 2026-09-27: the KEEP side (api controllers, gateway,
|
|
101
|
+
* session core, adapters) injects none of their services with ONE
|
|
102
|
+
* exceptions — `connection` (dsh-client-connection: the world's typert
|
|
103
|
+
* gateway injects it) and `modules` (dsh-client-modules: its activation
|
|
104
|
+
* work fails in world trees ("client bundles not found") and at least one
|
|
105
|
+
* fiber treats it as required — the load-bearing parking restatement
|
|
106
|
+
* `inject: [webServer]` keeps it waiting forever, superseding a disable).
|
|
107
|
+
*/
|
|
108
|
+
export declare const WORLD_WAVE2_DISABLED_ROWS: readonly string[];
|
|
82
109
|
export declare function worldMountPatches(key: string): readonly WorldPatchLayer[];
|
|
@@ -68,6 +68,63 @@ export function superdTrustedHosts(value) {
|
|
|
68
68
|
* @param key - runtime key (`omp`, `codex`, …) — the mount label.
|
|
69
69
|
* @returns patch layers to append to the world's composition.
|
|
70
70
|
*/
|
|
71
|
+
/**
|
|
72
|
+
* Wave-1 of world composition minimization (spec
|
|
73
|
+
* docs/specs/world-composition-minimization): native-agent machinery the
|
|
74
|
+
* foreign runtimes replace. Dependency-cleared 2026-09-27 against the KEEP
|
|
75
|
+
* set (api controllers, session core, adapters' agents/sessions/llm/
|
|
76
|
+
* agentDefaultModel/settings/agentPresets). Wave-2 candidates (client-ui
|
|
77
|
+
* family, tools, bash-sandbox, terminal-controller, …) live in the spec,
|
|
78
|
+
* NOT here.
|
|
79
|
+
*/
|
|
80
|
+
export const WORLD_WAVE1_DISABLED_ROWS = [
|
|
81
|
+
'agent-loop',
|
|
82
|
+
'mcp-resources',
|
|
83
|
+
// skills
|
|
84
|
+
'skill', 'skill-filesystem', 'skill-badge', 'tool-skill', 'ui-skill',
|
|
85
|
+
// jobs
|
|
86
|
+
'jobs', 'tool-jobs', 'ui-jobs', 'job-controller',
|
|
87
|
+
// subagents
|
|
88
|
+
'subagent', 'subagent-spawn-in-process', 'subagent-fork-in-process',
|
|
89
|
+
'tool-subagent-control', 'tool-subagent-list-agents', 'tool-subagent',
|
|
90
|
+
'tool-subagent-fork', 'tool-subagent-codex', 'tool-subagent-claude-code',
|
|
91
|
+
'subagent-model-selection-settings', 'ui-subagent', 'ui-settings-subagent',
|
|
92
|
+
'ui-settings-agent-loop',
|
|
93
|
+
];
|
|
94
|
+
/**
|
|
95
|
+
* Wave-2 of world composition minimization: the CLIENT lane. The
|
|
96
|
+
* multi-ctx-multi-ui → native-ui-only transition (0.1.5 / T-D) retired the
|
|
97
|
+
* world's own web UI (webserver/hmr/web-runtime/client-hmr above); wave-2
|
|
98
|
+
* completes it by stripping the browser-half rows of the web-app bundle —
|
|
99
|
+
* every dsh-client-* row plus the cordis client runner. In a world these
|
|
100
|
+
* only registered modules into a table no browser ever reads.
|
|
101
|
+
*
|
|
102
|
+
* Dependency-cleared 2026-09-27: the KEEP side (api controllers, gateway,
|
|
103
|
+
* session core, adapters) injects none of their services with ONE
|
|
104
|
+
* exceptions — `connection` (dsh-client-connection: the world's typert
|
|
105
|
+
* gateway injects it) and `modules` (dsh-client-modules: its activation
|
|
106
|
+
* work fails in world trees ("client bundles not found") and at least one
|
|
107
|
+
* fiber treats it as required — the load-bearing parking restatement
|
|
108
|
+
* `inject: [webServer]` keeps it waiting forever, superseding a disable).
|
|
109
|
+
*/
|
|
110
|
+
export const WORLD_WAVE2_DISABLED_ROWS = [
|
|
111
|
+
'cordis-client-runner',
|
|
112
|
+
'directory-picker-browse-surface',
|
|
113
|
+
'file-upload',
|
|
114
|
+
'locale',
|
|
115
|
+
'resources',
|
|
116
|
+
'ui-agent-preset', 'ui-approval', 'ui-attachment', 'ui-brand-official',
|
|
117
|
+
'ui-chat', 'ui-commands', 'ui-conversation', 'ui-cordis', 'ui-deliverables',
|
|
118
|
+
'ui-goal', 'ui-input-trigger', 'ui-layout', 'ui-message-feedback',
|
|
119
|
+
'ui-model-selection', 'ui-open-in-app', 'ui-permission', 'ui-plan',
|
|
120
|
+
'ui-plugin-manager', 'ui-reference', 'ui-renderer', 'ui-session',
|
|
121
|
+
'ui-settings', 'ui-settings-account', 'ui-settings-general',
|
|
122
|
+
'ui-settings-models', 'ui-settings-plugin-inventory', 'ui-settings-plugins',
|
|
123
|
+
'ui-settings-shell', 'ui-settings-web-search', 'ui-sidebar',
|
|
124
|
+
'ui-sidebar-browser', 'ui-sidebar-documentpreview', 'ui-sidebar-files',
|
|
125
|
+
'ui-sidebar-right', 'ui-sidebar-terminal', 'ui-theme', 'ui-tool',
|
|
126
|
+
'ui-trajectory', 'ui-user-questions', 'ui-workflow-run', 'ui-workspace',
|
|
127
|
+
];
|
|
71
128
|
export function worldMountPatches(key) {
|
|
72
129
|
if (typeof key !== 'string' || key === '' || key.includes('/')) {
|
|
73
130
|
throw new Error(`world-mount: invalid key ${JSON.stringify(key)}`);
|
|
@@ -96,10 +153,20 @@ export function worldMountPatches(key) {
|
|
|
96
153
|
// literals; the deploy-level trusted-host extras ride along).
|
|
97
154
|
{ id: 'web-runtime', disabled: true },
|
|
98
155
|
{ id: 'client-hmr', disabled: true },
|
|
156
|
+
// PARKED, not disabled: the modules row's activation work fails in world
|
|
157
|
+
// trees (no built client bundles) and the omp fiber treats it as
|
|
158
|
+
// required — waiting on the never-provided webServer keeps it inert
|
|
159
|
+
// without a startup failure (2026-09-27 wave-2 rig evidence).
|
|
99
160
|
{ id: 'modules', inject: ['webServer'] },
|
|
100
161
|
{ insert: [
|
|
101
162
|
{ id: WORLD_MOUNT_ROW_ID, name: WORLD_MOUNT_PLUGIN, config: { key } },
|
|
102
163
|
{ id: WORLD_HUB_ROW_ID, name: WORLD_HUB_PLUGIN },
|
|
103
164
|
] },
|
|
165
|
+
// Wave-1 minimization: the foreign runtimes replace the native agent
|
|
166
|
+
// machinery — these rows never mount in a world tree.
|
|
167
|
+
...WORLD_WAVE1_DISABLED_ROWS.map((id) => ({ id, disabled: true })),
|
|
168
|
+
// Wave-2 minimization: the client lane (native-ui-only completion) —
|
|
169
|
+
// no browser ever reads a world's module table.
|
|
170
|
+
...WORLD_WAVE2_DISABLED_ROWS.map((id) => ({ id, disabled: true })),
|
|
104
171
|
];
|
|
105
172
|
}
|