ds-harness-remote 0.5.8 → 0.5.11
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/acp/adapter.d.ts +1 -1
- package/dist/acp/adapter.d.ts.map +1 -1
- package/dist/acp/adapters/claude-history.d.ts +3 -0
- package/dist/acp/adapters/claude-history.d.ts.map +1 -0
- package/dist/acp/adapters/claude-history.js +118 -0
- package/dist/acp/adapters/claude-history.js.map +1 -0
- package/dist/acp/adapters/claude-process.d.ts +21 -0
- package/dist/acp/adapters/claude-process.d.ts.map +1 -0
- package/dist/acp/adapters/claude-process.js +147 -0
- package/dist/acp/adapters/claude-process.js.map +1 -0
- package/dist/acp/adapters/cursor-process.d.ts +12 -4
- package/dist/acp/adapters/cursor-process.d.ts.map +1 -1
- package/dist/acp/adapters/cursor-process.js +86 -4
- package/dist/acp/adapters/cursor-process.js.map +1 -1
- package/dist/acp/adapters/isolated-process.d.ts +45 -0
- package/dist/acp/adapters/isolated-process.d.ts.map +1 -0
- package/dist/acp/adapters/isolated-process.js +299 -0
- package/dist/acp/adapters/isolated-process.js.map +1 -0
- package/dist/acp/adapters/opencode-native-api.d.ts +16 -0
- package/dist/acp/adapters/opencode-native-api.d.ts.map +1 -0
- package/dist/acp/adapters/opencode-native-api.js +103 -0
- package/dist/acp/adapters/opencode-native-api.js.map +1 -0
- package/dist/acp/adapters/opencode-process.d.ts +86 -0
- package/dist/acp/adapters/opencode-process.d.ts.map +1 -0
- package/dist/acp/adapters/opencode-process.js +483 -0
- package/dist/acp/adapters/opencode-process.js.map +1 -0
- package/dist/acp/adapters/opencode.d.ts +8 -0
- package/dist/acp/adapters/opencode.d.ts.map +1 -0
- package/dist/acp/adapters/opencode.js +8 -0
- package/dist/acp/adapters/opencode.js.map +1 -0
- package/dist/acp/adapters/pi-process.d.ts +5 -0
- package/dist/acp/adapters/pi-process.d.ts.map +1 -0
- package/dist/acp/adapters/pi-process.js +5 -0
- package/dist/acp/adapters/pi-process.js.map +1 -0
- package/dist/acp/adapters/session-models.d.ts +33 -0
- package/dist/acp/adapters/session-models.d.ts.map +1 -0
- package/dist/acp/adapters/session-models.js +78 -0
- package/dist/acp/adapters/session-models.js.map +1 -0
- package/dist/acp/gateway.d.ts +10 -0
- package/dist/acp/gateway.d.ts.map +1 -1
- package/dist/acp/gateway.js +405 -71
- package/dist/acp/gateway.js.map +1 -1
- package/dist/acp/history-events.d.ts +8 -0
- package/dist/acp/history-events.d.ts.map +1 -0
- package/dist/acp/history-events.js +119 -0
- package/dist/acp/history-events.js.map +1 -0
- package/dist/acp/method-policy.d.ts +30 -20
- package/dist/acp/method-policy.d.ts.map +1 -1
- package/dist/acp/method-policy.js +6 -5
- package/dist/acp/method-policy.js.map +1 -1
- package/dist/acp/peer-bridge.d.ts +3 -2
- package/dist/acp/peer-bridge.d.ts.map +1 -1
- package/dist/acp/peer-bridge.js +4 -0
- package/dist/acp/peer-bridge.js.map +1 -1
- package/dist/acp/pi-tool-result.d.ts +9 -0
- package/dist/acp/pi-tool-result.d.ts.map +1 -0
- package/dist/acp/pi-tool-result.js +22 -0
- package/dist/acp/pi-tool-result.js.map +1 -0
- package/dist/acp/virtual-catalog.d.ts +50 -0
- package/dist/acp/virtual-catalog.d.ts.map +1 -0
- package/dist/acp/virtual-catalog.js +90 -0
- package/dist/acp/virtual-catalog.js.map +1 -0
- package/dist/acp/virtual-contract.d.ts +172 -0
- package/dist/acp/virtual-contract.d.ts.map +1 -0
- package/dist/acp/virtual-contract.js +216 -0
- package/dist/acp/virtual-contract.js.map +1 -0
- package/dist/acp/virtual-event-carrier.d.ts +51 -0
- package/dist/acp/virtual-event-carrier.d.ts.map +1 -0
- package/dist/acp/virtual-event-carrier.js +222 -0
- package/dist/acp/virtual-event-carrier.js.map +1 -0
- package/dist/acp/virtual-harness.d.ts +18 -112
- package/dist/acp/virtual-harness.d.ts.map +1 -1
- package/dist/acp/virtual-harness.js +238 -952
- package/dist/acp/virtual-harness.js.map +1 -1
- package/dist/acp/virtual-live.d.ts +79 -0
- package/dist/acp/virtual-live.d.ts.map +1 -0
- package/dist/acp/virtual-live.js +514 -0
- package/dist/acp/virtual-live.js.map +1 -0
- package/dist/acp/workspace-tools.js +1 -1
- package/dist/acp/workspace-tools.js.map +1 -1
- package/dist/acp.d.ts.map +1 -1
- package/dist/acp.js +1 -0
- package/dist/acp.js.map +1 -1
- package/dist/client/header.d.ts +10 -0
- package/dist/client/header.d.ts.map +1 -0
- package/dist/client/header.js +169 -0
- package/dist/client/header.js.map +1 -0
- package/dist/client/icons.d.ts +3 -0
- package/dist/client/icons.d.ts.map +1 -0
- package/dist/client/icons.js +3 -0
- package/dist/client/icons.js.map +1 -0
- package/dist/client/navigation.d.ts +5 -0
- package/dist/client/navigation.d.ts.map +1 -0
- package/dist/client/navigation.js +30 -0
- package/dist/client/navigation.js.map +1 -0
- package/dist/client/presentation.d.ts +17 -0
- package/dist/client/presentation.d.ts.map +1 -0
- package/dist/client/presentation.js +208 -0
- package/dist/client/presentation.js.map +1 -0
- package/dist/client/progress.d.ts +10 -0
- package/dist/client/progress.d.ts.map +1 -0
- package/dist/client/progress.js +82 -0
- package/dist/client/progress.js.map +1 -0
- package/dist/client/settings.d.ts +10 -0
- package/dist/client/settings.d.ts.map +1 -0
- package/dist/client/settings.js +335 -0
- package/dist/client/settings.js.map +1 -0
- package/dist/client/shell.d.ts +6 -0
- package/dist/client/shell.d.ts.map +1 -0
- package/dist/client/shell.js +129 -0
- package/dist/client/shell.js.map +1 -0
- package/dist/client/types.d.ts +265 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/workspaces.d.ts +11 -0
- package/dist/client/workspaces.d.ts.map +1 -0
- package/dist/client/workspaces.js +1261 -0
- package/dist/client/workspaces.js.map +1 -0
- package/dist/client-capabilities.d.ts +6 -0
- package/dist/client-capabilities.d.ts.map +1 -0
- package/dist/client-capabilities.js +90 -0
- package/dist/client-capabilities.js.map +1 -0
- package/dist/client-codex-streams.d.ts +23 -0
- package/dist/client-codex-streams.d.ts.map +1 -0
- package/dist/client-codex-streams.js +156 -0
- package/dist/client-codex-streams.js.map +1 -0
- package/dist/client-connection.d.ts +38 -0
- package/dist/client-connection.d.ts.map +1 -0
- package/dist/client-connection.js +210 -0
- package/dist/client-connection.js.map +1 -0
- package/dist/client-control.d.ts +48 -0
- package/dist/client-control.d.ts.map +1 -0
- package/dist/client-control.js +293 -0
- package/dist/client-control.js.map +1 -0
- package/dist/client-locale.d.ts +12 -0
- package/dist/client-locale.d.ts.map +1 -1
- package/dist/client-locale.js +24 -0
- package/dist/client-locale.js.map +1 -1
- package/dist/client-runtime-contract.d.ts +162 -0
- package/dist/client-runtime-contract.d.ts.map +1 -0
- package/dist/client-runtime-contract.js +127 -0
- package/dist/client-runtime-contract.js.map +1 -0
- package/dist/client-runtime.d.ts +24 -126
- package/dist/client-runtime.d.ts.map +1 -1
- package/dist/client-runtime.js +171 -867
- package/dist/client-runtime.js.map +1 -1
- package/dist/client-secure-transport.d.ts +1 -0
- package/dist/client-secure-transport.d.ts.map +1 -1
- package/dist/client-secure-transport.js +35 -16
- package/dist/client-secure-transport.js.map +1 -1
- package/dist/client-workspace-queries.d.ts +12 -0
- package/dist/client-workspace-queries.d.ts.map +1 -0
- package/dist/client-workspace-queries.js +66 -0
- package/dist/client-workspace-queries.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.github.js +2158 -1905
- package/dist/client.js +2158 -1905
- package/dist/client.js.map +1 -1
- package/dist/codex/domain.d.ts.map +1 -1
- package/dist/codex/domain.js +67 -46
- package/dist/codex/domain.js.map +1 -1
- package/dist/codex/method-policy.d.ts +7 -7
- package/dist/codex/virtual-catalog.d.ts +90 -0
- package/dist/codex/virtual-catalog.d.ts.map +1 -0
- package/dist/codex/virtual-catalog.js +317 -0
- package/dist/codex/virtual-catalog.js.map +1 -0
- package/dist/codex/virtual-contract.d.ts +96 -0
- package/dist/codex/virtual-contract.d.ts.map +1 -0
- package/dist/codex/virtual-contract.js +192 -0
- package/dist/codex/virtual-contract.js.map +1 -0
- package/dist/codex/virtual-event-carrier.d.ts +52 -0
- package/dist/codex/virtual-event-carrier.d.ts.map +1 -0
- package/dist/codex/virtual-event-carrier.js +212 -0
- package/dist/codex/virtual-event-carrier.js.map +1 -0
- package/dist/codex/virtual-harness.d.ts +16 -117
- package/dist/codex/virtual-harness.d.ts.map +1 -1
- package/dist/codex/virtual-harness.js +123 -1909
- package/dist/codex/virtual-harness.js.map +1 -1
- package/dist/codex/virtual-history.d.ts +74 -0
- package/dist/codex/virtual-history.d.ts.map +1 -0
- package/dist/codex/virtual-history.js +546 -0
- package/dist/codex/virtual-history.js.map +1 -0
- package/dist/codex/virtual-live.d.ts +75 -0
- package/dist/codex/virtual-live.d.ts.map +1 -0
- package/dist/codex/virtual-live.js +563 -0
- package/dist/codex/virtual-live.js.map +1 -0
- package/dist/codex/virtual-values.d.ts +29 -0
- package/dist/codex/virtual-values.d.ts.map +1 -0
- package/dist/codex/virtual-values.js +75 -0
- package/dist/codex/virtual-values.js.map +1 -0
- package/dist/config.js +4 -4
- package/dist/config.js.map +1 -1
- package/dist/control-runtime.js +2 -2
- package/dist/control-runtime.js.map +1 -1
- package/dist/harness-remote-bridge.d.ts +2 -1
- package/dist/harness-remote-bridge.d.ts.map +1 -1
- package/dist/harness-remote-bridge.js +11 -3
- package/dist/harness-remote-bridge.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17301 -14516
- package/dist/index.js.map +4 -4
- package/dist/plugin-route-dispatcher.d.ts +2 -2
- package/dist/plugin-route-dispatcher.d.ts.map +1 -1
- package/dist/plugin-route-dispatcher.js +2 -2
- package/dist/plugin-route-dispatcher.js.map +1 -1
- package/dist/remote-typert-gateway.js +49 -2
- package/dist/remote-typert-gateway.js.map +1 -1
- package/dist/server-connection.d.ts +1 -0
- package/dist/server-connection.d.ts.map +1 -1
- package/dist/server-connection.js +6 -1
- package/dist/server-connection.js.map +1 -1
- package/dist/service.d.ts +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +16 -5
- package/dist/service.js.map +1 -1
- package/dist/terminal-carrier-compat.d.ts +14 -0
- package/dist/terminal-carrier-compat.d.ts.map +1 -0
- package/dist/terminal-carrier-compat.js +259 -0
- package/dist/terminal-carrier-compat.js.map +1 -0
- package/dist/typert-gateway-contract.d.ts +6 -1
- package/dist/typert-gateway-contract.d.ts.map +1 -1
- package/dist/typert-gateway-switch.d.ts +2 -1
- package/dist/typert-gateway-switch.d.ts.map +1 -1
- package/dist/typert-gateway-switch.js +31 -15
- package/dist/typert-gateway-switch.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dsh-plugin.json +1 -1
- package/package.json +21 -19
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ApiProxy, RpcRequest } from '@deepseek-ai/dsh-host-apiproxy/api';
|
|
2
|
+
import type { TypertRpcResult } from '../typert-gateway-contract.js';
|
|
3
|
+
import type { CatalogState } from './virtual-catalog.js';
|
|
4
|
+
import type { PendingApproval } from './virtual-contract.js';
|
|
5
|
+
import { AsyncValueQueue } from './virtual-contract.js';
|
|
6
|
+
import type { CodexClientLike, JsonRecord } from './virtual-values.js';
|
|
7
|
+
/** Collaborates with one CodexVirtualHarness; never creates a second session or connection state. */
|
|
8
|
+
export interface CodexEventCarrierContext {
|
|
9
|
+
readonly workspaceStreams: Set<AsyncValueQueue>;
|
|
10
|
+
readonly refreshCatalog: (signal?: AbortSignal) => Promise<CatalogState>;
|
|
11
|
+
readonly selectedWorkspaceId: string | undefined;
|
|
12
|
+
readonly controlStreams: Set<AsyncValueQueue>;
|
|
13
|
+
readonly host: {
|
|
14
|
+
deviceId: string;
|
|
15
|
+
name: string;
|
|
16
|
+
};
|
|
17
|
+
readonly eventStreams: Map<string, AsyncValueQueue>;
|
|
18
|
+
readonly currentCatalog: (signal?: AbortSignal) => Promise<CatalogState>;
|
|
19
|
+
readonly pendingApprovals: Map<string, PendingApproval>;
|
|
20
|
+
readonly client: CodexClientLike;
|
|
21
|
+
readonly dispatch: (endpoint: string, payload: unknown, signal: AbortSignal) => Promise<TypertRpcResult>;
|
|
22
|
+
readonly rcMuxStreams: Set<AsyncValueQueue>;
|
|
23
|
+
readonly rcHostStreams: Set<AsyncValueQueue>;
|
|
24
|
+
}
|
|
25
|
+
export declare class CodexEventCarrier {
|
|
26
|
+
private readonly context;
|
|
27
|
+
constructor(context: CodexEventCarrierContext);
|
|
28
|
+
workspaceFollow(signal: AbortSignal): Promise<AsyncIterable<unknown>>;
|
|
29
|
+
sessionControl(signal: AbortSignal): Promise<AsyncIterable<unknown>>;
|
|
30
|
+
/**
|
|
31
|
+
* Background jobs belong to the Host Harness session, not to a CodeX virtual
|
|
32
|
+
* Workspace. The native session header mounts a job roster stream as soon as a
|
|
33
|
+
* Session opens, so answer it with an authoritative empty roster instead of a
|
|
34
|
+
* terminal `method-not-found` failure that tears the page down.
|
|
35
|
+
*/
|
|
36
|
+
emptyJobStream(endpoint: 'job/list' | 'job/follow', signal: AbortSignal): AsyncIterable<unknown>;
|
|
37
|
+
remoteEvents(signal: AbortSignal): Promise<AsyncIterable<unknown>>;
|
|
38
|
+
emitRemoteEvent(event: string, args: unknown[]): void;
|
|
39
|
+
emitApproval(input: {
|
|
40
|
+
eventId: string;
|
|
41
|
+
agentId: string;
|
|
42
|
+
request: JsonRecord;
|
|
43
|
+
}): void;
|
|
44
|
+
answerRemoteEvent(args: JsonRecord, signal: AbortSignal): Promise<undefined>;
|
|
45
|
+
createApiProxy(): ApiProxy;
|
|
46
|
+
rcMux(request: RpcRequest<unknown>, signal: AbortSignal): AsyncIterable<unknown>;
|
|
47
|
+
rcHost(_request: RpcRequest<unknown>, signal: AbortSignal): AsyncIterable<unknown>;
|
|
48
|
+
broadcastRcMux(payload: unknown, rpcId?: string): void;
|
|
49
|
+
broadcastRcHost(payload: unknown): void;
|
|
50
|
+
publishProjection(sessionId: string, key: string, value: unknown, seq: number): void;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=virtual-event-carrier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-event-carrier.d.ts","sourceRoot":"","sources":["../../src/codex/virtual-event-carrier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { nativeVisibleWorkspaces, nativeWorkspace } from './virtual-catalog.js';
|
|
2
|
+
import { AsyncValueQueue, failure, rcEndpoint, success } from './virtual-contract.js';
|
|
3
|
+
import { isRecord, record, string } from './virtual-values.js';
|
|
4
|
+
export class CodexEventCarrier {
|
|
5
|
+
context;
|
|
6
|
+
constructor(context) {
|
|
7
|
+
this.context = context;
|
|
8
|
+
}
|
|
9
|
+
async workspaceFollow(signal) {
|
|
10
|
+
const queue = new AsyncValueQueue(signal);
|
|
11
|
+
this.context.workspaceStreams.add(queue);
|
|
12
|
+
const catalog = await this.context.refreshCatalog(signal);
|
|
13
|
+
queue.push({
|
|
14
|
+
type: 'baseline',
|
|
15
|
+
value: {
|
|
16
|
+
items: nativeVisibleWorkspaces(catalog, this.context.selectedWorkspaceId).map(nativeWorkspace),
|
|
17
|
+
archivedSessionIds: catalog.sessions.filter(item => item.archived).map(item => item.id),
|
|
18
|
+
pinnedSessionIds: [],
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
return queue.iterate(() => this.context.workspaceStreams.delete(queue));
|
|
22
|
+
}
|
|
23
|
+
async sessionControl(signal) {
|
|
24
|
+
const queue = new AsyncValueQueue(signal);
|
|
25
|
+
this.context.controlStreams.add(queue);
|
|
26
|
+
queue.push({ type: 'baseline', value: { queues: {}, jobs: {}, projections: {} } });
|
|
27
|
+
return queue.iterate(() => this.context.controlStreams.delete(queue));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Background jobs belong to the Host Harness session, not to a CodeX virtual
|
|
31
|
+
* Workspace. The native session header mounts a job roster stream as soon as a
|
|
32
|
+
* Session opens, so answer it with an authoritative empty roster instead of a
|
|
33
|
+
* terminal `method-not-found` failure that tears the page down.
|
|
34
|
+
*/
|
|
35
|
+
emptyJobStream(endpoint, signal) {
|
|
36
|
+
const queue = new AsyncValueQueue(signal);
|
|
37
|
+
if (endpoint === 'job/list')
|
|
38
|
+
queue.push({ type: 'rows', jobs: [] });
|
|
39
|
+
return queue.iterate(() => queue.close());
|
|
40
|
+
}
|
|
41
|
+
async remoteEvents(signal) {
|
|
42
|
+
const queue = new AsyncValueQueue(signal);
|
|
43
|
+
const clientId = `codex-events:${this.context.host.deviceId}:${Date.now().toString(36)}`;
|
|
44
|
+
this.context.eventStreams.set(clientId, queue);
|
|
45
|
+
const home = (await this.context.currentCatalog(signal)).workspaces[0]?.path ?? '/';
|
|
46
|
+
queue.push({ type: 'ready', clientId, host: { home } });
|
|
47
|
+
return queue.iterate(() => this.context.eventStreams.delete(clientId));
|
|
48
|
+
}
|
|
49
|
+
emitRemoteEvent(event, args) {
|
|
50
|
+
for (const queue of this.context.eventStreams.values())
|
|
51
|
+
queue.push({ type: 'emit', event, args });
|
|
52
|
+
const sessionId = typeof args[0] === 'string' ? args[0] : undefined;
|
|
53
|
+
if (event === 'api-session/status' && sessionId !== undefined && typeof args[1] === 'boolean') {
|
|
54
|
+
this.broadcastRcHost({ type: 'host/session-status', sessionId, running: args[1] });
|
|
55
|
+
}
|
|
56
|
+
else if (event === 'api-session/removed' && sessionId !== undefined) {
|
|
57
|
+
this.broadcastRcHost({ type: 'host/session-removed', sessionId });
|
|
58
|
+
}
|
|
59
|
+
else if (event === 'api-session/added' && isRecord(args[0])) {
|
|
60
|
+
const summary = args[0];
|
|
61
|
+
this.broadcastRcHost({
|
|
62
|
+
type: 'host/session-added',
|
|
63
|
+
sessionId: summary.sessionId,
|
|
64
|
+
blank: summary.blank === true,
|
|
65
|
+
...(typeof summary.cwd === 'string' ? { cwd: summary.cwd } : {}),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
emitApproval(input) {
|
|
70
|
+
for (const queue of this.context.eventStreams.values())
|
|
71
|
+
queue.push({
|
|
72
|
+
type: 'waterfall',
|
|
73
|
+
event: 'approval/request',
|
|
74
|
+
eventId: input.eventId,
|
|
75
|
+
agentId: input.agentId,
|
|
76
|
+
request: input.request,
|
|
77
|
+
});
|
|
78
|
+
this.broadcastRcMux({
|
|
79
|
+
type: 'approval/requested',
|
|
80
|
+
sessionId: input.agentId,
|
|
81
|
+
approvalId: input.eventId,
|
|
82
|
+
toolName: string(input.request.toolName) ?? 'CodeX',
|
|
83
|
+
...(typeof input.request.reason === 'string' ? { reason: input.request.reason } : {}),
|
|
84
|
+
}, input.eventId);
|
|
85
|
+
}
|
|
86
|
+
async answerRemoteEvent(args, signal) {
|
|
87
|
+
const eventId = string(args.eventId);
|
|
88
|
+
const outcome = record(args.outcome);
|
|
89
|
+
if (eventId === undefined)
|
|
90
|
+
throw new Error('The CodeX approval result is missing its event id.');
|
|
91
|
+
const pending = this.context.pendingApprovals.get(eventId);
|
|
92
|
+
if (pending === undefined)
|
|
93
|
+
return undefined;
|
|
94
|
+
this.context.pendingApprovals.delete(eventId);
|
|
95
|
+
const decision = outcome.kind === 'result' && outcome.value === 'allowed-once'
|
|
96
|
+
? 'accept'
|
|
97
|
+
: outcome.kind === 'result' && outcome.value === 'cancelled'
|
|
98
|
+
? 'cancel'
|
|
99
|
+
: 'decline';
|
|
100
|
+
await this.context.client.respond(pending.requestHandle, decision, signal);
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
createApiProxy() {
|
|
104
|
+
const call = (endpoint) => async (request, signal) => {
|
|
105
|
+
const payload = endpoint === 'session.prompt' && isRecord(request.payload)
|
|
106
|
+
? { ...request.payload, requestId: String(request.rpcId) }
|
|
107
|
+
: request.payload;
|
|
108
|
+
const result = await this.context.dispatch(rcEndpoint(endpoint), { args: { request: payload } }, signal ?? new AbortController().signal);
|
|
109
|
+
return {
|
|
110
|
+
rpcId: request.rpcId,
|
|
111
|
+
result: (result.ok
|
|
112
|
+
? success(result.value)
|
|
113
|
+
: failure(result.error.code, result.error.message, result.error.details)),
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
return {
|
|
117
|
+
sessions: {
|
|
118
|
+
list: call('session.list'),
|
|
119
|
+
search: call('session.search'),
|
|
120
|
+
create: call('session.create'),
|
|
121
|
+
history: call('session.history'),
|
|
122
|
+
models: call('session.models'),
|
|
123
|
+
selectModel: call('session.selectModel'),
|
|
124
|
+
rename: call('session.rename'),
|
|
125
|
+
fork: call('session.fork'),
|
|
126
|
+
prompt: call('session.prompt'),
|
|
127
|
+
attachment: call('session.attachment'),
|
|
128
|
+
updateQueue: call('session.updateQueue'),
|
|
129
|
+
cancel: call('session.cancel'),
|
|
130
|
+
},
|
|
131
|
+
workspace: {
|
|
132
|
+
list: call('workspace.list'),
|
|
133
|
+
create: call('workspace.create'),
|
|
134
|
+
rename: call('workspace.rename'),
|
|
135
|
+
delete: call('workspace.delete'),
|
|
136
|
+
insertBefore: call('workspace.insertBefore'),
|
|
137
|
+
insertSessionBefore: call('workspace.insertSessionBefore'),
|
|
138
|
+
archiveSession: call('workspace.archiveSession'),
|
|
139
|
+
},
|
|
140
|
+
subagents: {},
|
|
141
|
+
host: {
|
|
142
|
+
describe: call('host.describe'),
|
|
143
|
+
listDirectory: call('host.listDirectory'),
|
|
144
|
+
},
|
|
145
|
+
skills: { list: call('skills.list') },
|
|
146
|
+
agentPresets: {},
|
|
147
|
+
goals: {},
|
|
148
|
+
settings: {},
|
|
149
|
+
credentials: {},
|
|
150
|
+
llm: {},
|
|
151
|
+
events: {
|
|
152
|
+
mux: ((request, signal) => this.rcMux(request, signal)),
|
|
153
|
+
host: ((request, signal) => this.rcHost(request, signal)),
|
|
154
|
+
},
|
|
155
|
+
downloads: {},
|
|
156
|
+
respond: async (message) => {
|
|
157
|
+
const pending = this.context.pendingApprovals.get(String(message.rpcId));
|
|
158
|
+
if (pending === undefined)
|
|
159
|
+
return { accepted: false, reason: 'not-pending' };
|
|
160
|
+
const result = message.result;
|
|
161
|
+
const outcome = result.ok ? result.value : undefined;
|
|
162
|
+
const decision = outcome === 'allowed-once' ? 'accept' : outcome === 'cancelled' ? 'cancel' : 'decline';
|
|
163
|
+
await this.context.client.respond(pending.requestHandle, decision);
|
|
164
|
+
this.context.pendingApprovals.delete(pending.requestHandle);
|
|
165
|
+
return { accepted: true };
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
async *rcMux(request, signal) {
|
|
170
|
+
const queue = new AsyncValueQueue(signal);
|
|
171
|
+
this.context.rcMuxStreams.add(queue);
|
|
172
|
+
const catalog = await this.context.currentCatalog(signal);
|
|
173
|
+
for (const session of catalog.sessions)
|
|
174
|
+
queue.push({
|
|
175
|
+
rpcId: `${String(request.rpcId)}:${session.id}:subscribed`,
|
|
176
|
+
payload: { type: 'session/subscribed', sessionId: session.id, lastSeq: -1 },
|
|
177
|
+
});
|
|
178
|
+
try {
|
|
179
|
+
yield* queue;
|
|
180
|
+
}
|
|
181
|
+
finally {
|
|
182
|
+
this.context.rcMuxStreams.delete(queue);
|
|
183
|
+
queue.close();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async *rcHost(_request, signal) {
|
|
187
|
+
const queue = new AsyncValueQueue(signal);
|
|
188
|
+
this.context.rcHostStreams.add(queue);
|
|
189
|
+
try {
|
|
190
|
+
yield* queue;
|
|
191
|
+
}
|
|
192
|
+
finally {
|
|
193
|
+
this.context.rcHostStreams.delete(queue);
|
|
194
|
+
queue.close();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
broadcastRcMux(payload, rpcId = `codex-mux:${Date.now()}:${Math.random()}`) {
|
|
198
|
+
for (const queue of this.context.rcMuxStreams)
|
|
199
|
+
queue.push({ rpcId, payload });
|
|
200
|
+
}
|
|
201
|
+
broadcastRcHost(payload) {
|
|
202
|
+
const frame = { rpcId: `codex-host:${Date.now()}:${Math.random()}`, payload };
|
|
203
|
+
for (const queue of this.context.rcHostStreams)
|
|
204
|
+
queue.push(frame);
|
|
205
|
+
}
|
|
206
|
+
publishProjection(sessionId, key, value, seq) {
|
|
207
|
+
for (const queue of this.context.controlStreams)
|
|
208
|
+
queue.push({ type: 'projection', sessionId, key, value, seq });
|
|
209
|
+
this.broadcastRcMux({ type: 'session/projection', sessionId, key, value, seq });
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=virtual-event-carrier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-event-carrier.js","sourceRoot":"","sources":["../../src/codex/virtual-event-carrier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,76 +1,9 @@
|
|
|
1
1
|
import type { ApiProxy } from '@deepseek-ai/dsh-host-apiproxy/api';
|
|
2
2
|
import { CodexRemoteClient } from '@dsh-remote/client-core';
|
|
3
|
-
import type { RemoteTypertGatewayTarget, TypertGatewayRequest, TypertRpcResult } from '../typert-gateway-contract.js';
|
|
4
|
-
import type { CodexPermissionSnapshot } from '@dsh-remote/protocol';
|
|
5
3
|
import type { HarnessSessionGeneration } from '../harness-version.js';
|
|
6
|
-
type
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
path: string;
|
|
10
|
-
title: string;
|
|
11
|
-
sessionIds: string[];
|
|
12
|
-
sessionCount: number;
|
|
13
|
-
createdAt: string;
|
|
14
|
-
updatedAt: string;
|
|
15
|
-
}
|
|
16
|
-
export declare function codexProjectWorkspaceId(projectId: string): string;
|
|
17
|
-
interface CodexClientLike {
|
|
18
|
-
request(method: string, params: unknown, signal?: AbortSignal): Promise<unknown>;
|
|
19
|
-
subscribe(threadId: string, onFrame: (frame: {
|
|
20
|
-
method: string;
|
|
21
|
-
params: unknown;
|
|
22
|
-
}) => void, signal?: AbortSignal, onClose?: (reason: 'cancelled' | 'completed' | 'failed' | 'peer-disconnected') => void): Promise<{
|
|
23
|
-
close(): Promise<void>;
|
|
24
|
-
}>;
|
|
25
|
-
respond(requestHandle: string, decision: 'accept' | 'decline' | 'cancel', signal?: AbortSignal): Promise<void>;
|
|
26
|
-
}
|
|
27
|
-
interface NativeEvent {
|
|
28
|
-
type: string;
|
|
29
|
-
seq: number;
|
|
30
|
-
time: number;
|
|
31
|
-
data: unknown;
|
|
32
|
-
sourceEventSeqs?: number[];
|
|
33
|
-
surfaceOp?: 'append' | {
|
|
34
|
-
op: 'replace';
|
|
35
|
-
start: number;
|
|
36
|
-
end: number;
|
|
37
|
-
} | {
|
|
38
|
-
op: 'replace';
|
|
39
|
-
startSeq: number;
|
|
40
|
-
endSeq: number;
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
export interface CodexNativeHistory {
|
|
44
|
-
header: {
|
|
45
|
-
version: number;
|
|
46
|
-
id: string;
|
|
47
|
-
createdAt: number;
|
|
48
|
-
cwd?: string;
|
|
49
|
-
isSeeded?: boolean;
|
|
50
|
-
};
|
|
51
|
-
entries: Array<{
|
|
52
|
-
type: 'event';
|
|
53
|
-
event: NativeEvent;
|
|
54
|
-
view?: ToolEventView;
|
|
55
|
-
}>;
|
|
56
|
-
lastSeq: number;
|
|
57
|
-
nextTurn: number;
|
|
58
|
-
activeTurnId?: string;
|
|
59
|
-
}
|
|
60
|
-
export interface CodexNativeHistoryPage extends CodexPermissionSnapshot {
|
|
61
|
-
header: CodexNativeHistory['header'];
|
|
62
|
-
cursor: number;
|
|
63
|
-
nextTurn: number;
|
|
64
|
-
records: CodexNativeHistory['entries'];
|
|
65
|
-
hasMore: boolean;
|
|
66
|
-
activeTurnId?: string;
|
|
67
|
-
}
|
|
68
|
-
interface ToolEventView {
|
|
69
|
-
for: 'call' | 'result';
|
|
70
|
-
view: JsonRecord;
|
|
71
|
-
}
|
|
72
|
-
/** Discover the CodeX projects visible through the Host App Server. */
|
|
73
|
-
export declare function discoverCodexVirtualWorkspaces(client: CodexClientLike, signal?: AbortSignal): Promise<CodexVirtualWorkspaceView[]>;
|
|
4
|
+
import type { RemoteTypertGatewayTarget, TypertGatewayRequest, TypertRpcResult } from '../typert-gateway-contract.js';
|
|
5
|
+
import type { CodexVirtualWorkspaceView } from './virtual-catalog.js';
|
|
6
|
+
import type { CodexClientLike } from './virtual-values.js';
|
|
74
7
|
/**
|
|
75
8
|
* A plugin-owned virtual Harness target. It projects CodeX Thread/Turn data at
|
|
76
9
|
* the existing ApiProxy/Typert carrier boundary, so every UI layer above the
|
|
@@ -81,6 +14,8 @@ export declare class CodexVirtualHarness implements RemoteTypertGatewayTarget {
|
|
|
81
14
|
private readonly host;
|
|
82
15
|
private readonly sessionGeneration;
|
|
83
16
|
private readonly hostCarrier?;
|
|
17
|
+
private readonly live;
|
|
18
|
+
private readonly events;
|
|
84
19
|
readonly api: ApiProxy;
|
|
85
20
|
private catalog?;
|
|
86
21
|
private readonly workspaceStreams;
|
|
@@ -101,6 +36,8 @@ export declare class CodexVirtualHarness implements RemoteTypertGatewayTarget {
|
|
|
101
36
|
private lastProjectionSeq;
|
|
102
37
|
private commandSeq;
|
|
103
38
|
private selectedWorkspaceId?;
|
|
39
|
+
private lastOpenedSessionId?;
|
|
40
|
+
private readonly openedWorkspaceSessions;
|
|
104
41
|
private closed;
|
|
105
42
|
constructor(client: CodexClientLike, host: {
|
|
106
43
|
deviceId: string;
|
|
@@ -112,7 +49,10 @@ export declare class CodexVirtualHarness implements RemoteTypertGatewayTarget {
|
|
|
112
49
|
}, sessionGeneration?: HarnessSessionGeneration, hostCarrier?: RemoteTypertGatewayTarget): CodexVirtualHarness;
|
|
113
50
|
workspaces(signal?: AbortSignal): Promise<CodexVirtualWorkspaceView[]>;
|
|
114
51
|
selectWorkspace(workspaceId: string, signal?: AbortSignal): Promise<CodexVirtualWorkspaceView>;
|
|
115
|
-
|
|
52
|
+
get openedSessionId(): string | undefined;
|
|
53
|
+
get openedSessions(): ReadonlyMap<string, string>;
|
|
54
|
+
private rememberOpenedSession;
|
|
55
|
+
preferredSessionId(signal?: AbortSignal, preferredSessionId?: string | undefined): Promise<string | undefined>;
|
|
116
56
|
invoke(request: TypertGatewayRequest): Promise<unknown>;
|
|
117
57
|
dispatch(endpoint: string, payload: unknown, signal: AbortSignal): Promise<TypertRpcResult>;
|
|
118
58
|
open(endpoint: string, payload: unknown, signal: AbortSignal): Promise<AsyncIterable<unknown>>;
|
|
@@ -127,41 +67,11 @@ export declare class CodexVirtualHarness implements RemoteTypertGatewayTarget {
|
|
|
127
67
|
private executeCommand;
|
|
128
68
|
private sessionTitle;
|
|
129
69
|
private selectModel;
|
|
130
|
-
private publishProjection;
|
|
131
70
|
private nextProjectionSeq;
|
|
132
71
|
private updateThreadName;
|
|
133
72
|
private sessionSummaries;
|
|
134
73
|
private sessionSummary;
|
|
135
74
|
private searchSessions;
|
|
136
|
-
private workspaceFollow;
|
|
137
|
-
private sessionControl;
|
|
138
|
-
/**
|
|
139
|
-
* Background jobs belong to the Host Harness session, not to a CodeX virtual
|
|
140
|
-
* Workspace. The native session header mounts a job roster stream as soon as a
|
|
141
|
-
* Session opens, so answer it with an authoritative empty roster instead of a
|
|
142
|
-
* terminal `method-not-found` failure that tears the page down.
|
|
143
|
-
*/
|
|
144
|
-
private emptyJobStream;
|
|
145
|
-
private remoteEvents;
|
|
146
|
-
private sessionFollow;
|
|
147
|
-
private acceptCodexFrame;
|
|
148
|
-
private acceptCompletedItem;
|
|
149
|
-
private pushEvent;
|
|
150
|
-
private cacheImageBlocks;
|
|
151
|
-
private ensureStreamBlock;
|
|
152
|
-
private appendStreamDelta;
|
|
153
|
-
private closeItemStreamBlocks;
|
|
154
|
-
private closeAllStreamBlocks;
|
|
155
|
-
private finishStream;
|
|
156
|
-
private pushAssistantChunk;
|
|
157
|
-
private endAssistantAttempt;
|
|
158
|
-
private ensureToolStarted;
|
|
159
|
-
private emitToolResult;
|
|
160
|
-
private pushToolResult;
|
|
161
|
-
private resetLiveTurn;
|
|
162
|
-
private emitRemoteEvent;
|
|
163
|
-
private emitApproval;
|
|
164
|
-
private answerRemoteEvent;
|
|
165
75
|
private createWorkspace;
|
|
166
76
|
private renameWorkspace;
|
|
167
77
|
private workspaceForSession;
|
|
@@ -176,28 +86,17 @@ export declare class CodexVirtualHarness implements RemoteTypertGatewayTarget {
|
|
|
176
86
|
private hydrateImageAttachments;
|
|
177
87
|
private cancel;
|
|
178
88
|
private renameSession;
|
|
89
|
+
private sessionProjections;
|
|
179
90
|
private sessionPage;
|
|
180
91
|
private activeTurnId;
|
|
181
|
-
private fetchThread;
|
|
182
92
|
private readHistoryPage;
|
|
183
93
|
private cacheHistoryImages;
|
|
184
94
|
private sessionHistory;
|
|
185
|
-
private ensureRcFollow;
|
|
186
|
-
private followsHas;
|
|
187
|
-
private closeFollowAfterRemoteStreamClosed;
|
|
188
95
|
private refreshAndPublishWorkspaces;
|
|
189
96
|
private publishWorkspaceBaseline;
|
|
190
|
-
private createApiProxy;
|
|
191
|
-
private rcMux;
|
|
192
|
-
private rcHost;
|
|
193
|
-
private broadcastRcMux;
|
|
194
|
-
private broadcastRcHost;
|
|
195
97
|
}
|
|
196
|
-
export
|
|
197
|
-
export
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
maxMessages?: number;
|
|
201
|
-
}): CodexNativeHistoryPage;
|
|
202
|
-
export {};
|
|
98
|
+
export { codexProjectWorkspaceId, discoverCodexVirtualWorkspaces } from './virtual-catalog.js';
|
|
99
|
+
export type { CodexVirtualWorkspaceView } from './virtual-catalog.js';
|
|
100
|
+
export { paginateCodexNativeHistory, projectCodexNativeHistory } from './virtual-history.js';
|
|
101
|
+
export type { CodexNativeHistory, CodexNativeHistoryPage } from './virtual-history.js';
|
|
203
102
|
//# sourceMappingURL=virtual-harness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-harness.d.ts","sourceRoot":"","sources":["../../src/codex/virtual-harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"virtual-harness.d.ts","sourceRoot":"","sources":["../../src/codex/virtual-harness.ts"],"names":[],"mappings":"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"}
|