@veryfront/ext-llm-google 0.1.1185 → 0.1.1189
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/README.md +74 -15
- package/esm/_dnt.polyfills.d.ts +12 -0
- package/esm/_dnt.polyfills.d.ts.map +1 -0
- package/esm/_dnt.polyfills.js +15 -0
- package/esm/google-content-parts.d.ts +45 -0
- package/esm/google-content-parts.d.ts.map +1 -0
- package/esm/google-content-parts.js +164 -0
- package/esm/google-grounding-metadata.d.ts +15 -0
- package/esm/google-grounding-metadata.d.ts.map +1 -0
- package/esm/google-grounding-metadata.js +87 -0
- package/esm/google-provider.d.ts +4 -3
- package/esm/google-provider.d.ts.map +1 -1
- package/esm/google-provider.js +407 -77
- package/esm/google-request-builder.d.ts +7 -55
- package/esm/google-request-builder.d.ts.map +1 -1
- package/esm/google-request-builder.js +403 -13
- package/esm/google-stream.d.ts +9 -1
- package/esm/google-stream.d.ts.map +1 -1
- package/esm/google-stream.js +590 -65
- package/esm/google-thought-signatures.d.ts +5 -0
- package/esm/google-thought-signatures.d.ts.map +1 -0
- package/esm/google-thought-signatures.js +296 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +10 -1
- package/package.json +3 -3
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const MAX_GOOGLE_PROVIDER_METADATA_BYTES: number;
|
|
2
|
+
export declare function readGoogleThoughtSignature(part: Record<string, unknown>): string | undefined;
|
|
3
|
+
export declare function createGoogleProviderMetadata(parts: Array<Record<string, unknown>>, groundingMetadata?: Record<string, unknown>): Record<string, unknown> | undefined;
|
|
4
|
+
export declare function readGoogleRawAssistantParts(providerMetadata: Record<string, unknown> | undefined): readonly Record<string, unknown>[] | undefined;
|
|
5
|
+
//# sourceMappingURL=google-thought-signatures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-thought-signatures.d.ts","sourceRoot":"","sources":["../src/google-thought-signatures.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,kCAAkC,QAAkB,CAAC;AA4MlE,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,SAAS,CASpB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAgCrC;AA4ED,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACpD,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAsBhD"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { readRecord, snapshotJsonValue } from "veryfront/provider/shared";
|
|
2
|
+
import { createGoogleToolCallCorrelationRegistry, readGoogleCodeExecutionResult, readGoogleExecutableCode, readGooglePartDataField, } from "./google-content-parts.js";
|
|
3
|
+
const GOOGLE_METADATA_KEY = "google";
|
|
4
|
+
const RAW_ASSISTANT_PARTS_KEY = "rawAssistantParts";
|
|
5
|
+
const GROUNDING_METADATA_KEY = "groundingMetadata";
|
|
6
|
+
const MAX_GOOGLE_RAW_ASSISTANT_PARTS = 4_096;
|
|
7
|
+
export const MAX_GOOGLE_PROVIDER_METADATA_BYTES = 8 * 1024 * 1024;
|
|
8
|
+
const GOOGLE_PROVIDER_METADATA_SNAPSHOT_OPTIONS = {
|
|
9
|
+
maxDepth: 64,
|
|
10
|
+
maxNodes: 65_536,
|
|
11
|
+
maxBytes: MAX_GOOGLE_PROVIDER_METADATA_BYTES,
|
|
12
|
+
};
|
|
13
|
+
function snapshotGoogleProviderMetadata(value) {
|
|
14
|
+
return snapshotJsonValue(value, GOOGLE_PROVIDER_METADATA_SNAPSHOT_OPTIONS);
|
|
15
|
+
}
|
|
16
|
+
function asSnapshotRecord(value) {
|
|
17
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
18
|
+
? value
|
|
19
|
+
: undefined;
|
|
20
|
+
}
|
|
21
|
+
function readGoogleMetadataNamespace(providerMetadata) {
|
|
22
|
+
let descriptor;
|
|
23
|
+
try {
|
|
24
|
+
descriptor = Object.getOwnPropertyDescriptor(providerMetadata, GOOGLE_METADATA_KEY);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
throw new TypeError("Google provider metadata could not be inspected");
|
|
28
|
+
}
|
|
29
|
+
if (descriptor === undefined) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
if (descriptor.enumerable !== true ||
|
|
33
|
+
!Object.hasOwn(descriptor, "value")) {
|
|
34
|
+
throw new TypeError("Google provider metadata namespace must be an enumerable data property");
|
|
35
|
+
}
|
|
36
|
+
return descriptor.value;
|
|
37
|
+
}
|
|
38
|
+
function readGoogleRawPartsValue(googleMetadata) {
|
|
39
|
+
if (googleMetadata === null ||
|
|
40
|
+
typeof googleMetadata !== "object" ||
|
|
41
|
+
Array.isArray(googleMetadata)) {
|
|
42
|
+
throw new TypeError("Google provider metadata must be an object");
|
|
43
|
+
}
|
|
44
|
+
let descriptor;
|
|
45
|
+
try {
|
|
46
|
+
descriptor = Object.getOwnPropertyDescriptor(googleMetadata, RAW_ASSISTANT_PARTS_KEY);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
throw new TypeError("Google provider metadata could not be inspected");
|
|
50
|
+
}
|
|
51
|
+
if (descriptor === undefined) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
if (descriptor.enumerable !== true ||
|
|
55
|
+
!Object.hasOwn(descriptor, "value")) {
|
|
56
|
+
throw new TypeError("Google raw assistant parts must be an enumerable data property");
|
|
57
|
+
}
|
|
58
|
+
return descriptor.value;
|
|
59
|
+
}
|
|
60
|
+
function hasGoogleReplayTriggerProperty(part, key) {
|
|
61
|
+
let descriptor;
|
|
62
|
+
try {
|
|
63
|
+
descriptor = Object.getOwnPropertyDescriptor(part, key);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
throw new TypeError("Google assistant part could not be inspected");
|
|
67
|
+
}
|
|
68
|
+
if (descriptor === undefined) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
// An accessor might conceal a replay trigger. Treat it as present so the
|
|
72
|
+
// descriptor-based snapshot rejects it without invoking caller code.
|
|
73
|
+
return !Object.hasOwn(descriptor, "value") || descriptor.value !== undefined;
|
|
74
|
+
}
|
|
75
|
+
function needsGoogleExactReplay(parts) {
|
|
76
|
+
let lengthDescriptor;
|
|
77
|
+
try {
|
|
78
|
+
lengthDescriptor = Object.getOwnPropertyDescriptor(parts, "length");
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
throw new TypeError("Google assistant parts could not be inspected");
|
|
82
|
+
}
|
|
83
|
+
if (lengthDescriptor === undefined ||
|
|
84
|
+
!Object.hasOwn(lengthDescriptor, "value") ||
|
|
85
|
+
!Number.isSafeInteger(lengthDescriptor.value) ||
|
|
86
|
+
lengthDescriptor.value < 0) {
|
|
87
|
+
throw new TypeError("Google assistant parts had an invalid length");
|
|
88
|
+
}
|
|
89
|
+
const partsLength = lengthDescriptor.value;
|
|
90
|
+
let partKeys;
|
|
91
|
+
try {
|
|
92
|
+
partKeys = Reflect.ownKeys(parts);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
throw new TypeError("Google assistant parts could not be inspected");
|
|
96
|
+
}
|
|
97
|
+
for (const partKey of partKeys) {
|
|
98
|
+
if (partKey === "length" || typeof partKey !== "string") {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const partIndex = Number(partKey);
|
|
102
|
+
if (!Number.isSafeInteger(partIndex) ||
|
|
103
|
+
partIndex < 0 ||
|
|
104
|
+
partIndex >= partsLength ||
|
|
105
|
+
String(partIndex) !== partKey) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
let partDescriptor;
|
|
109
|
+
try {
|
|
110
|
+
partDescriptor = Object.getOwnPropertyDescriptor(parts, partKey);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
throw new TypeError("Google assistant parts could not be inspected");
|
|
114
|
+
}
|
|
115
|
+
if (partDescriptor === undefined) {
|
|
116
|
+
throw new TypeError("Google assistant parts changed while being inspected");
|
|
117
|
+
}
|
|
118
|
+
if (!Object.hasOwn(partDescriptor, "value")) {
|
|
119
|
+
// Force the protected snapshot path, which rejects array accessors
|
|
120
|
+
// without invoking them.
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
const part = partDescriptor.value;
|
|
124
|
+
if (part === null || typeof part !== "object") {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (hasGoogleReplayTriggerProperty(part, "thoughtSignature") ||
|
|
128
|
+
hasGoogleReplayTriggerProperty(part, "executableCode") ||
|
|
129
|
+
hasGoogleReplayTriggerProperty(part, "codeExecutionResult")) {
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
function validateReplayableGooglePart(part) {
|
|
136
|
+
if (part.thought !== undefined && typeof part.thought !== "boolean") {
|
|
137
|
+
throw new TypeError("Google raw assistant thought marker must be a boolean");
|
|
138
|
+
}
|
|
139
|
+
const dataField = readGooglePartDataField(part);
|
|
140
|
+
switch (dataField) {
|
|
141
|
+
case "text":
|
|
142
|
+
if (typeof part.text !== "string") {
|
|
143
|
+
throw new TypeError("Google raw assistant text must be a string");
|
|
144
|
+
}
|
|
145
|
+
break;
|
|
146
|
+
case "functionCall": {
|
|
147
|
+
const functionCall = readRecord(part.functionCall);
|
|
148
|
+
if (!functionCall ||
|
|
149
|
+
typeof functionCall.name !== "string" ||
|
|
150
|
+
functionCall.name.length === 0 ||
|
|
151
|
+
(functionCall.args !== undefined && !readRecord(functionCall.args))) {
|
|
152
|
+
throw new TypeError("Google raw assistant function call is malformed");
|
|
153
|
+
}
|
|
154
|
+
if (functionCall.id !== undefined &&
|
|
155
|
+
(typeof functionCall.id !== "string" || functionCall.id.length === 0)) {
|
|
156
|
+
throw new TypeError("Google raw assistant function call id is malformed");
|
|
157
|
+
}
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
case "executableCode":
|
|
161
|
+
readGoogleExecutableCode(part.executableCode);
|
|
162
|
+
break;
|
|
163
|
+
case "codeExecutionResult":
|
|
164
|
+
readGoogleCodeExecutionResult(part.codeExecutionResult);
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
return dataField;
|
|
168
|
+
}
|
|
169
|
+
export function readGoogleThoughtSignature(part) {
|
|
170
|
+
const signature = part.thoughtSignature;
|
|
171
|
+
if (signature === undefined) {
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
if (typeof signature !== "string" || signature.length === 0) {
|
|
175
|
+
throw new TypeError("Google thought signature must be a non-empty string");
|
|
176
|
+
}
|
|
177
|
+
return signature;
|
|
178
|
+
}
|
|
179
|
+
export function createGoogleProviderMetadata(parts, groundingMetadata) {
|
|
180
|
+
const needsExactReplay = needsGoogleExactReplay(parts);
|
|
181
|
+
if (!needsExactReplay && groundingMetadata === undefined) {
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
let ownedParts;
|
|
185
|
+
if (needsExactReplay) {
|
|
186
|
+
const partsSnapshot = snapshotGoogleProviderMetadata(parts);
|
|
187
|
+
if (!Array.isArray(partsSnapshot)) {
|
|
188
|
+
throw new TypeError("Google raw assistant parts must be an array");
|
|
189
|
+
}
|
|
190
|
+
if (partsSnapshot.length > MAX_GOOGLE_RAW_ASSISTANT_PARTS) {
|
|
191
|
+
throw new TypeError(`Google raw assistant parts exceeded ${MAX_GOOGLE_RAW_ASSISTANT_PARTS} entries`);
|
|
192
|
+
}
|
|
193
|
+
ownedParts = validateGoogleRawAssistantParts(partsSnapshot);
|
|
194
|
+
}
|
|
195
|
+
const metadata = snapshotGoogleProviderMetadata({
|
|
196
|
+
[GOOGLE_METADATA_KEY]: {
|
|
197
|
+
...(needsExactReplay ? { [RAW_ASSISTANT_PARTS_KEY]: ownedParts } : {}),
|
|
198
|
+
...(groundingMetadata !== undefined ? { [GROUNDING_METADATA_KEY]: groundingMetadata } : {}),
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
const metadataRecord = asSnapshotRecord(metadata);
|
|
202
|
+
if (!metadataRecord) {
|
|
203
|
+
throw new TypeError("Google provider metadata must be an object");
|
|
204
|
+
}
|
|
205
|
+
return metadataRecord;
|
|
206
|
+
}
|
|
207
|
+
function validateGoogleRawAssistantParts(rawParts) {
|
|
208
|
+
if (rawParts.length === 0) {
|
|
209
|
+
throw new TypeError("Google raw assistant parts must be a non-empty array");
|
|
210
|
+
}
|
|
211
|
+
if (rawParts.length > MAX_GOOGLE_RAW_ASSISTANT_PARTS) {
|
|
212
|
+
throw new TypeError(`Google raw assistant parts exceeded ${MAX_GOOGLE_RAW_ASSISTANT_PARTS} entries`);
|
|
213
|
+
}
|
|
214
|
+
let hasThoughtSignature = false;
|
|
215
|
+
let hasCodeExecution = false;
|
|
216
|
+
const toolCallRegistry = createGoogleToolCallCorrelationRegistry();
|
|
217
|
+
for (let partIndex = 0; partIndex < rawParts.length; partIndex += 1) {
|
|
218
|
+
const rawPart = rawParts[partIndex];
|
|
219
|
+
if (rawPart === undefined) {
|
|
220
|
+
throw new TypeError("Google raw assistant parts must be dense");
|
|
221
|
+
}
|
|
222
|
+
const part = asSnapshotRecord(rawPart);
|
|
223
|
+
if (!part) {
|
|
224
|
+
throw new TypeError("Google raw assistant part must be an object");
|
|
225
|
+
}
|
|
226
|
+
const dataField = validateReplayableGooglePart(part);
|
|
227
|
+
if (readGoogleThoughtSignature(part) !== undefined) {
|
|
228
|
+
hasThoughtSignature = true;
|
|
229
|
+
}
|
|
230
|
+
if (dataField === "functionCall") {
|
|
231
|
+
const functionCall = readRecord(part.functionCall);
|
|
232
|
+
const functionCallId = typeof functionCall?.id === "string" ? functionCall.id : undefined;
|
|
233
|
+
try {
|
|
234
|
+
toolCallRegistry.registerFunctionCall(partIndex, functionCallId);
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
throw new TypeError("Google raw assistant tool call id was duplicated");
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else if (dataField === "executableCode") {
|
|
241
|
+
const executableCode = readGoogleExecutableCode(part.executableCode);
|
|
242
|
+
hasCodeExecution = true;
|
|
243
|
+
try {
|
|
244
|
+
toolCallRegistry.registerCodeExecution(executableCode.providerId);
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
throw new TypeError("Google raw assistant executable code id was duplicated");
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else if (dataField === "codeExecutionResult") {
|
|
251
|
+
const result = readGoogleCodeExecutionResult(part.codeExecutionResult);
|
|
252
|
+
hasCodeExecution = true;
|
|
253
|
+
try {
|
|
254
|
+
toolCallRegistry.resolveCodeExecutionResult(result.providerId);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
throw new TypeError(result.providerId === undefined
|
|
258
|
+
? "Google raw assistant code execution result had no matching executable code"
|
|
259
|
+
: "Google raw assistant code execution result id did not match executable code");
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (!hasThoughtSignature && !hasCodeExecution) {
|
|
264
|
+
throw new TypeError("Google raw assistant parts contained neither a thought signature nor code execution");
|
|
265
|
+
}
|
|
266
|
+
try {
|
|
267
|
+
toolCallRegistry.assertSettled();
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
throw new TypeError("Google raw assistant executable code had no matching result");
|
|
271
|
+
}
|
|
272
|
+
// Return the exact frozen snapshot array that was validated. Do not rebuild
|
|
273
|
+
// a shallow collection whose contents could diverge before serialization.
|
|
274
|
+
return rawParts;
|
|
275
|
+
}
|
|
276
|
+
export function readGoogleRawAssistantParts(providerMetadata) {
|
|
277
|
+
if (providerMetadata === undefined) {
|
|
278
|
+
return undefined;
|
|
279
|
+
}
|
|
280
|
+
const rawGoogleMetadata = readGoogleMetadataNamespace(providerMetadata);
|
|
281
|
+
if (rawGoogleMetadata === undefined) {
|
|
282
|
+
return undefined;
|
|
283
|
+
}
|
|
284
|
+
const rawParts = readGoogleRawPartsValue(rawGoogleMetadata);
|
|
285
|
+
if (rawParts === undefined) {
|
|
286
|
+
return undefined;
|
|
287
|
+
}
|
|
288
|
+
// Grounding and future Google metadata fields are not replayed. Snapshot
|
|
289
|
+
// only the exact wire value that will be validated and transmitted so those
|
|
290
|
+
// independent fields cannot consume replay budgets or invoke accessors.
|
|
291
|
+
const rawPartsSnapshot = snapshotGoogleProviderMetadata(rawParts);
|
|
292
|
+
if (!Array.isArray(rawPartsSnapshot)) {
|
|
293
|
+
throw new TypeError("Google raw assistant parts must be a non-empty array");
|
|
294
|
+
}
|
|
295
|
+
return validateGoogleRawAssistantParts(rawPartsSnapshot);
|
|
296
|
+
}
|
package/esm/index.d.ts
CHANGED
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,QAAA,MAAM,SAAS,EAAE,gBA0BhB,CAAC;AAEF,eAAe,SAAS,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -4,10 +4,13 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @module extensions/ext-llm-google
|
|
6
6
|
*/
|
|
7
|
+
import "./_dnt.polyfills.js";
|
|
7
8
|
import { LLMProviderRegistryName } from "veryfront/extensions/llm";
|
|
8
9
|
import { GoogleProvider } from "./google-provider.js";
|
|
9
10
|
const extGoogle = () => {
|
|
10
11
|
const provider = new GoogleProvider();
|
|
12
|
+
let registryRef;
|
|
13
|
+
let registeredProvider = false;
|
|
11
14
|
return {
|
|
12
15
|
name: "ext-llm-google",
|
|
13
16
|
version: "0.1.0",
|
|
@@ -18,11 +21,17 @@ const extGoogle = () => {
|
|
|
18
21
|
capabilities: [],
|
|
19
22
|
setup(ctx) {
|
|
20
23
|
const registry = ctx.require(LLMProviderRegistryName);
|
|
24
|
+
registeredProvider = !registry.has(provider.id);
|
|
21
25
|
registry.register(provider);
|
|
26
|
+
ctx.provide("LLMProvider:google", registry.get(provider.id) ?? provider);
|
|
27
|
+
registryRef = registry;
|
|
22
28
|
ctx.logger.debug("[ext-llm-google] Google provider registered");
|
|
23
29
|
},
|
|
24
30
|
teardown() {
|
|
25
|
-
|
|
31
|
+
if (registeredProvider)
|
|
32
|
+
registryRef?.unregister(provider.id);
|
|
33
|
+
registeredProvider = false;
|
|
34
|
+
registryRef = undefined;
|
|
26
35
|
},
|
|
27
36
|
};
|
|
28
37
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veryfront/ext-llm-google",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1189",
|
|
4
4
|
"description": "Veryfront first-party extension package for ext-llm-google",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"veryfront",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
"scripts": {},
|
|
29
29
|
"engines": {
|
|
30
|
-
"node": ">=
|
|
30
|
+
"node": ">=22.3.0"
|
|
31
31
|
},
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public"
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"capabilities": []
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"veryfront": "^0.1.
|
|
48
|
+
"veryfront": "^0.1.1189"
|
|
49
49
|
},
|
|
50
50
|
"type": "module",
|
|
51
51
|
"types": "./esm/index.d.ts",
|