@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/agent/pi-home.d.ts +33 -0
- package/dist/agent/pi-home.d.ts.map +1 -0
- package/dist/agent/pi-home.js +49 -0
- package/dist/agent/pi-home.js.map +1 -0
- package/dist/agent/provider-registry.d.ts +6 -0
- package/dist/agent/provider-registry.d.ts.map +1 -1
- package/dist/agent/provider-registry.js +7 -14
- package/dist/agent/provider-registry.js.map +1 -1
- package/dist/config/daemon-config.d.ts +39 -0
- package/dist/config/daemon-config.d.ts.map +1 -1
- package/dist/config/daemon-config.js +59 -1
- package/dist/config/daemon-config.js.map +1 -1
- package/dist/daemon/bootstrap.d.ts +4 -0
- package/dist/daemon/bootstrap.d.ts.map +1 -1
- package/dist/daemon/bootstrap.js +20 -0
- package/dist/daemon/bootstrap.js.map +1 -1
- package/dist/extensions/curated-packs.d.ts +70 -0
- package/dist/extensions/curated-packs.d.ts.map +1 -0
- package/dist/extensions/curated-packs.js +206 -0
- package/dist/extensions/curated-packs.js.map +1 -0
- package/dist/extensions/extensions-rpc.d.ts +15 -0
- package/dist/extensions/extensions-rpc.d.ts.map +1 -0
- package/dist/extensions/extensions-rpc.js +76 -0
- package/dist/extensions/extensions-rpc.js.map +1 -0
- package/dist/extensions/extensions-service.d.ts +60 -0
- package/dist/extensions/extensions-service.d.ts.map +1 -0
- package/dist/extensions/extensions-service.js +145 -0
- package/dist/extensions/extensions-service.js.map +1 -0
- package/dist/extensions/extensions-state.d.ts +490 -0
- package/dist/extensions/extensions-state.d.ts.map +1 -0
- package/dist/extensions/extensions-state.js +114 -0
- package/dist/extensions/extensions-state.js.map +1 -0
- package/dist/extensions/index.d.ts +5 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +10 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/sync-executor.d.ts +55 -0
- package/dist/extensions/sync-executor.d.ts.map +1 -0
- package/dist/extensions/sync-executor.js +158 -0
- package/dist/extensions/sync-executor.js.map +1 -0
- package/dist/extensions/sync-planner.d.ts +62 -0
- package/dist/extensions/sync-planner.d.ts.map +1 -0
- package/dist/extensions/sync-planner.js +103 -0
- package/dist/extensions/sync-planner.js.map +1 -0
- package/dist/extensions/wire.d.ts +7 -0
- package/dist/extensions/wire.d.ts.map +1 -0
- package/dist/extensions/wire.js +51 -0
- package/dist/extensions/wire.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- 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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;;;;GASG;AAEH,MAAM,kBAAkB,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,yFAAyF;IACzF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,+FAA+F;IAC/F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,kBAAkB,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,qBAAqB,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,iBAAiB,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7D,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC3C,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,qBAAqB,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7D,CAAC;KACD,WAAW,EAAE,CAAC;AAOjB,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY;IACpD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE9D,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,KAAsB;IAC5E,MAAM,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAuB;IACxD,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,SAAiB;IAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAA2B,CAAC;QAC/E,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;AACH,CAAC"}
|
|
@@ -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"}
|