@av-pi-studio/server 0.0.72 → 0.0.74

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 (54) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/agent/pi-home.d.ts +33 -0
  3. package/dist/agent/pi-home.d.ts.map +1 -0
  4. package/dist/agent/pi-home.js +49 -0
  5. package/dist/agent/pi-home.js.map +1 -0
  6. package/dist/agent/provider-registry.d.ts +6 -0
  7. package/dist/agent/provider-registry.d.ts.map +1 -1
  8. package/dist/agent/provider-registry.js +7 -14
  9. package/dist/agent/provider-registry.js.map +1 -1
  10. package/dist/config/daemon-config.d.ts +39 -0
  11. package/dist/config/daemon-config.d.ts.map +1 -1
  12. package/dist/config/daemon-config.js +59 -1
  13. package/dist/config/daemon-config.js.map +1 -1
  14. package/dist/daemon/bootstrap.d.ts +4 -0
  15. package/dist/daemon/bootstrap.d.ts.map +1 -1
  16. package/dist/daemon/bootstrap.js +20 -0
  17. package/dist/daemon/bootstrap.js.map +1 -1
  18. package/dist/extensions/curated-packs.d.ts +70 -0
  19. package/dist/extensions/curated-packs.d.ts.map +1 -0
  20. package/dist/extensions/curated-packs.js +206 -0
  21. package/dist/extensions/curated-packs.js.map +1 -0
  22. package/dist/extensions/extensions-rpc.d.ts +15 -0
  23. package/dist/extensions/extensions-rpc.d.ts.map +1 -0
  24. package/dist/extensions/extensions-rpc.js +76 -0
  25. package/dist/extensions/extensions-rpc.js.map +1 -0
  26. package/dist/extensions/extensions-service.d.ts +60 -0
  27. package/dist/extensions/extensions-service.d.ts.map +1 -0
  28. package/dist/extensions/extensions-service.js +145 -0
  29. package/dist/extensions/extensions-service.js.map +1 -0
  30. package/dist/extensions/extensions-state.d.ts +490 -0
  31. package/dist/extensions/extensions-state.d.ts.map +1 -0
  32. package/dist/extensions/extensions-state.js +114 -0
  33. package/dist/extensions/extensions-state.js.map +1 -0
  34. package/dist/extensions/index.d.ts +5 -0
  35. package/dist/extensions/index.d.ts.map +1 -0
  36. package/dist/extensions/index.js +10 -0
  37. package/dist/extensions/index.js.map +1 -0
  38. package/dist/extensions/sync-executor.d.ts +55 -0
  39. package/dist/extensions/sync-executor.d.ts.map +1 -0
  40. package/dist/extensions/sync-executor.js +158 -0
  41. package/dist/extensions/sync-executor.js.map +1 -0
  42. package/dist/extensions/sync-planner.d.ts +62 -0
  43. package/dist/extensions/sync-planner.d.ts.map +1 -0
  44. package/dist/extensions/sync-planner.js +103 -0
  45. package/dist/extensions/sync-planner.js.map +1 -0
  46. package/dist/extensions/wire.d.ts +7 -0
  47. package/dist/extensions/wire.d.ts.map +1 -0
  48. package/dist/extensions/wire.js +51 -0
  49. package/dist/extensions/wire.js.map +1 -0
  50. package/dist/index.d.ts +1 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +3 -0
  53. package/dist/index.js.map +1 -1
  54. package/package.json +4 -4
@@ -0,0 +1,490 @@
1
+ import { z } from "zod";
2
+ import type { PersistedConfig } from "../config/daemon-config.js";
3
+ declare const extensionsStateSchema: z.ZodObject<{
4
+ version: z.ZodDefault<z.ZodLiteral<1>>;
5
+ piHomes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
6
+ offered: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
7
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
8
+ installedSpec: z.ZodString;
9
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
10
+ atVersion: z.ZodString;
11
+ at: z.ZodString;
12
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
13
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
14
+ installedSpec: z.ZodString;
15
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
16
+ atVersion: z.ZodString;
17
+ at: z.ZodString;
18
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
19
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
20
+ installedSpec: z.ZodString;
21
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
22
+ atVersion: z.ZodString;
23
+ at: z.ZodString;
24
+ }, z.ZodTypeAny, "passthrough">>>>;
25
+ failures: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
26
+ source: z.ZodString;
27
+ reason: z.ZodString;
28
+ message: z.ZodString;
29
+ attempts: z.ZodNumber;
30
+ at: z.ZodString;
31
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
32
+ source: z.ZodString;
33
+ reason: z.ZodString;
34
+ message: z.ZodString;
35
+ attempts: z.ZodNumber;
36
+ at: z.ZodString;
37
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
38
+ source: z.ZodString;
39
+ reason: z.ZodString;
40
+ message: z.ZodString;
41
+ attempts: z.ZodNumber;
42
+ at: z.ZodString;
43
+ }, z.ZodTypeAny, "passthrough">>>>;
44
+ lastSync: z.ZodOptional<z.ZodObject<{
45
+ at: z.ZodString;
46
+ outcome: z.ZodString;
47
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
48
+ at: z.ZodString;
49
+ outcome: z.ZodString;
50
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
51
+ at: z.ZodString;
52
+ outcome: z.ZodString;
53
+ }, z.ZodTypeAny, "passthrough">>>;
54
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
55
+ offered: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
56
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
57
+ installedSpec: z.ZodString;
58
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
59
+ atVersion: z.ZodString;
60
+ at: z.ZodString;
61
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
62
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
63
+ installedSpec: z.ZodString;
64
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
65
+ atVersion: z.ZodString;
66
+ at: z.ZodString;
67
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
68
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
69
+ installedSpec: z.ZodString;
70
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
71
+ atVersion: z.ZodString;
72
+ at: z.ZodString;
73
+ }, z.ZodTypeAny, "passthrough">>>>;
74
+ failures: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
75
+ source: z.ZodString;
76
+ reason: z.ZodString;
77
+ message: z.ZodString;
78
+ attempts: z.ZodNumber;
79
+ at: z.ZodString;
80
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
81
+ source: z.ZodString;
82
+ reason: z.ZodString;
83
+ message: z.ZodString;
84
+ attempts: z.ZodNumber;
85
+ at: z.ZodString;
86
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
87
+ source: z.ZodString;
88
+ reason: z.ZodString;
89
+ message: z.ZodString;
90
+ attempts: z.ZodNumber;
91
+ at: z.ZodString;
92
+ }, z.ZodTypeAny, "passthrough">>>>;
93
+ lastSync: z.ZodOptional<z.ZodObject<{
94
+ at: z.ZodString;
95
+ outcome: z.ZodString;
96
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
97
+ at: z.ZodString;
98
+ outcome: z.ZodString;
99
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
100
+ at: z.ZodString;
101
+ outcome: z.ZodString;
102
+ }, z.ZodTypeAny, "passthrough">>>;
103
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
104
+ offered: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
105
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
106
+ installedSpec: z.ZodString;
107
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
108
+ atVersion: z.ZodString;
109
+ at: z.ZodString;
110
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
111
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
112
+ installedSpec: z.ZodString;
113
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
114
+ atVersion: z.ZodString;
115
+ at: z.ZodString;
116
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
117
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
118
+ installedSpec: z.ZodString;
119
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
120
+ atVersion: z.ZodString;
121
+ at: z.ZodString;
122
+ }, z.ZodTypeAny, "passthrough">>>>;
123
+ failures: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
124
+ source: z.ZodString;
125
+ reason: z.ZodString;
126
+ message: z.ZodString;
127
+ attempts: z.ZodNumber;
128
+ at: z.ZodString;
129
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
130
+ source: z.ZodString;
131
+ reason: z.ZodString;
132
+ message: z.ZodString;
133
+ attempts: z.ZodNumber;
134
+ at: z.ZodString;
135
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
136
+ source: z.ZodString;
137
+ reason: z.ZodString;
138
+ message: z.ZodString;
139
+ attempts: z.ZodNumber;
140
+ at: z.ZodString;
141
+ }, z.ZodTypeAny, "passthrough">>>>;
142
+ lastSync: z.ZodOptional<z.ZodObject<{
143
+ at: z.ZodString;
144
+ outcome: z.ZodString;
145
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
146
+ at: z.ZodString;
147
+ outcome: z.ZodString;
148
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
149
+ at: z.ZodString;
150
+ outcome: z.ZodString;
151
+ }, z.ZodTypeAny, "passthrough">>>;
152
+ }, z.ZodTypeAny, "passthrough">>>>;
153
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
154
+ version: z.ZodDefault<z.ZodLiteral<1>>;
155
+ piHomes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
156
+ offered: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
157
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
158
+ installedSpec: z.ZodString;
159
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
160
+ atVersion: z.ZodString;
161
+ at: z.ZodString;
162
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
163
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
164
+ installedSpec: z.ZodString;
165
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
166
+ atVersion: z.ZodString;
167
+ at: z.ZodString;
168
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
169
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
170
+ installedSpec: z.ZodString;
171
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
172
+ atVersion: z.ZodString;
173
+ at: z.ZodString;
174
+ }, z.ZodTypeAny, "passthrough">>>>;
175
+ failures: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
176
+ source: z.ZodString;
177
+ reason: z.ZodString;
178
+ message: z.ZodString;
179
+ attempts: z.ZodNumber;
180
+ at: z.ZodString;
181
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
182
+ source: z.ZodString;
183
+ reason: z.ZodString;
184
+ message: z.ZodString;
185
+ attempts: z.ZodNumber;
186
+ at: z.ZodString;
187
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
188
+ source: z.ZodString;
189
+ reason: z.ZodString;
190
+ message: z.ZodString;
191
+ attempts: z.ZodNumber;
192
+ at: z.ZodString;
193
+ }, z.ZodTypeAny, "passthrough">>>>;
194
+ lastSync: z.ZodOptional<z.ZodObject<{
195
+ at: z.ZodString;
196
+ outcome: z.ZodString;
197
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
198
+ at: z.ZodString;
199
+ outcome: z.ZodString;
200
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
201
+ at: z.ZodString;
202
+ outcome: z.ZodString;
203
+ }, z.ZodTypeAny, "passthrough">>>;
204
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
205
+ offered: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
206
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
207
+ installedSpec: z.ZodString;
208
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
209
+ atVersion: z.ZodString;
210
+ at: z.ZodString;
211
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
212
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
213
+ installedSpec: z.ZodString;
214
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
215
+ atVersion: z.ZodString;
216
+ at: z.ZodString;
217
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
218
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
219
+ installedSpec: z.ZodString;
220
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
221
+ atVersion: z.ZodString;
222
+ at: z.ZodString;
223
+ }, z.ZodTypeAny, "passthrough">>>>;
224
+ failures: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
225
+ source: z.ZodString;
226
+ reason: z.ZodString;
227
+ message: z.ZodString;
228
+ attempts: z.ZodNumber;
229
+ at: z.ZodString;
230
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
231
+ source: z.ZodString;
232
+ reason: z.ZodString;
233
+ message: z.ZodString;
234
+ attempts: z.ZodNumber;
235
+ at: z.ZodString;
236
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
237
+ source: z.ZodString;
238
+ reason: z.ZodString;
239
+ message: z.ZodString;
240
+ attempts: z.ZodNumber;
241
+ at: z.ZodString;
242
+ }, z.ZodTypeAny, "passthrough">>>>;
243
+ lastSync: z.ZodOptional<z.ZodObject<{
244
+ at: z.ZodString;
245
+ outcome: z.ZodString;
246
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
247
+ at: z.ZodString;
248
+ outcome: z.ZodString;
249
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
250
+ at: z.ZodString;
251
+ outcome: z.ZodString;
252
+ }, z.ZodTypeAny, "passthrough">>>;
253
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
254
+ offered: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
255
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
256
+ installedSpec: z.ZodString;
257
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
258
+ atVersion: z.ZodString;
259
+ at: z.ZodString;
260
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
261
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
262
+ installedSpec: z.ZodString;
263
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
264
+ atVersion: z.ZodString;
265
+ at: z.ZodString;
266
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
267
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
268
+ installedSpec: z.ZodString;
269
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
270
+ atVersion: z.ZodString;
271
+ at: z.ZodString;
272
+ }, z.ZodTypeAny, "passthrough">>>>;
273
+ failures: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
274
+ source: z.ZodString;
275
+ reason: z.ZodString;
276
+ message: z.ZodString;
277
+ attempts: z.ZodNumber;
278
+ at: z.ZodString;
279
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
280
+ source: z.ZodString;
281
+ reason: z.ZodString;
282
+ message: z.ZodString;
283
+ attempts: z.ZodNumber;
284
+ at: z.ZodString;
285
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
286
+ source: z.ZodString;
287
+ reason: z.ZodString;
288
+ message: z.ZodString;
289
+ attempts: z.ZodNumber;
290
+ at: z.ZodString;
291
+ }, z.ZodTypeAny, "passthrough">>>>;
292
+ lastSync: z.ZodOptional<z.ZodObject<{
293
+ at: z.ZodString;
294
+ outcome: z.ZodString;
295
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
296
+ at: z.ZodString;
297
+ outcome: z.ZodString;
298
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
299
+ at: z.ZodString;
300
+ outcome: z.ZodString;
301
+ }, z.ZodTypeAny, "passthrough">>>;
302
+ }, z.ZodTypeAny, "passthrough">>>>;
303
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
304
+ version: z.ZodDefault<z.ZodLiteral<1>>;
305
+ piHomes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
306
+ offered: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
307
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
308
+ installedSpec: z.ZodString;
309
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
310
+ atVersion: z.ZodString;
311
+ at: z.ZodString;
312
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
313
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
314
+ installedSpec: z.ZodString;
315
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
316
+ atVersion: z.ZodString;
317
+ at: z.ZodString;
318
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
319
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
320
+ installedSpec: z.ZodString;
321
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
322
+ atVersion: z.ZodString;
323
+ at: z.ZodString;
324
+ }, z.ZodTypeAny, "passthrough">>>>;
325
+ failures: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
326
+ source: z.ZodString;
327
+ reason: z.ZodString;
328
+ message: z.ZodString;
329
+ attempts: z.ZodNumber;
330
+ at: z.ZodString;
331
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
332
+ source: z.ZodString;
333
+ reason: z.ZodString;
334
+ message: z.ZodString;
335
+ attempts: z.ZodNumber;
336
+ at: z.ZodString;
337
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
338
+ source: z.ZodString;
339
+ reason: z.ZodString;
340
+ message: z.ZodString;
341
+ attempts: z.ZodNumber;
342
+ at: z.ZodString;
343
+ }, z.ZodTypeAny, "passthrough">>>>;
344
+ lastSync: z.ZodOptional<z.ZodObject<{
345
+ at: z.ZodString;
346
+ outcome: z.ZodString;
347
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
348
+ at: z.ZodString;
349
+ outcome: z.ZodString;
350
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
351
+ at: z.ZodString;
352
+ outcome: z.ZodString;
353
+ }, z.ZodTypeAny, "passthrough">>>;
354
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
355
+ offered: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
356
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
357
+ installedSpec: z.ZodString;
358
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
359
+ atVersion: z.ZodString;
360
+ at: z.ZodString;
361
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
362
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
363
+ installedSpec: z.ZodString;
364
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
365
+ atVersion: z.ZodString;
366
+ at: z.ZodString;
367
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
368
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
369
+ installedSpec: z.ZodString;
370
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
371
+ atVersion: z.ZodString;
372
+ at: z.ZodString;
373
+ }, z.ZodTypeAny, "passthrough">>>>;
374
+ failures: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
375
+ source: z.ZodString;
376
+ reason: z.ZodString;
377
+ message: z.ZodString;
378
+ attempts: z.ZodNumber;
379
+ at: z.ZodString;
380
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
381
+ source: z.ZodString;
382
+ reason: z.ZodString;
383
+ message: z.ZodString;
384
+ attempts: z.ZodNumber;
385
+ at: z.ZodString;
386
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
387
+ source: z.ZodString;
388
+ reason: z.ZodString;
389
+ message: z.ZodString;
390
+ attempts: z.ZodNumber;
391
+ at: z.ZodString;
392
+ }, z.ZodTypeAny, "passthrough">>>>;
393
+ lastSync: z.ZodOptional<z.ZodObject<{
394
+ at: z.ZodString;
395
+ outcome: z.ZodString;
396
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
397
+ at: z.ZodString;
398
+ outcome: z.ZodString;
399
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
400
+ at: z.ZodString;
401
+ outcome: z.ZodString;
402
+ }, z.ZodTypeAny, "passthrough">>>;
403
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
404
+ offered: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
405
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
406
+ installedSpec: z.ZodString;
407
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
408
+ atVersion: z.ZodString;
409
+ at: z.ZodString;
410
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
411
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
412
+ installedSpec: z.ZodString;
413
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
414
+ atVersion: z.ZodString;
415
+ at: z.ZodString;
416
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
417
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
418
+ installedSpec: z.ZodString;
419
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
420
+ atVersion: z.ZodString;
421
+ at: z.ZodString;
422
+ }, z.ZodTypeAny, "passthrough">>>>;
423
+ failures: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
424
+ source: z.ZodString;
425
+ reason: z.ZodString;
426
+ message: z.ZodString;
427
+ attempts: z.ZodNumber;
428
+ at: z.ZodString;
429
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
430
+ source: z.ZodString;
431
+ reason: z.ZodString;
432
+ message: z.ZodString;
433
+ attempts: z.ZodNumber;
434
+ at: z.ZodString;
435
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
436
+ source: z.ZodString;
437
+ reason: z.ZodString;
438
+ message: z.ZodString;
439
+ attempts: z.ZodNumber;
440
+ at: z.ZodString;
441
+ }, z.ZodTypeAny, "passthrough">>>>;
442
+ lastSync: z.ZodOptional<z.ZodObject<{
443
+ at: z.ZodString;
444
+ outcome: z.ZodString;
445
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
446
+ at: z.ZodString;
447
+ outcome: z.ZodString;
448
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
449
+ at: z.ZodString;
450
+ outcome: z.ZodString;
451
+ }, z.ZodTypeAny, "passthrough">>>;
452
+ }, z.ZodTypeAny, "passthrough">>>>;
453
+ }, z.ZodTypeAny, "passthrough">>;
454
+ export type ExtensionsState = z.infer<typeof extensionsStateSchema>;
455
+ /** Per-pi-home slice — the sync planner's `state` input (task 004). */
456
+ export type PiHomeState = ExtensionsState["piHomes"][string];
457
+ export declare function extensionsStatePath(home: string): string;
458
+ /**
459
+ * Load `extensions-state.json`. Absent file → a valid empty state (`version: 1`, no pi-homes).
460
+ * Malformed JSON or a schema mismatch → the literal string `"unreadable"`, **never** an empty
461
+ * state and **never** a rewrite of the file — callers apply the spec's fail-safe (treat every
462
+ * manifest identity as already offered; wrong-and-quiet beats wrong-and-mutating).
463
+ */
464
+ export declare function loadExtensionsState(home: string): Promise<ExtensionsState | "unreadable">;
465
+ export declare function saveExtensionsState(home: string, state: ExtensionsState): Promise<void>;
466
+ /**
467
+ * The directory spawned agents actually receive as `PI_CODING_AGENT_DIR` — the state key
468
+ * everything in this feature is keyed on. Delegates entirely to {@link resolvePiAgentDir} (the one
469
+ * shared derivation with the spawn path in `agent/pi-home.ts`, which itself `~`-expands
470
+ * and absolutizes both non-default branches) and applies Pi's own default when neither an override
471
+ * nor `daemon.piHome` is set. No `resolve()` here: re-resolving an already-absolute path is a
472
+ * no-op for the two real branches, and applying it only to the default branch (as this function
473
+ * used to do to *both*) is exactly what let this key diverge from the spawn path for a relative or
474
+ * `~`-prefixed `daemon.piHome` — the two must derive from the same already-absolute value, not
475
+ * each apply their own normalization.
476
+ */
477
+ export declare function effectivePiHomeKey(config: PersistedConfig): string;
478
+ /**
479
+ * Pi's global `settings.json` at `<piHomeKey>/settings.json` — read-only, never written; every
480
+ * mutation goes through `pi install`. Absent file ⇒ empty `packages`. `ok: false` ⇒ malformed
481
+ * JSON, the caller must not act on a reality it can't read. Shared by `ExtensionsService` (the
482
+ * daemon path) and the CLI's `extensions list --local` (sprint-057/task-005) — one implementation,
483
+ * so the two can never read `settings.json` differently.
484
+ */
485
+ export declare function readPiSettingsPackages(piHomeKey: string): Promise<{
486
+ packages: unknown[];
487
+ ok: boolean;
488
+ }>;
489
+ export {};
490
+ //# sourceMappingURL=extensions-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions-state.d.ts","sourceRoot":"","sources":["../../src/extensions/extensions-state.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAkDlE,QAAA,MAAM,qBAAqB;;;;YAjCvB,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;YAF/F,yFAAyF;;YAEzF,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAoCnF,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,uEAAuE;AACvE,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,YAAY,CAAC,CAa/F;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAElE;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC,CAS/C"}
@@ -0,0 +1,114 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import { homedir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { z } from "zod";
6
+ import { atomicWriteJson } from "../persistence/atomic-store.js";
7
+ import { resolvePiAgentDir } from "../agent/pi-home.js";
8
+ /**
9
+ * `$PI_STUDIO_HOME/extensions-state.json` — per-pi-home sync bookkeeping
10
+ * (swe/features/preinstalled-extensions.md § State file), plus the shared "effective pi-home"
11
+ * derivation the sync planner/executor key their state on.
12
+ *
13
+ * `offered` records intent, not presence: an identity enters it only after a successful
14
+ * `pi install`, and once present is never installed again (tenet 1 — a user's later `pi remove`
15
+ * sticks forever). `failures` survives restarts so `failed` + `reason` stay reportable after a
16
+ * reboot; it is diagnostics, never a retry gate.
17
+ */
18
+ const offeredEntrySchema = z
19
+ .object({
20
+ /** What sync last wrote, verbatim — the byte-compare ancestor for the ownership rule. */
21
+ installedSpec: z.string(),
22
+ /** Aligned workspace version at install time (diagnostics only; sync never branches on it). */
23
+ atVersion: z.string(),
24
+ at: z.string(),
25
+ })
26
+ .passthrough();
27
+ const failureEntrySchema = z
28
+ .object({
29
+ source: z.string(),
30
+ reason: z.string(),
31
+ message: z.string(),
32
+ attempts: z.number(),
33
+ at: z.string(),
34
+ })
35
+ .passthrough();
36
+ const lastSyncSummarySchema = z
37
+ .object({
38
+ at: z.string(),
39
+ outcome: z.string(),
40
+ })
41
+ .passthrough();
42
+ const piHomeStateSchema = z
43
+ .object({
44
+ offered: z.record(z.string(), offeredEntrySchema).default({}),
45
+ failures: z.record(z.string(), failureEntrySchema).default({}),
46
+ lastSync: lastSyncSummarySchema.optional(),
47
+ })
48
+ .passthrough();
49
+ const extensionsStateSchema = z
50
+ .object({
51
+ version: z.literal(1).default(1),
52
+ piHomes: z.record(z.string(), piHomeStateSchema).default({}),
53
+ })
54
+ .passthrough();
55
+ export function extensionsStatePath(home) {
56
+ return join(home, "extensions-state.json");
57
+ }
58
+ /**
59
+ * Load `extensions-state.json`. Absent file → a valid empty state (`version: 1`, no pi-homes).
60
+ * Malformed JSON or a schema mismatch → the literal string `"unreadable"`, **never** an empty
61
+ * state and **never** a rewrite of the file — callers apply the spec's fail-safe (treat every
62
+ * manifest identity as already offered; wrong-and-quiet beats wrong-and-mutating).
63
+ */
64
+ export async function loadExtensionsState(home) {
65
+ const path = extensionsStatePath(home);
66
+ if (!existsSync(path))
67
+ return extensionsStateSchema.parse({});
68
+ let raw;
69
+ try {
70
+ raw = JSON.parse(await readFile(path, "utf8"));
71
+ }
72
+ catch {
73
+ return "unreadable";
74
+ }
75
+ const parsed = extensionsStateSchema.safeParse(raw);
76
+ return parsed.success ? parsed.data : "unreadable";
77
+ }
78
+ export async function saveExtensionsState(home, state) {
79
+ await atomicWriteJson(extensionsStatePath(home), state, extensionsStateSchema);
80
+ }
81
+ /**
82
+ * The directory spawned agents actually receive as `PI_CODING_AGENT_DIR` — the state key
83
+ * everything in this feature is keyed on. Delegates entirely to {@link resolvePiAgentDir} (the one
84
+ * shared derivation with the spawn path in `agent/pi-home.ts`, which itself `~`-expands
85
+ * and absolutizes both non-default branches) and applies Pi's own default when neither an override
86
+ * nor `daemon.piHome` is set. No `resolve()` here: re-resolving an already-absolute path is a
87
+ * no-op for the two real branches, and applying it only to the default branch (as this function
88
+ * used to do to *both*) is exactly what let this key diverge from the spawn path for a relative or
89
+ * `~`-prefixed `daemon.piHome` — the two must derive from the same already-absolute value, not
90
+ * each apply their own normalization.
91
+ */
92
+ export function effectivePiHomeKey(config) {
93
+ return resolvePiAgentDir(config) ?? join(homedir(), ".pi", "agent");
94
+ }
95
+ /**
96
+ * Pi's global `settings.json` at `<piHomeKey>/settings.json` — read-only, never written; every
97
+ * mutation goes through `pi install`. Absent file ⇒ empty `packages`. `ok: false` ⇒ malformed
98
+ * JSON, the caller must not act on a reality it can't read. Shared by `ExtensionsService` (the
99
+ * daemon path) and the CLI's `extensions list --local` (sprint-057/task-005) — one implementation,
100
+ * so the two can never read `settings.json` differently.
101
+ */
102
+ export async function readPiSettingsPackages(piHomeKey) {
103
+ const path = join(piHomeKey, "settings.json");
104
+ if (!existsSync(path))
105
+ return { packages: [], ok: true };
106
+ try {
107
+ const raw = JSON.parse(await readFile(path, "utf8"));
108
+ return { packages: Array.isArray(raw.packages) ? raw.packages : [], ok: true };
109
+ }
110
+ catch {
111
+ return { packages: [], ok: false };
112
+ }
113
+ }
114
+ //# sourceMappingURL=extensions-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions-state.js","sourceRoot":"","sources":["../../src/extensions/extensions-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from "./curated-packs.js";
2
+ export * from "./sync-planner.js";
3
+ export * from "./extensions-state.js";
4
+ export * from "./wire.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAKA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ // Preinstalled-extensions sync engine: the pure planning surface (manifest, planner, state
2
+ // reader). Deliberately does NOT re-export `extensions-service.ts` (orchestration: mutex, config
3
+ // persistence, logging) or `sync-executor.ts` (spawns `pi install`) — those are daemon-only. This
4
+ // barrel is what the CLI's `extensions list --local` (sprint-057/task-005) consumes: read-only,
5
+ // no process spawns, no writes.
6
+ export * from "./curated-packs.js";
7
+ export * from "./sync-planner.js";
8
+ export * from "./extensions-state.js";
9
+ export * from "./wire.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,iGAAiG;AACjG,kGAAkG;AAClG,gGAAgG;AAChG,gCAAgC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC"}