p-spore 0.1.0
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/README.md +97 -0
- package/dist/agents/agent-manager.d.ts +57 -0
- package/dist/agents/agent-manager.d.ts.map +1 -0
- package/dist/agents/agent-manager.js +559 -0
- package/dist/agents/agent-manager.js.map +1 -0
- package/dist/agents/agent-tools.d.ts +4 -0
- package/dist/agents/agent-tools.d.ts.map +1 -0
- package/dist/agents/agent-tools.js +111 -0
- package/dist/agents/agent-tools.js.map +1 -0
- package/dist/agents/types.d.ts +52 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/application/agent-application.d.ts +89 -0
- package/dist/application/agent-application.d.ts.map +1 -0
- package/dist/application/agent-application.js +542 -0
- package/dist/application/agent-application.js.map +1 -0
- package/dist/automation/automation-tools.d.ts +4 -0
- package/dist/automation/automation-tools.d.ts.map +1 -0
- package/dist/automation/automation-tools.js +35 -0
- package/dist/automation/automation-tools.js.map +1 -0
- package/dist/automation/cron-adapter.d.ts +11 -0
- package/dist/automation/cron-adapter.d.ts.map +1 -0
- package/dist/automation/cron-adapter.js +48 -0
- package/dist/automation/cron-adapter.js.map +1 -0
- package/dist/automation/daemon-run-executor.d.ts +18 -0
- package/dist/automation/daemon-run-executor.d.ts.map +1 -0
- package/dist/automation/daemon-run-executor.js +69 -0
- package/dist/automation/daemon-run-executor.js.map +1 -0
- package/dist/automation/job-store.d.ts +12 -0
- package/dist/automation/job-store.d.ts.map +1 -0
- package/dist/automation/job-store.js +185 -0
- package/dist/automation/job-store.js.map +1 -0
- package/dist/automation/run-ledger.d.ts +25 -0
- package/dist/automation/run-ledger.d.ts.map +1 -0
- package/dist/automation/run-ledger.js +148 -0
- package/dist/automation/run-ledger.js.map +1 -0
- package/dist/automation/scheduler.d.ts +36 -0
- package/dist/automation/scheduler.d.ts.map +1 -0
- package/dist/automation/scheduler.js +300 -0
- package/dist/automation/scheduler.js.map +1 -0
- package/dist/automation/types.d.ts +81 -0
- package/dist/automation/types.d.ts.map +1 -0
- package/dist/automation/types.js +2 -0
- package/dist/automation/types.js.map +1 -0
- package/dist/cli/main.d.ts +4 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +768 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/config/config.d.ts +52 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +345 -0
- package/dist/config/config.js.map +1 -0
- package/dist/daemon/daemon.d.ts +30 -0
- package/dist/daemon/daemon.d.ts.map +1 -0
- package/dist/daemon/daemon.js +437 -0
- package/dist/daemon/daemon.js.map +1 -0
- package/dist/daemon/supervisor.d.ts +18 -0
- package/dist/daemon/supervisor.d.ts.map +1 -0
- package/dist/daemon/supervisor.js +37 -0
- package/dist/daemon/supervisor.js.map +1 -0
- package/dist/desktop/daemon-bridge.d.ts +32 -0
- package/dist/desktop/daemon-bridge.d.ts.map +1 -0
- package/dist/desktop/daemon-bridge.js +204 -0
- package/dist/desktop/daemon-bridge.js.map +1 -0
- package/dist/desktop/daemon-supervisor.d.ts +2 -0
- package/dist/desktop/daemon-supervisor.d.ts.map +1 -0
- package/dist/desktop/daemon-supervisor.js +2 -0
- package/dist/desktop/daemon-supervisor.js.map +1 -0
- package/dist/desktop/ipc-contract.d.ts +153 -0
- package/dist/desktop/ipc-contract.d.ts.map +1 -0
- package/dist/desktop/ipc-contract.js +219 -0
- package/dist/desktop/ipc-contract.js.map +1 -0
- package/dist/desktop/main.d.ts +2 -0
- package/dist/desktop/main.d.ts.map +1 -0
- package/dist/desktop/main.js +594 -0
- package/dist/desktop/main.js.map +1 -0
- package/dist/desktop/preload.cjs +32 -0
- package/dist/desktop/renderer/index.html +284 -0
- package/dist/desktop/renderer/renderer.d.ts +2 -0
- package/dist/desktop/renderer/renderer.d.ts.map +1 -0
- package/dist/desktop/renderer/renderer.js +895 -0
- package/dist/desktop/renderer/renderer.js.map +1 -0
- package/dist/desktop/renderer/store.d.ts +33 -0
- package/dist/desktop/renderer/store.d.ts.map +1 -0
- package/dist/desktop/renderer/store.js +144 -0
- package/dist/desktop/renderer/store.js.map +1 -0
- package/dist/desktop/renderer/styles.css +540 -0
- package/dist/desktop/security.d.ts +5 -0
- package/dist/desktop/security.d.ts.map +1 -0
- package/dist/desktop/security.js +49 -0
- package/dist/desktop/security.js.map +1 -0
- package/dist/desktop/smoke-fixture.d.ts +3 -0
- package/dist/desktop/smoke-fixture.d.ts.map +1 -0
- package/dist/desktop/smoke-fixture.js +223 -0
- package/dist/desktop/smoke-fixture.js.map +1 -0
- package/dist/desktop/validation.d.ts +8 -0
- package/dist/desktop/validation.d.ts.map +1 -0
- package/dist/desktop/validation.js +341 -0
- package/dist/desktop/validation.js.map +1 -0
- package/dist/domain/runtime.d.ts +116 -0
- package/dist/domain/runtime.d.ts.map +1 -0
- package/dist/domain/runtime.js +2 -0
- package/dist/domain/runtime.js.map +1 -0
- package/dist/gateway/local-gateway.d.ts +23 -0
- package/dist/gateway/local-gateway.d.ts.map +1 -0
- package/dist/gateway/local-gateway.js +265 -0
- package/dist/gateway/local-gateway.js.map +1 -0
- package/dist/kernel/loop.d.ts +10 -0
- package/dist/kernel/loop.d.ts.map +1 -0
- package/dist/kernel/loop.js +41 -0
- package/dist/kernel/loop.js.map +1 -0
- package/dist/kernel/reducer.d.ts +3 -0
- package/dist/kernel/reducer.d.ts.map +1 -0
- package/dist/kernel/reducer.js +102 -0
- package/dist/kernel/reducer.js.map +1 -0
- package/dist/kernel/state.d.ts +93 -0
- package/dist/kernel/state.d.ts.map +1 -0
- package/dist/kernel/state.js +15 -0
- package/dist/kernel/state.js.map +1 -0
- package/dist/mcp/mcp-manager.d.ts +55 -0
- package/dist/mcp/mcp-manager.d.ts.map +1 -0
- package/dist/mcp/mcp-manager.js +591 -0
- package/dist/mcp/mcp-manager.js.map +1 -0
- package/dist/mcp/mcp-tools.d.ts +4 -0
- package/dist/mcp/mcp-tools.d.ts.map +1 -0
- package/dist/mcp/mcp-tools.js +53 -0
- package/dist/mcp/mcp-tools.js.map +1 -0
- package/dist/mcp/types.d.ts +73 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/memory/bm25.d.ts +14 -0
- package/dist/memory/bm25.d.ts.map +1 -0
- package/dist/memory/bm25.js +40 -0
- package/dist/memory/bm25.js.map +1 -0
- package/dist/memory/context-loader.d.ts +26 -0
- package/dist/memory/context-loader.d.ts.map +1 -0
- package/dist/memory/context-loader.js +97 -0
- package/dist/memory/context-loader.js.map +1 -0
- package/dist/memory/memory-service.d.ts +30 -0
- package/dist/memory/memory-service.d.ts.map +1 -0
- package/dist/memory/memory-service.js +133 -0
- package/dist/memory/memory-service.js.map +1 -0
- package/dist/memory/memory-tools.d.ts +4 -0
- package/dist/memory/memory-tools.d.ts.map +1 -0
- package/dist/memory/memory-tools.js +49 -0
- package/dist/memory/memory-tools.js.map +1 -0
- package/dist/memory/search-service.d.ts +38 -0
- package/dist/memory/search-service.d.ts.map +1 -0
- package/dist/memory/search-service.js +463 -0
- package/dist/memory/search-service.js.map +1 -0
- package/dist/memory/tokenizer.d.ts +5 -0
- package/dist/memory/tokenizer.d.ts.map +1 -0
- package/dist/memory/tokenizer.js +42 -0
- package/dist/memory/tokenizer.js.map +1 -0
- package/dist/notifications/notification-service.d.ts +47 -0
- package/dist/notifications/notification-service.d.ts.map +1 -0
- package/dist/notifications/notification-service.js +163 -0
- package/dist/notifications/notification-service.js.map +1 -0
- package/dist/notifications/notification-tools.d.ts +4 -0
- package/dist/notifications/notification-tools.d.ts.map +1 -0
- package/dist/notifications/notification-tools.js +31 -0
- package/dist/notifications/notification-tools.js.map +1 -0
- package/dist/pi/pi-runtime-adapter.d.ts +38 -0
- package/dist/pi/pi-runtime-adapter.d.ts.map +1 -0
- package/dist/pi/pi-runtime-adapter.js +483 -0
- package/dist/pi/pi-runtime-adapter.js.map +1 -0
- package/dist/plugins/extension-manager.d.ts +32 -0
- package/dist/plugins/extension-manager.d.ts.map +1 -0
- package/dist/plugins/extension-manager.js +562 -0
- package/dist/plugins/extension-manager.js.map +1 -0
- package/dist/plugins/resource-inspector.d.ts +18 -0
- package/dist/plugins/resource-inspector.d.ts.map +1 -0
- package/dist/plugins/resource-inspector.js +386 -0
- package/dist/plugins/resource-inspector.js.map +1 -0
- package/dist/plugins/types.d.ts +96 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/policy/approval-service.d.ts +68 -0
- package/dist/policy/approval-service.d.ts.map +1 -0
- package/dist/policy/approval-service.js +349 -0
- package/dist/policy/approval-service.js.map +1 -0
- package/dist/policy/policy.d.ts +26 -0
- package/dist/policy/policy.d.ts.map +1 -0
- package/dist/policy/policy.js +228 -0
- package/dist/policy/policy.js.map +1 -0
- package/dist/protocol/client.d.ts +25 -0
- package/dist/protocol/client.d.ts.map +1 -0
- package/dist/protocol/client.js +188 -0
- package/dist/protocol/client.js.map +1 -0
- package/dist/protocol/errors.d.ts +5 -0
- package/dist/protocol/errors.d.ts.map +1 -0
- package/dist/protocol/errors.js +9 -0
- package/dist/protocol/errors.js.map +1 -0
- package/dist/protocol/schema.d.ts +71 -0
- package/dist/protocol/schema.d.ts.map +1 -0
- package/dist/protocol/schema.js +155 -0
- package/dist/protocol/schema.js.map +1 -0
- package/dist/settings/llm-settings-service.d.ts +9 -0
- package/dist/settings/llm-settings-service.d.ts.map +1 -0
- package/dist/settings/llm-settings-service.js +199 -0
- package/dist/settings/llm-settings-service.js.map +1 -0
- package/dist/settings/llm-settings.d.ts +29 -0
- package/dist/settings/llm-settings.d.ts.map +1 -0
- package/dist/settings/llm-settings.js +113 -0
- package/dist/settings/llm-settings.js.map +1 -0
- package/dist/shell/shell-service.d.ts +88 -0
- package/dist/shell/shell-service.d.ts.map +1 -0
- package/dist/shell/shell-service.js +459 -0
- package/dist/shell/shell-service.js.map +1 -0
- package/dist/storage/atomic.d.ts +4 -0
- package/dist/storage/atomic.d.ts.map +1 -0
- package/dist/storage/atomic.js +49 -0
- package/dist/storage/atomic.js.map +1 -0
- package/dist/storage/daemon-lock.d.ts +17 -0
- package/dist/storage/daemon-lock.d.ts.map +1 -0
- package/dist/storage/daemon-lock.js +97 -0
- package/dist/storage/daemon-lock.js.map +1 -0
- package/dist/storage/home.d.ts +29 -0
- package/dist/storage/home.d.ts.map +1 -0
- package/dist/storage/home.js +108 -0
- package/dist/storage/home.js.map +1 -0
- package/dist/storage/jsonl.d.ts +2 -0
- package/dist/storage/jsonl.d.ts.map +1 -0
- package/dist/storage/jsonl.js +45 -0
- package/dist/storage/jsonl.js.map +1 -0
- package/dist/tools/core-tools.d.ts +16 -0
- package/dist/tools/core-tools.d.ts.map +1 -0
- package/dist/tools/core-tools.js +283 -0
- package/dist/tools/core-tools.js.map +1 -0
- package/dist/ui/shared/presentation.d.ts +46 -0
- package/dist/ui/shared/presentation.d.ts.map +1 -0
- package/dist/ui/shared/presentation.js +81 -0
- package/dist/ui/shared/presentation.js.map +1 -0
- package/dist/ui/shared/protocol-state.d.ts +30 -0
- package/dist/ui/shared/protocol-state.d.ts.map +1 -0
- package/dist/ui/shared/protocol-state.js +165 -0
- package/dist/ui/shared/protocol-state.js.map +1 -0
- package/dist/ui/tui/commands.d.ts +2 -0
- package/dist/ui/tui/commands.d.ts.map +1 -0
- package/dist/ui/tui/commands.js +33 -0
- package/dist/ui/tui/commands.js.map +1 -0
- package/dist/ui/tui/store.d.ts +32 -0
- package/dist/ui/tui/store.d.ts.map +1 -0
- package/dist/ui/tui/store.js +62 -0
- package/dist/ui/tui/store.js.map +1 -0
- package/dist/ui/tui/tui-app.d.ts +21 -0
- package/dist/ui/tui/tui-app.d.ts.map +1 -0
- package/dist/ui/tui/tui-app.js +643 -0
- package/dist/ui/tui/tui-app.js.map +1 -0
- package/dist/ui/tui/view.d.ts +29 -0
- package/dist/ui/tui/view.d.ts.map +1 -0
- package/dist/ui/tui/view.js +255 -0
- package/dist/ui/tui/view.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { ProtocolClient } from "../protocol/client.js";
|
|
4
|
+
import { decodeDesktopCommand, toProtocolInvocation, } from "./ipc-contract.js";
|
|
5
|
+
import { validateEventEnvelope, validateKernelState, validateProtocolResult, validateServerHello } from "./validation.js";
|
|
6
|
+
export class DaemonBridge {
|
|
7
|
+
#versions;
|
|
8
|
+
#reconnectDelay;
|
|
9
|
+
#clientFactory;
|
|
10
|
+
#stagingRoot;
|
|
11
|
+
#listeners = new Set();
|
|
12
|
+
#connection = { phase: "disconnected", attempt: 0, message: "Daemon connection has not started" };
|
|
13
|
+
#snapshot = null;
|
|
14
|
+
#cursors = {};
|
|
15
|
+
#client;
|
|
16
|
+
#running = false;
|
|
17
|
+
#loop;
|
|
18
|
+
#wakeDisconnect;
|
|
19
|
+
#pendingDelta;
|
|
20
|
+
#deltaTimer;
|
|
21
|
+
constructor(options) {
|
|
22
|
+
this.#versions = structuredClone(options.versions);
|
|
23
|
+
this.#stagingRoot = options.stagingRoot;
|
|
24
|
+
this.#reconnectDelay = options.reconnectDelay ?? ((attempt) => Math.min(5_000, 250 * 2 ** Math.min(attempt - 1, 5)));
|
|
25
|
+
const clientId = options.clientId ?? `electron-${process.pid}-${randomUUID()}`;
|
|
26
|
+
this.#clientFactory =
|
|
27
|
+
options.clientFactory ??
|
|
28
|
+
((cursors) => new ProtocolClient({
|
|
29
|
+
socketPath: options.socketPath,
|
|
30
|
+
clientId,
|
|
31
|
+
capabilities: ["desktop.v1", "delta.coalescing"],
|
|
32
|
+
cursors,
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
start() {
|
|
36
|
+
if (this.#running)
|
|
37
|
+
return;
|
|
38
|
+
this.#running = true;
|
|
39
|
+
this.#loop = this.#connectLoop();
|
|
40
|
+
}
|
|
41
|
+
async stop() {
|
|
42
|
+
if (!this.#running && !this.#loop)
|
|
43
|
+
return;
|
|
44
|
+
this.#running = false;
|
|
45
|
+
this.#flushDelta();
|
|
46
|
+
this.#wakeDisconnect?.();
|
|
47
|
+
await this.#client?.close().catch(() => undefined);
|
|
48
|
+
await this.#loop;
|
|
49
|
+
this.#loop = undefined;
|
|
50
|
+
this.#setConnection({ phase: "disconnected", attempt: 0, message: "Desktop bridge stopped" });
|
|
51
|
+
}
|
|
52
|
+
bootstrap() {
|
|
53
|
+
return {
|
|
54
|
+
version: 1,
|
|
55
|
+
connection: structuredClone(this.#connection),
|
|
56
|
+
snapshot: this.#snapshot ? structuredClone(this.#snapshot) : null,
|
|
57
|
+
cursors: { ...this.#cursors },
|
|
58
|
+
versions: structuredClone(this.#versions),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
subscribe(listener) {
|
|
62
|
+
this.#listeners.add(listener);
|
|
63
|
+
return () => this.#listeners.delete(listener);
|
|
64
|
+
}
|
|
65
|
+
async dispatch(value) {
|
|
66
|
+
const command = decodeDesktopCommand(value);
|
|
67
|
+
const client = this.#client;
|
|
68
|
+
if (!client || this.#connection.phase !== "connected")
|
|
69
|
+
throw new Error("pSpore daemon is not connected");
|
|
70
|
+
const invocation = toProtocolInvocation(command, {
|
|
71
|
+
stagingPath: (name) => join(this.#stagingRoot, name),
|
|
72
|
+
});
|
|
73
|
+
const result = await client.command(invocation.type, invocation.payload, {
|
|
74
|
+
...(invocation.sessionId === undefined ? {} : { sessionId: invocation.sessionId }),
|
|
75
|
+
});
|
|
76
|
+
return validateProtocolResult(result);
|
|
77
|
+
}
|
|
78
|
+
async #connectLoop() {
|
|
79
|
+
let attempt = 0;
|
|
80
|
+
while (this.#running) {
|
|
81
|
+
attempt += 1;
|
|
82
|
+
this.#setConnection({ phase: "connecting", attempt, message: attempt === 1 ? "Connecting to daemon…" : `Reconnect attempt ${attempt}` });
|
|
83
|
+
const client = this.#clientFactory({ ...this.#cursors });
|
|
84
|
+
this.#client = client;
|
|
85
|
+
const bufferedEvents = [];
|
|
86
|
+
let helloApplied = false;
|
|
87
|
+
let disconnectError;
|
|
88
|
+
let resolveDisconnect;
|
|
89
|
+
const disconnected = new Promise((resolve) => {
|
|
90
|
+
resolveDisconnect = resolve;
|
|
91
|
+
});
|
|
92
|
+
this.#wakeDisconnect = resolveDisconnect;
|
|
93
|
+
const unsubscribeEvents = client.subscribe((event) => {
|
|
94
|
+
if (!helloApplied) {
|
|
95
|
+
if (bufferedEvents.length >= 2_048)
|
|
96
|
+
void client.close();
|
|
97
|
+
else
|
|
98
|
+
bufferedEvents.push(event);
|
|
99
|
+
}
|
|
100
|
+
else
|
|
101
|
+
this.#handleEvent(client, event);
|
|
102
|
+
});
|
|
103
|
+
const unsubscribeConnection = client.subscribeConnection((connected, error) => {
|
|
104
|
+
if (!connected) {
|
|
105
|
+
disconnectError = error;
|
|
106
|
+
resolveDisconnect();
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
try {
|
|
110
|
+
const hello = validateServerHello(await client.connect());
|
|
111
|
+
this.#snapshot = validateKernelState(hello.snapshot);
|
|
112
|
+
this.#cursors = { ...this.#cursors, [hello.streamId]: hello.latestSeq };
|
|
113
|
+
helloApplied = true;
|
|
114
|
+
for (const event of bufferedEvents)
|
|
115
|
+
this.#handleEvent(client, event);
|
|
116
|
+
bufferedEvents.length = 0;
|
|
117
|
+
attempt = 0;
|
|
118
|
+
this.#setConnection({ phase: "connected", attempt: 0, instanceId: hello.instanceId });
|
|
119
|
+
this.#emit({ version: 1, kind: "snapshot", snapshot: this.#snapshot, cursors: { ...this.#cursors } });
|
|
120
|
+
await disconnected;
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
disconnectError = toError(error);
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
this.#flushDelta();
|
|
127
|
+
unsubscribeEvents();
|
|
128
|
+
unsubscribeConnection();
|
|
129
|
+
this.#wakeDisconnect = undefined;
|
|
130
|
+
if (this.#client === client)
|
|
131
|
+
this.#client = undefined;
|
|
132
|
+
await client.close().catch(() => undefined);
|
|
133
|
+
}
|
|
134
|
+
if (!this.#running)
|
|
135
|
+
break;
|
|
136
|
+
const message = disconnectError?.message ?? "Daemon connection closed";
|
|
137
|
+
this.#setConnection({ phase: "disconnected", attempt: Math.max(1, attempt), message });
|
|
138
|
+
await delay(this.#reconnectDelay(Math.max(1, attempt)));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
#handleEvent(client, candidate) {
|
|
142
|
+
let event;
|
|
143
|
+
try {
|
|
144
|
+
event = validateEventEnvelope(candidate);
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
void client.close();
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const previous = this.#cursors[event.streamId] ?? 0;
|
|
151
|
+
if (event.seq <= previous)
|
|
152
|
+
return;
|
|
153
|
+
if (event.seq !== previous + 1) {
|
|
154
|
+
void client.close();
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
this.#cursors = { ...this.#cursors, [event.streamId]: event.seq };
|
|
158
|
+
const payload = event.payload;
|
|
159
|
+
if (event.type === "message.delta" && typeof payload["sessionId"] === "string" && typeof payload["delta"] === "string") {
|
|
160
|
+
this.#queueDelta(event.streamId, event.seq, payload["sessionId"], payload["delta"]);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
this.#flushDelta();
|
|
164
|
+
this.#emit({ version: 1, kind: "event", event });
|
|
165
|
+
}
|
|
166
|
+
#queueDelta(streamId, seq, sessionId, text) {
|
|
167
|
+
const pending = this.#pendingDelta;
|
|
168
|
+
if (pending && pending.streamId === streamId && pending.sessionId === sessionId && seq === pending.seq + 1) {
|
|
169
|
+
pending.seq = seq;
|
|
170
|
+
pending.text += text;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
this.#flushDelta();
|
|
174
|
+
this.#pendingDelta = { streamId, fromSeq: seq, seq, sessionId, text };
|
|
175
|
+
}
|
|
176
|
+
if (!this.#deltaTimer)
|
|
177
|
+
this.#deltaTimer = setTimeout(() => this.#flushDelta(), 30);
|
|
178
|
+
}
|
|
179
|
+
#flushDelta() {
|
|
180
|
+
if (this.#deltaTimer)
|
|
181
|
+
clearTimeout(this.#deltaTimer);
|
|
182
|
+
this.#deltaTimer = undefined;
|
|
183
|
+
const delta = this.#pendingDelta;
|
|
184
|
+
this.#pendingDelta = undefined;
|
|
185
|
+
if (!delta)
|
|
186
|
+
return;
|
|
187
|
+
this.#emit({ version: 1, kind: "delta", ...delta });
|
|
188
|
+
}
|
|
189
|
+
#setConnection(connection) {
|
|
190
|
+
this.#connection = structuredClone(connection);
|
|
191
|
+
this.#emit({ version: 1, kind: "connection", connection: this.#connection });
|
|
192
|
+
}
|
|
193
|
+
#emit(frame) {
|
|
194
|
+
for (const listener of this.#listeners)
|
|
195
|
+
listener(structuredClone(frame));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
function delay(milliseconds) {
|
|
199
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
200
|
+
}
|
|
201
|
+
function toError(error) {
|
|
202
|
+
return error instanceof Error ? error : new Error(String(error));
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=daemon-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-bridge.js","sourceRoot":"","sources":["../../src/desktop/daemon-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-supervisor.d.ts","sourceRoot":"","sources":["../../src/desktop/daemon-supervisor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,IAAI,uBAAuB,EAC3C,KAAK,eAAe,IAAI,sBAAsB,EAC9C,KAAK,uBAAuB,IAAI,8BAA8B,GAC/D,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-supervisor.js","sourceRoot":"","sources":["../../src/desktop/daemon-supervisor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,IAAI,uBAAuB,GAG5C,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import type { KernelState } from "../kernel/state.js";
|
|
2
|
+
import type { EventEnvelope } from "../protocol/schema.js";
|
|
3
|
+
import { type LlmSettings, type LlmSettingsUpdate, type ModelApi, type ThinkingLevel } from "../settings/llm-settings.js";
|
|
4
|
+
export declare const DESKTOP_BOOTSTRAP_CHANNEL = "pspore:desktop:bootstrap";
|
|
5
|
+
export declare const DESKTOP_DISPATCH_CHANNEL = "pspore:desktop:dispatch";
|
|
6
|
+
export declare const DESKTOP_FRAME_CHANNEL = "pspore:desktop:frame";
|
|
7
|
+
export declare const DESKTOP_SETTINGS_GET_CHANNEL = "pspore:desktop:settings:get";
|
|
8
|
+
export declare const DESKTOP_SETTINGS_SAVE_CHANNEL = "pspore:desktop:settings:save";
|
|
9
|
+
export type DesktopConnectionPhase = "connecting" | "connected" | "disconnected";
|
|
10
|
+
export interface DesktopConnectionState {
|
|
11
|
+
phase: DesktopConnectionPhase;
|
|
12
|
+
attempt: number;
|
|
13
|
+
message?: string;
|
|
14
|
+
instanceId?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface DesktopVersions {
|
|
17
|
+
pspore: string;
|
|
18
|
+
pi: string;
|
|
19
|
+
electron: string;
|
|
20
|
+
node: string;
|
|
21
|
+
}
|
|
22
|
+
export interface DesktopBootstrap {
|
|
23
|
+
version: 1;
|
|
24
|
+
connection: DesktopConnectionState;
|
|
25
|
+
snapshot: KernelState | null;
|
|
26
|
+
cursors: Record<string, number>;
|
|
27
|
+
versions: DesktopVersions;
|
|
28
|
+
}
|
|
29
|
+
export type DesktopFrame = {
|
|
30
|
+
version: 1;
|
|
31
|
+
kind: "connection";
|
|
32
|
+
connection: DesktopConnectionState;
|
|
33
|
+
} | {
|
|
34
|
+
version: 1;
|
|
35
|
+
kind: "snapshot";
|
|
36
|
+
snapshot: KernelState;
|
|
37
|
+
cursors: Record<string, number>;
|
|
38
|
+
} | {
|
|
39
|
+
version: 1;
|
|
40
|
+
kind: "event";
|
|
41
|
+
event: EventEnvelope;
|
|
42
|
+
} | {
|
|
43
|
+
version: 1;
|
|
44
|
+
kind: "delta";
|
|
45
|
+
streamId: string;
|
|
46
|
+
fromSeq: number;
|
|
47
|
+
seq: number;
|
|
48
|
+
sessionId: string;
|
|
49
|
+
text: string;
|
|
50
|
+
};
|
|
51
|
+
export type DesktopCommand = {
|
|
52
|
+
action: "prompt";
|
|
53
|
+
text: string;
|
|
54
|
+
} | {
|
|
55
|
+
action: "steer";
|
|
56
|
+
text: string;
|
|
57
|
+
} | {
|
|
58
|
+
action: "follow_up";
|
|
59
|
+
text: string;
|
|
60
|
+
} | {
|
|
61
|
+
action: "abort";
|
|
62
|
+
} | {
|
|
63
|
+
action: "compact";
|
|
64
|
+
} | {
|
|
65
|
+
action: "approval.resolve";
|
|
66
|
+
approvalId: string;
|
|
67
|
+
approved: boolean;
|
|
68
|
+
scope: "once" | "session" | "job";
|
|
69
|
+
} | {
|
|
70
|
+
action: "jobs.list";
|
|
71
|
+
} | {
|
|
72
|
+
action: "runs.list";
|
|
73
|
+
} | {
|
|
74
|
+
action: "notifications.list";
|
|
75
|
+
} | {
|
|
76
|
+
action: "job.run";
|
|
77
|
+
jobId: string;
|
|
78
|
+
} | {
|
|
79
|
+
action: "run.cancel";
|
|
80
|
+
runId: string;
|
|
81
|
+
} | {
|
|
82
|
+
action: "agents.list";
|
|
83
|
+
} | {
|
|
84
|
+
action: "agent.spawn";
|
|
85
|
+
objective: string;
|
|
86
|
+
} | {
|
|
87
|
+
action: "agent.send";
|
|
88
|
+
agentId: string;
|
|
89
|
+
message: string;
|
|
90
|
+
mode: "steer" | "follow_up" | "next";
|
|
91
|
+
} | {
|
|
92
|
+
action: "agent.join";
|
|
93
|
+
agentIds: string[];
|
|
94
|
+
} | {
|
|
95
|
+
action: "agent.cancel";
|
|
96
|
+
agentId: string;
|
|
97
|
+
} | {
|
|
98
|
+
action: "mcp.servers";
|
|
99
|
+
} | {
|
|
100
|
+
action: "mcp.tools";
|
|
101
|
+
} | {
|
|
102
|
+
action: "mcp.discover";
|
|
103
|
+
serverId: string;
|
|
104
|
+
} | {
|
|
105
|
+
action: "mcp.ping";
|
|
106
|
+
serverId: string;
|
|
107
|
+
} | {
|
|
108
|
+
action: "resources.list";
|
|
109
|
+
} | {
|
|
110
|
+
action: "skills.list";
|
|
111
|
+
} | {
|
|
112
|
+
action: "plugins.list";
|
|
113
|
+
} | {
|
|
114
|
+
action: "resources.inspect";
|
|
115
|
+
stagingName: string;
|
|
116
|
+
} | {
|
|
117
|
+
action: "resources.install";
|
|
118
|
+
stagingName: string;
|
|
119
|
+
expectedDigest: string;
|
|
120
|
+
} | {
|
|
121
|
+
action: "resources.disable";
|
|
122
|
+
kind: "skill" | "host-plugin";
|
|
123
|
+
name: string;
|
|
124
|
+
expectedDigest: string;
|
|
125
|
+
};
|
|
126
|
+
export interface DesktopProtocolInvocation {
|
|
127
|
+
type: string;
|
|
128
|
+
payload: Record<string, unknown>;
|
|
129
|
+
sessionId?: string;
|
|
130
|
+
}
|
|
131
|
+
export interface DesktopApi {
|
|
132
|
+
bootstrap(): Promise<DesktopBootstrap>;
|
|
133
|
+
dispatch(command: DesktopCommand): Promise<unknown>;
|
|
134
|
+
getSettings(): Promise<DesktopLlmSettings>;
|
|
135
|
+
saveSettings(settings: DesktopLlmSettingsUpdate): Promise<DesktopSettingsSaveResult>;
|
|
136
|
+
subscribe(listener: (frame: DesktopFrame) => void): () => void;
|
|
137
|
+
}
|
|
138
|
+
export type DesktopModelApi = ModelApi;
|
|
139
|
+
export type DesktopThinkingLevel = ThinkingLevel;
|
|
140
|
+
export type DesktopLlmSettings = LlmSettings;
|
|
141
|
+
export type DesktopLlmSettingsUpdate = LlmSettingsUpdate;
|
|
142
|
+
export interface DesktopSettingsSaveResult {
|
|
143
|
+
settings: DesktopLlmSettings;
|
|
144
|
+
applied: boolean;
|
|
145
|
+
restartRequired: boolean;
|
|
146
|
+
message: string;
|
|
147
|
+
}
|
|
148
|
+
export declare function decodeDesktopLlmSettingsUpdate(value: unknown): DesktopLlmSettingsUpdate;
|
|
149
|
+
export declare function decodeDesktopCommand(value: unknown): DesktopCommand;
|
|
150
|
+
export declare function toProtocolInvocation(command: DesktopCommand, paths: {
|
|
151
|
+
stagingPath(name: string): string;
|
|
152
|
+
}): DesktopProtocolInvocation;
|
|
153
|
+
//# sourceMappingURL=ipc-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipc-contract.d.ts","sourceRoot":"","sources":["../../src/desktop/ipc-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { decodeLlmSettingsUpdate, } from "../settings/llm-settings.js";
|
|
2
|
+
export const DESKTOP_BOOTSTRAP_CHANNEL = "pspore:desktop:bootstrap";
|
|
3
|
+
export const DESKTOP_DISPATCH_CHANNEL = "pspore:desktop:dispatch";
|
|
4
|
+
export const DESKTOP_FRAME_CHANNEL = "pspore:desktop:frame";
|
|
5
|
+
export const DESKTOP_SETTINGS_GET_CHANNEL = "pspore:desktop:settings:get";
|
|
6
|
+
export const DESKTOP_SETTINGS_SAVE_CHANNEL = "pspore:desktop:settings:save";
|
|
7
|
+
export function decodeDesktopLlmSettingsUpdate(value) {
|
|
8
|
+
return decodeLlmSettingsUpdate(value, "desktop LLM settings");
|
|
9
|
+
}
|
|
10
|
+
export function decodeDesktopCommand(value) {
|
|
11
|
+
const input = object(value, "desktop command");
|
|
12
|
+
const action = boundedString(input["action"], "desktop command.action", 64);
|
|
13
|
+
switch (action) {
|
|
14
|
+
case "prompt":
|
|
15
|
+
case "steer":
|
|
16
|
+
case "follow_up":
|
|
17
|
+
exactKeys(input, ["action", "text"], action);
|
|
18
|
+
return { action, text: boundedString(input["text"], `${action}.text`, 65_536) };
|
|
19
|
+
case "abort":
|
|
20
|
+
case "compact":
|
|
21
|
+
case "jobs.list":
|
|
22
|
+
case "runs.list":
|
|
23
|
+
case "notifications.list":
|
|
24
|
+
case "agents.list":
|
|
25
|
+
case "mcp.servers":
|
|
26
|
+
case "mcp.tools":
|
|
27
|
+
case "resources.list":
|
|
28
|
+
case "skills.list":
|
|
29
|
+
case "plugins.list":
|
|
30
|
+
exactKeys(input, ["action"], action);
|
|
31
|
+
return { action };
|
|
32
|
+
case "approval.resolve": {
|
|
33
|
+
exactKeys(input, ["action", "approvalId", "approved", "scope"], action);
|
|
34
|
+
const approved = input["approved"];
|
|
35
|
+
if (typeof approved !== "boolean")
|
|
36
|
+
throw new Error("approval.resolve.approved must be boolean");
|
|
37
|
+
return {
|
|
38
|
+
action,
|
|
39
|
+
approvalId: identifier(input["approvalId"], "approval.resolve.approvalId"),
|
|
40
|
+
approved,
|
|
41
|
+
scope: enumeration(input["scope"], ["once", "session", "job"], "approval.resolve.scope"),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
case "job.run":
|
|
45
|
+
exactKeys(input, ["action", "jobId"], action);
|
|
46
|
+
return { action, jobId: identifier(input["jobId"], "job.run.jobId") };
|
|
47
|
+
case "run.cancel":
|
|
48
|
+
exactKeys(input, ["action", "runId"], action);
|
|
49
|
+
return { action, runId: identifier(input["runId"], "run.cancel.runId") };
|
|
50
|
+
case "agent.spawn":
|
|
51
|
+
exactKeys(input, ["action", "objective"], action);
|
|
52
|
+
return { action, objective: boundedString(input["objective"], "agent.spawn.objective", 16_384) };
|
|
53
|
+
case "agent.send":
|
|
54
|
+
exactKeys(input, ["action", "agentId", "message", "mode"], action);
|
|
55
|
+
return {
|
|
56
|
+
action,
|
|
57
|
+
agentId: identifier(input["agentId"], "agent.send.agentId"),
|
|
58
|
+
message: boundedString(input["message"], "agent.send.message", 65_536),
|
|
59
|
+
mode: enumeration(input["mode"], ["steer", "follow_up", "next"], "agent.send.mode"),
|
|
60
|
+
};
|
|
61
|
+
case "agent.join":
|
|
62
|
+
exactKeys(input, ["action", "agentIds"], action);
|
|
63
|
+
return { action, agentIds: identifierArray(input["agentIds"], "agent.join.agentIds", 32) };
|
|
64
|
+
case "agent.cancel":
|
|
65
|
+
exactKeys(input, ["action", "agentId"], action);
|
|
66
|
+
return { action, agentId: identifier(input["agentId"], "agent.cancel.agentId") };
|
|
67
|
+
case "mcp.discover":
|
|
68
|
+
case "mcp.ping":
|
|
69
|
+
exactKeys(input, ["action", "serverId"], action);
|
|
70
|
+
return { action, serverId: identifier(input["serverId"], `${action}.serverId`) };
|
|
71
|
+
case "resources.inspect":
|
|
72
|
+
exactKeys(input, ["action", "stagingName"], action);
|
|
73
|
+
return { action, stagingName: resourceName(input["stagingName"], "resources.inspect.stagingName") };
|
|
74
|
+
case "resources.install":
|
|
75
|
+
exactKeys(input, ["action", "stagingName", "expectedDigest"], action);
|
|
76
|
+
return {
|
|
77
|
+
action,
|
|
78
|
+
stagingName: resourceName(input["stagingName"], "resources.install.stagingName"),
|
|
79
|
+
expectedDigest: digest(input["expectedDigest"], "resources.install.expectedDigest"),
|
|
80
|
+
};
|
|
81
|
+
case "resources.disable":
|
|
82
|
+
exactKeys(input, ["action", "kind", "name", "expectedDigest"], action);
|
|
83
|
+
return {
|
|
84
|
+
action,
|
|
85
|
+
kind: enumeration(input["kind"], ["skill", "host-plugin"], "resources.disable.kind"),
|
|
86
|
+
name: identifier(input["name"], "resources.disable.name"),
|
|
87
|
+
expectedDigest: digest(input["expectedDigest"], "resources.disable.expectedDigest"),
|
|
88
|
+
};
|
|
89
|
+
default:
|
|
90
|
+
throw new Error(`Desktop action is not allowlisted: ${action}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export function toProtocolInvocation(command, paths) {
|
|
94
|
+
switch (command.action) {
|
|
95
|
+
case "prompt":
|
|
96
|
+
return { type: "session.prompt", payload: { text: command.text, mode: "prompt" }, sessionId: "main" };
|
|
97
|
+
case "steer":
|
|
98
|
+
return { type: "session.prompt", payload: { text: command.text, mode: "steer" }, sessionId: "main" };
|
|
99
|
+
case "follow_up":
|
|
100
|
+
return { type: "session.prompt", payload: { text: command.text, mode: "follow_up" }, sessionId: "main" };
|
|
101
|
+
case "abort":
|
|
102
|
+
return { type: "session.abort", payload: { reason: "Electron user requested abort" }, sessionId: "main" };
|
|
103
|
+
case "compact":
|
|
104
|
+
return { type: "session.compact", payload: {}, sessionId: "main" };
|
|
105
|
+
case "approval.resolve":
|
|
106
|
+
return {
|
|
107
|
+
type: "approval.resolve",
|
|
108
|
+
payload: { approvalId: command.approvalId, approved: command.approved, scope: command.scope },
|
|
109
|
+
};
|
|
110
|
+
case "jobs.list":
|
|
111
|
+
case "runs.list":
|
|
112
|
+
case "notifications.list":
|
|
113
|
+
case "agents.list":
|
|
114
|
+
case "mcp.servers":
|
|
115
|
+
case "mcp.tools":
|
|
116
|
+
case "resources.list":
|
|
117
|
+
case "skills.list":
|
|
118
|
+
case "plugins.list":
|
|
119
|
+
return { type: command.action, payload: {} };
|
|
120
|
+
case "job.run":
|
|
121
|
+
return { type: "job.run", payload: { jobId: command.jobId } };
|
|
122
|
+
case "run.cancel":
|
|
123
|
+
return { type: "run.cancel", payload: { runId: command.runId, reason: "cancelled from Electron" } };
|
|
124
|
+
case "agent.spawn":
|
|
125
|
+
return {
|
|
126
|
+
type: "agent.spawn",
|
|
127
|
+
payload: {
|
|
128
|
+
parentId: "main",
|
|
129
|
+
objective: command.objective,
|
|
130
|
+
workspaceMode: "shared-read",
|
|
131
|
+
budget: {
|
|
132
|
+
maxTurns: 8,
|
|
133
|
+
maxToolCalls: 24,
|
|
134
|
+
maxInputTokens: 50_000,
|
|
135
|
+
maxOutputTokens: 8_000,
|
|
136
|
+
maxChildren: 0,
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
case "agent.send":
|
|
141
|
+
return {
|
|
142
|
+
type: "agent.send",
|
|
143
|
+
payload: { agentId: command.agentId, message: command.message, mode: command.mode },
|
|
144
|
+
};
|
|
145
|
+
case "agent.join":
|
|
146
|
+
return { type: "agent.join", payload: { agentIds: command.agentIds, timeoutMs: 300_000 } };
|
|
147
|
+
case "agent.cancel":
|
|
148
|
+
return { type: "agent.cancel", payload: { agentId: command.agentId, reason: "cancelled from Electron" } };
|
|
149
|
+
case "mcp.discover":
|
|
150
|
+
return { type: "mcp.discover", payload: { serverId: command.serverId } };
|
|
151
|
+
case "mcp.ping":
|
|
152
|
+
return { type: "mcp.ping", payload: { serverId: command.serverId } };
|
|
153
|
+
case "resources.inspect":
|
|
154
|
+
return { type: "resources.inspect", payload: { stagingPath: paths.stagingPath(command.stagingName) } };
|
|
155
|
+
case "resources.install":
|
|
156
|
+
return {
|
|
157
|
+
type: "resources.install",
|
|
158
|
+
payload: { stagingPath: paths.stagingPath(command.stagingName), expectedDigest: command.expectedDigest },
|
|
159
|
+
};
|
|
160
|
+
case "resources.disable":
|
|
161
|
+
return {
|
|
162
|
+
type: "resources.disable",
|
|
163
|
+
payload: { kind: command.kind, name: command.name, expectedDigest: command.expectedDigest },
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function object(value, path) {
|
|
168
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
169
|
+
throw new Error(`${path} must be an object`);
|
|
170
|
+
return value;
|
|
171
|
+
}
|
|
172
|
+
function exactKeys(value, keys, path) {
|
|
173
|
+
const expected = new Set(keys);
|
|
174
|
+
const unknown = Object.keys(value).filter((key) => !expected.has(key));
|
|
175
|
+
if (unknown.length > 0)
|
|
176
|
+
throw new Error(`${path} contains unknown fields: ${unknown.join(", ")}`);
|
|
177
|
+
for (const key of keys)
|
|
178
|
+
if (!(key in value))
|
|
179
|
+
throw new Error(`${path}.${key} is required`);
|
|
180
|
+
}
|
|
181
|
+
function boundedString(value, path, maximum) {
|
|
182
|
+
if (typeof value !== "string" || !value.trim() || value.length > maximum || /[\u0000]/.test(value)) {
|
|
183
|
+
throw new Error(`${path} must be a non-empty string of at most ${maximum} characters`);
|
|
184
|
+
}
|
|
185
|
+
return value;
|
|
186
|
+
}
|
|
187
|
+
function identifier(value, path) {
|
|
188
|
+
const text = boundedString(value, path, 128);
|
|
189
|
+
if (/[\u0000-\u001f]/.test(text))
|
|
190
|
+
throw new Error(`${path} contains control characters`);
|
|
191
|
+
return text;
|
|
192
|
+
}
|
|
193
|
+
function identifierArray(value, path, maximum) {
|
|
194
|
+
if (!Array.isArray(value) || value.length === 0 || value.length > maximum) {
|
|
195
|
+
throw new Error(`${path} must contain 1-${maximum} identifiers`);
|
|
196
|
+
}
|
|
197
|
+
const result = value.map((item, index) => identifier(item, `${path}[${index}]`));
|
|
198
|
+
if (new Set(result).size !== result.length)
|
|
199
|
+
throw new Error(`${path} must not contain duplicates`);
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
202
|
+
function resourceName(value, path) {
|
|
203
|
+
const text = boundedString(value, path, 128);
|
|
204
|
+
if (text === "." || text === ".." || !/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(text)) {
|
|
205
|
+
throw new Error(`${path} must be one top-level staging resource name`);
|
|
206
|
+
}
|
|
207
|
+
return text;
|
|
208
|
+
}
|
|
209
|
+
function digest(value, path) {
|
|
210
|
+
if (typeof value !== "string" || !/^[a-f0-9]{64}$/.test(value))
|
|
211
|
+
throw new Error(`${path} must be a lowercase SHA-256`);
|
|
212
|
+
return value;
|
|
213
|
+
}
|
|
214
|
+
function enumeration(value, allowed, path) {
|
|
215
|
+
if (typeof value !== "string" || !allowed.includes(value))
|
|
216
|
+
throw new Error(`${path} must be one of: ${allowed.join(", ")}`);
|
|
217
|
+
return value;
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=ipc-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipc-contract.js","sourceRoot":"","sources":["../../src/desktop/ipc-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/desktop/main.ts"],"names":[],"mappings":""}
|