@senguoyun/dsh-arkme 0.1.31 → 0.1.32

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.
Files changed (108) hide show
  1. package/lib/client.js +1946 -762
  2. package/lib/client.js.map +1 -1
  3. package/lib/index.js +3693 -171
  4. package/lib/persistent-extension.js +1 -1
  5. package/lib/{persistent-runtime-BJ8konXI.js → persistent-runtime-CFeIg6aw.js} +1520 -681
  6. package/lib/sdk.js +38 -0
  7. package/lib/types/arkme-service.d.ts +25 -10
  8. package/lib/types/arkme-service.d.ts.map +1 -1
  9. package/lib/types/client/ArkmeBillingSettings.d.ts.map +1 -1
  10. package/lib/types/client/ArkmeBotConversationSurface.d.ts.map +1 -1
  11. package/lib/types/client/ArkmeBotSettingsPanel.d.ts.map +1 -1
  12. package/lib/types/client/ArkmeGroupChatControls.d.ts +17 -1
  13. package/lib/types/client/ArkmeGroupChatControls.d.ts.map +1 -1
  14. package/lib/types/client/ArkmeLinkText.d.ts +13 -0
  15. package/lib/types/client/ArkmeLinkText.d.ts.map +1 -0
  16. package/lib/types/client/ArkmeLongArticleDialog.d.ts.map +1 -1
  17. package/lib/types/client/ArkmePersistentShell.d.ts.map +1 -1
  18. package/lib/types/client/ArkmeQuickAdd.d.ts.map +1 -1
  19. package/lib/types/client/ArkmeRichContent.d.ts +4 -21
  20. package/lib/types/client/ArkmeRichContent.d.ts.map +1 -1
  21. package/lib/types/client/ArkmeRichText.d.ts +12 -0
  22. package/lib/types/client/ArkmeRichText.d.ts.map +1 -0
  23. package/lib/types/client/ArkmeSearchSurface.d.ts.map +1 -1
  24. package/lib/types/client/ArkmeSidebar.d.ts.map +1 -1
  25. package/lib/types/client/ArkmeVirtualWorkspace.d.ts.map +1 -1
  26. package/lib/types/client/api.d.ts +1 -1
  27. package/lib/types/client/api.d.ts.map +1 -1
  28. package/lib/types/client/bot-chat-directory-projection.d.ts +7 -0
  29. package/lib/types/client/bot-chat-directory-projection.d.ts.map +1 -0
  30. package/lib/types/client/link-metadata-client.d.ts +20 -0
  31. package/lib/types/client/link-metadata-client.d.ts.map +1 -0
  32. package/lib/types/client/realtime-client-events.d.ts +4 -1
  33. package/lib/types/client/realtime-client-events.d.ts.map +1 -1
  34. package/lib/types/client/redesign/contacts/AlphabeticalContactList.d.ts +3 -3
  35. package/lib/types/client/redesign/contacts/AlphabeticalContactList.d.ts.map +1 -1
  36. package/lib/types/client/redesign/contacts/ContactDirectorySurface.d.ts +3 -3
  37. package/lib/types/client/redesign/contacts/ContactDirectorySurface.d.ts.map +1 -1
  38. package/lib/types/client/related-recordings.d.ts +3 -0
  39. package/lib/types/client/related-recordings.d.ts.map +1 -1
  40. package/lib/types/client/text-link-parser.d.ts +10 -0
  41. package/lib/types/client/text-link-parser.d.ts.map +1 -0
  42. package/lib/types/client/text-link-tlds.d.ts +2 -0
  43. package/lib/types/client/text-link-tlds.d.ts.map +1 -0
  44. package/lib/types/client/ui-controller.d.ts.map +1 -1
  45. package/lib/types/dsh-host-capabilities.d.ts +10 -0
  46. package/lib/types/dsh-host-capabilities.d.ts.map +1 -0
  47. package/lib/types/dsh-remote/api-proxy-adapter.d.ts +250 -0
  48. package/lib/types/dsh-remote/api-proxy-adapter.d.ts.map +1 -0
  49. package/lib/types/dsh-remote/channel-manager.d.ts +45 -0
  50. package/lib/types/dsh-remote/channel-manager.d.ts.map +1 -0
  51. package/lib/types/dsh-remote/command-ledger.d.ts +60 -0
  52. package/lib/types/dsh-remote/command-ledger.d.ts.map +1 -0
  53. package/lib/types/dsh-remote/control-plane.d.ts +17 -0
  54. package/lib/types/dsh-remote/control-plane.d.ts.map +1 -0
  55. package/lib/types/dsh-remote/crypto.d.ts +11 -0
  56. package/lib/types/dsh-remote/crypto.d.ts.map +1 -0
  57. package/lib/types/dsh-remote/default-socket-factory.d.ts +8 -0
  58. package/lib/types/dsh-remote/default-socket-factory.d.ts.map +1 -0
  59. package/lib/types/dsh-remote/dsh-event-contract.d.ts +29 -0
  60. package/lib/types/dsh-remote/dsh-event-contract.d.ts.map +1 -0
  61. package/lib/types/dsh-remote/errors.d.ts +9 -0
  62. package/lib/types/dsh-remote/errors.d.ts.map +1 -0
  63. package/lib/types/dsh-remote/host.d.ts +85 -0
  64. package/lib/types/dsh-remote/host.d.ts.map +1 -0
  65. package/lib/types/dsh-remote/protocol-v1.d.ts +6 -0
  66. package/lib/types/dsh-remote/protocol-v1.d.ts.map +1 -0
  67. package/lib/types/dsh-remote/realtime-transport.d.ts +84 -0
  68. package/lib/types/dsh-remote/realtime-transport.d.ts.map +1 -0
  69. package/lib/types/dsh-remote/runtime-secret-broker.d.ts +28 -0
  70. package/lib/types/dsh-remote/runtime-secret-broker.d.ts.map +1 -0
  71. package/lib/types/dsh-remote/runtime-store.d.ts +39 -0
  72. package/lib/types/dsh-remote/runtime-store.d.ts.map +1 -0
  73. package/lib/types/dsh-remote/transport-fragment.d.ts +10 -0
  74. package/lib/types/dsh-remote/transport-fragment.d.ts.map +1 -0
  75. package/lib/types/dsh-remote/types.d.ts +164 -0
  76. package/lib/types/dsh-remote/types.d.ts.map +1 -0
  77. package/lib/types/harness-embed-route.d.ts +11 -1
  78. package/lib/types/harness-embed-route.d.ts.map +1 -1
  79. package/lib/types/host-api.d.ts +3 -1
  80. package/lib/types/host-api.d.ts.map +1 -1
  81. package/lib/types/index.d.ts +14 -0
  82. package/lib/types/index.d.ts.map +1 -1
  83. package/lib/types/keychain-store.d.ts +33 -0
  84. package/lib/types/keychain-store.d.ts.map +1 -1
  85. package/lib/types/link-metadata.d.ts +9 -0
  86. package/lib/types/link-metadata.d.ts.map +1 -0
  87. package/lib/types/managed-ai/adapter.d.ts +2 -0
  88. package/lib/types/managed-ai/adapter.d.ts.map +1 -1
  89. package/lib/types/sdk/index.d.ts +9 -2
  90. package/lib/types/sdk/index.d.ts.map +1 -1
  91. package/lib/types/services/bot-conversation-service.d.ts +59 -0
  92. package/lib/types/services/bot-conversation-service.d.ts.map +1 -0
  93. package/lib/types/services/bot-service.d.ts +11 -29
  94. package/lib/types/services/bot-service.d.ts.map +1 -1
  95. package/lib/types/services/chat-service.d.ts +30 -5
  96. package/lib/types/services/chat-service.d.ts.map +1 -1
  97. package/lib/types/services/contact-directory-service.d.ts.map +1 -1
  98. package/lib/types/services/link-metadata-service.d.ts +73 -0
  99. package/lib/types/services/link-metadata-service.d.ts.map +1 -0
  100. package/lib/types/services/related-recording-service.d.ts +1 -0
  101. package/lib/types/services/related-recording-service.d.ts.map +1 -1
  102. package/lib/types/services/service.d.ts +4 -2
  103. package/lib/types/services/service.d.ts.map +1 -1
  104. package/lib/types/tools/ports/bots.d.ts +1 -1
  105. package/lib/types/tools/ports/bots.d.ts.map +1 -1
  106. package/lib/types/types.d.ts +55 -21
  107. package/lib/types/types.d.ts.map +1 -1
  108. package/package.json +23 -23
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-socket-factory.d.ts","sourceRoot":"","sources":["../../../src/dsh-remote/default-socket-factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElE,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CASzE;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,WAAW,CAAA;CACpB,GAAG,mBAAmB,CAiBtB"}
@@ -0,0 +1,29 @@
1
+ export type DshRemoteJsonValue = null | boolean | number | string | DshRemoteJsonValue[] | {
2
+ [key: string]: DshRemoteJsonValue;
3
+ };
4
+ export interface DshRemoteSessionEvent {
5
+ type: string;
6
+ seq: number;
7
+ time: number;
8
+ data: DshRemoteJsonValue;
9
+ sourceEventSeqs?: number[];
10
+ surfaceOp?: DshRemoteJsonValue;
11
+ ignorable?: true;
12
+ }
13
+ export interface DshRemoteToolEventView {
14
+ for: 'call' | 'result';
15
+ view: {
16
+ [key: string]: DshRemoteJsonValue;
17
+ };
18
+ }
19
+ /** The public DSH replay unit used by both sessions.history and events.mux. */
20
+ export interface DshRemoteHistoryEntry {
21
+ event: DshRemoteSessionEvent;
22
+ view?: DshRemoteToolEventView;
23
+ }
24
+ export declare function snapshotDshHistoryEntry(value: {
25
+ event: unknown;
26
+ view?: unknown;
27
+ }): DshRemoteHistoryEntry;
28
+ export declare function dshHistoryEntryUserRpcId(entry: DshRemoteHistoryEntry): string | undefined;
29
+ //# sourceMappingURL=dsh-event-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsh-event-contract.d.ts","sourceRoot":"","sources":["../../../src/dsh-remote/dsh-event-contract.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAC1B,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,kBAAkB,EAAE,GACpB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAA;CAAE,CAAA;AAEzC,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,kBAAkB,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,SAAS,CAAC,EAAE,kBAAkB,CAAA;IAC9B,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;IACtB,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;CAC5C;AAED,+EAA+E;AAC/E,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,qBAAqB,CAAA;IAC5B,IAAI,CAAC,EAAE,sBAAsB,CAAA;CAC9B;AA0BD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,GAAG,qBAAqB,CAqCxB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,SAAS,CAWzF"}
@@ -0,0 +1,9 @@
1
+ export type DshRemoteErrorCode = 'REMOTE_LOGIN_REQUIRED' | 'RUNTIME_OFFLINE' | 'RUNTIME_LIMIT_REACHED' | 'HOST_CHANNEL_NOT_READY' | 'CAPABILITY_UNSUPPORTED' | 'WORKSPACE_UNAVAILABLE' | 'SESSION_NOT_FOUND' | 'COMMAND_EXPIRED' | 'COMMAND_OUTCOME_UNKNOWN' | 'INTERACTION_RESOLVED' | 'CONNECTION_REPLACED' | 'HOST_GENERATION_STALE' | 'SESSION_STATE_CHANGED' | 'REPLAY_GAP' | 'REMOTE_PROTOCOL_UNSUPPORTED' | 'REMOTE_REQUEST_INVALID' | 'REMOTE_INVALID_RESPONSE' | 'REMOTE_NOT_FOUND' | 'REMOTE_PROJECTION_CONFLICT' | 'REMOTE_REALTIME_UNAVAILABLE' | 'REMOTE_NETWORK_UNAVAILABLE' | 'REMOTE_STORAGE_FAILED' | 'REMOTE_TRANSPORT_FAILED';
2
+ export declare class DshRemoteError extends Error {
3
+ readonly code: DshRemoteErrorCode;
4
+ readonly retryable: boolean;
5
+ readonly details: Record<string, unknown>;
6
+ constructor(code: DshRemoteErrorCode, message: string, retryable?: boolean, details?: Record<string, unknown>, options?: ErrorOptions);
7
+ }
8
+ export declare function asDshRemoteError(error: unknown): DshRemoteError;
9
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/dsh-remote/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAC1B,uBAAuB,GACvB,iBAAiB,GACjB,uBAAuB,GACvB,wBAAwB,GACxB,wBAAwB,GACxB,uBAAuB,GACvB,mBAAmB,GACnB,iBAAiB,GACjB,yBAAyB,GACzB,sBAAsB,GACtB,qBAAqB,GACrB,uBAAuB,GACvB,uBAAuB,GACvB,YAAY,GACZ,6BAA6B,GAC7B,wBAAwB,GACxB,yBAAyB,GACzB,kBAAkB,GAClB,4BAA4B,GAC5B,6BAA6B,GAC7B,4BAA4B,GAC5B,uBAAuB,GACvB,yBAAyB,CAAA;AAE7B,qBAAa,cAAe,SAAQ,KAAK;IAErC,QAAQ,CAAC,IAAI,EAAE,kBAAkB;IAEjC,QAAQ,CAAC,SAAS;IAClB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAHhC,IAAI,EAAE,kBAAkB,EACjC,OAAO,EAAE,MAAM,EACN,SAAS,UAAQ,EACjB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAC9C,OAAO,CAAC,EAAE,YAAY;CAKzB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAS/D"}
@@ -0,0 +1,85 @@
1
+ import { DshApiProxyAdapter } from './api-proxy-adapter.js';
2
+ import { DshRemoteCommandLedger } from './command-ledger.js';
3
+ import { DshRemoteRuntimeStore } from './runtime-store.js';
4
+ import { DshRemoteRuntimeSecretBroker } from './runtime-secret-broker.js';
5
+ import { type DshRemoteControlPlane, type DshRemoteHostFacade, type DshRemoteRealtimeTransport, type DshRemoteResponse, type DshRemoteStatus, type DshRemoteTrustedEventMetadata } from './types.js';
6
+ interface HostSession {
7
+ userId: number;
8
+ clientId: number;
9
+ }
10
+ interface HostRuntimeContext {
11
+ serviceLeaseGeneration: number;
12
+ metadata: DshRemoteTrustedEventMetadata;
13
+ }
14
+ export interface ArkmeRemoteRealtimeHostOptions {
15
+ featureEnabled: boolean;
16
+ transportAvailable?: boolean;
17
+ profileRef: string;
18
+ hostClientRef: string;
19
+ displayName?: string;
20
+ platform?: NodeJS.Platform;
21
+ readSession: () => Promise<HostSession | undefined>;
22
+ secretBroker: DshRemoteRuntimeSecretBroker;
23
+ runtimeStore: DshRemoteRuntimeStore;
24
+ controlPlane: DshRemoteControlPlane;
25
+ realtime: DshRemoteRealtimeTransport;
26
+ apiProxy: DshApiProxyAdapter;
27
+ ledgerForAccount: (accountId: string, key: Buffer) => Promise<DshRemoteCommandLedger> | DshRemoteCommandLedger;
28
+ now?: () => number;
29
+ }
30
+ /**
31
+ * Account-login Host facade. Backend owns durable discovery/projections,
32
+ * Realtime owns the short-lived Host lease, and DSH remains session truth.
33
+ */
34
+ export declare class ArkmeRemoteRealtimeHost implements DshRemoteHostFacade {
35
+ private readonly options;
36
+ private readonly now;
37
+ private readonly listeners;
38
+ private runtime;
39
+ private accountId;
40
+ private clientId;
41
+ private ledger;
42
+ private started;
43
+ private connected;
44
+ private serviceLeaseGeneration;
45
+ private revision;
46
+ private stopEvents;
47
+ private stopProjectionEvents;
48
+ private channelManager;
49
+ private stopTransportDisconnect;
50
+ private reconnectTimer;
51
+ private reconnecting;
52
+ private sessionTimer;
53
+ private connectionError;
54
+ private lastProjectionSyncAttemptMillis;
55
+ private projectionVersion;
56
+ constructor(options: ArkmeRemoteRealtimeHostOptions);
57
+ start(): Promise<void>;
58
+ stop(): Promise<void>;
59
+ getStatus(): DshRemoteStatus;
60
+ renameDesktop(displayName: string): Promise<DshRemoteStatus>;
61
+ subscribe(listener: (status: DshRemoteStatus) => void): () => void;
62
+ /** Entry used only by the authenticated Realtime channel bridge. */
63
+ dispatchAuthorizedRequest(value: unknown, context: HostRuntimeContext): Promise<DshRemoteResponse>;
64
+ private syncSessionSafely;
65
+ private syncSession;
66
+ private ensureAutomaticConnection;
67
+ private scheduleSessionSync;
68
+ private deactivateAccount;
69
+ private startApiProxyEvents;
70
+ private stopApiProxyEvents;
71
+ private publishProjectionEvent;
72
+ private handleTransportDisconnect;
73
+ private connectHost;
74
+ private syncProjectionSnapshotSafely;
75
+ private nextProjectionVersion;
76
+ private syncProjectionSnapshot;
77
+ private dispatch;
78
+ private dispatchWrite;
79
+ private reconcileUnsettled;
80
+ private requireReady;
81
+ private requireConnected;
82
+ private bump;
83
+ }
84
+ export {};
85
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/dsh-remote/host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type DshRemoteRequest } from './types.js';
2
+ export declare function parseDshRemoteRequest(value: unknown, options: {
3
+ expectedHostGeneration: number;
4
+ nowMillis?: number;
5
+ }): DshRemoteRequest;
6
+ //# sourceMappingURL=protocol-v1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-v1.d.ts","sourceRoot":"","sources":["../../../src/dsh-remote/protocol-v1.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAA;AA+FnB,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;IAAE,sBAAsB,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,gBAAgB,CAoClB"}
@@ -0,0 +1,84 @@
1
+ import type { DshRemoteCapability, DshRemotePublishDirection, DshRemoteRealtimePayload, DshRemoteRealtimeTransport, DshRemoteRuntimeTarget, DshRemoteTrustedEventMetadata } from './types.js';
2
+ interface SocketEventLike {
3
+ data?: unknown;
4
+ }
5
+ export interface DshRemoteSocketLike {
6
+ readonly readyState: number;
7
+ send(data: string): void;
8
+ close(code?: number, reason?: string): void;
9
+ addEventListener(type: 'open' | 'message' | 'error' | 'close', listener: (event: SocketEventLike) => void): void;
10
+ removeEventListener(type: 'open' | 'message' | 'error' | 'close', listener: (event: SocketEventLike) => void): void;
11
+ }
12
+ export type DshRemoteSocketFactory = (input: {
13
+ profileRef: string;
14
+ clientRef: string;
15
+ signal: AbortSignal;
16
+ }) => DshRemoteSocketLike | Promise<DshRemoteSocketLike>;
17
+ export interface DshRemoteFrameSizingInput {
18
+ target: DshRemoteRuntimeTarget;
19
+ commandId: string;
20
+ direction: DshRemotePublishDirection;
21
+ payload: DshRemoteRealtimePayload;
22
+ senderRole: 'host' | 'controller';
23
+ }
24
+ /**
25
+ * Mirrors jotmo-realtime's login-only channel.publish and channel.event
26
+ * wrappers. Max-width sequence/timestamp values keep the check conservative.
27
+ */
28
+ export declare function dshRemoteFrameByteLengths(input: DshRemoteFrameSizingInput): {
29
+ publish: number;
30
+ event: number;
31
+ };
32
+ export declare function assertDshRemoteFramesFit(input: DshRemoteFrameSizingInput): void;
33
+ /** Exact adapter for jotmo-realtime's login-only DSH Remote contract. */
34
+ export declare class ArkmeRemoteRealtimeTransport implements DshRemoteRealtimeTransport {
35
+ private readonly createSocket;
36
+ private readonly requestTimeoutMillis;
37
+ private socket;
38
+ private connectionGeneration;
39
+ private serviceLeaseGeneration;
40
+ private readonly waiters;
41
+ private readonly channelListeners;
42
+ private readonly disconnectListeners;
43
+ private onMessage;
44
+ private onClose;
45
+ constructor(createSocket: DshRemoteSocketFactory, requestTimeoutMillis?: number);
46
+ connect(input: {
47
+ profileRef: string;
48
+ clientRef: string;
49
+ signal: AbortSignal;
50
+ }): Promise<void>;
51
+ disconnect(): Promise<void>;
52
+ subscribeDisconnect(listener: (error: Error) => void): () => void;
53
+ registerHost(input: {
54
+ runtimeRef: string;
55
+ capabilities: DshRemoteCapability[];
56
+ signal: AbortSignal;
57
+ }): Promise<{
58
+ serviceLeaseGeneration: number;
59
+ }>;
60
+ unregisterHost(signal?: AbortSignal): Promise<void>;
61
+ subscribe(input: {
62
+ target: DshRemoteRuntimeTarget;
63
+ afterSequence?: number;
64
+ onEvent: (payload: DshRemoteRealtimePayload, metadata: DshRemoteTrustedEventMetadata) => void;
65
+ signal: AbortSignal;
66
+ }): Promise<() => void>;
67
+ publish(input: {
68
+ target: DshRemoteRuntimeTarget;
69
+ commandId: string;
70
+ direction: DshRemotePublishDirection;
71
+ payload: DshRemoteRealtimePayload;
72
+ signal: AbortSignal;
73
+ }): Promise<{
74
+ sequence: number;
75
+ }>;
76
+ private request;
77
+ private waitForRequest;
78
+ private waitForType;
79
+ private receive;
80
+ private failConnection;
81
+ private send;
82
+ }
83
+ export {};
84
+ //# sourceMappingURL=realtime-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-transport.d.ts","sourceRoot":"","sources":["../../../src/dsh-remote/realtime-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { ArkmeSecureValueStore } from '../keychain-store.js';
2
+ /**
3
+ * Stores only the local command-ledger encryption key and replay cursor.
4
+ * These values protect local recovery data; they are not remote authority.
5
+ */
6
+ export declare class DshRemoteRuntimeSecretBroker {
7
+ private readonly store;
8
+ private readonly inFlight;
9
+ private readonly cursorWrites;
10
+ constructor(store: ArkmeSecureValueStore);
11
+ ledgerKey(accountId: string): Promise<Buffer>;
12
+ runtimeCursor(input: {
13
+ accountId: string;
14
+ runtimeRef: string;
15
+ channelRef: string;
16
+ }): Promise<number>;
17
+ putRuntimeCursor(input: {
18
+ accountId: string;
19
+ runtimeRef: string;
20
+ channelRef: string;
21
+ lastTransportSequence: number;
22
+ }): Promise<void>;
23
+ private secrets;
24
+ private loadOrCreate;
25
+ private parseCursor;
26
+ private cursorKey;
27
+ }
28
+ //# sourceMappingURL=runtime-secret-broker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-secret-broker.d.ts","sourceRoot":"","sources":["../../../src/dsh-remote/runtime-secret-broker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAgDjE;;;GAGG;AACH,qBAAa,4BAA4B;IAI3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsD;IAC/E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;gBAEnC,KAAK,EAAE,qBAAqB;IAEnD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C,aAAa,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IASpG,gBAAgB,CAAC,KAAK,EAAE;QAC5B,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,MAAM,CAAA;QAClB,UAAU,EAAE,MAAM,CAAA;QAClB,qBAAqB,EAAE,MAAM,CAAA;KAC9B,GAAG,OAAO,CAAC,IAAI,CAAC;YAuBH,OAAO;YAaP,YAAY;IAiB1B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,SAAS;CAUlB"}
@@ -0,0 +1,39 @@
1
+ import type { DshRemoteCapability, DshRemoteRuntimeProjection } from './types.js';
2
+ export interface DshRemoteProjectionInventory {
3
+ workspaceRefs: string[];
4
+ sessions: Array<{
5
+ sessionRef: string;
6
+ workspaceRef: string;
7
+ sourceUpdatedAt: number;
8
+ }>;
9
+ }
10
+ export declare class DshRemoteRuntimeStore {
11
+ private readonly path;
12
+ private state;
13
+ private queue;
14
+ constructor(directory: string);
15
+ activateRuntime(input: {
16
+ accountId: string;
17
+ profileRef: string;
18
+ capabilities: DshRemoteCapability[];
19
+ nowMillis?: number;
20
+ }): Promise<DshRemoteRuntimeProjection>;
21
+ adoptRuntimeRef(accountId: string, profileRef: string, runtimeRef: string, hostGeneration?: number): Promise<DshRemoteRuntimeProjection>;
22
+ bindDesktop(accountId: string, input: {
23
+ desktopRef: string;
24
+ }): Promise<void>;
25
+ renameDesktop(accountId: string, displayName: string): Promise<void>;
26
+ account(accountId: string): Promise<{
27
+ displayName?: string;
28
+ desktopRef?: string;
29
+ runtimes: DshRemoteRuntimeProjection[];
30
+ }>;
31
+ projectionInventory(accountId: string, profileRef: string): Promise<DshRemoteProjectionInventory>;
32
+ saveProjectionInventory(accountId: string, profileRef: string, inventory: DshRemoteProjectionInventory): Promise<void>;
33
+ private read;
34
+ private update;
35
+ private serial;
36
+ private load;
37
+ private persist;
38
+ }
39
+ //# sourceMappingURL=runtime-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-store.d.ts","sourceRoot":"","sources":["../../../src/dsh-remote/runtime-store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAWjF,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,KAAK,CAAC;QACd,UAAU,EAAE,MAAM,CAAA;QAClB,YAAY,EAAE,MAAM,CAAA;QACpB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAC,CAAA;CACH;AAeD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,KAAK,CAAmC;gBAEpC,SAAS,EAAE,MAAM;IAIvB,eAAe,CAAC,KAAK,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,MAAM,CAAA;QAClB,YAAY,EAAE,mBAAmB,EAAE,CAAA;QACnC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAuBjC,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,0BAA0B,CAAC;IA4BhC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5E,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACxC,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,0BAA0B,EAAE,CAAA;KACvC,CAAC;IAWI,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,4BAA4B,CAAC;IAYlC,uBAAuB,CAC3B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,4BAA4B,GACtC,OAAO,CAAC,IAAI,CAAC;YAaF,IAAI;YAMJ,MAAM;YAQN,MAAM;YAMN,IAAI;YAwEJ,OAAO;CAWtB"}
@@ -0,0 +1,10 @@
1
+ export interface DshRemoteOutboundPlaintext {
2
+ value: unknown;
3
+ fragmentIndex?: number;
4
+ commandId?: string;
5
+ }
6
+ /**
7
+ * Splits a large typed payload into independently bounded Realtime events.
8
+ */
9
+ export declare function dshRemoteOutboundPayloads(envelope: unknown, transferSeed: string): DshRemoteOutboundPlaintext[];
10
+ //# sourceMappingURL=transport-fragment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-fragment.d.ts","sourceRoot":"","sources":["../../../src/dsh-remote/transport-fragment.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,MAAM,GACnB,0BAA0B,EAAE,CAoC9B"}
@@ -0,0 +1,164 @@
1
+ export declare const DSH_REMOTE_PROTOCOL: "dsh.remote";
2
+ export declare const DSH_REMOTE_PROTOCOL_MAJOR: 1;
3
+ export declare const DSH_REMOTE_MAX_FRAME_BYTES: number;
4
+ export declare const DSH_REMOTE_MAX_PAGE_ITEMS = 50;
5
+ export declare const DSH_REMOTE_MAX_SNAPSHOT_BYTES: number;
6
+ export declare const DSH_REMOTE_MAX_PAGE_RESULT_BYTES: number;
7
+ export declare const DSH_REMOTE_MAX_TEXT_CODE_POINTS = 20000;
8
+ export type DshRemoteCapability = 'workspace.list' | 'session.list' | 'session.create' | 'session.history' | 'session.prompt' | 'session.prompt.queue' | 'session.prompt.steer' | 'session.cancel' | 'session.events' | 'interaction.question.respond' | 'interaction.approval.respond';
9
+ export type DshRemoteOperation = 'capabilities.get' | 'snapshot.get' | 'workspace.list' | 'session.list' | 'session.create' | 'session.history' | 'session.prompt' | 'session.cancel' | 'interaction.question.respond' | 'interaction.approval.respond';
10
+ export type DshRemoteRequestKind = 'request';
11
+ export type DshRemoteResponseStatus = 'accepted' | 'completed' | 'rejected' | 'duplicate';
12
+ export interface DshRemoteRequest {
13
+ protocol: typeof DSH_REMOTE_PROTOCOL;
14
+ protocol_major: typeof DSH_REMOTE_PROTOCOL_MAJOR;
15
+ kind: DshRemoteRequestKind;
16
+ request_ref: string;
17
+ host_generation: number;
18
+ issued_at: number;
19
+ execute_before: number;
20
+ operation: DshRemoteOperation;
21
+ body: Record<string, unknown>;
22
+ }
23
+ export interface DshRemoteResponse {
24
+ protocol: typeof DSH_REMOTE_PROTOCOL;
25
+ protocol_major: typeof DSH_REMOTE_PROTOCOL_MAJOR;
26
+ kind: 'response';
27
+ request_ref: string;
28
+ status: DshRemoteResponseStatus;
29
+ host_generation: number;
30
+ issued_at: number;
31
+ operation: DshRemoteOperation;
32
+ body: Record<string, unknown>;
33
+ session_seq?: number;
34
+ projection_as_of_seq?: number;
35
+ result?: unknown;
36
+ error?: {
37
+ code: string;
38
+ message: string;
39
+ retryable: boolean;
40
+ trace_ref: string;
41
+ };
42
+ }
43
+ export interface DshRemoteRuntimeProjection {
44
+ runtimeRef: string;
45
+ desktopRef?: string;
46
+ profileRef: string;
47
+ accountId: string;
48
+ hostGeneration: number;
49
+ capabilities: DshRemoteCapability[];
50
+ updatedAtMillis: number;
51
+ }
52
+ export interface DshRemoteStatus {
53
+ contractVersion: 1;
54
+ available: boolean;
55
+ enabled: boolean;
56
+ connected: boolean;
57
+ accountId?: string;
58
+ desktopRef?: string;
59
+ runtimeRef?: string;
60
+ hostGeneration: number;
61
+ capabilities: DshRemoteCapability[];
62
+ unavailableReason?: string;
63
+ revision: number;
64
+ }
65
+ export interface DshRemoteTrustedEventMetadata {
66
+ senderRole: 'host' | 'controller';
67
+ runtimeRef: string;
68
+ acceptedAtMillis: number;
69
+ targetHostLeaseGeneration: number;
70
+ transportSequence?: number;
71
+ }
72
+ export type DshRemoteRealtimePayload = Record<string, unknown>;
73
+ export type DshRemotePublishDirection = 'request' | 'response' | 'snapshot' | 'event';
74
+ export interface DshRemoteRuntimeTarget {
75
+ runtimeRef: string;
76
+ hostProfileRef: string;
77
+ hostClientRef: string;
78
+ hostLeaseGeneration: number;
79
+ }
80
+ export interface DshRemoteControlPlane {
81
+ registerDesktop(input: Record<string, unknown>, signal?: AbortSignal): Promise<Record<string, unknown>>;
82
+ registerRuntime(desktopRef: string, input: Record<string, unknown>, signal?: AbortSignal): Promise<Record<string, unknown>>;
83
+ syncWorkspaces(input: Record<string, unknown>, signal?: AbortSignal): Promise<Record<string, unknown>>;
84
+ syncSessions(input: Record<string, unknown>, signal?: AbortSignal): Promise<Record<string, unknown>>;
85
+ appendSessionEvents(input: Record<string, unknown>, signal?: AbortSignal): Promise<Record<string, unknown>>;
86
+ }
87
+ export interface DshRemoteRealtimeTransport {
88
+ subscribeDisconnect(listener: (error: Error) => void): () => void;
89
+ connect(input: {
90
+ profileRef: string;
91
+ clientRef: string;
92
+ signal: AbortSignal;
93
+ }): Promise<void>;
94
+ disconnect(): Promise<void>;
95
+ registerHost(input: {
96
+ runtimeRef: string;
97
+ capabilities: DshRemoteCapability[];
98
+ signal: AbortSignal;
99
+ }): Promise<{
100
+ serviceLeaseGeneration: number;
101
+ }>;
102
+ unregisterHost(signal?: AbortSignal): Promise<void>;
103
+ subscribe(input: {
104
+ target: DshRemoteRuntimeTarget;
105
+ afterSequence?: number;
106
+ onEvent: (payload: DshRemoteRealtimePayload, metadata: DshRemoteTrustedEventMetadata) => void;
107
+ signal: AbortSignal;
108
+ }): Promise<() => void>;
109
+ publish(input: {
110
+ target: DshRemoteRuntimeTarget;
111
+ commandId: string;
112
+ direction: DshRemotePublishDirection;
113
+ payload: DshRemoteRealtimePayload;
114
+ signal: AbortSignal;
115
+ }): Promise<{
116
+ sequence: number;
117
+ }>;
118
+ }
119
+ export interface DshRemoteWorkspaceView {
120
+ workspaceId: string;
121
+ title: string;
122
+ path: string;
123
+ available: boolean;
124
+ sessionIds: string[];
125
+ }
126
+ export interface DshRemoteSessionSummary {
127
+ sessionId: string;
128
+ workspaceId: string;
129
+ title?: string;
130
+ updatedAt: number;
131
+ running: boolean;
132
+ blank: boolean;
133
+ projectionAsOfSeq?: number;
134
+ }
135
+ export interface DshRemoteSnapshot {
136
+ projectionAsOfMillis: number;
137
+ workspaces: DshRemoteWorkspaceView[];
138
+ sessions: DshRemoteSessionSummary[];
139
+ pendingInteractions: DshRemotePendingInteraction[];
140
+ nextCursor?: string;
141
+ }
142
+ export type DshRemotePendingInteraction = {
143
+ kind: 'question';
144
+ interactionRpcRef: string;
145
+ sessionId: string;
146
+ questions: unknown[];
147
+ } | {
148
+ kind: 'approval';
149
+ interactionRpcRef: string;
150
+ sessionId: string;
151
+ approvalId: string;
152
+ toolName: string;
153
+ reason?: string;
154
+ canAllowOnce: boolean;
155
+ operationSummary?: string;
156
+ };
157
+ export interface DshRemoteHostFacade {
158
+ start(): Promise<void>;
159
+ stop(): Promise<void>;
160
+ getStatus(): DshRemoteStatus;
161
+ renameDesktop(displayName: string): Promise<DshRemoteStatus>;
162
+ subscribe(listener: (status: DshRemoteStatus) => void): () => void;
163
+ }
164
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/dsh-remote/types.ts"],"names":[],"mappings":"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"}
@@ -9,16 +9,26 @@ export interface DshWebBootEntry {
9
9
  immediately?: boolean;
10
10
  external?: string[];
11
11
  }
12
+ export interface DshWebBootBatch {
13
+ phase: 'bootstrap' | 'application';
14
+ url: string;
15
+ rev: string;
16
+ entries: string[];
17
+ }
12
18
  export interface DshWebBootGraph {
13
19
  rev: string;
14
20
  entries: DshWebBootEntry[];
21
+ /** Present in the structured DSH boot protocol; legacy graphs omit it. */
22
+ batches?: DshWebBootBatch[];
15
23
  }
16
24
  interface HarnessEmbedRouteOptions {
17
25
  getGraph(): DshWebBootGraph;
18
26
  installedPackageNames(): readonly string[];
19
- readRootHtml(): Promise<string>;
27
+ readRootHtml(request: IncomingMessage): Promise<string>;
20
28
  onError?(error: unknown): void;
21
29
  }
30
+ /** Forward only the same-origin browser session needed by authenticated DSH roots. */
31
+ export declare function dshRootDocumentHeaders(request: IncomingMessage): Record<string, string>;
22
32
  /**
23
33
  * Build the iframe-only DSH graph without any Arkme-managed extension clients.
24
34
  * Host halves stay process-owned and untouched; only this document's browser
@@ -1 +1 @@
1
- {"version":3,"file":"harness-embed-route.d.ts","sourceRoot":"","sources":["../../src/harness-embed-route.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhE,eAAO,MAAM,yBAAyB,yBAAyB,CAAA;AAC/D,eAAO,MAAM,2BAA2B,gCAAgC,CAAA;AAOxE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,eAAe,EAAE,CAAA;CAC3B;AAED,UAAU,wBAAwB;IAChC,QAAQ,IAAI,eAAe,CAAA;IAC3B,qBAAqB,IAAI,SAAS,MAAM,EAAE,CAAA;IAC1C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/B,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;CAC/B;AA0DD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,qBAAqB,EAAE,SAAS,MAAM,EAAE,GACvC,eAAe,CAoBjB;AAED,6EAA6E;AAC7E,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,eAAe,GAC9B,MAAM,CAOR;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,wBAAwB,IAChE,SAAS,eAAe,EAAE,UAAU,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC,CA+BjF"}
1
+ {"version":3,"file":"harness-embed-route.d.ts","sourceRoot":"","sources":["../../src/harness-embed-route.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhE,eAAO,MAAM,yBAAyB,yBAAyB,CAAA;AAC/D,eAAO,MAAM,2BAA2B,gCAAgC,CAAA;AAgBxE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,WAAW,GAAG,aAAa,CAAA;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;CAC5B;AAED,UAAU,wBAAwB;IAChC,QAAQ,IAAI,eAAe,CAAA;IAC3B,qBAAqB,IAAI,SAAS,MAAM,EAAE,CAAA;IAC1C,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;CAC/B;AAED,sFAAsF;AACtF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIvF;AAyGD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,qBAAqB,EAAE,SAAS,MAAM,EAAE,GACvC,eAAe,CAuBjB;AAED,6EAA6E;AAC7E,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,eAAe,GAC9B,MAAM,CAqBR;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,wBAAwB,IAChE,SAAS,eAAe,EAAE,UAAU,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC,CA+BjF"}
@@ -5,6 +5,7 @@ import type { ArkmePluginRequest } from './types.js';
5
5
  import type { ArkmeExtensionManager } from './extensions/manager.js';
6
6
  import type { ArkmeExtensionInstallTasks } from './extensions/install-tasks.js';
7
7
  import type { ArkmeOwnedExtensionInventory } from './extensions/owned-inventory.js';
8
+ import type { DshRemoteHostFacade } from './dsh-remote/types.js';
8
9
  export interface ArkmeHostApiOptions {
9
10
  expectedPort: number;
10
11
  allowNonLoopback: boolean;
@@ -12,7 +13,8 @@ export interface ArkmeHostApiOptions {
12
13
  extensionManager?: () => ArkmeExtensionManager | undefined;
13
14
  extensionInstallTasks?: () => ArkmeExtensionInstallTasks | undefined;
14
15
  ownedExtensionInventory?: () => ArkmeOwnedExtensionInventory | undefined;
16
+ remoteHost?: () => DshRemoteHostFacade | undefined;
15
17
  }
16
18
  export declare function createArkmeHostApi(service: ArkmeService, options: ArkmeHostApiOptions): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
17
- export declare function dispatchArkmeHostOperation(service: ArkmeService, operation: ArkmePluginRequest['operation'], params: Record<string, unknown>, updateManager?: Pick<ArkmePluginUpdateManager, 'status' | 'check' | 'acknowledge' | 'install' | 'installStatus'>, extensionManager?: ArkmeExtensionManager, extensionInstallTasks?: ArkmeExtensionInstallTasks, ownedExtensionInventory?: ArkmeOwnedExtensionInventory, requestSignal?: AbortSignal): Promise<unknown>;
19
+ export declare function dispatchArkmeHostOperation(service: ArkmeService, operation: ArkmePluginRequest['operation'], params: Record<string, unknown>, updateManager?: Pick<ArkmePluginUpdateManager, 'status' | 'check' | 'acknowledge' | 'install' | 'installStatus'>, extensionManager?: ArkmeExtensionManager, extensionInstallTasks?: ArkmeExtensionInstallTasks, ownedExtensionInventory?: ArkmeOwnedExtensionInventory, requestSignal?: AbortSignal, remoteHost?: DshRemoteHostFacade): Promise<unknown>;
18
20
  //# sourceMappingURL=host-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"host-api.d.ts","sourceRoot":"","sources":["../../src/host-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAoB,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAA0B,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAErF,OAAO,KAAK,EAKV,kBAAkB,EAGnB,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAA;AAggBnF,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,IAAI,CAClB,wBAAwB,EACxB,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,CACjE,CAAA;IACD,gBAAgB,CAAC,EAAE,MAAM,qBAAqB,GAAG,SAAS,CAAA;IAC1D,qBAAqB,CAAC,EAAE,MAAM,0BAA0B,GAAG,SAAS,CAAA;IACpE,uBAAuB,CAAC,EAAE,MAAM,4BAA4B,GAAG,SAAS,CAAA;CACzE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,IACtE,KAAK,eAAe,EAAE,KAAK,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC,CA4DxE;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,aAAa,CAAC,EAAE,IAAI,CAClB,wBAAwB,EACxB,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,CACjE,EACD,gBAAgB,CAAC,EAAE,qBAAqB,EACxC,qBAAqB,CAAC,EAAE,0BAA0B,EAClD,uBAAuB,CAAC,EAAE,4BAA4B,EACtD,aAAa,CAAC,EAAE,WAAW,GAC1B,OAAO,CAAC,OAAO,CAAC,CAu4BlB"}
1
+ {"version":3,"file":"host-api.d.ts","sourceRoot":"","sources":["../../src/host-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAoB,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAA0B,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAErF,OAAO,KAAK,EAKV,kBAAkB,EAGnB,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAA;AAMnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AA6fhE,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,IAAI,CAClB,wBAAwB,EACxB,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,CACjE,CAAA;IACD,gBAAgB,CAAC,EAAE,MAAM,qBAAqB,GAAG,SAAS,CAAA;IAC1D,qBAAqB,CAAC,EAAE,MAAM,0BAA0B,GAAG,SAAS,CAAA;IACpE,uBAAuB,CAAC,EAAE,MAAM,4BAA4B,GAAG,SAAS,CAAA;IACxE,UAAU,CAAC,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAA;CACnD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,IACtE,KAAK,eAAe,EAAE,KAAK,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC,CAkExE;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,aAAa,CAAC,EAAE,IAAI,CAClB,wBAAwB,EACxB,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,CACjE,EACD,gBAAgB,CAAC,EAAE,qBAAqB,EACxC,qBAAqB,CAAC,EAAE,0BAA0B,EAClD,uBAAuB,CAAC,EAAE,4BAA4B,EACtD,aAAa,CAAC,EAAE,WAAW,EAC3B,UAAU,CAAC,EAAE,mBAAmB,GAC/B,OAAO,CAAC,OAAO,CAAC,CAy5BlB"}
@@ -4,6 +4,8 @@ export { createOpenClawCliAdapter } from './openclaw/index.js';
4
4
  import { ArkmeService } from './arkme-service.js';
5
5
  import type { ArkmeToolProfile } from './tools/index.js';
6
6
  import { type ArkmeEnvironment } from './types.js';
7
+ import { type DshPublicApiProxyLike } from './dsh-remote/api-proxy-adapter.js';
8
+ import { type DshRemoteSocketLike } from './dsh-remote/realtime-transport.js';
7
9
  export interface Config {
8
10
  environment: ArkmeEnvironment;
9
11
  authBaseUrl: string;
@@ -47,6 +49,8 @@ export interface Config {
47
49
  updateAllowLocalInstall: boolean;
48
50
  openclawProfile: string;
49
51
  shareWebsite: string;
52
+ dshRemoteFeatureEnabled: boolean;
53
+ dshRemoteRealtimeBaseUrl: string;
50
54
  }
51
55
  export declare const ARKME_PRODUCTION_TRUSTED_SIGNING_KEYS = "{\"prod-ed25519-20260819-1\":\"m1MKKU16hyu1b1KKIXMG+zKEr/GmhmvyUEreJzthTxs=\"}";
52
56
  export declare const Config: Schema<Config>;
@@ -60,8 +64,18 @@ declare module '@deepseek-ai/cordis' {
60
64
  interface Context {
61
65
  /** Headless Arkme data provider for trusted Host-side consumer plugins. */
62
66
  arkmeData: ArkmeService;
67
+ /** Public DSH gateway detected at runtime; only the remote allowlist is consumed. */
68
+ apiProxy: DshPublicApiProxyLike;
69
+ /** Optional Host-owned authenticated Realtime socket carrier. */
70
+ arkmeRemoteSocketFactory: ArkmeRemoteAuthenticatedSocketFactory;
63
71
  }
64
72
  }
73
+ export type ArkmeRemoteAuthenticatedSocketFactory = (input: {
74
+ profileRef: string;
75
+ clientRef: string;
76
+ accessToken: string;
77
+ signal: AbortSignal;
78
+ }) => DshRemoteSocketLike | Promise<DshRemoteSocketLike>;
65
79
  export declare function apply(ctx: Context, config: Config): void;
66
80
  export declare function resolveArkmeConfig(ctx: Context, config: Config): Config;
67
81
  export type { ArkmeAiVideoJob, ArkmeAiVideoListItem, ArkmeAiVideoListResult, ArkmeAiVideoJobStatus, ArkmeAiVideoPreflightResult, ArkmeAiVideoSegmentSelector, ArkmeAiVideoTranscriptSource, ArkmeAuthSnapshot, ArkmeCachedQueryResult, ArkmeCachedSnapshot, ArkmeChatRealtimeState, ArkmeConversationWriteResult, ArkmeCreateTextResult, ArkmeDirectTextSendResult, ArkmeGroupAvatarFallback, ArkmeGroupAvatarPresentation, ArkmeGroupAvatarSlot, ArkmeIdAvailabilityReason, ArkmeIdAvailabilitySnapshot, ArkmeIdMutationResult, ArkmePendingWrite, ArkmeRelatedRecordingEligibility, ArkmeRelatedRecordingItem, ArkmeRelatedRecordingMonthBucket, ArkmeRelatedRecordingPage, ArkmeRelatedRecordingPageOptions, ArkmeRelatedRecordingPageState, ArkmeRelatedRecordingParticipant, ArkmeRelatedRecordingSpeaker, ArkmeContentBlock, ArkmeContentKind, ArkmeFavoriteSticker, ArkmeFavoriteStickerList, ArkmeFavoriteStickerAddInput, ArkmeFavoriteStickerManageAction, ArkmeRichSendInput, ArkmeImageMediaType, ArkmeImagePayload, ArkmeFileAssetDisplayItem, ArkmeRecordSearchResult, ArkmeRecordingSearchItem, ArkmeRecordingSearchResult, ArkmeSearchQueryGuard, ArkmeSearchRecordItem, ArkmeSearchSceneKind, ArkmeSearchSourceAggregate, ArkmeSourceDirectory, ArkmeSourceItem, ArkmeSourceKind, ArkmeSourceList, ArkmeSourceReadResult, ArkmeSourceSendResult, ArkmeTimelineCursor, ArkmeTimelineItem, ArkmeForwardRecordsPreview, ArkmeForwardRecordPreviewItem, ArkmeForwardTranscriptSegment, ArkmeTimelinePage, ArkmeUploadedAsset, ArkmeRecordCursor, ArkmeSelfRecordItem, ArkmeSelfRecordList, ArkmeSelfSummary, ArkmeCallDetail, ArkmeCallHistoryItem, ArkmeCallHistoryOptions, ArkmeCallHistoryPage, ArkmeCallMediaType, ArkmeCallParticipant, ArkmeCallRecentContact, ArkmeCallSummaryRetryResult, ArkmeCallSummaryStatus, ArkmeCallTranscriptSegment, ArkmeProviderCapabilities, ArkmeProviderState, ArkmePluginUpdateAvailability, ArkmePluginUpdateLevel, ArkmePluginUpdateNotice, ArkmePluginUpdateStatus, ArkmeUserProfile, ArkmeUserProfileSnapshot, ArkmeWorldPublishFileAsset, ArkmeWorldPublishFileAssetsInput, ArkmeWorldPublishResult, ArkmeWorldPublishTextInput, ArkmeWorldFeedItem, ArkmeWorldFeedPage, ArkmeWorldVoiceprintAvailability, ArkmeWorldVoiceprintAvailabilityItem, ArkmeWorldVoiceprintPlaybackChunk, ArkmeWorldRecordItem, ArkmeWorldRecordList, ArkmeWorldVisibility, ArkmeWechatCallFilter, ArkmeWechatCommonGroupFriend, ArkmeWechatCommonGroupPage, ArkmeWechatConversation, ArkmeWechatConversationDetail, ArkmeWechatConversationPage, ArkmeWechatGroupMember, ArkmeWechatGroupMemberPage, ArkmeWechatLocation, ArkmeWechatLocationPage, ArkmeWechatMessage, ArkmeWechatMessageFilter, ArkmeWechatMessagePage, ArkmeWechatMoneyFlow, ArkmeWechatMoneyFlowPage, ArkmeWechatPhone, ArkmeWechatPhoneEvidence, ArkmeWechatPhonePage, } from './types.js';