veryfront 0.1.180 → 0.1.182
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/esm/deno.js +1 -1
- package/esm/src/agent/ag-ui-browser-encoder.d.ts +31 -0
- package/esm/src/agent/ag-ui-browser-encoder.d.ts.map +1 -0
- package/esm/src/agent/ag-ui-browser-encoder.js +330 -0
- package/esm/src/agent/index.d.ts +1 -0
- package/esm/src/agent/index.d.ts.map +1 -1
- package/esm/src/agent/index.js +1 -0
- package/esm/src/internal-agents/ag-ui-sse.d.ts +8 -28
- package/esm/src/internal-agents/ag-ui-sse.d.ts.map +1 -1
- package/esm/src/internal-agents/ag-ui-sse.js +14 -218
- package/esm/src/rendering/orchestrator/pipeline.d.ts +3 -0
- package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/pipeline.js +26 -16
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
- package/src/deno.js +1 -1
- package/src/src/agent/ag-ui-browser-encoder.ts +417 -0
- package/src/src/agent/index.ts +9 -0
- package/src/src/internal-agents/ag-ui-sse.ts +31 -272
- package/src/src/rendering/orchestrator/pipeline.ts +41 -19
- package/src/src/utils/version-constant.ts +1 -1
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createAgUiBrowserEncoderState, finalizeAgUiBrowserEvents, mapRuntimeStreamEventToAgUiBrowserEvents, } from "../agent/ag-ui-browser-encoder.js";
|
|
2
2
|
import { serverLogger } from "../utils/index.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
const encoder = new TextEncoder();
|
|
5
5
|
const logger = serverLogger.component("internal-agents-ag-ui-sse");
|
|
6
6
|
export function createStreamTransformState() {
|
|
7
|
-
return
|
|
8
|
-
messageId: null,
|
|
9
|
-
textOpen: false,
|
|
10
|
-
reasoningMessageId: null,
|
|
11
|
-
sawVisibleOutput: false,
|
|
12
|
-
sawTerminalError: false,
|
|
13
|
-
metadata: {},
|
|
14
|
-
};
|
|
7
|
+
return createAgUiBrowserEncoderState();
|
|
15
8
|
}
|
|
16
9
|
const agUiEventPayloadSchemas = {
|
|
17
10
|
RunStarted: z.object({
|
|
@@ -53,6 +46,12 @@ const agUiEventPayloadSchemas = {
|
|
|
53
46
|
ReasoningMessageEnd: z.object({
|
|
54
47
|
messageId: z.string().min(1),
|
|
55
48
|
}),
|
|
49
|
+
StepStarted: z.object({
|
|
50
|
+
stepName: z.string().min(1),
|
|
51
|
+
}),
|
|
52
|
+
StepFinished: z.object({
|
|
53
|
+
stepName: z.string().min(1),
|
|
54
|
+
}),
|
|
56
55
|
ToolCallStart: z.object({
|
|
57
56
|
toolCallId: z.string().min(1),
|
|
58
57
|
toolCallName: z.string().min(1),
|
|
@@ -69,6 +68,10 @@ const agUiEventPayloadSchemas = {
|
|
|
69
68
|
result: z.unknown(),
|
|
70
69
|
isError: z.boolean().optional(),
|
|
71
70
|
}),
|
|
71
|
+
Custom: z.object({
|
|
72
|
+
name: z.string().min(1),
|
|
73
|
+
value: z.unknown(),
|
|
74
|
+
}),
|
|
72
75
|
RunError: z.object({
|
|
73
76
|
code: z.string().min(1).optional(),
|
|
74
77
|
message: z.string().min(1),
|
|
@@ -113,216 +116,9 @@ export function parseSseJsonEvents(chunk) {
|
|
|
113
116
|
});
|
|
114
117
|
return { events, remainder };
|
|
115
118
|
}
|
|
116
|
-
function getMessageId(state, event) {
|
|
117
|
-
if (typeof event.messageId === "string") {
|
|
118
|
-
state.messageId = event.messageId;
|
|
119
|
-
return event.messageId;
|
|
120
|
-
}
|
|
121
|
-
if (!state.messageId && typeof event.id === "string") {
|
|
122
|
-
state.messageId = event.id;
|
|
123
|
-
}
|
|
124
|
-
if (!state.messageId) {
|
|
125
|
-
state.messageId = dntShim.crypto.randomUUID();
|
|
126
|
-
}
|
|
127
|
-
return state.messageId;
|
|
128
|
-
}
|
|
129
|
-
function getReasoningMessageId(state, event) {
|
|
130
|
-
if (typeof event.id === "string" && event.id.length > 0) {
|
|
131
|
-
state.reasoningMessageId = state.messageId
|
|
132
|
-
? `${state.messageId}:reasoning:${event.id}`
|
|
133
|
-
: event.id;
|
|
134
|
-
return state.reasoningMessageId;
|
|
135
|
-
}
|
|
136
|
-
if (!state.reasoningMessageId) {
|
|
137
|
-
state.reasoningMessageId = state.messageId
|
|
138
|
-
? `${state.messageId}:reasoning:${dntShim.crypto.randomUUID()}`
|
|
139
|
-
: dntShim.crypto.randomUUID();
|
|
140
|
-
}
|
|
141
|
-
return state.reasoningMessageId;
|
|
142
|
-
}
|
|
143
|
-
function applyDataMetadata(state, event) {
|
|
144
|
-
const data = event.data && typeof event.data === "object" && !Array.isArray(event.data)
|
|
145
|
-
? event.data
|
|
146
|
-
: event;
|
|
147
|
-
if (typeof data.model === "string") {
|
|
148
|
-
state.metadata.model = data.model;
|
|
149
|
-
const provider = data.model.split("/")[0];
|
|
150
|
-
if (provider) {
|
|
151
|
-
state.metadata.provider = provider;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
function applyResponseMetadata(state, response) {
|
|
156
|
-
if (!response)
|
|
157
|
-
return;
|
|
158
|
-
if (response.usage) {
|
|
159
|
-
state.metadata.inputTokens = response.usage.promptTokens;
|
|
160
|
-
state.metadata.outputTokens = response.usage.completionTokens;
|
|
161
|
-
state.metadata.totalTokens = response.usage.totalTokens;
|
|
162
|
-
}
|
|
163
|
-
const finishReason = response.metadata && typeof response.metadata === "object"
|
|
164
|
-
? response.metadata.finishReason
|
|
165
|
-
: undefined;
|
|
166
|
-
if (typeof finishReason === "string") {
|
|
167
|
-
state.metadata.finishReason = finishReason;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
119
|
export function mapRuntimeEventToAgUi(state, event) {
|
|
171
|
-
|
|
172
|
-
case "message-start":
|
|
173
|
-
getMessageId(state, event);
|
|
174
|
-
return [];
|
|
175
|
-
case "text-start": {
|
|
176
|
-
if (state.textOpen)
|
|
177
|
-
return [];
|
|
178
|
-
const messageId = getMessageId(state, event);
|
|
179
|
-
state.textOpen = true;
|
|
180
|
-
state.sawVisibleOutput = true;
|
|
181
|
-
return [{
|
|
182
|
-
event: "TextMessageStart",
|
|
183
|
-
payload: { messageId, role: "assistant" },
|
|
184
|
-
}];
|
|
185
|
-
}
|
|
186
|
-
case "text-delta": {
|
|
187
|
-
const messageId = getMessageId(state, event);
|
|
188
|
-
state.sawVisibleOutput = true;
|
|
189
|
-
if (!state.textOpen) {
|
|
190
|
-
state.textOpen = true;
|
|
191
|
-
return [
|
|
192
|
-
{ event: "TextMessageStart", payload: { messageId, role: "assistant" } },
|
|
193
|
-
{
|
|
194
|
-
event: "TextMessageContent",
|
|
195
|
-
payload: { messageId, delta: typeof event.delta === "string" ? event.delta : "" },
|
|
196
|
-
},
|
|
197
|
-
];
|
|
198
|
-
}
|
|
199
|
-
return [{
|
|
200
|
-
event: "TextMessageContent",
|
|
201
|
-
payload: { messageId, delta: typeof event.delta === "string" ? event.delta : "" },
|
|
202
|
-
}];
|
|
203
|
-
}
|
|
204
|
-
case "text-end": {
|
|
205
|
-
if (!state.textOpen)
|
|
206
|
-
return [];
|
|
207
|
-
state.textOpen = false;
|
|
208
|
-
return [{
|
|
209
|
-
event: "TextMessageEnd",
|
|
210
|
-
payload: { messageId: getMessageId(state, event) },
|
|
211
|
-
}];
|
|
212
|
-
}
|
|
213
|
-
case "reasoning-start":
|
|
214
|
-
state.sawVisibleOutput = true;
|
|
215
|
-
return [{
|
|
216
|
-
event: "ReasoningMessageStart",
|
|
217
|
-
payload: { messageId: getReasoningMessageId(state, event), role: "reasoning" },
|
|
218
|
-
}];
|
|
219
|
-
case "reasoning-delta":
|
|
220
|
-
state.sawVisibleOutput = true;
|
|
221
|
-
return [{
|
|
222
|
-
event: "ReasoningMessageContent",
|
|
223
|
-
payload: {
|
|
224
|
-
messageId: getReasoningMessageId(state, event),
|
|
225
|
-
delta: typeof event.delta === "string" ? event.delta : "",
|
|
226
|
-
},
|
|
227
|
-
}];
|
|
228
|
-
case "reasoning-end": {
|
|
229
|
-
const messageId = getReasoningMessageId(state, event);
|
|
230
|
-
state.reasoningMessageId = null;
|
|
231
|
-
return [{
|
|
232
|
-
event: "ReasoningMessageEnd",
|
|
233
|
-
payload: { messageId },
|
|
234
|
-
}];
|
|
235
|
-
}
|
|
236
|
-
case "tool-input-start":
|
|
237
|
-
state.sawVisibleOutput = true;
|
|
238
|
-
return [{
|
|
239
|
-
event: "ToolCallStart",
|
|
240
|
-
payload: {
|
|
241
|
-
toolCallId: event.toolCallId,
|
|
242
|
-
toolCallName: event.toolName,
|
|
243
|
-
},
|
|
244
|
-
}];
|
|
245
|
-
case "tool-input-delta":
|
|
246
|
-
state.sawVisibleOutput = true;
|
|
247
|
-
return [{
|
|
248
|
-
event: "ToolCallArgs",
|
|
249
|
-
payload: {
|
|
250
|
-
toolCallId: event.toolCallId,
|
|
251
|
-
delta: typeof event.inputTextDelta === "string" ? event.inputTextDelta : "",
|
|
252
|
-
},
|
|
253
|
-
}];
|
|
254
|
-
case "tool-input-available":
|
|
255
|
-
state.sawVisibleOutput = true;
|
|
256
|
-
return [{
|
|
257
|
-
event: "ToolCallEnd",
|
|
258
|
-
payload: { toolCallId: event.toolCallId },
|
|
259
|
-
}];
|
|
260
|
-
case "tool-output-available":
|
|
261
|
-
state.sawVisibleOutput = true;
|
|
262
|
-
return [{
|
|
263
|
-
event: "ToolCallResult",
|
|
264
|
-
payload: {
|
|
265
|
-
toolCallId: event.toolCallId,
|
|
266
|
-
result: event.output,
|
|
267
|
-
},
|
|
268
|
-
}];
|
|
269
|
-
case "tool-output-error":
|
|
270
|
-
state.sawVisibleOutput = true;
|
|
271
|
-
return [{
|
|
272
|
-
event: "ToolCallResult",
|
|
273
|
-
payload: {
|
|
274
|
-
toolCallId: event.toolCallId,
|
|
275
|
-
result: { error: event.errorText },
|
|
276
|
-
isError: true,
|
|
277
|
-
},
|
|
278
|
-
}];
|
|
279
|
-
case "step-start":
|
|
280
|
-
return [];
|
|
281
|
-
case "step-end":
|
|
282
|
-
return [];
|
|
283
|
-
case "data":
|
|
284
|
-
applyDataMetadata(state, event);
|
|
285
|
-
return [];
|
|
286
|
-
case "error":
|
|
287
|
-
state.sawTerminalError = true;
|
|
288
|
-
return [{
|
|
289
|
-
event: "RunError",
|
|
290
|
-
payload: {
|
|
291
|
-
message: typeof event.error === "string" ? event.error : "Agent run failed",
|
|
292
|
-
},
|
|
293
|
-
}];
|
|
294
|
-
default:
|
|
295
|
-
return [];
|
|
296
|
-
}
|
|
120
|
+
return mapRuntimeStreamEventToAgUiBrowserEvents(state, event);
|
|
297
121
|
}
|
|
298
122
|
export function finalizeRunEvents(state, response) {
|
|
299
|
-
|
|
300
|
-
if (state.sawTerminalError) {
|
|
301
|
-
return [];
|
|
302
|
-
}
|
|
303
|
-
if (!state.sawVisibleOutput) {
|
|
304
|
-
state.sawTerminalError = true;
|
|
305
|
-
return [{
|
|
306
|
-
event: "RunError",
|
|
307
|
-
payload: {
|
|
308
|
-
code: "EMPTY_ASSISTANT_OUTPUT",
|
|
309
|
-
message: "Agent run produced no assistant-visible output",
|
|
310
|
-
},
|
|
311
|
-
}];
|
|
312
|
-
}
|
|
313
|
-
const events = [];
|
|
314
|
-
if (state.textOpen) {
|
|
315
|
-
state.textOpen = false;
|
|
316
|
-
events.push({
|
|
317
|
-
event: "TextMessageEnd",
|
|
318
|
-
payload: { messageId: getMessageId(state, { type: "text-end" }) },
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
events.push({
|
|
322
|
-
event: "RunFinished",
|
|
323
|
-
payload: {
|
|
324
|
-
metadata: state.metadata,
|
|
325
|
-
},
|
|
326
|
-
});
|
|
327
|
-
return events;
|
|
123
|
+
return finalizeAgUiBrowserEvents(state, response);
|
|
328
124
|
}
|
|
@@ -76,7 +76,10 @@ export declare class RenderPipeline {
|
|
|
76
76
|
/** Resolve page data for SPA client-side navigation without rendering HTML. */
|
|
77
77
|
resolvePageData(slug: string, options?: RenderOptions): Promise<PageDataResponse>;
|
|
78
78
|
private extractMdxMetadata;
|
|
79
|
+
private serializeLayouts;
|
|
80
|
+
private serializeLayoutProps;
|
|
79
81
|
private resolveAppPath;
|
|
82
|
+
private resolveProjectUpdatedAt;
|
|
80
83
|
private resolvePageDataCss;
|
|
81
84
|
private generatePageCssFromHtml;
|
|
82
85
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA6ChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxE,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;CAC1E;AAyBD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,MAAM,EAAE,oBAAoB;IAaxC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAKxB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,sBAAsB;YAIhB,0BAA0B;IAaxC;;;;;;;;;OASG;YACW,qBAAqB;IAyDnC;;;OAGG;YACW,mBAAmB;IAiGjC,OAAO,CAAC,uBAAuB;IAkCzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA+P9E,+EAA+E;IACzE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;YA+
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA6ChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxE,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;CAC1E;AAyBD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,MAAM,EAAE,oBAAoB;IAaxC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAKxB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,sBAAsB;YAIhB,0BAA0B;IAaxC;;;;;;;;;OASG;YACW,qBAAqB;IAyDnC;;;OAGG;YACW,mBAAmB;IAiGjC,OAAO,CAAC,uBAAuB;IAkCzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA+P9E,+EAA+E;IACzE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;YA+EzE,kBAAkB;IA2ChC,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,oBAAoB;YAYd,cAAc;IAW5B,OAAO,CAAC,uBAAuB;YAYjB,kBAAkB;YAmElB,uBAAuB;IAmBrC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAetB"}
|
|
@@ -407,24 +407,11 @@ export class RenderPipeline {
|
|
|
407
407
|
const dataResolution = await this.resolveDataFetching(slug, pageInfo.entity.path, layoutResult.nestedLayouts, options);
|
|
408
408
|
const pageProps = dataResolution.pageProps;
|
|
409
409
|
const params = dataResolution.params;
|
|
410
|
-
const layoutProps =
|
|
411
|
-
for (const [layoutId, props] of dataResolution.layoutProps.entries()) {
|
|
412
|
-
layoutProps[layoutId] = props;
|
|
413
|
-
}
|
|
410
|
+
const layoutProps = this.serializeLayoutProps(dataResolution.layoutProps);
|
|
414
411
|
const { frontmatter, headings } = await this.extractMdxMetadata(pageType, pageInfo, slug, options, params);
|
|
415
|
-
const layouts = layoutResult.nestedLayouts
|
|
416
|
-
.filter((l) => l.componentPath || l.path)
|
|
417
|
-
.map((l) => ({
|
|
418
|
-
kind: l.kind,
|
|
419
|
-
path: extractRelativePathShared(l.componentPath || l.path || "", this.config.projectDir),
|
|
420
|
-
}));
|
|
412
|
+
const layouts = this.serializeLayouts(layoutResult.nestedLayouts);
|
|
421
413
|
const providers = [];
|
|
422
|
-
|
|
423
|
-
const fs = this.config.adapter?.fs;
|
|
424
|
-
if (fs && isExtendedFSAdapter(fs) && fs.isVeryfrontAdapter()) {
|
|
425
|
-
const wrappedAdapter = fs.getUnderlyingAdapter();
|
|
426
|
-
projectUpdatedAt = wrappedAdapter.getProjectData?.()?.updated_at;
|
|
427
|
-
}
|
|
414
|
+
const projectUpdatedAt = this.resolveProjectUpdatedAt();
|
|
428
415
|
const appPath = await this.resolveAppPath();
|
|
429
416
|
const { css, cssError } = await this.resolvePageDataCss(slug, options, projectUpdatedAt);
|
|
430
417
|
resolvePageDataLog.debug("Resolved page data", {
|
|
@@ -482,6 +469,21 @@ export class RenderPipeline {
|
|
|
482
469
|
return { frontmatter: {}, headings: [] };
|
|
483
470
|
}
|
|
484
471
|
}
|
|
472
|
+
serializeLayouts(nestedLayouts) {
|
|
473
|
+
return nestedLayouts
|
|
474
|
+
.filter((layout) => layout.componentPath || layout.path)
|
|
475
|
+
.map((layout) => ({
|
|
476
|
+
kind: layout.kind,
|
|
477
|
+
path: extractRelativePathShared(layout.componentPath || layout.path || "", this.config.projectDir),
|
|
478
|
+
}));
|
|
479
|
+
}
|
|
480
|
+
serializeLayoutProps(layoutProps) {
|
|
481
|
+
const serialized = {};
|
|
482
|
+
for (const [layoutId, props] of layoutProps.entries()) {
|
|
483
|
+
serialized[layoutId] = props;
|
|
484
|
+
}
|
|
485
|
+
return serialized;
|
|
486
|
+
}
|
|
485
487
|
async resolveAppPath() {
|
|
486
488
|
for (const ext of LAYOUT_EXTENSIONS) {
|
|
487
489
|
const candidatePath = join(this.config.projectDir, `components/app.${ext}`);
|
|
@@ -491,6 +493,14 @@ export class RenderPipeline {
|
|
|
491
493
|
}
|
|
492
494
|
return undefined;
|
|
493
495
|
}
|
|
496
|
+
resolveProjectUpdatedAt() {
|
|
497
|
+
const fs = this.config.adapter?.fs;
|
|
498
|
+
if (!fs || !isExtendedFSAdapter(fs) || !fs.isVeryfrontAdapter()) {
|
|
499
|
+
return undefined;
|
|
500
|
+
}
|
|
501
|
+
const wrappedAdapter = fs.getUnderlyingAdapter();
|
|
502
|
+
return wrappedAdapter.getProjectData?.()?.updated_at;
|
|
503
|
+
}
|
|
494
504
|
async resolvePageDataCss(slug, options, projectUpdatedAt) {
|
|
495
505
|
const cssCacheKey = getPageCssCacheKey(options?.projectId, options?.environment, slug, projectUpdatedAt);
|
|
496
506
|
const cachedCss = getCachedPageCss(cssCacheKey);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.1.
|
|
1
|
+
export declare const VERSION = "0.1.182";
|
|
2
2
|
//# sourceMappingURL=version-constant.d.ts.map
|
package/package.json
CHANGED