@zenbujs/core 0.0.5 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/{advice-config-QYB2qEd_.mjs → advice-config-DXSIo0sg.mjs} +40 -39
  2. package/dist/advice.d.mts +8 -8
  3. package/dist/advice.mjs +2 -2
  4. package/dist/{base-window-BbFRRhKP.mjs → base-window-BxBZ2md_.mjs} +51 -7
  5. package/dist/{transforms-CuTODvDx.d.mts → build-config-Dzg2frpk.d.mts} +98 -28
  6. package/dist/build-config-pWdmLnrk.mjs +53 -0
  7. package/dist/{build-electron-CNJ0dLND.mjs → build-electron-Dsbb1EMl.mjs} +308 -120
  8. package/dist/{build-source-C2puqEVr.mjs → build-source-d1J3shV8.mjs} +62 -27
  9. package/dist/cli/bin.mjs +7 -7
  10. package/dist/cli/build.d.mts +2 -2
  11. package/dist/cli/build.mjs +2 -3
  12. package/dist/cli/resolve-config.mjs +1 -1
  13. package/dist/{cli-C3R1LBMY.mjs → cli-kL6mPgBE.mjs} +2 -2
  14. package/dist/config.d.mts +3 -3
  15. package/dist/config.mjs +2 -3
  16. package/dist/{db-xjvahRFJ.mjs → db-Bc292RYo.mjs} +2 -2
  17. package/dist/db.d.mts +1 -1
  18. package/dist/dev-B2emj0HZ.mjs +301 -0
  19. package/dist/env-bootstrap.d.mts +1 -1
  20. package/dist/events.d.mts +19 -0
  21. package/dist/events.mjs +1 -0
  22. package/dist/host-version-BIrF8tX7.mjs +65 -0
  23. package/dist/index-CVF768Xs.d.mts +783 -0
  24. package/dist/index.d.mts +5 -6
  25. package/dist/index.mjs +2 -2
  26. package/dist/installing-preload.cjs +60 -0
  27. package/dist/launcher.mjs +2615 -122
  28. package/dist/{link-c0_aLWQ3.mjs → link-glX89NV5.mjs} +215 -89
  29. package/dist/{load-config-xMf2wxH8.mjs → load-config-C4Oe2qZO.mjs} +5 -1
  30. package/dist/loaders/zenbu.mjs +102 -0
  31. package/dist/node-loader.mjs +1 -1
  32. package/dist/{publish-source-Dill72NS.mjs → publish-source-Dq2c0iOw.mjs} +2 -2
  33. package/dist/react.d.mts +55 -6
  34. package/dist/react.mjs +116 -5
  35. package/dist/registry-CMp8FYgS.d.mts +47 -0
  36. package/dist/registry-generated.d.mts +26 -0
  37. package/dist/registry-generated.mjs +1 -0
  38. package/dist/registry.d.mts +2 -2
  39. package/dist/{reloader-DzEO8kJr.mjs → reloader-B22UiNA2.mjs} +2 -4
  40. package/dist/{renderer-host-Cau9JK0v.mjs → renderer-host-DD16MXhI.mjs} +152 -43
  41. package/dist/{rpc-JfGv-Wuw.mjs → rpc-C4_NQmpT.mjs} +5 -4
  42. package/dist/{runtime-pCeVzj--.d.mts → runtime-BQWntcOb.d.mts} +85 -48
  43. package/dist/runtime.d.mts +2 -2
  44. package/dist/runtime.mjs +139 -83
  45. package/dist/{schema-Dl85YjXW.d.mts → schema-CjrMVk36.d.mts} +3 -3
  46. package/dist/schema.d.mts +1 -1
  47. package/dist/schema.mjs +1 -1
  48. package/dist/{server-y3PPbh3l.mjs → server-CZLMF8Dj.mjs} +1 -3
  49. package/dist/services/default.d.mts +3 -3
  50. package/dist/services/default.mjs +14 -13
  51. package/dist/services/index.d.mts +2 -280
  52. package/dist/services/index.mjs +8 -7
  53. package/dist/setup-gate.d.mts +1 -1
  54. package/dist/setup-gate.mjs +123 -24
  55. package/dist/{transform-CmFYPmt8.mjs → transform-BzrwkEdf.mjs} +22 -916
  56. package/dist/updater-BtB_Ki1r.mjs +1011 -0
  57. package/dist/{vite-plugins-Do7liKi_.mjs → vite-plugins-tt6KAtyE.mjs} +26 -25
  58. package/dist/vite.d.mts +3 -3
  59. package/dist/vite.mjs +1 -1
  60. package/dist/{window-o2NGUsIb.mjs → window-YFKvAM0l.mjs} +30 -16
  61. package/package.json +17 -4
  62. package/dist/build-config-C3a-o3_B.mjs +0 -23
  63. package/dist/dev-Dazhu66l.mjs +0 -85
  64. package/dist/registry-eX6e2oql.d.mts +0 -61
  65. package/dist/transforms-htxfTwsY.mjs +0 -47
  66. /package/dist/{config-DXRCDUxG.mjs → config-BK78JDRI.mjs} +0 -0
  67. /package/dist/{env-bootstrap-DW2hVhSO.d.mts → env-bootstrap-rTs8KR3-.d.mts} +0 -0
  68. /package/dist/{index-M_lSNBrq.d.mts → index-DeDxePAa.d.mts} +0 -0
  69. /package/dist/{mirror-sync-PDzxhf1w.mjs → mirror-sync-pYU6f3-c.mjs} +0 -0
  70. /package/dist/{monorepo-3avKJwzJ.mjs → monorepo-Dct-kkbQ.mjs} +0 -0
  71. /package/dist/{node-_8xShqxr.mjs → node-BhfLKYCi.mjs} +0 -0
  72. /package/dist/{setup-gate-Dcy8gGPJ.d.mts → setup-gate-BQq0QgZH.d.mts} +0 -0
@@ -0,0 +1,783 @@
1
+ import { i as Service, t as CleanupReason } from "./runtime-BQWntcOb.mjs";
2
+ import { c as EffectFieldNode, d as KyjuError, l as FieldNode, r as createRouter, t as Db } from "./index-DeDxePAa.mjs";
3
+ import { n as ResolvedEvents, t as ResolvedDbRoot } from "./registry-CMp8FYgS.mjs";
4
+ import http from "node:http";
5
+ import { WebSocket, WebSocketServer } from "ws";
6
+ import { ViteDevServer } from "vite";
7
+ import * as Effect from "effect/Effect";
8
+ import { BaseWindow, WebPreferences } from "electron";
9
+ import * as _$stream from "stream";
10
+
11
+ //#region src/services/server.d.ts
12
+ type UpgradeHandler = (req: http.IncomingMessage, socket: _$stream.Duplex, head: Buffer) => boolean;
13
+ declare const ServerService_base: (abstract new () => {
14
+ ctx: {};
15
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
16
+ evaluate(): void | Promise<void>;
17
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
18
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
19
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
20
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
21
+ }) & {
22
+ key: "server";
23
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
24
+ key: string;
25
+ })>;
26
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
27
+ key: string;
28
+ })> = {}>(config: {
29
+ key: TKey;
30
+ deps?: TDeps;
31
+ }): (abstract new () => {
32
+ ctx: { [K in keyof TDeps]: TDeps[K] extends infer T ? T extends TDeps[K] ? T extends (abstract new (...args: any[]) => Service) & {
33
+ key: string;
34
+ } ? InstanceType<T> : unknown : never : never };
35
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
36
+ evaluate(): void | Promise<void>;
37
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
38
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
39
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
40
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
41
+ }) & {
42
+ key: TKey;
43
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
44
+ key: string;
45
+ })>;
46
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
47
+ key: string;
48
+ })> = {}>(config: {
49
+ key: TKey;
50
+ deps?: TDeps;
51
+ }): /*elided*/any;
52
+ };
53
+ };
54
+ declare class ServerService extends ServerService_base {
55
+ server: http.Server | null;
56
+ wss: WebSocketServer | null;
57
+ port: number;
58
+ authToken: string;
59
+ private upgradeHandlers;
60
+ addUpgradeHandler(handler: UpgradeHandler): () => void;
61
+ evaluate(): Promise<void>;
62
+ private isAuthorizedUpgrade;
63
+ }
64
+ //#endregion
65
+ //#region src/services/reloader.d.ts
66
+ interface ReloaderEntry {
67
+ id: string;
68
+ root: string;
69
+ url: string;
70
+ port: number;
71
+ viteServer: ViteDevServer;
72
+ }
73
+ declare const ReloaderService_base: (abstract new () => {
74
+ ctx: {};
75
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
76
+ evaluate(): void | Promise<void>;
77
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
78
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
79
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
80
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
81
+ }) & {
82
+ key: "reloader";
83
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
84
+ key: string;
85
+ })>;
86
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
87
+ key: string;
88
+ })> = {}>(config: {
89
+ key: TKey;
90
+ deps?: TDeps;
91
+ }): (abstract new () => {
92
+ ctx: { [K in keyof TDeps]: TDeps[K] extends infer T ? T extends TDeps[K] ? T extends (abstract new (...args: any[]) => Service) & {
93
+ key: string;
94
+ } ? InstanceType<T> : unknown : never : never };
95
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
96
+ evaluate(): void | Promise<void>;
97
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
98
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
99
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
100
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
101
+ }) & {
102
+ key: TKey;
103
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
104
+ key: string;
105
+ })>;
106
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
107
+ key: string;
108
+ })> = {}>(config: {
109
+ key: TKey;
110
+ deps?: TDeps;
111
+ }): /*elided*/any;
112
+ };
113
+ };
114
+ declare class ReloaderService extends ReloaderService_base {
115
+ private servers;
116
+ create(id: string, root: string, configFile?: string | false): Promise<ReloaderEntry>;
117
+ get(id: string): ReloaderEntry | undefined;
118
+ remove(id: string): Promise<void>;
119
+ evaluate(): void;
120
+ }
121
+ //#endregion
122
+ //#region src/services/http.d.ts
123
+ type ConnectedCallback = (id: string, ws: WebSocket) => void;
124
+ type DisconnectedCallback = (id: string) => void;
125
+ type RequestHandler = (req: http.IncomingMessage, res: http.ServerResponse) => void;
126
+ declare const HttpService_base: (abstract new () => {
127
+ ctx: {
128
+ server: ServerService;
129
+ reloader: ReloaderService;
130
+ };
131
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
132
+ evaluate(): void | Promise<void>;
133
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
134
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
135
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
136
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
137
+ }) & {
138
+ key: "http";
139
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
140
+ key: string;
141
+ })>;
142
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
143
+ key: string;
144
+ })> = {}>(config: {
145
+ key: TKey;
146
+ deps?: TDeps;
147
+ }): (abstract new () => {
148
+ ctx: { [K in keyof TDeps]: TDeps[K] extends infer T ? T extends TDeps[K] ? T extends (abstract new (...args: any[]) => Service) & {
149
+ key: string;
150
+ } ? InstanceType<T> : unknown : never : never };
151
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
152
+ evaluate(): void | Promise<void>;
153
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
154
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
155
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
156
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
157
+ }) & {
158
+ key: TKey;
159
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
160
+ key: string;
161
+ })>;
162
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
163
+ key: string;
164
+ })> = {}>(config: {
165
+ key: TKey;
166
+ deps?: TDeps;
167
+ }): /*elided*/any;
168
+ };
169
+ };
170
+ declare class HttpService extends HttpService_base {
171
+ connectedCallbacks: ConnectedCallback[];
172
+ disconnectedCallbacks: DisconnectedCallback[];
173
+ activeConnections: Map<string, WebSocket>;
174
+ private requestHandlers;
175
+ get port(): number;
176
+ get authToken(): string;
177
+ addRequestHandler(prefix: string, handler: RequestHandler): () => void;
178
+ onConnected(cb: ConnectedCallback): () => void;
179
+ onDisconnected(cb: DisconnectedCallback): () => void;
180
+ evaluate(): void;
181
+ }
182
+ //#endregion
183
+ //#region src/services/db.d.ts
184
+ type EffectSectionProxy<S> = { [K in keyof S]: EffectFieldNode<S[K]> };
185
+ type SectionProxy<S> = { [K in keyof S]: FieldNode<S[K]> };
186
+ type Root = ResolvedDbRoot;
187
+ type Plugin$1 = Root extends {
188
+ plugin: infer P;
189
+ } ? P : never;
190
+ type SectionedEffectClient = {
191
+ readRoot(): Root;
192
+ update(fn: (root: Root) => void | Root): Effect.Effect<void, KyjuError>;
193
+ createBlob(data: Uint8Array, hot?: boolean): Effect.Effect<string, KyjuError>;
194
+ deleteBlob(blobId: string): Effect.Effect<void, KyjuError>;
195
+ getBlobData(blobId: string): Effect.Effect<Uint8Array | null, KyjuError>;
196
+ plugin: { [K in keyof Plugin$1]: EffectSectionProxy<Plugin$1[K]> };
197
+ };
198
+ type SectionedClient = {
199
+ readRoot(): Root;
200
+ update(fn: (root: Root) => void | Root): Promise<void>;
201
+ createBlob(data: Uint8Array, hot?: boolean): Promise<string>;
202
+ deleteBlob(blobId: string): Promise<void>;
203
+ getBlobData(blobId: string): Promise<Uint8Array | null>;
204
+ plugin: { [K in keyof Plugin$1]: SectionProxy<Plugin$1[K]> };
205
+ };
206
+ declare const DbService_base: (abstract new () => {
207
+ ctx: {
208
+ http: HttpService;
209
+ };
210
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
211
+ evaluate(): void | Promise<void>;
212
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
213
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
214
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
215
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
216
+ }) & {
217
+ key: "db";
218
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
219
+ key: string;
220
+ })>;
221
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
222
+ key: string;
223
+ })> = {}>(config: {
224
+ key: TKey;
225
+ deps?: TDeps;
226
+ }): (abstract new () => {
227
+ ctx: { [K in keyof TDeps]: TDeps[K] extends infer T ? T extends TDeps[K] ? T extends (abstract new (...args: any[]) => Service) & {
228
+ key: string;
229
+ } ? InstanceType<T> : unknown : never : never };
230
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
231
+ evaluate(): void | Promise<void>;
232
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
233
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
234
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
235
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
236
+ }) & {
237
+ key: TKey;
238
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
239
+ key: string;
240
+ })>;
241
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
242
+ key: string;
243
+ })> = {}>(config: {
244
+ key: TKey;
245
+ deps?: TDeps;
246
+ }): /*elided*/any;
247
+ };
248
+ };
249
+ declare class DbService extends DbService_base {
250
+ db: Db | null;
251
+ dbRouter: ReturnType<typeof createRouter> | null;
252
+ private sectionsHash;
253
+ private _dbPath;
254
+ /**
255
+ * Resolved DB path. Throws if accessed before `evaluate()` has run — the
256
+ * service contract guarantees deps are evaluated before dependents, so any
257
+ * access from a dependent service or RPC handler is safe.
258
+ */
259
+ get dbPath(): string;
260
+ get client(): SectionedClient;
261
+ get effectClient(): SectionedEffectClient;
262
+ /**
263
+ * Drain kyju's lagged-persistence queue. Safe to call anytime; idempotent
264
+ * when nothing is pending. Used by service teardown (effect cleanup) so
265
+ * shutdown / hot-reload don't lose in-memory writes.
266
+ */
267
+ flush(): Promise<void>;
268
+ /**
269
+ * Flush + release the kyju cross-process lock at `<dbPath>/.lock`.
270
+ * Called on service teardown so a subsequent process can open the DB
271
+ * without seeing a stale lock. Idempotent.
272
+ */
273
+ close(): Promise<void>;
274
+ evaluate(): Promise<void>;
275
+ }
276
+ //#endregion
277
+ //#region src/services/view-registry.d.ts
278
+ interface ViewEntry {
279
+ type: string;
280
+ url: string;
281
+ port: number;
282
+ ownsServer: boolean;
283
+ meta?: {
284
+ kind?: string;
285
+ sidebar?: boolean;
286
+ bottomPanel?: boolean;
287
+ label?: string;
288
+ };
289
+ }
290
+ declare const ViewRegistryService_base: (abstract new () => {
291
+ ctx: {
292
+ reloader: ReloaderService;
293
+ db: DbService;
294
+ };
295
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
296
+ evaluate(): void | Promise<void>;
297
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
298
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
299
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
300
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
301
+ }) & {
302
+ key: "view-registry";
303
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
304
+ key: string;
305
+ })>;
306
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
307
+ key: string;
308
+ })> = {}>(config: {
309
+ key: TKey;
310
+ deps?: TDeps;
311
+ }): (abstract new () => {
312
+ ctx: { [K in keyof TDeps]: TDeps[K] extends infer T ? T extends TDeps[K] ? T extends (abstract new (...args: any[]) => Service) & {
313
+ key: string;
314
+ } ? InstanceType<T> : unknown : never : never };
315
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
316
+ evaluate(): void | Promise<void>;
317
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
318
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
319
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
320
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
321
+ }) & {
322
+ key: TKey;
323
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
324
+ key: string;
325
+ })>;
326
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
327
+ key: string;
328
+ })> = {}>(config: {
329
+ key: TKey;
330
+ deps?: TDeps;
331
+ }): /*elided*/any;
332
+ };
333
+ };
334
+ declare class ViewRegistryService extends ViewRegistryService_base {
335
+ private views;
336
+ private manifestIcons;
337
+ register(type: string, root: string, configFile?: string | false, meta?: {
338
+ kind?: string;
339
+ sidebar?: boolean;
340
+ bottomPanel?: boolean;
341
+ label?: string;
342
+ }): Promise<ViewEntry>;
343
+ registerAlias(type: string, reloaderId: string, pathPrefix: string, meta?: {
344
+ kind?: string;
345
+ sidebar?: boolean;
346
+ bottomPanel?: boolean;
347
+ label?: string;
348
+ }): ViewEntry;
349
+ unregister(type: string): Promise<void>;
350
+ get(type: string): ViewEntry | undefined;
351
+ evaluate(): void;
352
+ private loadManifestIcons;
353
+ private syncToDb;
354
+ }
355
+ //#endregion
356
+ //#region src/services/renderer-host.d.ts
357
+ declare const RendererHostService_base: (abstract new () => {
358
+ ctx: {
359
+ reloader: ReloaderService;
360
+ viewRegistry: ViewRegistryService;
361
+ };
362
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
363
+ evaluate(): void | Promise<void>;
364
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
365
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
366
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
367
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
368
+ }) & {
369
+ key: "renderer-host";
370
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
371
+ key: string;
372
+ })>;
373
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
374
+ key: string;
375
+ })> = {}>(config: {
376
+ key: TKey;
377
+ deps?: TDeps;
378
+ }): (abstract new () => {
379
+ ctx: { [K in keyof TDeps]: TDeps[K] extends infer T ? T extends TDeps[K] ? T extends (abstract new (...args: any[]) => Service) & {
380
+ key: string;
381
+ } ? InstanceType<T> : unknown : never : never };
382
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
383
+ evaluate(): void | Promise<void>;
384
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
385
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
386
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
387
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
388
+ }) & {
389
+ key: TKey;
390
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
391
+ key: string;
392
+ })>;
393
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
394
+ key: string;
395
+ })> = {}>(config: {
396
+ key: TKey;
397
+ deps?: TDeps;
398
+ }): /*elided*/any;
399
+ };
400
+ };
401
+ declare class RendererHostService extends RendererHostService_base {
402
+ url: string;
403
+ port: number;
404
+ evaluate(): Promise<void>;
405
+ }
406
+ //#endregion
407
+ //#region src/services/base-window.d.ts
408
+ declare const MAIN_WINDOW_ID = "main";
409
+ type WindowBounds = {
410
+ x: number;
411
+ y: number;
412
+ width: number;
413
+ height: number;
414
+ };
415
+ declare const BaseWindowService_base: (abstract new () => {
416
+ ctx: {
417
+ db: DbService;
418
+ };
419
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
420
+ evaluate(): void | Promise<void>;
421
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
422
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
423
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
424
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
425
+ }) & {
426
+ key: "base-window";
427
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
428
+ key: string;
429
+ })>;
430
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
431
+ key: string;
432
+ })> = {}>(config: {
433
+ key: TKey;
434
+ deps?: TDeps;
435
+ }): (abstract new () => {
436
+ ctx: { [K in keyof TDeps]: TDeps[K] extends infer T ? T extends TDeps[K] ? T extends (abstract new (...args: any[]) => Service) & {
437
+ key: string;
438
+ } ? InstanceType<T> : unknown : never : never };
439
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
440
+ evaluate(): void | Promise<void>;
441
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
442
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
443
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
444
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
445
+ }) & {
446
+ key: TKey;
447
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
448
+ key: string;
449
+ })>;
450
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
451
+ key: string;
452
+ })> = {}>(config: {
453
+ key: TKey;
454
+ deps?: TDeps;
455
+ }): /*elided*/any;
456
+ };
457
+ };
458
+ declare class BaseWindowService extends BaseWindowService_base {
459
+ windows: Map<string, BaseWindow>;
460
+ private get bootWindows();
461
+ private set bootWindows(value);
462
+ private getZenWidth;
463
+ getWindowId(win: BaseWindow): string | undefined;
464
+ createWindow(opts?: Partial<WindowBounds> & {
465
+ windowId?: string;
466
+ show?: boolean;
467
+ }): {
468
+ win: BaseWindow;
469
+ windowId: string;
470
+ };
471
+ evaluate(): void;
472
+ }
473
+ //#endregion
474
+ //#region src/services/rpc.d.ts
475
+ type EmitProxy<T> = { [K in keyof T]: T[K] extends Record<string, any> ? EmitProxy<T[K]> & ((data: T[K]) => void) : (data: T[K]) => void };
476
+ declare const RpcService_base: (abstract new () => {
477
+ ctx: {
478
+ http: HttpService;
479
+ };
480
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
481
+ evaluate(): void | Promise<void>;
482
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
483
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
484
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
485
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
486
+ }) & {
487
+ key: "rpc";
488
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
489
+ key: string;
490
+ })>;
491
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
492
+ key: string;
493
+ })> = {}>(config: {
494
+ key: TKey;
495
+ deps?: TDeps;
496
+ }): (abstract new () => {
497
+ ctx: { [K in keyof TDeps]: TDeps[K] extends infer T ? T extends TDeps[K] ? T extends (abstract new (...args: any[]) => Service) & {
498
+ key: string;
499
+ } ? InstanceType<T> : unknown : never : never };
500
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
501
+ evaluate(): void | Promise<void>;
502
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
503
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
504
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
505
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
506
+ }) & {
507
+ key: TKey;
508
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
509
+ key: string;
510
+ })>;
511
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
512
+ key: string;
513
+ })> = {}>(config: {
514
+ key: TKey;
515
+ deps?: TDeps;
516
+ }): /*elided*/any;
517
+ };
518
+ };
519
+ declare class RpcService extends RpcService_base {
520
+ private _emit;
521
+ get emit(): EmitProxy<ResolvedEvents>;
522
+ evaluate(): void;
523
+ }
524
+ //#endregion
525
+ //#region src/services/window.d.ts
526
+ declare const WindowService_base: (abstract new () => {
527
+ ctx: {
528
+ baseWindow: BaseWindowService;
529
+ viewRegistry: ViewRegistryService;
530
+ http: HttpService;
531
+ rendererHost: RendererHostService;
532
+ };
533
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
534
+ evaluate(): void | Promise<void>;
535
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
536
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
537
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
538
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
539
+ }) & {
540
+ key: "window";
541
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
542
+ key: string;
543
+ })>;
544
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
545
+ key: string;
546
+ })> = {}>(config: {
547
+ key: TKey;
548
+ deps?: TDeps;
549
+ }): (abstract new () => {
550
+ ctx: { [K in keyof TDeps]: TDeps[K] extends infer T ? T extends TDeps[K] ? T extends (abstract new (...args: any[]) => Service) & {
551
+ key: string;
552
+ } ? InstanceType<T> : unknown : never : never };
553
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
554
+ evaluate(): void | Promise<void>;
555
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
556
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
557
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
558
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
559
+ }) & {
560
+ key: TKey;
561
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
562
+ key: string;
563
+ })>;
564
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
565
+ key: string;
566
+ })> = {}>(config: {
567
+ key: TKey;
568
+ deps?: TDeps;
569
+ }): /*elided*/any;
570
+ };
571
+ };
572
+ declare class WindowService extends WindowService_base {
573
+ private mounted;
574
+ evaluate(): void;
575
+ openView(args: {
576
+ type: string;
577
+ windowId?: string;
578
+ query?: Record<string, string | number | boolean | null | undefined>;
579
+ view?: {
580
+ backgroundColor?: string;
581
+ webPreferences?: WebPreferences;
582
+ };
583
+ }): Promise<{
584
+ windowId: string;
585
+ }>;
586
+ focusWindow(windowId: string): Promise<{
587
+ ok: true;
588
+ }>;
589
+ pickFiles(): Promise<string[] | null>;
590
+ pickDirectory(): Promise<string | null>;
591
+ openExternal(url: string): Promise<void>;
592
+ openPath(filePath: string): Promise<void>;
593
+ copyToClipboard(text: string): void;
594
+ }
595
+ //#endregion
596
+ //#region src/shared/pm-install.d.ts
597
+ /**
598
+ * Bundled-toolchain `<pm> install` helpers.
599
+ *
600
+ * Imported by both:
601
+ * - `packages/core/src/launcher.ts` (tsdown inlines this into
602
+ * `dist/launcher.mjs`; the launcher cannot `import "@zenbujs/core"`)
603
+ * - `packages/core/src/services/updater.ts` (resolved through normal
604
+ * `@zenbujs/core/...` resolution at runtime)
605
+ *
606
+ * Both call sites operate on the apps-dir (`~/.zenbu/apps/<name>/`) and
607
+ * the .app's `Resources/` (where `provisionToolchain` staged
608
+ * `bun`, `pnpm`, etc.). The launcher kicks off the FIRST install at
609
+ * launch; the updater service runs the SAME logic when an `update()`
610
+ * lockfile-diff says deps drifted.
611
+ */
612
+ type PackageManagerSpec = {
613
+ type: "pnpm";
614
+ version: string;
615
+ } | {
616
+ type: "npm";
617
+ version: string;
618
+ } | {
619
+ type: "yarn";
620
+ version: string;
621
+ } | {
622
+ type: "bun";
623
+ version: string;
624
+ };
625
+ //#endregion
626
+ //#region src/services/updater.d.ts
627
+ type UpdaterPhase = {
628
+ phase: "idle";
629
+ } | {
630
+ phase: "checking";
631
+ } | {
632
+ phase: "fetching";
633
+ loaded?: number;
634
+ total?: number;
635
+ ratio?: number;
636
+ } | {
637
+ phase: "resolving";
638
+ depthConsidered: number;
639
+ } | {
640
+ phase: "installing";
641
+ pm: string;
642
+ line?: string;
643
+ loaded?: number;
644
+ total?: number;
645
+ ratio?: number;
646
+ } | {
647
+ phase: "applied";
648
+ sha: string;
649
+ reranInstall: boolean;
650
+ } | {
651
+ phase: "up-to-date";
652
+ sha: string;
653
+ } | {
654
+ phase: "incompatible";
655
+ remoteHead: string;
656
+ reason: string;
657
+ } | {
658
+ phase: "dirty-tree";
659
+ appsDir: string;
660
+ } | {
661
+ phase: "error";
662
+ message: string;
663
+ };
664
+ interface UpdaterInfo {
665
+ mode: "bundle" | "dev";
666
+ appsDir: string | null;
667
+ hostVersion: string | null;
668
+ currentSha: string | null;
669
+ mirror: {
670
+ url: string;
671
+ branch: string;
672
+ } | null;
673
+ packageManager: PackageManagerSpec | null;
674
+ }
675
+ interface UpdaterCheckResult {
676
+ status: "ok" | "dev-mode" | "error" | "no-mirror" | "no-host-version";
677
+ currentSha: string | null;
678
+ targetSha: string | null;
679
+ tipSha: string | null;
680
+ hasUpdate: boolean;
681
+ incompatibleHead: boolean;
682
+ error?: string;
683
+ }
684
+ interface UpdaterUpdateResult {
685
+ status: "applied" | "up-to-date" | "incompatible" | "dirty-tree" | "dev-mode" | "no-mirror" | "no-host-version" | "in-progress" | "error";
686
+ appliedSha?: string;
687
+ reranInstall?: boolean;
688
+ error?: string;
689
+ }
690
+ declare const UpdaterService_base: (abstract new () => {
691
+ ctx: {};
692
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
693
+ evaluate(): void | Promise<void>;
694
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
695
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
696
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
697
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
698
+ }) & {
699
+ key: "updater";
700
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
701
+ key: string;
702
+ })>;
703
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
704
+ key: string;
705
+ })> = {}>(config: {
706
+ key: TKey;
707
+ deps?: TDeps;
708
+ }): (abstract new () => {
709
+ ctx: { [K in keyof TDeps]: TDeps[K] extends infer T ? T extends TDeps[K] ? T extends (abstract new (...args: any[]) => Service) & {
710
+ key: string;
711
+ } ? InstanceType<T> : unknown : never : never };
712
+ __setupCleanups: Map<string, (reason: CleanupReason) => void | Promise<void>>;
713
+ evaluate(): void | Promise<void>;
714
+ setup(key: string, fn: () => void | ((reason: CleanupReason) => void | Promise<void>)): void;
715
+ trace<T>(_name: string, fn: () => T | Promise<T>, _meta?: Record<string, unknown>): Promise<T>;
716
+ traceSync<T>(_name: string, fn: () => T, _meta?: Record<string, unknown>): T;
717
+ __cleanupAllSetups(reason?: CleanupReason): Promise<void>;
718
+ }) & {
719
+ key: TKey;
720
+ deps: Record<string, string | ((abstract new (...args: any[]) => Service) & {
721
+ key: string;
722
+ })>;
723
+ create<TKey extends string, TDeps extends Record<string, string | ((abstract new (...args: any[]) => Service) & {
724
+ key: string;
725
+ })> = {}>(config: {
726
+ key: TKey;
727
+ deps?: TDeps;
728
+ }): /*elided*/any;
729
+ };
730
+ };
731
+ declare class UpdaterService extends UpdaterService_base {
732
+ status: UpdaterPhase;
733
+ private listeners;
734
+ private inflight;
735
+ private pollDisposers;
736
+ evaluate(): void;
737
+ /**
738
+ * Returns the current `UpdaterPhase`. Cheap; safe to poll from the
739
+ * renderer at ~250ms cadence to drive a progress UI while
740
+ * `update()` runs.
741
+ */
742
+ getStatus(): Promise<UpdaterPhase>;
743
+ /**
744
+ * Synchronous-ish snapshot of the updater's environment. Doesn't
745
+ * touch the network. `currentSha` is read off-disk so very recent
746
+ * checkouts may lag by a few ms; callers that care about exactness
747
+ * should call `check()` first.
748
+ */
749
+ getInfo(): Promise<UpdaterInfo>;
750
+ /**
751
+ * Fetch + resolve target sha without touching the working tree. Use
752
+ * this for "is there an update?" UI. Cheap enough to call on a timer.
753
+ */
754
+ check(): Promise<UpdaterCheckResult>;
755
+ /**
756
+ * Apply the latest compatible commit. Pauses HMR while git operations
757
+ * and `<pm> install` run, so the renderer never sees a half-applied
758
+ * tree. Refuses when the apps-dir has uncommitted edits.
759
+ */
760
+ update(opts?: {
761
+ dryRun?: boolean;
762
+ }): Promise<UpdaterUpdateResult>;
763
+ /**
764
+ * Subscribe to phase transitions. Fires synchronously with the
765
+ * current status on attach so callers can render initial state
766
+ * without a separate read.
767
+ */
768
+ onChange(cb: (s: UpdaterPhase) => void): () => void;
769
+ /**
770
+ * Convenience polling loop. Calls `check()` every `intervalMs` and,
771
+ * when `autoApply` is set, invokes `update()` whenever a new
772
+ * compatible target is found. Returns a disposer.
773
+ */
774
+ startPolling(intervalMs: number, opts?: {
775
+ autoApply?: boolean;
776
+ }): () => void;
777
+ private loadContext;
778
+ private setStatus;
779
+ private makeReporter;
780
+ private makeInstallReporter;
781
+ }
782
+ //#endregion
783
+ export { MAIN_WINDOW_ID as a, DbService as c, ServerService as d, BaseWindowService as i, HttpService as l, WindowService as n, RendererHostService as o, RpcService as r, ViewRegistryService as s, UpdaterService as t, ReloaderService as u };