veryfront 0.1.1116 → 0.1.1118
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/runtime/load-skill-tool.d.ts.map +1 -1
- package/esm/src/agent/runtime/load-skill-tool.js +25 -8
- package/esm/src/provider/runtime-loader/provider-http.d.ts +5 -0
- package/esm/src/provider/runtime-loader/provider-http.d.ts.map +1 -1
- package/esm/src/provider/runtime-loader/provider-http.js +20 -3
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +5 -5
package/esm/deno.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-skill-tool.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/load-skill-tool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAchD,OAAO,KAAK,EAEV,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,kCAAkC,EACvC,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAC;AAG7B,yFAAyF;AACzF,eAAO,MAAM,oCAAoC,2mBACiU,CAAC;AAEnX,mDAAmD;AACnD,eAAO,MAAM,8BAA8B,4lBAC2d,CAAC;AAqEvgB,2CAA2C;AAC3C,MAAM,MAAM,2BAA2B,GAAG,0BAA0B,GAAG;IACrE,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAClE,6BAA6B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;CACrF,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjE,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjG,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CAClE,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAEvF,mDAAmD;AACnD,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,2BAA2B,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACxC,MAAM,CAAC,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;GAS9C,CAAC;AAKF,iDAAiD;AACjD,MAAM,MAAM,yBAAyB,GAAG,WAAW,CACjD,UAAU,CAAC,OAAO,kCAAkC,CAAC,CACtD,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,mCAAmC,GAAG;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,2CAA2C;AAC3C,MAAM,MAAM,0BAA0B,GAClC,0BAA0B,GAC1B,mCAAmC,GACnC,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"load-skill-tool.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/load-skill-tool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAchD,OAAO,KAAK,EAEV,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,kCAAkC,EACvC,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAC;AAG7B,yFAAyF;AACzF,eAAO,MAAM,oCAAoC,2mBACiU,CAAC;AAEnX,mDAAmD;AACnD,eAAO,MAAM,8BAA8B,4lBAC2d,CAAC;AAqEvgB,2CAA2C;AAC3C,MAAM,MAAM,2BAA2B,GAAG,0BAA0B,GAAG;IACrE,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAClE,6BAA6B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;CACrF,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjE,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjG,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CAClE,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAEvF,mDAAmD;AACnD,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,2BAA2B,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACxC,MAAM,CAAC,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;GAS9C,CAAC;AAKF,iDAAiD;AACjD,MAAM,MAAM,yBAAyB,GAAG,WAAW,CACjD,UAAU,CAAC,OAAO,kCAAkC,CAAC,CACtD,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,mCAAmC,GAAG;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,2CAA2C;AAC3C,MAAM,MAAM,0BAA0B,GAClC,0BAA0B,GAC1B,mCAAmC,GACnC,2BAA2B,CAAC;AAkVhC,sCAAsC;AACtC,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,IAAI,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,CAmE7D"}
|
|
@@ -184,6 +184,14 @@ function getLoadedRuntimeSkillIds(options) {
|
|
|
184
184
|
.filter((skillId) => typeof skillId === "string" && skillId.length > 0)),
|
|
185
185
|
].sort();
|
|
186
186
|
}
|
|
187
|
+
function getReferenceableLoadedRuntimeSkillIds(options) {
|
|
188
|
+
return [
|
|
189
|
+
...new Set(Object.values(options.context.loadedSkillResponses ?? {})
|
|
190
|
+
.filter((response) => (response.references?.length ?? 0) > 0)
|
|
191
|
+
.map((response) => response.skillId)
|
|
192
|
+
.filter((skillId) => typeof skillId === "string" && skillId.length > 0)),
|
|
193
|
+
].sort();
|
|
194
|
+
}
|
|
187
195
|
function buildRuntimeLoadSkillInputSchema(options) {
|
|
188
196
|
const knownIds = getKnownRuntimeSkillIds(options);
|
|
189
197
|
if (!knownIds || knownIds.length === 0) {
|
|
@@ -192,19 +200,28 @@ function buildRuntimeLoadSkillInputSchema(options) {
|
|
|
192
200
|
const knownIdSet = new Set(knownIds);
|
|
193
201
|
const loadedIds = getLoadedRuntimeSkillIds(options).filter((skillId) => knownIdSet.has(skillId));
|
|
194
202
|
const loadedIdSet = new Set(loadedIds);
|
|
203
|
+
const referenceableLoadedIds = getReferenceableLoadedRuntimeSkillIds(options)
|
|
204
|
+
.filter((skillId) => knownIdSet.has(skillId));
|
|
195
205
|
const unloadedIds = knownIds.filter((skillId) => !loadedIdSet.has(skillId));
|
|
196
|
-
if (loadedIds.length > 0 && unloadedIds.length === 0) {
|
|
206
|
+
if (loadedIds.length > 0 && unloadedIds.length === 0 && referenceableLoadedIds.length === 0) {
|
|
197
207
|
const [firstLoaded, ...restLoaded] = loadedIds;
|
|
198
208
|
const loadedEnumValues = [firstLoaded, ...restLoaded];
|
|
199
209
|
return defineSchema((v) => v.object({
|
|
200
|
-
skillId: v.enum(loadedEnumValues).describe(`Already-loaded skill ID
|
|
210
|
+
skillId: v.enum(loadedEnumValues).describe(`Already-loaded skill ID with no advertised reference files. Calling load_skill again is a no-op. Loaded skill IDs: ${loadedIds.join(", ")}`),
|
|
211
|
+
}).strict())();
|
|
212
|
+
}
|
|
213
|
+
if (referenceableLoadedIds.length > 0 && unloadedIds.length === 0) {
|
|
214
|
+
const [firstLoaded, ...restLoaded] = referenceableLoadedIds;
|
|
215
|
+
const loadedEnumValues = [firstLoaded, ...restLoaded];
|
|
216
|
+
return defineSchema((v) => v.object({
|
|
217
|
+
skillId: v.enum(loadedEnumValues).describe(`Already-loaded skill ID. Body reloads are not allowed; use this only with file for listed references. Loaded skill IDs: ${referenceableLoadedIds.join(", ")}`),
|
|
201
218
|
file: v.string().describe("Required reference file to load from an already-loaded skill. Do not call load_skill again for the skill body."),
|
|
202
219
|
}))();
|
|
203
220
|
}
|
|
204
|
-
if (
|
|
221
|
+
if (referenceableLoadedIds.length > 0) {
|
|
205
222
|
const [firstUnloaded, ...restUnloaded] = unloadedIds;
|
|
206
223
|
const unloadedEnumValues = [firstUnloaded, ...restUnloaded];
|
|
207
|
-
const [firstLoaded, ...restLoaded] =
|
|
224
|
+
const [firstLoaded, ...restLoaded] = referenceableLoadedIds;
|
|
208
225
|
const loadedEnumValues = [firstLoaded, ...restLoaded];
|
|
209
226
|
return defineSchema((v) => v.union([
|
|
210
227
|
v.object({
|
|
@@ -212,15 +229,15 @@ function buildRuntimeLoadSkillInputSchema(options) {
|
|
|
212
229
|
file: v.string().optional().describe("Optional reference file to load. First load the skill with only skillId, then use file only for a reference path listed by that loaded skill."),
|
|
213
230
|
}),
|
|
214
231
|
v.object({
|
|
215
|
-
skillId: v.enum(loadedEnumValues).describe(`Already-loaded skill ID. Body reloads are not allowed; use this only with file for listed references. Loaded skill IDs: ${
|
|
232
|
+
skillId: v.enum(loadedEnumValues).describe(`Already-loaded skill ID. Body reloads are not allowed; use this only with file for listed references. Loaded skill IDs: ${referenceableLoadedIds.join(", ")}`),
|
|
216
233
|
file: v.string().describe("Required reference file to load from an already-loaded skill. Do not call load_skill again for the skill body."),
|
|
217
234
|
}),
|
|
218
235
|
]))();
|
|
219
236
|
}
|
|
220
|
-
const [first, ...rest] =
|
|
237
|
+
const [first, ...rest] = unloadedIds;
|
|
221
238
|
const enumValues = [first, ...rest];
|
|
222
239
|
return defineSchema((v) => v.object({
|
|
223
|
-
skillId: v.enum(enumValues).describe(`
|
|
240
|
+
skillId: v.enum(enumValues).describe(`Unloaded skill ID to load. Available unloaded skill IDs: ${unloadedIds.join(", ")}`),
|
|
224
241
|
file: v.string().optional().describe("Optional reference file to load. First load the skill with only skillId, then use file only for a reference path listed by that loaded skill."),
|
|
225
242
|
}))();
|
|
226
243
|
}
|
|
@@ -275,7 +292,7 @@ export function createRuntimeLoadSkillTool(options) {
|
|
|
275
292
|
async function execute({ skillId, file }) {
|
|
276
293
|
let parsed;
|
|
277
294
|
try {
|
|
278
|
-
parsed = buildRuntimeLoadSkillInputSchema(options).parse({ skillId, file });
|
|
295
|
+
parsed = buildRuntimeLoadSkillInputSchema(options).parse(file === undefined ? { skillId } : { skillId, file });
|
|
279
296
|
}
|
|
280
297
|
catch (error) {
|
|
281
298
|
throw INPUT_VALIDATION_FAILED.create({
|
|
@@ -16,6 +16,11 @@ export declare class ProviderError extends Error {
|
|
|
16
16
|
readonly status: number;
|
|
17
17
|
readonly retryable: boolean;
|
|
18
18
|
readonly retryAfterMs?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Bounded structured provider response used by the internal error classifier.
|
|
21
|
+
* Kept non-enumerable so logs and JSON serialization retain the generic error.
|
|
22
|
+
*/
|
|
23
|
+
readonly responseBody?: string;
|
|
19
24
|
constructor(options: {
|
|
20
25
|
provider: ProviderKind;
|
|
21
26
|
status: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-http.d.ts","sourceRoot":"","sources":["../../../../src/src/provider/runtime-loader/provider-http.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAKxF;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"provider-http.d.ts","sourceRoot":"","sources":["../../../../src/src/provider/runtime-loader/provider-http.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAKxF;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,SAAiB,YAAY,CAAC,EAAE,MAAM,CAAC;gBAE3B,OAAO,EAAE;QACnB,QAAQ,EAAE,YAAY,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;CAUF;AAED,4EAA4E;AAC5E,qBAAa,uBAAwB,SAAQ,aAAa;CAAG;AAE7D,mFAAmF;AACnF,qBAAa,sBAAuB,SAAQ,aAAa;CAAG;AAE5D,2DAA2D;AAC3D,qBAAa,kBAAmB,SAAQ,aAAa;CAAG;AAExD,6DAA6D;AAC7D,qBAAa,oBAAqB,SAAQ,aAAa;CAAG;AAe1D,6BAA6B;AAC7B,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAY3E;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAiJxB;AAED,yCAAyC;AACzC,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,OAAO,CAAC,OAAO,CAAC,CASnB;AAED,oCAAoC;AACpC,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAkBtC"}
|
|
@@ -36,6 +36,15 @@ export class ProviderQuotaError extends ProviderError {
|
|
|
36
36
|
/** Non-retryable 4xx/5xx that doesn't fit another bucket. */
|
|
37
37
|
export class ProviderRequestError extends ProviderError {
|
|
38
38
|
}
|
|
39
|
+
function preserveStructuredResponseBody(error, responseBody) {
|
|
40
|
+
Object.defineProperty(error, "responseBody", {
|
|
41
|
+
value: responseBody,
|
|
42
|
+
enumerable: false,
|
|
43
|
+
configurable: false,
|
|
44
|
+
writable: false,
|
|
45
|
+
});
|
|
46
|
+
return error;
|
|
47
|
+
}
|
|
39
48
|
/** Parses retry after ms. */
|
|
40
49
|
export function parseRetryAfterMs(header) {
|
|
41
50
|
if (!header)
|
|
@@ -72,10 +81,11 @@ export async function buildProviderError(provider, response) {
|
|
|
72
81
|
}
|
|
73
82
|
})();
|
|
74
83
|
const errorRecord = readRecord(parsedBody?.error);
|
|
84
|
+
const errorType = typeof errorRecord?.type === "string" ? errorRecord.type : undefined;
|
|
75
85
|
const errorCode = typeof errorRecord?.code === "string"
|
|
76
86
|
? errorRecord.code
|
|
77
|
-
:
|
|
78
|
-
?
|
|
87
|
+
: errorType !== undefined
|
|
88
|
+
? errorType
|
|
79
89
|
: typeof errorRecord?.status === "string"
|
|
80
90
|
? errorRecord.status
|
|
81
91
|
: undefined;
|
|
@@ -173,12 +183,19 @@ export async function buildProviderError(provider, response) {
|
|
|
173
183
|
...(retryAfterMs !== undefined ? { retryAfterMs } : {}),
|
|
174
184
|
});
|
|
175
185
|
}
|
|
176
|
-
|
|
186
|
+
const requestError = new ProviderRequestError({
|
|
177
187
|
provider,
|
|
178
188
|
status,
|
|
179
189
|
message,
|
|
180
190
|
retryable: false,
|
|
181
191
|
});
|
|
192
|
+
const isStructuredInvalidRequest = status === 400 &&
|
|
193
|
+
errorType === "invalid_request_error" &&
|
|
194
|
+
parsedBody !== undefined &&
|
|
195
|
+
!truncated;
|
|
196
|
+
return isStructuredInvalidRequest
|
|
197
|
+
? preserveStructuredResponseBody(requestError, rawBody)
|
|
198
|
+
: requestError;
|
|
182
199
|
}
|
|
183
200
|
/** Request and parse a JSON response. */
|
|
184
201
|
export async function requestJson(options) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1118",
|
|
4
4
|
"description": "The simplest way to build AI-powered apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -332,10 +332,10 @@
|
|
|
332
332
|
"@types/react": "19.2.14",
|
|
333
333
|
"@types/react-dom": "19.2.3",
|
|
334
334
|
"ws": "8.21.0",
|
|
335
|
-
"@veryfront/ext-bundler-esbuild": "0.1.
|
|
336
|
-
"@veryfront/ext-content-mdx": "0.1.
|
|
337
|
-
"@veryfront/ext-css-tailwind": "0.1.
|
|
338
|
-
"@veryfront/ext-parser-babel": "0.1.
|
|
335
|
+
"@veryfront/ext-bundler-esbuild": "0.1.1118",
|
|
336
|
+
"@veryfront/ext-content-mdx": "0.1.1118",
|
|
337
|
+
"@veryfront/ext-css-tailwind": "0.1.1118",
|
|
338
|
+
"@veryfront/ext-parser-babel": "0.1.1118"
|
|
339
339
|
},
|
|
340
340
|
"devDependencies": {
|
|
341
341
|
"@types/node": "20.9.0"
|