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.
Files changed (261) hide show
  1. package/README.md +97 -0
  2. package/dist/agents/agent-manager.d.ts +57 -0
  3. package/dist/agents/agent-manager.d.ts.map +1 -0
  4. package/dist/agents/agent-manager.js +559 -0
  5. package/dist/agents/agent-manager.js.map +1 -0
  6. package/dist/agents/agent-tools.d.ts +4 -0
  7. package/dist/agents/agent-tools.d.ts.map +1 -0
  8. package/dist/agents/agent-tools.js +111 -0
  9. package/dist/agents/agent-tools.js.map +1 -0
  10. package/dist/agents/types.d.ts +52 -0
  11. package/dist/agents/types.d.ts.map +1 -0
  12. package/dist/agents/types.js +2 -0
  13. package/dist/agents/types.js.map +1 -0
  14. package/dist/application/agent-application.d.ts +89 -0
  15. package/dist/application/agent-application.d.ts.map +1 -0
  16. package/dist/application/agent-application.js +542 -0
  17. package/dist/application/agent-application.js.map +1 -0
  18. package/dist/automation/automation-tools.d.ts +4 -0
  19. package/dist/automation/automation-tools.d.ts.map +1 -0
  20. package/dist/automation/automation-tools.js +35 -0
  21. package/dist/automation/automation-tools.js.map +1 -0
  22. package/dist/automation/cron-adapter.d.ts +11 -0
  23. package/dist/automation/cron-adapter.d.ts.map +1 -0
  24. package/dist/automation/cron-adapter.js +48 -0
  25. package/dist/automation/cron-adapter.js.map +1 -0
  26. package/dist/automation/daemon-run-executor.d.ts +18 -0
  27. package/dist/automation/daemon-run-executor.d.ts.map +1 -0
  28. package/dist/automation/daemon-run-executor.js +69 -0
  29. package/dist/automation/daemon-run-executor.js.map +1 -0
  30. package/dist/automation/job-store.d.ts +12 -0
  31. package/dist/automation/job-store.d.ts.map +1 -0
  32. package/dist/automation/job-store.js +185 -0
  33. package/dist/automation/job-store.js.map +1 -0
  34. package/dist/automation/run-ledger.d.ts +25 -0
  35. package/dist/automation/run-ledger.d.ts.map +1 -0
  36. package/dist/automation/run-ledger.js +148 -0
  37. package/dist/automation/run-ledger.js.map +1 -0
  38. package/dist/automation/scheduler.d.ts +36 -0
  39. package/dist/automation/scheduler.d.ts.map +1 -0
  40. package/dist/automation/scheduler.js +300 -0
  41. package/dist/automation/scheduler.js.map +1 -0
  42. package/dist/automation/types.d.ts +81 -0
  43. package/dist/automation/types.d.ts.map +1 -0
  44. package/dist/automation/types.js +2 -0
  45. package/dist/automation/types.js.map +1 -0
  46. package/dist/cli/main.d.ts +4 -0
  47. package/dist/cli/main.d.ts.map +1 -0
  48. package/dist/cli/main.js +768 -0
  49. package/dist/cli/main.js.map +1 -0
  50. package/dist/config/config.d.ts +52 -0
  51. package/dist/config/config.d.ts.map +1 -0
  52. package/dist/config/config.js +345 -0
  53. package/dist/config/config.js.map +1 -0
  54. package/dist/daemon/daemon.d.ts +30 -0
  55. package/dist/daemon/daemon.d.ts.map +1 -0
  56. package/dist/daemon/daemon.js +437 -0
  57. package/dist/daemon/daemon.js.map +1 -0
  58. package/dist/daemon/supervisor.d.ts +18 -0
  59. package/dist/daemon/supervisor.d.ts.map +1 -0
  60. package/dist/daemon/supervisor.js +37 -0
  61. package/dist/daemon/supervisor.js.map +1 -0
  62. package/dist/desktop/daemon-bridge.d.ts +32 -0
  63. package/dist/desktop/daemon-bridge.d.ts.map +1 -0
  64. package/dist/desktop/daemon-bridge.js +204 -0
  65. package/dist/desktop/daemon-bridge.js.map +1 -0
  66. package/dist/desktop/daemon-supervisor.d.ts +2 -0
  67. package/dist/desktop/daemon-supervisor.d.ts.map +1 -0
  68. package/dist/desktop/daemon-supervisor.js +2 -0
  69. package/dist/desktop/daemon-supervisor.js.map +1 -0
  70. package/dist/desktop/ipc-contract.d.ts +153 -0
  71. package/dist/desktop/ipc-contract.d.ts.map +1 -0
  72. package/dist/desktop/ipc-contract.js +219 -0
  73. package/dist/desktop/ipc-contract.js.map +1 -0
  74. package/dist/desktop/main.d.ts +2 -0
  75. package/dist/desktop/main.d.ts.map +1 -0
  76. package/dist/desktop/main.js +594 -0
  77. package/dist/desktop/main.js.map +1 -0
  78. package/dist/desktop/preload.cjs +32 -0
  79. package/dist/desktop/renderer/index.html +284 -0
  80. package/dist/desktop/renderer/renderer.d.ts +2 -0
  81. package/dist/desktop/renderer/renderer.d.ts.map +1 -0
  82. package/dist/desktop/renderer/renderer.js +895 -0
  83. package/dist/desktop/renderer/renderer.js.map +1 -0
  84. package/dist/desktop/renderer/store.d.ts +33 -0
  85. package/dist/desktop/renderer/store.d.ts.map +1 -0
  86. package/dist/desktop/renderer/store.js +144 -0
  87. package/dist/desktop/renderer/store.js.map +1 -0
  88. package/dist/desktop/renderer/styles.css +540 -0
  89. package/dist/desktop/security.d.ts +5 -0
  90. package/dist/desktop/security.d.ts.map +1 -0
  91. package/dist/desktop/security.js +49 -0
  92. package/dist/desktop/security.js.map +1 -0
  93. package/dist/desktop/smoke-fixture.d.ts +3 -0
  94. package/dist/desktop/smoke-fixture.d.ts.map +1 -0
  95. package/dist/desktop/smoke-fixture.js +223 -0
  96. package/dist/desktop/smoke-fixture.js.map +1 -0
  97. package/dist/desktop/validation.d.ts +8 -0
  98. package/dist/desktop/validation.d.ts.map +1 -0
  99. package/dist/desktop/validation.js +341 -0
  100. package/dist/desktop/validation.js.map +1 -0
  101. package/dist/domain/runtime.d.ts +116 -0
  102. package/dist/domain/runtime.d.ts.map +1 -0
  103. package/dist/domain/runtime.js +2 -0
  104. package/dist/domain/runtime.js.map +1 -0
  105. package/dist/gateway/local-gateway.d.ts +23 -0
  106. package/dist/gateway/local-gateway.d.ts.map +1 -0
  107. package/dist/gateway/local-gateway.js +265 -0
  108. package/dist/gateway/local-gateway.js.map +1 -0
  109. package/dist/kernel/loop.d.ts +10 -0
  110. package/dist/kernel/loop.d.ts.map +1 -0
  111. package/dist/kernel/loop.js +41 -0
  112. package/dist/kernel/loop.js.map +1 -0
  113. package/dist/kernel/reducer.d.ts +3 -0
  114. package/dist/kernel/reducer.d.ts.map +1 -0
  115. package/dist/kernel/reducer.js +102 -0
  116. package/dist/kernel/reducer.js.map +1 -0
  117. package/dist/kernel/state.d.ts +93 -0
  118. package/dist/kernel/state.d.ts.map +1 -0
  119. package/dist/kernel/state.js +15 -0
  120. package/dist/kernel/state.js.map +1 -0
  121. package/dist/mcp/mcp-manager.d.ts +55 -0
  122. package/dist/mcp/mcp-manager.d.ts.map +1 -0
  123. package/dist/mcp/mcp-manager.js +591 -0
  124. package/dist/mcp/mcp-manager.js.map +1 -0
  125. package/dist/mcp/mcp-tools.d.ts +4 -0
  126. package/dist/mcp/mcp-tools.d.ts.map +1 -0
  127. package/dist/mcp/mcp-tools.js +53 -0
  128. package/dist/mcp/mcp-tools.js.map +1 -0
  129. package/dist/mcp/types.d.ts +73 -0
  130. package/dist/mcp/types.d.ts.map +1 -0
  131. package/dist/mcp/types.js +2 -0
  132. package/dist/mcp/types.js.map +1 -0
  133. package/dist/memory/bm25.d.ts +14 -0
  134. package/dist/memory/bm25.d.ts.map +1 -0
  135. package/dist/memory/bm25.js +40 -0
  136. package/dist/memory/bm25.js.map +1 -0
  137. package/dist/memory/context-loader.d.ts +26 -0
  138. package/dist/memory/context-loader.d.ts.map +1 -0
  139. package/dist/memory/context-loader.js +97 -0
  140. package/dist/memory/context-loader.js.map +1 -0
  141. package/dist/memory/memory-service.d.ts +30 -0
  142. package/dist/memory/memory-service.d.ts.map +1 -0
  143. package/dist/memory/memory-service.js +133 -0
  144. package/dist/memory/memory-service.js.map +1 -0
  145. package/dist/memory/memory-tools.d.ts +4 -0
  146. package/dist/memory/memory-tools.d.ts.map +1 -0
  147. package/dist/memory/memory-tools.js +49 -0
  148. package/dist/memory/memory-tools.js.map +1 -0
  149. package/dist/memory/search-service.d.ts +38 -0
  150. package/dist/memory/search-service.d.ts.map +1 -0
  151. package/dist/memory/search-service.js +463 -0
  152. package/dist/memory/search-service.js.map +1 -0
  153. package/dist/memory/tokenizer.d.ts +5 -0
  154. package/dist/memory/tokenizer.d.ts.map +1 -0
  155. package/dist/memory/tokenizer.js +42 -0
  156. package/dist/memory/tokenizer.js.map +1 -0
  157. package/dist/notifications/notification-service.d.ts +47 -0
  158. package/dist/notifications/notification-service.d.ts.map +1 -0
  159. package/dist/notifications/notification-service.js +163 -0
  160. package/dist/notifications/notification-service.js.map +1 -0
  161. package/dist/notifications/notification-tools.d.ts +4 -0
  162. package/dist/notifications/notification-tools.d.ts.map +1 -0
  163. package/dist/notifications/notification-tools.js +31 -0
  164. package/dist/notifications/notification-tools.js.map +1 -0
  165. package/dist/pi/pi-runtime-adapter.d.ts +38 -0
  166. package/dist/pi/pi-runtime-adapter.d.ts.map +1 -0
  167. package/dist/pi/pi-runtime-adapter.js +483 -0
  168. package/dist/pi/pi-runtime-adapter.js.map +1 -0
  169. package/dist/plugins/extension-manager.d.ts +32 -0
  170. package/dist/plugins/extension-manager.d.ts.map +1 -0
  171. package/dist/plugins/extension-manager.js +562 -0
  172. package/dist/plugins/extension-manager.js.map +1 -0
  173. package/dist/plugins/resource-inspector.d.ts +18 -0
  174. package/dist/plugins/resource-inspector.d.ts.map +1 -0
  175. package/dist/plugins/resource-inspector.js +386 -0
  176. package/dist/plugins/resource-inspector.js.map +1 -0
  177. package/dist/plugins/types.d.ts +96 -0
  178. package/dist/plugins/types.d.ts.map +1 -0
  179. package/dist/plugins/types.js +2 -0
  180. package/dist/plugins/types.js.map +1 -0
  181. package/dist/policy/approval-service.d.ts +68 -0
  182. package/dist/policy/approval-service.d.ts.map +1 -0
  183. package/dist/policy/approval-service.js +349 -0
  184. package/dist/policy/approval-service.js.map +1 -0
  185. package/dist/policy/policy.d.ts +26 -0
  186. package/dist/policy/policy.d.ts.map +1 -0
  187. package/dist/policy/policy.js +228 -0
  188. package/dist/policy/policy.js.map +1 -0
  189. package/dist/protocol/client.d.ts +25 -0
  190. package/dist/protocol/client.d.ts.map +1 -0
  191. package/dist/protocol/client.js +188 -0
  192. package/dist/protocol/client.js.map +1 -0
  193. package/dist/protocol/errors.d.ts +5 -0
  194. package/dist/protocol/errors.d.ts.map +1 -0
  195. package/dist/protocol/errors.js +9 -0
  196. package/dist/protocol/errors.js.map +1 -0
  197. package/dist/protocol/schema.d.ts +71 -0
  198. package/dist/protocol/schema.d.ts.map +1 -0
  199. package/dist/protocol/schema.js +155 -0
  200. package/dist/protocol/schema.js.map +1 -0
  201. package/dist/settings/llm-settings-service.d.ts +9 -0
  202. package/dist/settings/llm-settings-service.d.ts.map +1 -0
  203. package/dist/settings/llm-settings-service.js +199 -0
  204. package/dist/settings/llm-settings-service.js.map +1 -0
  205. package/dist/settings/llm-settings.d.ts +29 -0
  206. package/dist/settings/llm-settings.d.ts.map +1 -0
  207. package/dist/settings/llm-settings.js +113 -0
  208. package/dist/settings/llm-settings.js.map +1 -0
  209. package/dist/shell/shell-service.d.ts +88 -0
  210. package/dist/shell/shell-service.d.ts.map +1 -0
  211. package/dist/shell/shell-service.js +459 -0
  212. package/dist/shell/shell-service.js.map +1 -0
  213. package/dist/storage/atomic.d.ts +4 -0
  214. package/dist/storage/atomic.d.ts.map +1 -0
  215. package/dist/storage/atomic.js +49 -0
  216. package/dist/storage/atomic.js.map +1 -0
  217. package/dist/storage/daemon-lock.d.ts +17 -0
  218. package/dist/storage/daemon-lock.d.ts.map +1 -0
  219. package/dist/storage/daemon-lock.js +97 -0
  220. package/dist/storage/daemon-lock.js.map +1 -0
  221. package/dist/storage/home.d.ts +29 -0
  222. package/dist/storage/home.d.ts.map +1 -0
  223. package/dist/storage/home.js +108 -0
  224. package/dist/storage/home.js.map +1 -0
  225. package/dist/storage/jsonl.d.ts +2 -0
  226. package/dist/storage/jsonl.d.ts.map +1 -0
  227. package/dist/storage/jsonl.js +45 -0
  228. package/dist/storage/jsonl.js.map +1 -0
  229. package/dist/tools/core-tools.d.ts +16 -0
  230. package/dist/tools/core-tools.d.ts.map +1 -0
  231. package/dist/tools/core-tools.js +283 -0
  232. package/dist/tools/core-tools.js.map +1 -0
  233. package/dist/ui/shared/presentation.d.ts +46 -0
  234. package/dist/ui/shared/presentation.d.ts.map +1 -0
  235. package/dist/ui/shared/presentation.js +81 -0
  236. package/dist/ui/shared/presentation.js.map +1 -0
  237. package/dist/ui/shared/protocol-state.d.ts +30 -0
  238. package/dist/ui/shared/protocol-state.d.ts.map +1 -0
  239. package/dist/ui/shared/protocol-state.js +165 -0
  240. package/dist/ui/shared/protocol-state.js.map +1 -0
  241. package/dist/ui/tui/commands.d.ts +2 -0
  242. package/dist/ui/tui/commands.d.ts.map +1 -0
  243. package/dist/ui/tui/commands.js +33 -0
  244. package/dist/ui/tui/commands.js.map +1 -0
  245. package/dist/ui/tui/store.d.ts +32 -0
  246. package/dist/ui/tui/store.d.ts.map +1 -0
  247. package/dist/ui/tui/store.js +62 -0
  248. package/dist/ui/tui/store.js.map +1 -0
  249. package/dist/ui/tui/tui-app.d.ts +21 -0
  250. package/dist/ui/tui/tui-app.d.ts.map +1 -0
  251. package/dist/ui/tui/tui-app.js +643 -0
  252. package/dist/ui/tui/tui-app.js.map +1 -0
  253. package/dist/ui/tui/view.d.ts +29 -0
  254. package/dist/ui/tui/view.d.ts.map +1 -0
  255. package/dist/ui/tui/view.js +255 -0
  256. package/dist/ui/tui/view.js.map +1 -0
  257. package/dist/version.d.ts +5 -0
  258. package/dist/version.d.ts.map +1 -0
  259. package/dist/version.js +5 -0
  260. package/dist/version.js.map +1 -0
  261. 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,2 @@
1
+ export { DaemonSupervisor as DesktopDaemonSupervisor, type DaemonOwnership as DesktopDaemonOwnership, type DaemonSupervisorOptions as DesktopDaemonSupervisorOptions, } from "../daemon/supervisor.js";
2
+ //# sourceMappingURL=daemon-supervisor.d.ts.map
@@ -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,2 @@
1
+ export { DaemonSupervisor as DesktopDaemonSupervisor, } from "../daemon/supervisor.js";
2
+ //# sourceMappingURL=daemon-supervisor.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/desktop/main.ts"],"names":[],"mappings":""}