@agimon-ai/po 0.0.0-alpha.106 → 0.0.0-alpha.108
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/catalog/index.json +59 -59
- package/dist/package.cjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/src/builders/server/bundlerService.cjs +12 -7
- package/dist/src/builders/server/bundlerService.cjs.map +1 -1
- package/dist/src/builders/server/bundlerService.mjs +12 -7
- package/dist/src/builders/server/bundlerService.mjs.map +1 -1
- package/dist/src/builders/server/runtime.cjs +12 -0
- package/dist/src/builders/server/runtime.cjs.map +1 -1
- package/dist/src/builders/server/runtime.mjs +12 -0
- package/dist/src/builders/server/runtime.mjs.map +1 -1
- package/package.json +27 -27
package/dist/catalog/index.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"version": 1,
|
|
3
3
|
"packages": {
|
|
4
4
|
"@agimon-ai/po": {
|
|
5
|
-
"version": "0.0.0-alpha.
|
|
5
|
+
"version": "0.0.0-alpha.108",
|
|
6
6
|
"dependencies": [
|
|
7
7
|
"@agimon-ai/po-approval",
|
|
8
8
|
"@agimon-ai/po-artifact",
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
]
|
|
29
29
|
},
|
|
30
30
|
"@agimon-ai/po-approval": {
|
|
31
|
-
"version": "0.0.0-alpha.
|
|
31
|
+
"version": "0.0.0-alpha.107",
|
|
32
32
|
"dependencies": [
|
|
33
33
|
"@agimon-ai/po-core",
|
|
34
34
|
"@agimon-ai/po-web-components"
|
|
35
35
|
]
|
|
36
36
|
},
|
|
37
37
|
"@agimon-ai/po-artifact": {
|
|
38
|
-
"version": "0.0.0-alpha.
|
|
38
|
+
"version": "0.0.0-alpha.106",
|
|
39
39
|
"dependencies": [
|
|
40
40
|
"@agimon-ai/po-core",
|
|
41
41
|
"@agimon-ai/po-web-components",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
45
|
"@agimon-ai/po-author": {
|
|
46
|
-
"version": "0.0.0-alpha.
|
|
46
|
+
"version": "0.0.0-alpha.107",
|
|
47
47
|
"dependencies": [
|
|
48
48
|
"@agimon-ai/po-artifact",
|
|
49
49
|
"@agimon-ai/po-core",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
]
|
|
54
54
|
},
|
|
55
55
|
"@agimon-ai/po-autocompact": {
|
|
56
|
-
"version": "0.0.0-alpha.
|
|
56
|
+
"version": "0.0.0-alpha.107",
|
|
57
57
|
"dependencies": [
|
|
58
58
|
"@agimon-ai/po-artifact",
|
|
59
59
|
"@agimon-ai/po-config",
|
|
@@ -62,24 +62,24 @@
|
|
|
62
62
|
]
|
|
63
63
|
},
|
|
64
64
|
"@agimon-ai/po-autostop": {
|
|
65
|
-
"version": "0.0.0-alpha.
|
|
65
|
+
"version": "0.0.0-alpha.107",
|
|
66
66
|
"dependencies": [
|
|
67
67
|
"@agimon-ai/po-core"
|
|
68
68
|
]
|
|
69
69
|
},
|
|
70
70
|
"@agimon-ai/po-browse": {
|
|
71
|
-
"version": "0.0.1-alpha.
|
|
71
|
+
"version": "0.0.1-alpha.105",
|
|
72
72
|
"dependencies": [
|
|
73
73
|
"@agimon-ai/po-core",
|
|
74
74
|
"@agimon-ai/po-web-components"
|
|
75
75
|
]
|
|
76
76
|
},
|
|
77
77
|
"@agimon-ai/po-build": {
|
|
78
|
-
"version": "0.0.0-alpha.
|
|
78
|
+
"version": "0.0.0-alpha.107",
|
|
79
79
|
"dependencies": []
|
|
80
80
|
},
|
|
81
81
|
"@agimon-ai/po-cache": {
|
|
82
|
-
"version": "0.0.0-alpha.
|
|
82
|
+
"version": "0.0.0-alpha.107",
|
|
83
83
|
"dependencies": [
|
|
84
84
|
"@agimon-ai/po-config",
|
|
85
85
|
"@agimon-ai/po-core",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
]
|
|
88
88
|
},
|
|
89
89
|
"@agimon-ai/po-calendar": {
|
|
90
|
-
"version": "0.0.1-alpha.
|
|
90
|
+
"version": "0.0.1-alpha.66",
|
|
91
91
|
"dependencies": [
|
|
92
92
|
"@agimon-ai/po-config",
|
|
93
93
|
"@agimon-ai/po-core",
|
|
@@ -99,11 +99,11 @@
|
|
|
99
99
|
]
|
|
100
100
|
},
|
|
101
101
|
"@agimon-ai/po-claude-bridge": {
|
|
102
|
-
"version": "0.1.1-alpha.
|
|
102
|
+
"version": "0.1.1-alpha.87",
|
|
103
103
|
"dependencies": []
|
|
104
104
|
},
|
|
105
105
|
"@agimon-ai/po-codemode": {
|
|
106
|
-
"version": "0.0.1-alpha.
|
|
106
|
+
"version": "0.0.1-alpha.80",
|
|
107
107
|
"dependencies": [
|
|
108
108
|
"@agimon-ai/po-config",
|
|
109
109
|
"@agimon-ai/po-core",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
]
|
|
112
112
|
},
|
|
113
113
|
"@agimon-ai/po-computer-use": {
|
|
114
|
-
"version": "0.0.0-alpha.
|
|
114
|
+
"version": "0.0.0-alpha.107",
|
|
115
115
|
"dependencies": [
|
|
116
116
|
"@agimon-ai/po-config",
|
|
117
117
|
"@agimon-ai/po-core",
|
|
@@ -121,26 +121,26 @@
|
|
|
121
121
|
]
|
|
122
122
|
},
|
|
123
123
|
"@agimon-ai/po-config": {
|
|
124
|
-
"version": "0.0.0-alpha.
|
|
124
|
+
"version": "0.0.0-alpha.107",
|
|
125
125
|
"dependencies": [
|
|
126
126
|
"@agimon-ai/po-core",
|
|
127
127
|
"@agimon-ai/po-web-components"
|
|
128
128
|
]
|
|
129
129
|
},
|
|
130
130
|
"@agimon-ai/po-core": {
|
|
131
|
-
"version": "0.0.0-alpha.
|
|
131
|
+
"version": "0.0.0-alpha.107",
|
|
132
132
|
"dependencies": [
|
|
133
133
|
"@agimon-ai/po-web-security"
|
|
134
134
|
]
|
|
135
135
|
},
|
|
136
136
|
"@agimon-ai/po-db": {
|
|
137
|
-
"version": "0.0.0-alpha.
|
|
137
|
+
"version": "0.0.0-alpha.107",
|
|
138
138
|
"dependencies": [
|
|
139
139
|
"@agimon-ai/po-core"
|
|
140
140
|
]
|
|
141
141
|
},
|
|
142
142
|
"@agimon-ai/po-domain": {
|
|
143
|
-
"version": "0.0.0-alpha.
|
|
143
|
+
"version": "0.0.0-alpha.107",
|
|
144
144
|
"dependencies": [
|
|
145
145
|
"@agimon-ai/po-config",
|
|
146
146
|
"@agimon-ai/po-core",
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
]
|
|
149
149
|
},
|
|
150
150
|
"@agimon-ai/po-edit": {
|
|
151
|
-
"version": "0.0.0-alpha.
|
|
151
|
+
"version": "0.0.0-alpha.107",
|
|
152
152
|
"dependencies": [
|
|
153
153
|
"@agimon-ai/po-core",
|
|
154
154
|
"@agimon-ai/po-hashline",
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
]
|
|
158
158
|
},
|
|
159
159
|
"@agimon-ai/po-file-edit": {
|
|
160
|
-
"version": "0.0.0-alpha.
|
|
160
|
+
"version": "0.0.0-alpha.107",
|
|
161
161
|
"dependencies": [
|
|
162
162
|
"@agimon-ai/po-config",
|
|
163
163
|
"@agimon-ai/po-core",
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
]
|
|
168
168
|
},
|
|
169
169
|
"@agimon-ai/po-git": {
|
|
170
|
-
"version": "0.0.0-alpha.
|
|
170
|
+
"version": "0.0.0-alpha.107",
|
|
171
171
|
"dependencies": [
|
|
172
172
|
"@agimon-ai/po-core",
|
|
173
173
|
"@agimon-ai/po-session",
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
]
|
|
177
177
|
},
|
|
178
178
|
"@agimon-ai/po-goal": {
|
|
179
|
-
"version": "0.0.0-alpha.
|
|
179
|
+
"version": "0.0.0-alpha.107",
|
|
180
180
|
"dependencies": [
|
|
181
181
|
"@agimon-ai/po-core",
|
|
182
182
|
"@agimon-ai/po-minor-mode",
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
]
|
|
186
186
|
},
|
|
187
187
|
"@agimon-ai/po-grep": {
|
|
188
|
-
"version": "0.0.0-alpha.
|
|
188
|
+
"version": "0.0.0-alpha.107",
|
|
189
189
|
"dependencies": [
|
|
190
190
|
"@agimon-ai/po-core",
|
|
191
191
|
"@agimon-ai/po-hashline",
|
|
@@ -194,11 +194,11 @@
|
|
|
194
194
|
]
|
|
195
195
|
},
|
|
196
196
|
"@agimon-ai/po-hashline": {
|
|
197
|
-
"version": "0.0.0-alpha.
|
|
197
|
+
"version": "0.0.0-alpha.107",
|
|
198
198
|
"dependencies": []
|
|
199
199
|
},
|
|
200
200
|
"@agimon-ai/po-help": {
|
|
201
|
-
"version": "0.0.0-alpha.
|
|
201
|
+
"version": "0.0.0-alpha.107",
|
|
202
202
|
"dependencies": [
|
|
203
203
|
"@agimon-ai/po-core",
|
|
204
204
|
"@agimon-ai/po-minor-mode",
|
|
@@ -207,14 +207,14 @@
|
|
|
207
207
|
]
|
|
208
208
|
},
|
|
209
209
|
"@agimon-ai/po-identity": {
|
|
210
|
-
"version": "0.0.2-alpha.
|
|
210
|
+
"version": "0.0.2-alpha.54",
|
|
211
211
|
"dependencies": [
|
|
212
212
|
"@agimon-ai/po-core",
|
|
213
213
|
"@agimon-ai/po-web-security"
|
|
214
214
|
]
|
|
215
215
|
},
|
|
216
216
|
"@agimon-ai/po-image-gen": {
|
|
217
|
-
"version": "0.0.0-alpha.
|
|
217
|
+
"version": "0.0.0-alpha.106",
|
|
218
218
|
"dependencies": [
|
|
219
219
|
"@agimon-ai/po-core",
|
|
220
220
|
"@agimon-ai/po-web-components",
|
|
@@ -222,7 +222,7 @@
|
|
|
222
222
|
]
|
|
223
223
|
},
|
|
224
224
|
"@agimon-ai/po-ios": {
|
|
225
|
-
"version": "0.0.1-alpha.
|
|
225
|
+
"version": "0.0.1-alpha.42",
|
|
226
226
|
"dependencies": [
|
|
227
227
|
"@agimon-ai/po-artifact",
|
|
228
228
|
"@agimon-ai/po-config",
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
]
|
|
233
233
|
},
|
|
234
234
|
"@agimon-ai/po-log": {
|
|
235
|
-
"version": "0.0.0-alpha.
|
|
235
|
+
"version": "0.0.0-alpha.107",
|
|
236
236
|
"dependencies": [
|
|
237
237
|
"@agimon-ai/po-core",
|
|
238
238
|
"@agimon-ai/po-web-components",
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
]
|
|
241
241
|
},
|
|
242
242
|
"@agimon-ai/po-major-mode": {
|
|
243
|
-
"version": "0.0.0-alpha.
|
|
243
|
+
"version": "0.0.0-alpha.107",
|
|
244
244
|
"dependencies": [
|
|
245
245
|
"@agimon-ai/po-config",
|
|
246
246
|
"@agimon-ai/po-core",
|
|
@@ -248,7 +248,7 @@
|
|
|
248
248
|
]
|
|
249
249
|
},
|
|
250
250
|
"@agimon-ai/po-mcp": {
|
|
251
|
-
"version": "0.0.0-alpha.
|
|
251
|
+
"version": "0.0.0-alpha.107",
|
|
252
252
|
"dependencies": [
|
|
253
253
|
"@agimon-ai/po-config",
|
|
254
254
|
"@agimon-ai/po-core",
|
|
@@ -259,43 +259,43 @@
|
|
|
259
259
|
]
|
|
260
260
|
},
|
|
261
261
|
"@agimon-ai/po-mcp-proxy": {
|
|
262
|
-
"version": "0.0.1-alpha.
|
|
262
|
+
"version": "0.0.1-alpha.86",
|
|
263
263
|
"dependencies": []
|
|
264
264
|
},
|
|
265
265
|
"@agimon-ai/po-minor-mode": {
|
|
266
|
-
"version": "0.0.0-alpha.
|
|
266
|
+
"version": "0.0.0-alpha.107",
|
|
267
267
|
"dependencies": [
|
|
268
268
|
"@agimon-ai/po-core"
|
|
269
269
|
]
|
|
270
270
|
},
|
|
271
271
|
"@agimon-ai/po-model-guidance": {
|
|
272
|
-
"version": "0.0.0-alpha.
|
|
272
|
+
"version": "0.0.0-alpha.107",
|
|
273
273
|
"dependencies": [
|
|
274
274
|
"@agimon-ai/po-config",
|
|
275
275
|
"@agimon-ai/po-core"
|
|
276
276
|
]
|
|
277
277
|
},
|
|
278
278
|
"@agimon-ai/po-native-components": {
|
|
279
|
-
"version": "0.0.0-alpha.
|
|
279
|
+
"version": "0.0.0-alpha.107",
|
|
280
280
|
"dependencies": [
|
|
281
281
|
"@agimon-ai/po-web-components"
|
|
282
282
|
]
|
|
283
283
|
},
|
|
284
284
|
"@agimon-ai/po-network": {
|
|
285
|
-
"version": "0.0.2-alpha.
|
|
285
|
+
"version": "0.0.2-alpha.54",
|
|
286
286
|
"dependencies": [
|
|
287
287
|
"@agimon-ai/po-core",
|
|
288
288
|
"@agimon-ai/po-web-security"
|
|
289
289
|
]
|
|
290
290
|
},
|
|
291
291
|
"@agimon-ai/po-notification": {
|
|
292
|
-
"version": "0.0.0-alpha.
|
|
292
|
+
"version": "0.0.0-alpha.107",
|
|
293
293
|
"dependencies": [
|
|
294
294
|
"@agimon-ai/po-core"
|
|
295
295
|
]
|
|
296
296
|
},
|
|
297
297
|
"@agimon-ai/po-plan": {
|
|
298
|
-
"version": "0.0.0-alpha.
|
|
298
|
+
"version": "0.0.0-alpha.107",
|
|
299
299
|
"dependencies": [
|
|
300
300
|
"@agimon-ai/po-config",
|
|
301
301
|
"@agimon-ai/po-core",
|
|
@@ -305,7 +305,7 @@
|
|
|
305
305
|
]
|
|
306
306
|
},
|
|
307
307
|
"@agimon-ai/po-profile": {
|
|
308
|
-
"version": "0.0.0-alpha.
|
|
308
|
+
"version": "0.0.0-alpha.107",
|
|
309
309
|
"dependencies": [
|
|
310
310
|
"@agimon-ai/po-config",
|
|
311
311
|
"@agimon-ai/po-core",
|
|
@@ -313,7 +313,7 @@
|
|
|
313
313
|
]
|
|
314
314
|
},
|
|
315
315
|
"@agimon-ai/po-prompt": {
|
|
316
|
-
"version": "0.0.0-alpha.
|
|
316
|
+
"version": "0.0.0-alpha.107",
|
|
317
317
|
"dependencies": [
|
|
318
318
|
"@agimon-ai/po-core",
|
|
319
319
|
"@agimon-ai/po-web-components",
|
|
@@ -321,7 +321,7 @@
|
|
|
321
321
|
]
|
|
322
322
|
},
|
|
323
323
|
"@agimon-ai/po-read": {
|
|
324
|
-
"version": "0.0.0-alpha.
|
|
324
|
+
"version": "0.0.0-alpha.107",
|
|
325
325
|
"dependencies": [
|
|
326
326
|
"@agimon-ai/po-config",
|
|
327
327
|
"@agimon-ai/po-core",
|
|
@@ -331,7 +331,7 @@
|
|
|
331
331
|
]
|
|
332
332
|
},
|
|
333
333
|
"@agimon-ai/po-runner": {
|
|
334
|
-
"version": "0.0.0-alpha.
|
|
334
|
+
"version": "0.0.0-alpha.107",
|
|
335
335
|
"dependencies": [
|
|
336
336
|
"@agimon-ai/po-core",
|
|
337
337
|
"@agimon-ai/po-ui",
|
|
@@ -340,13 +340,13 @@
|
|
|
340
340
|
]
|
|
341
341
|
},
|
|
342
342
|
"@agimon-ai/po-sandbox": {
|
|
343
|
-
"version": "0.0.0-alpha.
|
|
343
|
+
"version": "0.0.0-alpha.107",
|
|
344
344
|
"dependencies": [
|
|
345
345
|
"@agimon-ai/po-core"
|
|
346
346
|
]
|
|
347
347
|
},
|
|
348
348
|
"@agimon-ai/po-session": {
|
|
349
|
-
"version": "0.0.0-alpha.
|
|
349
|
+
"version": "0.0.0-alpha.107",
|
|
350
350
|
"dependencies": [
|
|
351
351
|
"@agimon-ai/po-config",
|
|
352
352
|
"@agimon-ai/po-core",
|
|
@@ -354,7 +354,7 @@
|
|
|
354
354
|
]
|
|
355
355
|
},
|
|
356
356
|
"@agimon-ai/po-skill": {
|
|
357
|
-
"version": "0.0.0-alpha.
|
|
357
|
+
"version": "0.0.0-alpha.107",
|
|
358
358
|
"dependencies": [
|
|
359
359
|
"@agimon-ai/po-config",
|
|
360
360
|
"@agimon-ai/po-core",
|
|
@@ -363,7 +363,7 @@
|
|
|
363
363
|
]
|
|
364
364
|
},
|
|
365
365
|
"@agimon-ai/po-style-system": {
|
|
366
|
-
"version": "0.0.0-alpha.
|
|
366
|
+
"version": "0.0.0-alpha.107",
|
|
367
367
|
"dependencies": [
|
|
368
368
|
"@agimon-ai/po-core",
|
|
369
369
|
"@agimon-ai/po-web-components",
|
|
@@ -371,7 +371,7 @@
|
|
|
371
371
|
]
|
|
372
372
|
},
|
|
373
373
|
"@agimon-ai/po-task": {
|
|
374
|
-
"version": "0.0.0-alpha.
|
|
374
|
+
"version": "0.0.0-alpha.107",
|
|
375
375
|
"dependencies": [
|
|
376
376
|
"@agimon-ai/po-core",
|
|
377
377
|
"@agimon-ai/po-ui",
|
|
@@ -379,7 +379,7 @@
|
|
|
379
379
|
]
|
|
380
380
|
},
|
|
381
381
|
"@agimon-ai/po-team": {
|
|
382
|
-
"version": "0.0.0-alpha.
|
|
382
|
+
"version": "0.0.0-alpha.107",
|
|
383
383
|
"dependencies": [
|
|
384
384
|
"@agimon-ai/po-cache",
|
|
385
385
|
"@agimon-ai/po-config",
|
|
@@ -391,7 +391,7 @@
|
|
|
391
391
|
]
|
|
392
392
|
},
|
|
393
393
|
"@agimon-ai/po-template-advanced": {
|
|
394
|
-
"version": "0.0.0-alpha.
|
|
394
|
+
"version": "0.0.0-alpha.107",
|
|
395
395
|
"dependencies": [
|
|
396
396
|
"@agimon-ai/po-core",
|
|
397
397
|
"@agimon-ai/po-web-components",
|
|
@@ -399,7 +399,7 @@
|
|
|
399
399
|
]
|
|
400
400
|
},
|
|
401
401
|
"@agimon-ai/po-template-elegant": {
|
|
402
|
-
"version": "0.0.0-alpha.
|
|
402
|
+
"version": "0.0.0-alpha.107",
|
|
403
403
|
"dependencies": [
|
|
404
404
|
"@agimon-ai/po-core",
|
|
405
405
|
"@agimon-ai/po-web-components",
|
|
@@ -407,7 +407,7 @@
|
|
|
407
407
|
]
|
|
408
408
|
},
|
|
409
409
|
"@agimon-ai/po-ui": {
|
|
410
|
-
"version": "0.0.0-alpha.
|
|
410
|
+
"version": "0.0.0-alpha.107",
|
|
411
411
|
"dependencies": [
|
|
412
412
|
"@agimon-ai/po-core",
|
|
413
413
|
"@agimon-ai/po-hashline",
|
|
@@ -416,7 +416,7 @@
|
|
|
416
416
|
]
|
|
417
417
|
},
|
|
418
418
|
"@agimon-ai/po-user-feedback": {
|
|
419
|
-
"version": "0.0.0-alpha.
|
|
419
|
+
"version": "0.0.0-alpha.107",
|
|
420
420
|
"dependencies": [
|
|
421
421
|
"@agimon-ai/po-core",
|
|
422
422
|
"@agimon-ai/po-minor-mode",
|
|
@@ -425,14 +425,14 @@
|
|
|
425
425
|
]
|
|
426
426
|
},
|
|
427
427
|
"@agimon-ai/po-vault": {
|
|
428
|
-
"version": "0.0.0-alpha.
|
|
428
|
+
"version": "0.0.0-alpha.107",
|
|
429
429
|
"dependencies": [
|
|
430
430
|
"@agimon-ai/po-core",
|
|
431
431
|
"@agimon-ai/po-db"
|
|
432
432
|
]
|
|
433
433
|
},
|
|
434
434
|
"@agimon-ai/po-vibe-lint": {
|
|
435
|
-
"version": "0.0.1-alpha.
|
|
435
|
+
"version": "0.0.1-alpha.76",
|
|
436
436
|
"dependencies": [
|
|
437
437
|
"@agimon-ai/po-config",
|
|
438
438
|
"@agimon-ai/po-core",
|
|
@@ -442,7 +442,7 @@
|
|
|
442
442
|
]
|
|
443
443
|
},
|
|
444
444
|
"@agimon-ai/po-voice": {
|
|
445
|
-
"version": "0.0.0-alpha.
|
|
445
|
+
"version": "0.0.0-alpha.107",
|
|
446
446
|
"dependencies": [
|
|
447
447
|
"@agimon-ai/po-config",
|
|
448
448
|
"@agimon-ai/po-core",
|
|
@@ -454,11 +454,11 @@
|
|
|
454
454
|
]
|
|
455
455
|
},
|
|
456
456
|
"@agimon-ai/po-web-components": {
|
|
457
|
-
"version": "0.0.0-alpha.
|
|
457
|
+
"version": "0.0.0-alpha.107",
|
|
458
458
|
"dependencies": []
|
|
459
459
|
},
|
|
460
460
|
"@agimon-ai/po-web-dashboard": {
|
|
461
|
-
"version": "0.0.0-alpha.
|
|
461
|
+
"version": "0.0.0-alpha.107",
|
|
462
462
|
"dependencies": [
|
|
463
463
|
"@agimon-ai/po-core",
|
|
464
464
|
"@agimon-ai/po-web-components",
|
|
@@ -466,18 +466,18 @@
|
|
|
466
466
|
]
|
|
467
467
|
},
|
|
468
468
|
"@agimon-ai/po-web-search": {
|
|
469
|
-
"version": "0.0.0-alpha.
|
|
469
|
+
"version": "0.0.0-alpha.106",
|
|
470
470
|
"dependencies": [
|
|
471
471
|
"@agimon-ai/po-core",
|
|
472
472
|
"@agimon-ai/po-web-components"
|
|
473
473
|
]
|
|
474
474
|
},
|
|
475
475
|
"@agimon-ai/po-web-security": {
|
|
476
|
-
"version": "0.0.0-alpha.
|
|
476
|
+
"version": "0.0.0-alpha.107",
|
|
477
477
|
"dependencies": []
|
|
478
478
|
},
|
|
479
479
|
"@agimon-ai/po-workflow": {
|
|
480
|
-
"version": "0.0.0-alpha.
|
|
480
|
+
"version": "0.0.0-alpha.107",
|
|
481
481
|
"dependencies": [
|
|
482
482
|
"@agimon-ai/po-core",
|
|
483
483
|
"@agimon-ai/po-ui",
|
package/dist/package.cjs
CHANGED
package/dist/package.mjs
CHANGED
|
@@ -116,13 +116,17 @@ function createBundlerService(options) {
|
|
|
116
116
|
const entries = [];
|
|
117
117
|
for (const { declaration, module, owners } of await require_index$2.serverPackageCandidates(selected, options.onNotice, options.files)) {
|
|
118
118
|
let apiContract;
|
|
119
|
-
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
119
|
+
const packageManifest = await manifestOf(declaration.packageDir);
|
|
120
|
+
const readBrain = (key) => {
|
|
121
|
+
const block = packageManifest?.[key];
|
|
122
|
+
if (block === null || typeof block !== "object" || Array.isArray(block)) return void 0;
|
|
123
|
+
const brain = block.brain;
|
|
124
|
+
const parsed = (0, _agimon_ai_po_core_serverPlugin.parsePoWebBrainMetadata)(brain);
|
|
125
|
+
if (brain !== void 0 && parsed === void 0) options.onNotice?.(`${declaration.packageName}: invalid ${key}.brain metadata unavailable`);
|
|
126
|
+
return parsed;
|
|
127
|
+
};
|
|
128
|
+
const webMetadata = readBrain("poWeb");
|
|
129
|
+
const nativeMetadata = readBrain("poNative");
|
|
126
130
|
try {
|
|
127
131
|
if (!options.files) throw new Error("No file service");
|
|
128
132
|
const entry = JSON.parse((0, _agimon_ai_po_core_platform.getOrThrow)(await options.files.readTextFile(node_path.default.join(declaration.packageDir, "package.json"), _agimon_ai_po_core_platform.BACKGROUND_CONTEXT))).poServer?.contracts?.dist;
|
|
@@ -139,6 +143,7 @@ function createBundlerService(options) {
|
|
|
139
143
|
entries.push({
|
|
140
144
|
apiContract,
|
|
141
145
|
...webMetadata === void 0 ? {} : { webMetadata },
|
|
146
|
+
...nativeMetadata === void 0 ? {} : { nativeMetadata },
|
|
142
147
|
packageName: declaration.packageName,
|
|
143
148
|
origin: require_builders_cli_extensionAssembler_index.isFixedHostPackage(declaration.packageName) || shippedPackages?.has(declaration.packageName) ? "po" : shippedPackages === void 0 ? "unknown" : "personal",
|
|
144
149
|
entry: declaration.entry,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundlerService.cjs","names":["createPackageUrls","createLiveModuleCache","createPackageReloadCheck","rootCompositions","loadMajorModesConfig","resolveLayers","catalogPackageNames","compositionPackageRoots","serverPackageCandidates","parseWebMetadata","getOrThrow","path","BACKGROUND_CONTEXT","parseApiContract","isFixedHostPackage","mcpPluginCandidates"],"sources":["../../../../src/builders/server/bundlerService.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { loadMajorModesConfig, resolveLayers } from '@agimon-ai/po-config/majorModes';\nimport { parseApiContract, type PoApiContract } from '@agimon-ai/po-core/apiContracts';\nimport type { LiveMcpPluginEntry } from '@agimon-ai/po-core/mcpFacet';\nimport type { PoApiScope } from '@agimon-ai/po-core/packageApi';\nimport { BACKGROUND_CONTEXT, getOrThrow } from '@agimon-ai/po-core/platform';\nimport type { FileSystem } from '@agimon-ai/po-core/platform';\nimport {\n parsePoWebBrainMetadata as parseWebMetadata,\n type LiveServerPackageEntry,\n} from '@agimon-ai/po-core/serverPlugin';\nexport { parsePoWebBrainMetadata as parseWebMetadata } from '@agimon-ai/po-core/serverPlugin';\n\nimport { catalogPackageNames } from '../../composition/layerPackageInstaller';\nimport { type ExtensionComposition, isFixedHostPackage } from '../cli/extensionAssembler';\nimport { rootCompositions } from '../cli/sessionComposition';\nimport { compositionPackageRoots } from '../web';\nimport { serverPackageCandidates } from './index';\nimport { type McpPluginCandidate, mcpPluginCandidates } from './mcpBundle';\nimport { createLiveModuleCache, createPackageReloadCheck, type ScopeChange } from './packageReloadCheck';\nimport { createPackageUrls } from './packageUrl';\n\nexport interface BundlerServiceOptions {\n readonly files?: FileSystem;\n readonly homeDirectory: string;\n readonly environment: NodeJS.ProcessEnv;\n /** Installed host payload: import its packages in place without writing content snapshots beside them. */\n readonly immutableRoot?: string;\n /** Called after a root's compositions are resolved, so the caller can watch what they read. */\n readonly onCompositions?: (\n root: string,\n compositions: readonly ExtensionComposition[],\n packageRoots: readonly string[],\n ) => void | Promise<void>;\n /** Reports a package left out of a root's load, so one broken package never stops the rest. */\n readonly onNotice?: (message: string) => void;\n}\n\nconst MANIFEST_FIELDS = ['poServer', 'poWeb', 'poNative'] as const;\n\n/** Whether any server, web or native block of a package manifest names the global scope. */\nfunction declaresGlobalScope(manifest: Record<string, unknown>): boolean {\n return MANIFEST_FIELDS.some((field) => {\n const value = manifest[field];\n const blocks: unknown[] = Array.isArray(value) ? value : value === undefined ? [] : [value];\n return blocks.some((block) => {\n const scopes = (block as { scopes?: unknown } | null)?.scopes;\n return Array.isArray(scopes) && scopes.includes('global');\n });\n });\n}\n\nexport interface RootSelection {\n readonly root: string;\n readonly majorMode: string;\n readonly activeLayers: string[];\n}\n\ninterface RootMcp {\n readonly candidates: McpPluginCandidate[];\n readonly entries: LiveMcpPluginEntry[];\n}\n\ninterface RootMemo {\n compositions?: ExtensionComposition[];\n selection?: RootSelection;\n packageEntries?: Promise<LiveServerPackageEntry[]>;\n mcp?: Promise<RootMcp>;\n}\n\n/** One root's package roots per major mode, from the entries load that started last. */\ninterface PreparedRoots {\n readonly load: number;\n readonly roots: { majorMode: string | undefined; roots: string[] }[];\n}\n\n/**\n * Process-level owner of what Po compiles and loads: content-addressed package URLs, the\n * live module cache, the poison set, per-scope reload tracking, and a per-root memo of the\n * compositions and entries a root selects. Every reader shares one computation until\n * `invalidate`; the caller decides when (a finished sync or a watched change).\n */\nexport function createBundlerService(options: BundlerServiceOptions) {\n /** Mutable packages get content-addressed URLs; the host's installed payload imports in place. */\n const packageUrls = createPackageUrls({ immutableRoot: options.immutableRoot, files: options.files });\n /** URLs whose live import timed out or threw; skipped by every loader until the content changes. */\n const poisoned = new Set<string>();\n /** Imports each content-addressed URL once, so a reload imports only what changed. */\n const importer = createLiveModuleCache();\n /** The package identities each mounted global and workspace scope last loaded. */\n const reloadCheck = createPackageReloadCheck();\n const memos = new Map<string, RootMemo>();\n /**\n * Kept outside the memo, because a watched change invalidates while other scope checks are\n * between awaiting `packageEntries` and reading `packageRoots`; they keep the roots that load\n * prepared until a newer load replaces them.\n */\n const preparedRoots = new Map<string, PreparedRoots>();\n let entriesLoads = 0;\n const memoFor = (root: string): RootMemo => {\n let memo = memos.get(root);\n if (memo === undefined) {\n memo = {};\n memos.set(root, memo);\n }\n return memo;\n };\n /** A pending load shared by every reader; a failed one is dropped so the next reader retries. */\n const shared = <T>(\n read: () => Promise<T> | undefined,\n write: (value: Promise<T> | undefined) => void,\n load: () => Promise<T>,\n ) => {\n const existing = read();\n if (existing !== undefined) return existing;\n const loading = load();\n write(loading);\n loading.catch(() => {\n if (read() === loading) write(undefined);\n });\n return loading;\n };\n\n /**\n * Every composition the root's config can select, one per major mode, resolved live.\n * A package sync has not prepared yet is left out with a diagnostic.\n */\n const compositions = (root: string): ExtensionComposition[] => {\n const memo = memoFor(root);\n if (memo.compositions === undefined) {\n memo.compositions = rootCompositions({\n root,\n homeDirectory: options.homeDirectory,\n environment: options.environment,\n tolerateUnsynced: true,\n });\n }\n return memo.compositions;\n };\n\n const defaultSelection = (root: string): RootSelection => {\n const memo = memoFor(root);\n if (memo.selection === undefined) {\n const config = loadMajorModesConfig(root, options.homeDirectory, options.environment);\n const majorMode = config.defaultMajorMode;\n memo.selection = { root, majorMode, activeLayers: resolveLayers(config, majorMode) };\n }\n return memo.selection;\n };\n\n /** The root's server package entries, each with the URL its current package content imports from. */\n const packageEntries = (root: string): Promise<LiveServerPackageEntry[]> => {\n const memo = memoFor(root);\n return shared(\n () => memo.packageEntries,\n (value) => (memo.packageEntries = value),\n async () => {\n const load = ++entriesLoads;\n const shippedPackages = await catalogPackageNames(options.environment);\n const selected = compositions(root);\n const roots = await Promise.all(\n selected.map(async (composition) => ({\n majorMode: composition.majorMode?.name,\n roots: await compositionPackageRoots([composition], options.files),\n })),\n );\n await options.onCompositions?.(root, selected, [...new Set(roots.flatMap((entry) => entry.roots))]);\n const entries: LiveServerPackageEntry[] = [];\n for (const { declaration, module, owners } of await serverPackageCandidates(\n selected,\n options.onNotice,\n options.files,\n )) {\n let apiContract: PoApiContract | undefined;\n let webMetadata: LiveServerPackageEntry['webMetadata'];\n const packageManifest = await manifestOf(declaration.packageDir);\n const poWeb = packageManifest?.poWeb;\n if (poWeb !== null && typeof poWeb === 'object' && !Array.isArray(poWeb)) {\n const brain = (poWeb as Record<string, unknown>).brain;\n webMetadata = parseWebMetadata(brain);\n if (brain !== undefined && webMetadata === undefined)\n options.onNotice?.(`${declaration.packageName}: invalid poWeb.brain metadata unavailable`);\n }\n try {\n if (!options.files) throw new Error('No file service');\n const manifest = JSON.parse(\n getOrThrow(\n await options.files.readTextFile(path.join(declaration.packageDir, 'package.json'), BACKGROUND_CONTEXT),\n ),\n );\n const entry: unknown = manifest.poServer?.contracts?.dist;\n if (typeof entry !== 'string' || !entry.startsWith('./') || entry.includes('..') || /[\\\\%?#]/u.test(entry))\n throw new Error('Invalid contract entry');\n const built = getOrThrow(\n await options.files.canonicalPath(path.join(declaration.packageDir, entry), BACKGROUND_CONTEXT),\n );\n const root = getOrThrow(await options.files.canonicalPath(declaration.packageDir, BACKGROUND_CONTEXT));\n const relative = path.relative(root, built);\n if (relative.startsWith('..') || path.isAbsolute(relative)) throw new Error('Contract escapes package');\n const module = (await importer(await packageUrls.urlFor(built))) as { default?: unknown };\n apiContract = parseApiContract(module.default);\n } catch {\n // Missing contracts fail closed for federation, but do not break ordinary local APIs.\n apiContract = undefined;\n }\n entries.push({\n apiContract,\n ...(webMetadata === undefined ? {} : { webMetadata }),\n packageName: declaration.packageName,\n origin:\n isFixedHostPackage(declaration.packageName) || shippedPackages?.has(declaration.packageName)\n ? 'po'\n : shippedPackages === undefined\n ? 'unknown'\n : 'personal',\n entry: declaration.entry,\n module,\n url: await packageUrls.urlFor(module),\n scopes: declaration.scopes,\n owners,\n // A manifest alone cannot make Po fatal: only a fixed host package may be required.\n required: declaration.required === true && isFixedHostPackage(declaration.packageName),\n });\n }\n // A load that started earlier but finished later never replaces a newer load's roots.\n if ((preparedRoots.get(root)?.load ?? 0) < load) preparedRoots.set(root, { load, roots });\n return entries;\n },\n );\n };\n\n const manifestOf = async (packageRoot: string): Promise<Record<string, unknown> | undefined> => {\n if (!options.files) return undefined;\n const text = await options.files.readTextFile(path.join(packageRoot, 'package.json'), BACKGROUND_CONTEXT);\n if (!text.ok) return undefined;\n try {\n return JSON.parse(text.value) as Record<string, unknown>;\n } catch (error) {\n options.onNotice?.(`'${packageRoot}' manifest is not JSON: ${String(error)}`);\n return undefined;\n }\n };\n /** The root's MCP plugin candidates and their entries with current URLs. */\n const mcpEntries = (root: string): Promise<RootMcp> => {\n const memo = memoFor(root);\n return shared(\n () => memo.mcp,\n (value) => (memo.mcp = value),\n async () => {\n const candidates = await mcpPluginCandidates(compositions(root), options.files);\n const entries: LiveMcpPluginEntry[] = [];\n for (const { declaration, module, owners } of candidates)\n entries.push({\n packageName: declaration.packageName,\n ...(declaration.ui === undefined ? {} : { widgets: declaration.ui.widgets }),\n entry: declaration.entry,\n module,\n url: await packageUrls.urlFor(module),\n owners,\n });\n return { candidates, entries };\n },\n );\n };\n\n /**\n * What a global or workspace scope loads: one identity per server package entry in that scope.\n * The URL changes with package content; `selection` carries ownership and the root's\n * default mode, so a modes.yaml change that selects a package in or out is reloaded too.\n */\n const scopeIdentities = (root: string, scope: PoApiScope, entries: readonly LiveServerPackageEntry[]) => {\n const { majorMode, activeLayers } = defaultSelection(root);\n return entries\n .filter((entry) => entry.scopes.includes(scope))\n .map((entry) => ({\n module: entry.module,\n url: entry.url,\n selection: JSON.stringify([entry.owners, entry.required === true, majorMode, activeLayers]),\n }));\n };\n\n return {\n packageUrls,\n poisoned,\n importer,\n compositions,\n defaultSelection,\n packageEntries,\n mcpEntries,\n /**\n * Every package root the root's config can select, over all its major modes or only `majorMode`'s,\n * as the latest `packageEntries` load prepared them; an `invalidate` keeps them until the next load.\n */\n packageRoots: (root: string, majorMode?: string): string[] => {\n const prepared = preparedRoots.get(root);\n if (prepared === undefined)\n throw new Error(`Package roots for '${root}' have not been prepared; await packageEntries first.`);\n return [\n ...new Set(\n prepared.roots\n .filter((entry) => majorMode === undefined || entry.majorMode === majorMode)\n .flatMap((entry) => entry.roots),\n ),\n ];\n },\n /** How the scope's current entries differ from what it last committed. */\n diffScope: async (key: string, root: string, scope: PoApiScope): Promise<ScopeChange> =>\n reloadCheck.diff(key, scopeIdentities(root, scope, await packageEntries(root))),\n /** Records what a scope installed, so the next diff compares against it; `failed` packages are retried. */\n commitScope: (\n key: string,\n root: string,\n scope: PoApiScope,\n entries: readonly LiveServerPackageEntry[],\n failed: ReadonlySet<string> = new Set(),\n ): void =>\n reloadCheck.commit(\n key,\n scopeIdentities(root, scope, entries),\n new Set(entries.filter((entry) => failed.has(entry.packageName)).map((entry) => entry.module)),\n ),\n forgetScope: (key: string): void => reloadCheck.forget(key),\n /** Drops every root's memo; the next reader recomputes from disk. */\n invalidate: (): void => memos.clear(),\n /**\n * The packages a root's default selection offers the global scope: each that declares the global scope,\n * and whether it has a global server entry there. Fixed host packages always come from the global composition.\n */\n globalPackages: async (\n root: string,\n ): Promise<{ readonly name: string; readonly packageRoot: string; readonly server: boolean }[]> => {\n const entries = await packageEntries(root);\n const { majorMode, activeLayers } = defaultSelection(root);\n const selected = (preparedRoots.get(root)?.roots ?? [])\n .filter((entry) => entry.majorMode === majorMode)\n .flatMap((entry) => entry.roots);\n const packages: { name: string; packageRoot: string; server: boolean }[] = [];\n for (const packageRoot of new Set(selected)) {\n const manifest = await manifestOf(packageRoot);\n const name = manifest?.name;\n if (manifest === undefined || typeof name !== 'string' || isFixedHostPackage(name)) continue;\n if (!declaresGlobalScope(manifest)) continue;\n const server = entries.some(\n (entry) =>\n entry.packageName === name &&\n entry.scopes.includes('global') &&\n entry.owners.some(\n (owner) =>\n owner.majorMode === majorMode && (owner.layer === 'default' || activeLayers.includes(owner.layer)),\n ),\n );\n packages.push({ name, packageRoot, server });\n }\n return packages;\n },\n };\n}\n\nexport type BundlerService = ReturnType<typeof createBundlerService>;\n"],"mappings":";;;;;;;;;;;;;;;;AAuCA,MAAM,kBAAkB;CAAC;CAAY;CAAS;AAAU;;AAGxD,SAAS,oBAAoB,UAA4C;CACvE,OAAO,gBAAgB,MAAM,UAAU;EACrC,MAAM,QAAQ,SAAS;EAEvB,QAD0B,MAAM,QAAQ,KAAK,IAAI,QAAQ,UAAU,KAAA,IAAY,CAAC,IAAI,CAAC,KAAK,EAAA,CAC5E,MAAM,UAAU;GAC5B,MAAM,SAAU,OAAuC;GACvD,OAAO,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,QAAQ;EAC1D,CAAC;CACH,CAAC;AACH;;;;;;;AAgCA,SAAgB,qBAAqB,SAAgC;;CAEnE,MAAM,cAAcA,mBAAAA,kBAAkB;EAAE,eAAe,QAAQ;EAAe,OAAO,QAAQ;CAAM,CAAC;;CAEpG,MAAM,2BAAW,IAAI,IAAY;;CAEjC,MAAM,WAAWC,2BAAAA,sBAAsB;;CAEvC,MAAM,cAAcC,2BAAAA,yBAAyB;CAC7C,MAAM,wBAAQ,IAAI,IAAsB;;;;;;CAMxC,MAAM,gCAAgB,IAAI,IAA2B;CACrD,IAAI,eAAe;CACnB,MAAM,WAAW,SAA2B;EAC1C,IAAI,OAAO,MAAM,IAAI,IAAI;EACzB,IAAI,SAAS,KAAA,GAAW;GACtB,OAAO,CAAC;GACR,MAAM,IAAI,MAAM,IAAI;EACtB;EACA,OAAO;CACT;;CAEA,MAAM,UACJ,MACA,OACA,SACG;EACH,MAAM,WAAW,KAAK;EACtB,IAAI,aAAa,KAAA,GAAW,OAAO;EACnC,MAAM,UAAU,KAAK;EACrB,MAAM,OAAO;EACb,QAAQ,YAAY;GAClB,IAAI,KAAK,MAAM,SAAS,MAAM,KAAA,CAAS;EACzC,CAAC;EACD,OAAO;CACT;;;;;CAMA,MAAM,gBAAgB,SAAyC;EAC7D,MAAM,OAAO,QAAQ,IAAI;EACzB,IAAI,KAAK,iBAAiB,KAAA,GACxB,KAAK,eAAeC,2BAAAA,iBAAiB;GACnC;GACA,eAAe,QAAQ;GACvB,aAAa,QAAQ;GACrB,kBAAkB;EACpB,CAAC;EAEH,OAAO,KAAK;CACd;CAEA,MAAM,oBAAoB,SAAgC;EACxD,MAAM,OAAO,QAAQ,IAAI;EACzB,IAAI,KAAK,cAAc,KAAA,GAAW;GAChC,MAAM,UAAA,GAASC,gCAAAA,qBAAAA,CAAqB,MAAM,QAAQ,eAAe,QAAQ,WAAW;GACpF,MAAM,YAAY,OAAO;GACzB,KAAK,YAAY;IAAE;IAAM;IAAW,eAAA,GAAcC,gCAAAA,cAAAA,CAAc,QAAQ,SAAS;GAAE;EACrF;EACA,OAAO,KAAK;CACd;;CAGA,MAAM,kBAAkB,SAAoD;EAC1E,MAAM,OAAO,QAAQ,IAAI;EACzB,OAAO,aACC,KAAK,iBACV,UAAW,KAAK,iBAAiB,OAClC,YAAY;GACV,MAAM,OAAO,EAAE;GACf,MAAM,kBAAkB,MAAMC,gBAAAA,oBAAoB,QAAQ,WAAW;GACrE,MAAM,WAAW,aAAa,IAAI;GAClC,MAAM,QAAQ,MAAM,QAAQ,IAC1B,SAAS,IAAI,OAAO,iBAAiB;IACnC,WAAW,YAAY,WAAW;IAClC,OAAO,MAAMC,cAAAA,wBAAwB,CAAC,WAAW,GAAG,QAAQ,KAAK;GACnE,EAAE,CACJ;GACA,MAAM,QAAQ,iBAAiB,MAAM,UAAU,CAAC,GAAG,IAAI,IAAI,MAAM,SAAS,UAAU,MAAM,KAAK,CAAC,CAAC,CAAC;GAClG,MAAM,UAAoC,CAAC;GAC3C,KAAK,MAAM,EAAE,aAAa,QAAQ,YAAY,MAAMC,gBAAAA,wBAClD,UACA,QAAQ,UACR,QAAQ,KACV,GAAG;IACD,IAAI;IACJ,IAAI;IAEJ,MAAM,SAAQ,MADgB,WAAW,YAAY,UAAU,EAAA,EAChC;IAC/B,IAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,GAAG;KACxE,MAAM,QAAS,MAAkC;KACjD,eAAA,GAAcC,gCAAAA,wBAAAA,CAAiB,KAAK;KACpC,IAAI,UAAU,KAAA,KAAa,gBAAgB,KAAA,GACzC,QAAQ,WAAW,GAAG,YAAY,YAAY,2CAA2C;IAC7F;IACA,IAAI;KACF,IAAI,CAAC,QAAQ,OAAO,MAAM,IAAI,MAAM,iBAAiB;KAMrD,MAAM,QALW,KAAK,OAAA,GACpBC,4BAAAA,WAAAA,CACE,MAAM,QAAQ,MAAM,aAAaC,UAAAA,QAAK,KAAK,YAAY,YAAY,cAAc,GAAGC,4BAAAA,kBAAkB,CACxG,CAE4B,CAAC,CAAC,UAAU,WAAW;KACrD,IAAI,OAAO,UAAU,YAAY,CAAC,MAAM,WAAW,IAAI,KAAK,MAAM,SAAS,IAAI,KAAK,WAAW,KAAK,KAAK,GACvG,MAAM,IAAI,MAAM,wBAAwB;KAC1C,MAAM,SAAA,GAAQF,4BAAAA,WAAAA,CACZ,MAAM,QAAQ,MAAM,cAAcC,UAAAA,QAAK,KAAK,YAAY,YAAY,KAAK,GAAGC,4BAAAA,kBAAkB,CAChG;KACA,MAAM,QAAA,GAAOF,4BAAAA,WAAAA,CAAW,MAAM,QAAQ,MAAM,cAAc,YAAY,YAAYE,4BAAAA,kBAAkB,CAAC;KACrG,MAAM,WAAWD,UAAAA,QAAK,SAAS,MAAM,KAAK;KAC1C,IAAI,SAAS,WAAW,IAAI,KAAKA,UAAAA,QAAK,WAAW,QAAQ,GAAG,MAAM,IAAI,MAAM,0BAA0B;KACtG,MAAM,SAAU,MAAM,SAAS,MAAM,YAAY,OAAO,KAAK,CAAC;KAC9D,eAAA,GAAcE,gCAAAA,iBAAAA,CAAiB,OAAO,OAAO;IAC/C,QAAQ;KAEN,cAAc,KAAA;IAChB;IACA,QAAQ,KAAK;KACX;KACA,GAAI,gBAAgB,KAAA,IAAY,CAAC,IAAI,EAAE,YAAY;KACnD,aAAa,YAAY;KACzB,QACEC,8CAAAA,mBAAmB,YAAY,WAAW,KAAK,iBAAiB,IAAI,YAAY,WAAW,IACvF,OACA,oBAAoB,KAAA,IAClB,YACA;KACR,OAAO,YAAY;KACnB;KACA,KAAK,MAAM,YAAY,OAAO,MAAM;KACpC,QAAQ,YAAY;KACpB;KAEA,UAAU,YAAY,aAAa,QAAQA,8CAAAA,mBAAmB,YAAY,WAAW;IACvF,CAAC;GACH;GAEA,KAAK,cAAc,IAAI,IAAI,CAAC,EAAE,QAAQ,KAAK,MAAM,cAAc,IAAI,MAAM;IAAE;IAAM;GAAM,CAAC;GACxF,OAAO;EACT,CACF;CACF;CAEA,MAAM,aAAa,OAAO,gBAAsE;EAC9F,IAAI,CAAC,QAAQ,OAAO,OAAO,KAAA;EAC3B,MAAM,OAAO,MAAM,QAAQ,MAAM,aAAaH,UAAAA,QAAK,KAAK,aAAa,cAAc,GAAGC,4BAAAA,kBAAkB;EACxG,IAAI,CAAC,KAAK,IAAI,OAAO,KAAA;EACrB,IAAI;GACF,OAAO,KAAK,MAAM,KAAK,KAAK;EAC9B,SAAS,OAAO;GACd,QAAQ,WAAW,IAAI,YAAY,0BAA0B,OAAO,KAAK,GAAG;GAC5E;EACF;CACF;;CAEA,MAAM,cAAc,SAAmC;EACrD,MAAM,OAAO,QAAQ,IAAI;EACzB,OAAO,aACC,KAAK,MACV,UAAW,KAAK,MAAM,OACvB,YAAY;GACV,MAAM,aAAa,MAAMG,kBAAAA,oBAAoB,aAAa,IAAI,GAAG,QAAQ,KAAK;GAC9E,MAAM,UAAgC,CAAC;GACvC,KAAK,MAAM,EAAE,aAAa,QAAQ,YAAY,YAC5C,QAAQ,KAAK;IACX,aAAa,YAAY;IACzB,GAAI,YAAY,OAAO,KAAA,IAAY,CAAC,IAAI,EAAE,SAAS,YAAY,GAAG,QAAQ;IAC1E,OAAO,YAAY;IACnB;IACA,KAAK,MAAM,YAAY,OAAO,MAAM;IACpC;GACF,CAAC;GACH,OAAO;IAAE;IAAY;GAAQ;EAC/B,CACF;CACF;;;;;;CAOA,MAAM,mBAAmB,MAAc,OAAmB,YAA+C;EACvG,MAAM,EAAE,WAAW,iBAAiB,iBAAiB,IAAI;EACzD,OAAO,QACJ,QAAQ,UAAU,MAAM,OAAO,SAAS,KAAK,CAAC,CAAC,CAC/C,KAAK,WAAW;GACf,QAAQ,MAAM;GACd,KAAK,MAAM;GACX,WAAW,KAAK,UAAU;IAAC,MAAM;IAAQ,MAAM,aAAa;IAAM;IAAW;GAAY,CAAC;EAC5F,EAAE;CACN;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;;;;;EAKA,eAAe,MAAc,cAAiC;GAC5D,MAAM,WAAW,cAAc,IAAI,IAAI;GACvC,IAAI,aAAa,KAAA,GACf,MAAM,IAAI,MAAM,sBAAsB,KAAK,sDAAsD;GACnG,OAAO,CACL,GAAG,IAAI,IACL,SAAS,MACN,QAAQ,UAAU,cAAc,KAAA,KAAa,MAAM,cAAc,SAAS,CAAC,CAC3E,SAAS,UAAU,MAAM,KAAK,CACnC,CACF;EACF;;EAEA,WAAW,OAAO,KAAa,MAAc,UAC3C,YAAY,KAAK,KAAK,gBAAgB,MAAM,OAAO,MAAM,eAAe,IAAI,CAAC,CAAC;;EAEhF,cACE,KACA,MACA,OACA,SACA,yBAA8B,IAAI,IAAI,MAEtC,YAAY,OACV,KACA,gBAAgB,MAAM,OAAO,OAAO,GACpC,IAAI,IAAI,QAAQ,QAAQ,UAAU,OAAO,IAAI,MAAM,WAAW,CAAC,CAAC,CAAC,KAAK,UAAU,MAAM,MAAM,CAAC,CAC/F;EACF,cAAc,QAAsB,YAAY,OAAO,GAAG;;EAE1D,kBAAwB,MAAM,MAAM;;;;;EAKpC,gBAAgB,OACd,SACiG;GACjG,MAAM,UAAU,MAAM,eAAe,IAAI;GACzC,MAAM,EAAE,WAAW,iBAAiB,iBAAiB,IAAI;GACzD,MAAM,YAAY,cAAc,IAAI,IAAI,CAAC,EAAE,SAAS,CAAC,EAAA,CAClD,QAAQ,UAAU,MAAM,cAAc,SAAS,CAAC,CAChD,SAAS,UAAU,MAAM,KAAK;GACjC,MAAM,WAAqE,CAAC;GAC5E,KAAK,MAAM,eAAe,IAAI,IAAI,QAAQ,GAAG;IAC3C,MAAM,WAAW,MAAM,WAAW,WAAW;IAC7C,MAAM,OAAO,UAAU;IACvB,IAAI,aAAa,KAAA,KAAa,OAAO,SAAS,YAAYD,8CAAAA,mBAAmB,IAAI,GAAG;IACpF,IAAI,CAAC,oBAAoB,QAAQ,GAAG;IACpC,MAAM,SAAS,QAAQ,MACpB,UACC,MAAM,gBAAgB,QACtB,MAAM,OAAO,SAAS,QAAQ,KAC9B,MAAM,OAAO,MACV,UACC,MAAM,cAAc,cAAc,MAAM,UAAU,aAAa,aAAa,SAAS,MAAM,KAAK,EACpG,CACJ;IACA,SAAS,KAAK;KAAE;KAAM;KAAa;IAAO,CAAC;GAC7C;GACA,OAAO;EACT;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"bundlerService.cjs","names":["createPackageUrls","createLiveModuleCache","createPackageReloadCheck","rootCompositions","loadMajorModesConfig","resolveLayers","catalogPackageNames","compositionPackageRoots","serverPackageCandidates","parseWebMetadata","getOrThrow","path","BACKGROUND_CONTEXT","parseApiContract","isFixedHostPackage","mcpPluginCandidates"],"sources":["../../../../src/builders/server/bundlerService.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { loadMajorModesConfig, resolveLayers } from '@agimon-ai/po-config/majorModes';\nimport { parseApiContract, type PoApiContract } from '@agimon-ai/po-core/apiContracts';\nimport type { LiveMcpPluginEntry } from '@agimon-ai/po-core/mcpFacet';\nimport type { PoApiScope } from '@agimon-ai/po-core/packageApi';\nimport { BACKGROUND_CONTEXT, getOrThrow } from '@agimon-ai/po-core/platform';\nimport type { FileSystem } from '@agimon-ai/po-core/platform';\nimport {\n parsePoWebBrainMetadata as parseWebMetadata,\n type LiveServerPackageEntry,\n} from '@agimon-ai/po-core/serverPlugin';\nexport { parsePoWebBrainMetadata as parseWebMetadata } from '@agimon-ai/po-core/serverPlugin';\n\nimport { catalogPackageNames } from '../../composition/layerPackageInstaller';\nimport { type ExtensionComposition, isFixedHostPackage } from '../cli/extensionAssembler';\nimport { rootCompositions } from '../cli/sessionComposition';\nimport { compositionPackageRoots } from '../web';\nimport { serverPackageCandidates } from './index';\nimport { type McpPluginCandidate, mcpPluginCandidates } from './mcpBundle';\nimport { createLiveModuleCache, createPackageReloadCheck, type ScopeChange } from './packageReloadCheck';\nimport { createPackageUrls } from './packageUrl';\n\nexport interface BundlerServiceOptions {\n readonly files?: FileSystem;\n readonly homeDirectory: string;\n readonly environment: NodeJS.ProcessEnv;\n /** Installed host payload: import its packages in place without writing content snapshots beside them. */\n readonly immutableRoot?: string;\n /** Called after a root's compositions are resolved, so the caller can watch what they read. */\n readonly onCompositions?: (\n root: string,\n compositions: readonly ExtensionComposition[],\n packageRoots: readonly string[],\n ) => void | Promise<void>;\n /** Reports a package left out of a root's load, so one broken package never stops the rest. */\n readonly onNotice?: (message: string) => void;\n}\n\nconst MANIFEST_FIELDS = ['poServer', 'poWeb', 'poNative'] as const;\n\n/** Whether any server, web or native block of a package manifest names the global scope. */\nfunction declaresGlobalScope(manifest: Record<string, unknown>): boolean {\n return MANIFEST_FIELDS.some((field) => {\n const value = manifest[field];\n const blocks: unknown[] = Array.isArray(value) ? value : value === undefined ? [] : [value];\n return blocks.some((block) => {\n const scopes = (block as { scopes?: unknown } | null)?.scopes;\n return Array.isArray(scopes) && scopes.includes('global');\n });\n });\n}\n\nexport interface RootSelection {\n readonly root: string;\n readonly majorMode: string;\n readonly activeLayers: string[];\n}\n\ninterface RootMcp {\n readonly candidates: McpPluginCandidate[];\n readonly entries: LiveMcpPluginEntry[];\n}\n\ninterface RootMemo {\n compositions?: ExtensionComposition[];\n selection?: RootSelection;\n packageEntries?: Promise<LiveServerPackageEntry[]>;\n mcp?: Promise<RootMcp>;\n}\n\n/** One root's package roots per major mode, from the entries load that started last. */\ninterface PreparedRoots {\n readonly load: number;\n readonly roots: { majorMode: string | undefined; roots: string[] }[];\n}\n\n/**\n * Process-level owner of what Po compiles and loads: content-addressed package URLs, the\n * live module cache, the poison set, per-scope reload tracking, and a per-root memo of the\n * compositions and entries a root selects. Every reader shares one computation until\n * `invalidate`; the caller decides when (a finished sync or a watched change).\n */\nexport function createBundlerService(options: BundlerServiceOptions) {\n /** Mutable packages get content-addressed URLs; the host's installed payload imports in place. */\n const packageUrls = createPackageUrls({ immutableRoot: options.immutableRoot, files: options.files });\n /** URLs whose live import timed out or threw; skipped by every loader until the content changes. */\n const poisoned = new Set<string>();\n /** Imports each content-addressed URL once, so a reload imports only what changed. */\n const importer = createLiveModuleCache();\n /** The package identities each mounted global and workspace scope last loaded. */\n const reloadCheck = createPackageReloadCheck();\n const memos = new Map<string, RootMemo>();\n /**\n * Kept outside the memo, because a watched change invalidates while other scope checks are\n * between awaiting `packageEntries` and reading `packageRoots`; they keep the roots that load\n * prepared until a newer load replaces them.\n */\n const preparedRoots = new Map<string, PreparedRoots>();\n let entriesLoads = 0;\n const memoFor = (root: string): RootMemo => {\n let memo = memos.get(root);\n if (memo === undefined) {\n memo = {};\n memos.set(root, memo);\n }\n return memo;\n };\n /** A pending load shared by every reader; a failed one is dropped so the next reader retries. */\n const shared = <T>(\n read: () => Promise<T> | undefined,\n write: (value: Promise<T> | undefined) => void,\n load: () => Promise<T>,\n ) => {\n const existing = read();\n if (existing !== undefined) return existing;\n const loading = load();\n write(loading);\n loading.catch(() => {\n if (read() === loading) write(undefined);\n });\n return loading;\n };\n\n /**\n * Every composition the root's config can select, one per major mode, resolved live.\n * A package sync has not prepared yet is left out with a diagnostic.\n */\n const compositions = (root: string): ExtensionComposition[] => {\n const memo = memoFor(root);\n if (memo.compositions === undefined) {\n memo.compositions = rootCompositions({\n root,\n homeDirectory: options.homeDirectory,\n environment: options.environment,\n tolerateUnsynced: true,\n });\n }\n return memo.compositions;\n };\n\n const defaultSelection = (root: string): RootSelection => {\n const memo = memoFor(root);\n if (memo.selection === undefined) {\n const config = loadMajorModesConfig(root, options.homeDirectory, options.environment);\n const majorMode = config.defaultMajorMode;\n memo.selection = { root, majorMode, activeLayers: resolveLayers(config, majorMode) };\n }\n return memo.selection;\n };\n\n /** The root's server package entries, each with the URL its current package content imports from. */\n const packageEntries = (root: string): Promise<LiveServerPackageEntry[]> => {\n const memo = memoFor(root);\n return shared(\n () => memo.packageEntries,\n (value) => (memo.packageEntries = value),\n async () => {\n const load = ++entriesLoads;\n const shippedPackages = await catalogPackageNames(options.environment);\n const selected = compositions(root);\n const roots = await Promise.all(\n selected.map(async (composition) => ({\n majorMode: composition.majorMode?.name,\n roots: await compositionPackageRoots([composition], options.files),\n })),\n );\n await options.onCompositions?.(root, selected, [...new Set(roots.flatMap((entry) => entry.roots))]);\n const entries: LiveServerPackageEntry[] = [];\n for (const { declaration, module, owners } of await serverPackageCandidates(\n selected,\n options.onNotice,\n options.files,\n )) {\n let apiContract: PoApiContract | undefined;\n const packageManifest = await manifestOf(declaration.packageDir);\n const readBrain = (key: 'poWeb' | 'poNative') => {\n const block = packageManifest?.[key];\n if (block === null || typeof block !== 'object' || Array.isArray(block)) return undefined;\n const brain = (block as Record<string, unknown>).brain;\n const parsed = parseWebMetadata(brain);\n if (brain !== undefined && parsed === undefined)\n options.onNotice?.(`${declaration.packageName}: invalid ${key}.brain metadata unavailable`);\n return parsed;\n };\n const webMetadata = readBrain('poWeb');\n const nativeMetadata = readBrain('poNative');\n try {\n if (!options.files) throw new Error('No file service');\n const manifest = JSON.parse(\n getOrThrow(\n await options.files.readTextFile(path.join(declaration.packageDir, 'package.json'), BACKGROUND_CONTEXT),\n ),\n );\n const entry: unknown = manifest.poServer?.contracts?.dist;\n if (typeof entry !== 'string' || !entry.startsWith('./') || entry.includes('..') || /[\\\\%?#]/u.test(entry))\n throw new Error('Invalid contract entry');\n const built = getOrThrow(\n await options.files.canonicalPath(path.join(declaration.packageDir, entry), BACKGROUND_CONTEXT),\n );\n const root = getOrThrow(await options.files.canonicalPath(declaration.packageDir, BACKGROUND_CONTEXT));\n const relative = path.relative(root, built);\n if (relative.startsWith('..') || path.isAbsolute(relative)) throw new Error('Contract escapes package');\n const module = (await importer(await packageUrls.urlFor(built))) as { default?: unknown };\n apiContract = parseApiContract(module.default);\n } catch {\n // Missing contracts fail closed for federation, but do not break ordinary local APIs.\n apiContract = undefined;\n }\n entries.push({\n apiContract,\n ...(webMetadata === undefined ? {} : { webMetadata }),\n ...(nativeMetadata === undefined ? {} : { nativeMetadata }),\n packageName: declaration.packageName,\n origin:\n isFixedHostPackage(declaration.packageName) || shippedPackages?.has(declaration.packageName)\n ? 'po'\n : shippedPackages === undefined\n ? 'unknown'\n : 'personal',\n entry: declaration.entry,\n module,\n url: await packageUrls.urlFor(module),\n scopes: declaration.scopes,\n owners,\n // A manifest alone cannot make Po fatal: only a fixed host package may be required.\n required: declaration.required === true && isFixedHostPackage(declaration.packageName),\n });\n }\n // A load that started earlier but finished later never replaces a newer load's roots.\n if ((preparedRoots.get(root)?.load ?? 0) < load) preparedRoots.set(root, { load, roots });\n return entries;\n },\n );\n };\n\n const manifestOf = async (packageRoot: string): Promise<Record<string, unknown> | undefined> => {\n if (!options.files) return undefined;\n const text = await options.files.readTextFile(path.join(packageRoot, 'package.json'), BACKGROUND_CONTEXT);\n if (!text.ok) return undefined;\n try {\n return JSON.parse(text.value) as Record<string, unknown>;\n } catch (error) {\n options.onNotice?.(`'${packageRoot}' manifest is not JSON: ${String(error)}`);\n return undefined;\n }\n };\n /** The root's MCP plugin candidates and their entries with current URLs. */\n const mcpEntries = (root: string): Promise<RootMcp> => {\n const memo = memoFor(root);\n return shared(\n () => memo.mcp,\n (value) => (memo.mcp = value),\n async () => {\n const candidates = await mcpPluginCandidates(compositions(root), options.files);\n const entries: LiveMcpPluginEntry[] = [];\n for (const { declaration, module, owners } of candidates)\n entries.push({\n packageName: declaration.packageName,\n ...(declaration.ui === undefined ? {} : { widgets: declaration.ui.widgets }),\n entry: declaration.entry,\n module,\n url: await packageUrls.urlFor(module),\n owners,\n });\n return { candidates, entries };\n },\n );\n };\n\n /**\n * What a global or workspace scope loads: one identity per server package entry in that scope.\n * The URL changes with package content; `selection` carries ownership and the root's\n * default mode, so a modes.yaml change that selects a package in or out is reloaded too.\n */\n const scopeIdentities = (root: string, scope: PoApiScope, entries: readonly LiveServerPackageEntry[]) => {\n const { majorMode, activeLayers } = defaultSelection(root);\n return entries\n .filter((entry) => entry.scopes.includes(scope))\n .map((entry) => ({\n module: entry.module,\n url: entry.url,\n selection: JSON.stringify([entry.owners, entry.required === true, majorMode, activeLayers]),\n }));\n };\n\n return {\n packageUrls,\n poisoned,\n importer,\n compositions,\n defaultSelection,\n packageEntries,\n mcpEntries,\n /**\n * Every package root the root's config can select, over all its major modes or only `majorMode`'s,\n * as the latest `packageEntries` load prepared them; an `invalidate` keeps them until the next load.\n */\n packageRoots: (root: string, majorMode?: string): string[] => {\n const prepared = preparedRoots.get(root);\n if (prepared === undefined)\n throw new Error(`Package roots for '${root}' have not been prepared; await packageEntries first.`);\n return [\n ...new Set(\n prepared.roots\n .filter((entry) => majorMode === undefined || entry.majorMode === majorMode)\n .flatMap((entry) => entry.roots),\n ),\n ];\n },\n /** How the scope's current entries differ from what it last committed. */\n diffScope: async (key: string, root: string, scope: PoApiScope): Promise<ScopeChange> =>\n reloadCheck.diff(key, scopeIdentities(root, scope, await packageEntries(root))),\n /** Records what a scope installed, so the next diff compares against it; `failed` packages are retried. */\n commitScope: (\n key: string,\n root: string,\n scope: PoApiScope,\n entries: readonly LiveServerPackageEntry[],\n failed: ReadonlySet<string> = new Set(),\n ): void =>\n reloadCheck.commit(\n key,\n scopeIdentities(root, scope, entries),\n new Set(entries.filter((entry) => failed.has(entry.packageName)).map((entry) => entry.module)),\n ),\n forgetScope: (key: string): void => reloadCheck.forget(key),\n /** Drops every root's memo; the next reader recomputes from disk. */\n invalidate: (): void => memos.clear(),\n /**\n * The packages a root's default selection offers the global scope: each that declares the global scope,\n * and whether it has a global server entry there. Fixed host packages always come from the global composition.\n */\n globalPackages: async (\n root: string,\n ): Promise<{ readonly name: string; readonly packageRoot: string; readonly server: boolean }[]> => {\n const entries = await packageEntries(root);\n const { majorMode, activeLayers } = defaultSelection(root);\n const selected = (preparedRoots.get(root)?.roots ?? [])\n .filter((entry) => entry.majorMode === majorMode)\n .flatMap((entry) => entry.roots);\n const packages: { name: string; packageRoot: string; server: boolean }[] = [];\n for (const packageRoot of new Set(selected)) {\n const manifest = await manifestOf(packageRoot);\n const name = manifest?.name;\n if (manifest === undefined || typeof name !== 'string' || isFixedHostPackage(name)) continue;\n if (!declaresGlobalScope(manifest)) continue;\n const server = entries.some(\n (entry) =>\n entry.packageName === name &&\n entry.scopes.includes('global') &&\n entry.owners.some(\n (owner) =>\n owner.majorMode === majorMode && (owner.layer === 'default' || activeLayers.includes(owner.layer)),\n ),\n );\n packages.push({ name, packageRoot, server });\n }\n return packages;\n },\n };\n}\n\nexport type BundlerService = ReturnType<typeof createBundlerService>;\n"],"mappings":"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"}
|