veryfront 0.1.987 → 0.1.989
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/cli/commands/knowledge/command.d.ts.map +1 -1
- package/esm/cli/commands/knowledge/command.js +39 -1
- package/esm/cli/commands/knowledge/parser.d.ts +3 -0
- package/esm/cli/commands/knowledge/parser.d.ts.map +1 -1
- package/esm/cli/commands/knowledge/parser.js +3 -2
- package/esm/deno.d.ts +2 -0
- package/esm/deno.js +3 -1
- package/esm/extensions/ext-llm-openai/src/openai-chat-request-builder.d.ts +2 -7
- package/esm/extensions/ext-llm-openai/src/openai-chat-request-builder.d.ts.map +1 -1
- package/esm/extensions/ext-llm-openai/src/openai-chat-request-builder.js +10 -25
- package/esm/extensions/ext-llm-openai/src/openai-reasoning-models.d.ts +17 -0
- package/esm/extensions/ext-llm-openai/src/openai-reasoning-models.d.ts.map +1 -0
- package/esm/extensions/ext-llm-openai/src/openai-reasoning-models.js +70 -0
- package/esm/extensions/ext-llm-openai/src/openai-responses-request-builder.d.ts.map +1 -1
- package/esm/extensions/ext-llm-openai/src/openai-responses-request-builder.js +20 -27
- package/esm/src/agent/hosted/chat-request-parser.d.ts +3 -0
- package/esm/src/agent/hosted/chat-request-parser.d.ts.map +1 -1
- package/esm/src/agent/hosted/chat-request-parser.js +8 -0
- package/esm/src/agent/hosted/veryfront-cloud-agent-service.d.ts.map +1 -1
- package/esm/src/agent/hosted/veryfront-cloud-agent-service.js +3 -1
- package/esm/src/agent/runtime/agent-invocation-contract.d.ts +37 -0
- package/esm/src/agent/runtime/agent-invocation-contract.d.ts.map +1 -1
- package/esm/src/agent/runtime/agent-invocation-contract.js +12 -0
- package/esm/src/extensions/compat/index.d.ts +1 -1
- package/esm/src/extensions/compat/index.d.ts.map +1 -1
- package/esm/src/extensions/compat/native-services.d.ts +13 -1
- package/esm/src/extensions/compat/native-services.d.ts.map +1 -1
- package/esm/src/extensions/first-party-import.d.ts +1 -0
- package/esm/src/extensions/first-party-import.d.ts.map +1 -1
- package/esm/src/extensions/first-party-import.js +1 -0
- package/esm/src/internal-agents/schema.d.ts +36 -0
- package/esm/src/internal-agents/schema.d.ts.map +1 -1
- package/esm/src/internal-agents/schema.js +12 -1
- package/esm/src/proxy/tracing.d.ts +36 -4
- package/esm/src/proxy/tracing.d.ts.map +1 -1
- package/esm/src/proxy/tracing.js +113 -31
- package/esm/src/server/handlers/request/agent-stream.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/agent-stream.handler.js +8 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,KAAK,eAAe,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IACrD,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,KAAK,GAAG;QAAE,MAAM,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;CACtC,CAAC;AAKF,OAAO,EAAE,KAAK,SAAS,EAA0C,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAuB,KAAK,MAAM,EAAgB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,6 +86,35 @@ function createKnowledgeIngestEventLogger() {
|
|
|
86
86
|
function buildKnowledgeSourceName(source) {
|
|
87
87
|
return basename(source.kind === "upload" ? source.uploadPath : source.localPath);
|
|
88
88
|
}
|
|
89
|
+
function buildExtractionProgressPhase(event) {
|
|
90
|
+
if (event.unit === "page")
|
|
91
|
+
return "pdf_page_completed";
|
|
92
|
+
if (event.unit === "slide")
|
|
93
|
+
return "ppt_slide_completed";
|
|
94
|
+
return "document_file_completed";
|
|
95
|
+
}
|
|
96
|
+
function buildExtractionProgressMetadata(sourceName, event) {
|
|
97
|
+
const total = event.total ?? event.current;
|
|
98
|
+
const metadata = {
|
|
99
|
+
phase: buildExtractionProgressPhase(event),
|
|
100
|
+
progress_unit: event.unit,
|
|
101
|
+
progress_current: event.current,
|
|
102
|
+
progress_total: total,
|
|
103
|
+
source_name: sourceName,
|
|
104
|
+
};
|
|
105
|
+
if (event.unit === "page") {
|
|
106
|
+
metadata.page_current = event.current;
|
|
107
|
+
metadata.page_total = total;
|
|
108
|
+
}
|
|
109
|
+
else if (event.unit === "slide") {
|
|
110
|
+
metadata.slide_current = event.current;
|
|
111
|
+
metadata.slide_total = total;
|
|
112
|
+
}
|
|
113
|
+
if (event.characters !== undefined) {
|
|
114
|
+
metadata.characters = event.characters;
|
|
115
|
+
}
|
|
116
|
+
return metadata;
|
|
117
|
+
}
|
|
89
118
|
function showKnowledgeUsage() {
|
|
90
119
|
console.log(`
|
|
91
120
|
Veryfront Knowledge
|
|
@@ -303,13 +332,22 @@ export async function ingestResolvedSources(sources, options, deps) {
|
|
|
303
332
|
});
|
|
304
333
|
let parser;
|
|
305
334
|
try {
|
|
335
|
+
const sourceName = buildKnowledgeSourceName(source);
|
|
336
|
+
const eventLogger = deps.eventLogger;
|
|
337
|
+
const parserDeps = eventLogger
|
|
338
|
+
? {
|
|
339
|
+
onProgress: (event) => {
|
|
340
|
+
eventLogger.info("Knowledge source extraction progress", buildExtractionProgressMetadata(sourceName, event));
|
|
341
|
+
},
|
|
342
|
+
}
|
|
343
|
+
: undefined;
|
|
306
344
|
parser = await deps.runParser({
|
|
307
345
|
filePath: source.localPath,
|
|
308
346
|
outputDir: deps.outputDir,
|
|
309
347
|
description: options.description,
|
|
310
348
|
slug: slugs[index],
|
|
311
349
|
sourceReference,
|
|
312
|
-
});
|
|
350
|
+
}, parserDeps);
|
|
313
351
|
}
|
|
314
352
|
catch (error) {
|
|
315
353
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DocumentExtractionProgress, DocumentExtractionProgressEvent } from "../../../src/extensions/compat/index.js";
|
|
1
2
|
export interface KnowledgeParserResult {
|
|
2
3
|
success: true;
|
|
3
4
|
source_path: string;
|
|
@@ -21,9 +22,11 @@ export interface KnowledgeParserInput {
|
|
|
21
22
|
export type ExtractDocumentText = (input: {
|
|
22
23
|
filePath: string;
|
|
23
24
|
mimeType: string;
|
|
25
|
+
onProgress?: DocumentExtractionProgress;
|
|
24
26
|
}) => Promise<string>;
|
|
25
27
|
export interface RunKnowledgeParsersDeps {
|
|
26
28
|
extractDocumentText?: ExtractDocumentText;
|
|
29
|
+
onProgress?: (event: DocumentExtractionProgressEvent) => void | Promise<void>;
|
|
27
30
|
}
|
|
28
31
|
export declare function slugifyKnowledgeValue(value: string): string;
|
|
29
32
|
export declare function runKnowledgeParser(input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,0BAA0B,EAC1B,+BAA+B,EAChC,MAAM,yCAAyC,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,mBAAmB,GAAG,CAChC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,0BAA0B,CAAA;CAAE,KACnF,OAAO,CAAC,MAAM,CAAC,CAAC;AAYrB,MAAM,WAAW,uBAAuB;IACtC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,+BAA+B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E;AA0FD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG3D;AAkQD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,EAAE,IAAI,GAAE,uBAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAgBrE;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,EAAE,IAAI,GAAE,uBAA4B,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAqEvE"}
|
|
@@ -216,7 +216,7 @@ async function parseJson(path) {
|
|
|
216
216
|
}
|
|
217
217
|
async function parseWithKreuzberg(path, deps) {
|
|
218
218
|
const mimeType = MIME_BY_EXTENSION[extname(path).toLowerCase()] ?? "application/octet-stream";
|
|
219
|
-
const content = cleanText(await deps.extractDocumentText({ filePath: path, mimeType }));
|
|
219
|
+
const content = cleanText(await deps.extractDocumentText({ filePath: path, mimeType, onProgress: deps.onProgress }));
|
|
220
220
|
return {
|
|
221
221
|
content: content || "_No extractable text found in document._",
|
|
222
222
|
stats: {
|
|
@@ -276,7 +276,7 @@ async function defaultExtractDocumentText(input) {
|
|
|
276
276
|
const bytes = await dntShim.Deno.readFile(input.filePath);
|
|
277
277
|
const { KreuzbergDocumentExtractor } = await importFirstPartyExtensionModule("ext-document-kreuzberg", "@veryfront/ext-document-kreuzberg");
|
|
278
278
|
const extractor = new KreuzbergDocumentExtractor();
|
|
279
|
-
return await extractor.extractInWorker(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength), input.mimeType);
|
|
279
|
+
return await extractor.extractInWorker(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength), input.mimeType, { onProgress: input.onProgress });
|
|
280
280
|
}
|
|
281
281
|
export async function runKnowledgeParser(input, deps = {}) {
|
|
282
282
|
const [result] = await runKnowledgeParsers({
|
|
@@ -299,6 +299,7 @@ export async function runKnowledgeParsers(input, deps = {}) {
|
|
|
299
299
|
}
|
|
300
300
|
const parserDeps = {
|
|
301
301
|
extractDocumentText: deps.extractDocumentText ?? defaultExtractDocumentText,
|
|
302
|
+
onProgress: deps.onProgress,
|
|
302
303
|
};
|
|
303
304
|
await dntShim.Deno.mkdir(input.outputDir, { recursive: true });
|
|
304
305
|
const results = [];
|
package/esm/deno.d.ts
CHANGED
|
@@ -66,6 +66,7 @@ declare namespace _default {
|
|
|
66
66
|
"./extensions/content": string;
|
|
67
67
|
"./extensions/contracts": string;
|
|
68
68
|
"./extensions/compat": string;
|
|
69
|
+
"./extensions/first-party-import": string;
|
|
69
70
|
"./extensions/css": string;
|
|
70
71
|
"./extensions/database": string;
|
|
71
72
|
"./extensions/eval": string;
|
|
@@ -168,6 +169,7 @@ declare namespace _default {
|
|
|
168
169
|
"veryfront/extensions/content": string;
|
|
169
170
|
"veryfront/extensions/compat": string;
|
|
170
171
|
"veryfront/extensions/contracts": string;
|
|
172
|
+
"veryfront/extensions/first-party-import": string;
|
|
171
173
|
"veryfront/extensions/css": string;
|
|
172
174
|
"veryfront/extensions/database": string;
|
|
173
175
|
"veryfront/extensions/eval": string;
|
package/esm/deno.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.989",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"nodeModulesDir": "auto",
|
|
6
6
|
"minimumDependencyAge": {
|
|
@@ -122,6 +122,7 @@ export default {
|
|
|
122
122
|
"./extensions/content": "./src/extensions/content/index.ts",
|
|
123
123
|
"./extensions/contracts": "./src/extensions/contracts.ts",
|
|
124
124
|
"./extensions/compat": "./src/extensions/compat/index.ts",
|
|
125
|
+
"./extensions/first-party-import": "./src/extensions/first-party-import.ts",
|
|
125
126
|
"./extensions/css": "./src/extensions/css/index.ts",
|
|
126
127
|
"./extensions/database": "./src/extensions/database/index.ts",
|
|
127
128
|
"./extensions/eval": "./src/extensions/eval/index.ts",
|
|
@@ -224,6 +225,7 @@ export default {
|
|
|
224
225
|
"veryfront/extensions/content": "./src/extensions/content/index.ts",
|
|
225
226
|
"veryfront/extensions/compat": "./src/extensions/compat/index.ts",
|
|
226
227
|
"veryfront/extensions/contracts": "./src/extensions/contracts.ts",
|
|
228
|
+
"veryfront/extensions/first-party-import": "./src/extensions/first-party-import.ts",
|
|
227
229
|
"veryfront/extensions/css": "./src/extensions/css/index.ts",
|
|
228
230
|
"veryfront/extensions/database": "./src/extensions/database/index.ts",
|
|
229
231
|
"veryfront/extensions/eval": "./src/extensions/eval/index.ts",
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import type { OpenAICompatibleChatRequest, RuntimePromptMessage } from "../../../src/provider/shared/index.js";
|
|
2
|
-
|
|
3
|
-
type ProviderReasoningOption = {
|
|
4
|
-
enabled?: boolean;
|
|
5
|
-
effort?: ProviderReasoningEffort;
|
|
6
|
-
budgetTokens?: number;
|
|
7
|
-
};
|
|
2
|
+
import { type OpenAIProviderReasoningOption } from "./openai-reasoning-models.js";
|
|
8
3
|
export type RuntimeToolDefinition = {
|
|
9
4
|
type: "function";
|
|
10
5
|
name: string;
|
|
@@ -32,7 +27,7 @@ export type OpenAICompatibleLanguageOptions = {
|
|
|
32
27
|
providerOptions?: Record<string, unknown>;
|
|
33
28
|
includeRawChunks?: boolean;
|
|
34
29
|
abortSignal?: AbortSignal;
|
|
35
|
-
reasoning?:
|
|
30
|
+
reasoning?: OpenAIProviderReasoningOption;
|
|
36
31
|
userId?: string;
|
|
37
32
|
serviceTier?: "auto" | "default" | "flex" | "scale";
|
|
38
33
|
parallelToolCalls?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-chat-request-builder.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-openai/src/openai-chat-request-builder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-chat-request-builder.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-openai/src/openai-chat-request-builder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC/G,OAAO,EACL,KAAK,6BAA6B,EAGnC,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAC7B;IACA,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB,GACC;IACA,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAEJ,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,6BAA6B,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACpD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EACX;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QACA,IAAI,EAAE,aAAa,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;CACL,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,IAAI,CAAC,OAAO,EAAE;QACZ,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IACT,KAAK,IAAI,KAAK,CAAC;QACb,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ,CAAC;AAUF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,+BAA+B,EACxC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,gBAAgB,GACzB,2BAA2B,CA4G7B"}
|
|
@@ -1,34 +1,17 @@
|
|
|
1
1
|
import { readProviderOptions, toOpenAICompatibleMessages, toOpenAICompatibleTools, unwrapToolInputSchema, } from "../../../src/provider/shared/index.js";
|
|
2
|
-
|
|
3
|
-
return /^o[134](-|$)/.test(modelId);
|
|
4
|
-
}
|
|
2
|
+
import { rejectsOpenAISamplingParams, resolveOpenAIReasoningConfig, } from "./openai-reasoning-models.js";
|
|
5
3
|
function isNativeOpenAIModel(modelId) {
|
|
6
4
|
return /^(gpt-|o[134](-|$)|chatgpt-)/.test(modelId);
|
|
7
5
|
}
|
|
8
6
|
function isFixedSamplingModel(modelId) {
|
|
9
7
|
return /^kimi-k2\.5/.test(modelId);
|
|
10
8
|
}
|
|
11
|
-
function resolveOpenAIReasoningEffort(option) {
|
|
12
|
-
if (!option || option.enabled !== true) {
|
|
13
|
-
return undefined;
|
|
14
|
-
}
|
|
15
|
-
switch (option.effort) {
|
|
16
|
-
case "low":
|
|
17
|
-
return "low";
|
|
18
|
-
case "high":
|
|
19
|
-
case "max":
|
|
20
|
-
return "high";
|
|
21
|
-
case "medium":
|
|
22
|
-
default:
|
|
23
|
-
return "medium";
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
9
|
export function buildOpenAIChatRequest(modelId, providerName, options, stream, warnings) {
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
10
|
+
const reasoning = resolveOpenAIReasoningConfig(modelId, providerName, options.reasoning);
|
|
11
|
+
const reasoningEnabled = reasoning !== undefined;
|
|
12
|
+
const samplingRejected = rejectsOpenAISamplingParams(modelId);
|
|
30
13
|
const fixedSampling = isFixedSamplingModel(modelId);
|
|
31
|
-
const dropSamplingParams = reasoningEnabled || fixedSampling;
|
|
14
|
+
const dropSamplingParams = reasoningEnabled || samplingRejected || fixedSampling;
|
|
32
15
|
// OpenAI Chat Completions has no top_k surface.
|
|
33
16
|
if (options.topK !== undefined) {
|
|
34
17
|
warnings.push({
|
|
@@ -38,7 +21,7 @@ export function buildOpenAIChatRequest(modelId, providerName, options, stream, w
|
|
|
38
21
|
details: "OpenAI Chat Completions does not expose top_k; the value was dropped.",
|
|
39
22
|
});
|
|
40
23
|
}
|
|
41
|
-
// Reasoning models
|
|
24
|
+
// Reasoning models and models with fixed sampling params
|
|
42
25
|
// reject sampling params outright. Emit warnings.
|
|
43
26
|
if (dropSamplingParams) {
|
|
44
27
|
const dropped = [
|
|
@@ -55,7 +38,9 @@ export function buildOpenAIChatRequest(modelId, providerName, options, stream, w
|
|
|
55
38
|
setting: key,
|
|
56
39
|
details: fixedSampling
|
|
57
40
|
? `Dropped because this model uses fixed sampling parameters.`
|
|
58
|
-
:
|
|
41
|
+
: samplingRejected
|
|
42
|
+
? `Dropped because this model rejects ${openaiName}.`
|
|
43
|
+
: `Dropped because reasoning was active for this request and OpenAI rejects ${openaiName} with reasoning.`,
|
|
59
44
|
});
|
|
60
45
|
}
|
|
61
46
|
}
|
|
@@ -87,7 +72,7 @@ export function buildOpenAIChatRequest(modelId, providerName, options, stream, w
|
|
|
87
72
|
...(!dropSamplingParams && options.frequencyPenalty !== undefined
|
|
88
73
|
? { frequency_penalty: options.frequencyPenalty }
|
|
89
74
|
: {}),
|
|
90
|
-
...(
|
|
75
|
+
...(reasoning !== undefined ? { reasoning_effort: reasoning.effort } : {}),
|
|
91
76
|
...(typeof options.userId === "string" && options.userId.length > 0
|
|
92
77
|
? { user: options.userId }
|
|
93
78
|
: {}),
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type OpenAIReasoningEffort = "low" | "medium" | "high";
|
|
2
|
+
export type OpenAIProviderReasoningEffort = OpenAIReasoningEffort | "max";
|
|
3
|
+
export type OpenAIProviderReasoningOption = {
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
effort?: OpenAIProviderReasoningEffort;
|
|
6
|
+
budgetTokens?: number;
|
|
7
|
+
};
|
|
8
|
+
export type ResolvedOpenAIReasoning = {
|
|
9
|
+
effort: OpenAIReasoningEffort;
|
|
10
|
+
source: "default" | "explicit";
|
|
11
|
+
};
|
|
12
|
+
export declare function getDefaultOpenAIReasoningEffort(modelId: string, providerName?: string): OpenAIReasoningEffort | undefined;
|
|
13
|
+
export declare function resolveOpenAIReasoningConfig(modelId: string, providerName: string, option: OpenAIProviderReasoningOption | undefined): ResolvedOpenAIReasoning | undefined;
|
|
14
|
+
export declare function shouldRequestOpenAIReasoningSummary(providerName: string, reasoning: ResolvedOpenAIReasoning): boolean;
|
|
15
|
+
export declare function isOpenAIReasoningModel(modelId: string, providerName?: string): boolean;
|
|
16
|
+
export declare function rejectsOpenAISamplingParams(modelId: string): boolean;
|
|
17
|
+
//# sourceMappingURL=openai-reasoning-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-reasoning-models.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-openai/src/openai-reasoning-models.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,6BAA6B,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;CAChC,CAAC;AA6BF,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,SAAW,GACtB,qBAAqB,GAAG,SAAS,CA0BnC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,6BAA6B,GAAG,SAAS,GAChD,uBAAuB,GAAG,SAAS,CAoBrC;AAED,wBAAgB,mCAAmC,CACjD,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,uBAAuB,GACjC,OAAO,CAET;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,SAAW,GAAG,OAAO,CAExF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIpE"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
const DEFAULT_REASONING_EFFORT = "medium";
|
|
2
|
+
function supportsDefaultReasoningParams(providerName) {
|
|
3
|
+
return providerName === "openai" || providerName === "veryfront-cloud";
|
|
4
|
+
}
|
|
5
|
+
function isGpt5ChatSnapshot(modelId) {
|
|
6
|
+
return /^gpt-5-chat($|-)/.test(modelId);
|
|
7
|
+
}
|
|
8
|
+
function isGpt51(modelId) {
|
|
9
|
+
return /^gpt-5\.1($|-)/.test(modelId);
|
|
10
|
+
}
|
|
11
|
+
function isReasoningCapableGpt5(modelId) {
|
|
12
|
+
if (isGpt5ChatSnapshot(modelId) || isGpt51(modelId)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (/^gpt-5(-|$)/.test(modelId)) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
const gpt5Version = /^gpt-5\.(\d+)(-|$)/.exec(modelId)?.[1];
|
|
19
|
+
return gpt5Version !== undefined && Number.parseInt(gpt5Version, 10) >= 2;
|
|
20
|
+
}
|
|
21
|
+
export function getDefaultOpenAIReasoningEffort(modelId, providerName = "openai") {
|
|
22
|
+
const normalized = modelId.toLowerCase();
|
|
23
|
+
const normalizedProvider = providerName.toLowerCase();
|
|
24
|
+
if (!supportsDefaultReasoningParams(normalizedProvider)) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
if (isGpt5ChatSnapshot(normalized)) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
// GPT-5.1 defaults upstream reasoning to none unless callers opt in explicitly.
|
|
31
|
+
if (isGpt51(normalized)) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
if (/^o1($|-\d)/.test(normalized) || /^o[34](-|$)/.test(normalized)) {
|
|
35
|
+
return DEFAULT_REASONING_EFFORT;
|
|
36
|
+
}
|
|
37
|
+
if (isReasoningCapableGpt5(normalized)) {
|
|
38
|
+
return DEFAULT_REASONING_EFFORT;
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
export function resolveOpenAIReasoningConfig(modelId, providerName, option) {
|
|
43
|
+
if (!option) {
|
|
44
|
+
const effort = getDefaultOpenAIReasoningEffort(modelId, providerName);
|
|
45
|
+
return effort === undefined ? undefined : { effort, source: "default" };
|
|
46
|
+
}
|
|
47
|
+
if (option.enabled !== true) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
switch (option.effort) {
|
|
51
|
+
case "low":
|
|
52
|
+
return { effort: "low", source: "explicit" };
|
|
53
|
+
case "high":
|
|
54
|
+
case "max":
|
|
55
|
+
return { effort: "high", source: "explicit" };
|
|
56
|
+
case "medium":
|
|
57
|
+
default:
|
|
58
|
+
return { effort: "medium", source: "explicit" };
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export function shouldRequestOpenAIReasoningSummary(providerName, reasoning) {
|
|
62
|
+
return reasoning.source === "explicit" || providerName.toLowerCase() === "veryfront-cloud";
|
|
63
|
+
}
|
|
64
|
+
export function isOpenAIReasoningModel(modelId, providerName = "openai") {
|
|
65
|
+
return getDefaultOpenAIReasoningEffort(modelId, providerName) !== undefined;
|
|
66
|
+
}
|
|
67
|
+
export function rejectsOpenAISamplingParams(modelId) {
|
|
68
|
+
const normalized = modelId.toLowerCase();
|
|
69
|
+
return /^o[134]($|-)/.test(normalized) || isReasoningCapableGpt5(normalized);
|
|
70
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-responses-request-builder.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-openai/src/openai-responses-request-builder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,+BAA+B,EAEhC,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-responses-request-builder.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-llm-openai/src/openai-responses-request-builder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,+BAA+B,EAEhC,MAAM,kCAAkC,CAAC;AAO1C,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/D,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,IAAI,CAAC,OAAO,EAAE;QACZ,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IACT,KAAK,IAAI,KAAK,CAAC;QACb,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ,CAAC;AA6IF,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,+BAA+B,EACxC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,gBAAgB,GACzB,sBAAsB,CA0FxB"}
|
|
@@ -1,22 +1,5 @@
|
|
|
1
1
|
import { readProviderOptions, stringifyJsonValue, unwrapToolInputSchema, } from "../../../src/provider/shared/index.js";
|
|
2
|
-
|
|
3
|
-
return /^o[134](-|$)/.test(modelId);
|
|
4
|
-
}
|
|
5
|
-
function resolveOpenAIReasoningEffort(option) {
|
|
6
|
-
if (!option || option.enabled !== true) {
|
|
7
|
-
return undefined;
|
|
8
|
-
}
|
|
9
|
-
switch (option.effort) {
|
|
10
|
-
case "low":
|
|
11
|
-
return "low";
|
|
12
|
-
case "high":
|
|
13
|
-
case "max":
|
|
14
|
-
return "high";
|
|
15
|
-
case "medium":
|
|
16
|
-
default:
|
|
17
|
-
return "medium";
|
|
18
|
-
}
|
|
19
|
-
}
|
|
2
|
+
import { rejectsOpenAISamplingParams, resolveOpenAIReasoningConfig, shouldRequestOpenAIReasoningSummary, } from "./openai-reasoning-models.js";
|
|
20
3
|
function toSnakeCaseRecord(record) {
|
|
21
4
|
return Object.fromEntries(Object.entries(record).map(([key, value]) => [
|
|
22
5
|
key.replace(/[A-Z]/g, (match) => `_${match.toLowerCase()}`),
|
|
@@ -142,9 +125,10 @@ function toOpenAIResponsesTools(tools) {
|
|
|
142
125
|
return normalized.length > 0 ? normalized : undefined;
|
|
143
126
|
}
|
|
144
127
|
export function buildOpenAIResponsesRequest(modelId, providerName, options, stream, warnings) {
|
|
145
|
-
const
|
|
146
|
-
const
|
|
147
|
-
const
|
|
128
|
+
const reasoning = resolveOpenAIReasoningConfig(modelId, providerName, options.reasoning);
|
|
129
|
+
const reasoningEnabled = reasoning !== undefined;
|
|
130
|
+
const samplingRejected = rejectsOpenAISamplingParams(modelId);
|
|
131
|
+
const dropSamplingParams = reasoningEnabled || samplingRejected;
|
|
148
132
|
if (options.topK !== undefined) {
|
|
149
133
|
warnings.push({
|
|
150
134
|
type: "unsupported-setting",
|
|
@@ -153,7 +137,7 @@ export function buildOpenAIResponsesRequest(modelId, providerName, options, stre
|
|
|
153
137
|
details: "OpenAI Responses API does not expose top_k; the value was dropped.",
|
|
154
138
|
});
|
|
155
139
|
}
|
|
156
|
-
if (
|
|
140
|
+
if (dropSamplingParams) {
|
|
157
141
|
const dropped = [
|
|
158
142
|
["temperature", "temperature"],
|
|
159
143
|
["topP", "top_p"],
|
|
@@ -166,7 +150,9 @@ export function buildOpenAIResponsesRequest(modelId, providerName, options, stre
|
|
|
166
150
|
type: "unsupported-setting",
|
|
167
151
|
provider: "openai",
|
|
168
152
|
setting: key,
|
|
169
|
-
details:
|
|
153
|
+
details: samplingRejected
|
|
154
|
+
? `Dropped because this model rejects ${openaiName}.`
|
|
155
|
+
: `Dropped because reasoning was active for this request and OpenAI rejects ${openaiName} with reasoning.`,
|
|
170
156
|
});
|
|
171
157
|
}
|
|
172
158
|
}
|
|
@@ -181,14 +167,21 @@ export function buildOpenAIResponsesRequest(modelId, providerName, options, stre
|
|
|
181
167
|
...(options.maxOutputTokens !== undefined
|
|
182
168
|
? { max_output_tokens: options.maxOutputTokens }
|
|
183
169
|
: {}),
|
|
184
|
-
...(!
|
|
170
|
+
...(!dropSamplingParams && options.temperature !== undefined
|
|
185
171
|
? { temperature: options.temperature }
|
|
186
172
|
: {}),
|
|
187
|
-
...(!
|
|
173
|
+
...(!dropSamplingParams && options.topP !== undefined ? { top_p: options.topP } : {}),
|
|
188
174
|
...(responsesTools ? { tools: responsesTools } : {}),
|
|
189
175
|
...(options.toolChoice !== undefined ? { tool_choice: options.toolChoice } : {}),
|
|
190
|
-
...(
|
|
191
|
-
? {
|
|
176
|
+
...(reasoning !== undefined
|
|
177
|
+
? {
|
|
178
|
+
reasoning: {
|
|
179
|
+
effort: reasoning.effort,
|
|
180
|
+
...(shouldRequestOpenAIReasoningSummary(providerName, reasoning)
|
|
181
|
+
? { summary: "auto" }
|
|
182
|
+
: {}),
|
|
183
|
+
},
|
|
184
|
+
}
|
|
192
185
|
: {}),
|
|
193
186
|
...(typeof options.userId === "string" && options.userId.length > 0
|
|
194
187
|
? { user: options.userId }
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ChatRequestContext, ChatRuntimeOverrides, ChatUiMessage, DurableRootRunDescriptor } from "../../chat/types.js";
|
|
2
2
|
import { type HostedChatRequest } from "./chat-request.js";
|
|
3
|
+
import type { RuntimeAgentMarkdownDefinition } from "../runtime/agent-definition.js";
|
|
3
4
|
/** Public API contract for hosted chat request principal. */
|
|
4
5
|
export type HostedChatRequestPrincipal = {
|
|
5
6
|
userId: string;
|
|
@@ -38,6 +39,7 @@ export type ParsedHostedChatRequest = {
|
|
|
38
39
|
runtimeOverrides: ChatRuntimeOverrides | undefined;
|
|
39
40
|
durableRootRun: DurableRootRunDescriptor | undefined;
|
|
40
41
|
persistLatestUserMessageBeforeDurableRun: boolean;
|
|
42
|
+
agentConfig?: RuntimeAgentMarkdownDefinition;
|
|
41
43
|
};
|
|
42
44
|
/** Options accepted by parse hosted chat request. */
|
|
43
45
|
export type ParseHostedChatRequestOptions = {
|
|
@@ -51,6 +53,7 @@ export type ParseHostedChatRequestOptions = {
|
|
|
51
53
|
export declare function buildParsedHostedChatRequest(input: {
|
|
52
54
|
chatRequest: HostedChatRequest;
|
|
53
55
|
agentId?: string;
|
|
56
|
+
agentConfig?: RuntimeAgentMarkdownDefinition;
|
|
54
57
|
authToken: string;
|
|
55
58
|
userId: string;
|
|
56
59
|
verifyProjectAccess?: ParseHostedChatRequestOptions["verifyProjectAccess"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-request-parser.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/chat-request-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-request-parser.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/chat-request-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAErF,6DAA6D;AAC7D,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,kDAAkD;AAClD,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,6BAA6B,GACrC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,4BAA4B,CAAA;CAAE,CAAC;AAE5D,8CAA8C;AAC9C,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,4BAA4B,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACpD,gBAAgB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACnD,cAAc,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACrD,wCAAwC,EAAE,OAAO,CAAC;IAClD,WAAW,CAAC,EAAE,8BAA8B,CAAC;CAC9C,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,0BAA0B,GAAG,QAAQ,CAAC,CAAC;IACnF,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC9C,CAAC;AA8CF,oDAAoD;AACpD,wBAAsB,4BAA4B,CAAC,KAAK,EAAE;IACxD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,8BAA8B,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,6BAA6B,CAAC,qBAAqB,CAAC,CAAC;CAC5E,GAAG,OAAO,CAAC,uBAAuB,GAAG,QAAQ,CAAC,CAmD9C;AAED,0DAA0D;AAC1D,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,uBAAuB,GAAG,QAAQ,CAAC,CAoB7C;AAED,uFAAuF;AACvF,wBAAsB,0DAA0D,CAC9E,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,uBAAuB,GAAG,QAAQ,CAAC,CAgC7C"}
|
|
@@ -31,6 +31,12 @@ export async function buildParsedHostedChatRequest(input) {
|
|
|
31
31
|
const projectId = chatContext.projectId;
|
|
32
32
|
const projectSlug = chatContext.projectSlug;
|
|
33
33
|
const conversationId = chatContext.conversationId;
|
|
34
|
+
if (input.agentConfig && input.agentId && input.agentConfig.id !== input.agentId) {
|
|
35
|
+
return createValidationErrorResponse({
|
|
36
|
+
messagePrefix: "Invalid runtime agent invocation",
|
|
37
|
+
validationMessage: "agentConfig.id must match the requested agent id",
|
|
38
|
+
});
|
|
39
|
+
}
|
|
34
40
|
const accessError = await verifyHostedChatProjectAccess({
|
|
35
41
|
projectId,
|
|
36
42
|
authToken: input.authToken,
|
|
@@ -58,6 +64,7 @@ export async function buildParsedHostedChatRequest(input) {
|
|
|
58
64
|
runtimeOverrides,
|
|
59
65
|
durableRootRun,
|
|
60
66
|
persistLatestUserMessageBeforeDurableRun: false,
|
|
67
|
+
...(input.agentConfig ? { agentConfig: input.agentConfig } : {}),
|
|
61
68
|
};
|
|
62
69
|
}
|
|
63
70
|
/** Request payload for parse hosted chat request from. */
|
|
@@ -105,6 +112,7 @@ export async function parseRuntimeAgentRunInvocationHostedChatRequestFromRequest
|
|
|
105
112
|
userId: invocation.data.run.requestedByUserId,
|
|
106
113
|
chatRequest: chatRequest.data,
|
|
107
114
|
agentId: invocation.data.run.agentId,
|
|
115
|
+
agentConfig: invocation.data.agentConfig,
|
|
108
116
|
verifyProjectAccess: options.verifyProjectAccess,
|
|
109
117
|
});
|
|
110
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"veryfront-cloud-agent-service.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/veryfront-cloud-agent-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAqB9E,OAAO,EAGL,KAAK,WAAW,EAIjB,MAAM,qBAAqB,CAAC;AAiB7B,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAmBzE,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAKjE,OAAO,EAML,KAAK,8BAA8B,EAEpC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAEL,KAAK,kDAAkD,EACxD,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAK9B,KAAK,2BAA2B,EACjC,MAAM,uBAAuB,CAAC;AAS/B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAahF,iFAAiF;AACjF,MAAM,MAAM,2CAA2C,GACnD,WAAW,CAAC,0BAA0B,CAAC,eAAe,CAAC,CAAC,GACxD,WAAW,CAAC,kDAAkD,CAAC,eAAe,CAAC,CAAC,GAChF;IACA,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;CACvC,CAAC;AAEJ,MAAM,MAAM,yCAAyC,GAAG,8BAA8B,CAAC;AAEvF,6EAA6E;AAC7E,MAAM,MAAM,uCAAuC,GAAG,2BAA2B,CAAC;AAElF,uCAAuC;AACvC,wBAAgB,qBAAqB,IACjC,2BAA2B,GAC3B,6BAA6B,CAEhC;AAED,0CAA0C;AAC1C,wBAAgB,wBAAwB,IACpC,2BAA2B,GAC3B,6BAA6B,CAEhC;AAED,KAAK,sBAAsB,GAAG,MAAM,GAAG,GAAG,CAAC;AAE3C,8DAA8D;AAC9D,MAAM,MAAM,qCAAqC,GAAG;IAClD;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,WAAW,CAAC,EAAE,yCAAyC,CAAC;IACxD;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,uCAAuC,EAAE,CAAC;IAChE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;IACnE,GAAG,CAAC,EAAE,kDAAkD,CAAC,KAAK,CAAC,CAAC;IAChE,aAAa,CAAC,EAAE,2CAA2C,CAAC;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,CAAC;CACrC,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,iCAAiC,GAAG,qCAAqC,CAAC;AACtF,yCAAyC;AACzC,MAAM,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAqBxE,qFAAqF;AACrF,MAAM,MAAM,+CAA+C,GAAG,2BAA2B,GAAG;IAC1F,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAChD,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAClD,cAAc,EAAE,gCAAgC,CAAC;CAClD,CAAC;AACF,gEAAgE;AAChE,MAAM,MAAM,6BAA6B,GAAG,+CAA+C,CAAC;AAC5F,4DAA4D;AAC5D,MAAM,MAAM,yBAAyB,GAAG,2CAA2C,CAAC;AAyYpF,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAYhF;
|
|
1
|
+
{"version":3,"file":"veryfront-cloud-agent-service.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/veryfront-cloud-agent-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAqB9E,OAAO,EAGL,KAAK,WAAW,EAIjB,MAAM,qBAAqB,CAAC;AAiB7B,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAmBzE,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAKjE,OAAO,EAML,KAAK,8BAA8B,EAEpC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAEL,KAAK,kDAAkD,EACxD,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAK9B,KAAK,2BAA2B,EACjC,MAAM,uBAAuB,CAAC;AAS/B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAahF,iFAAiF;AACjF,MAAM,MAAM,2CAA2C,GACnD,WAAW,CAAC,0BAA0B,CAAC,eAAe,CAAC,CAAC,GACxD,WAAW,CAAC,kDAAkD,CAAC,eAAe,CAAC,CAAC,GAChF;IACA,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;CACvC,CAAC;AAEJ,MAAM,MAAM,yCAAyC,GAAG,8BAA8B,CAAC;AAEvF,6EAA6E;AAC7E,MAAM,MAAM,uCAAuC,GAAG,2BAA2B,CAAC;AAElF,uCAAuC;AACvC,wBAAgB,qBAAqB,IACjC,2BAA2B,GAC3B,6BAA6B,CAEhC;AAED,0CAA0C;AAC1C,wBAAgB,wBAAwB,IACpC,2BAA2B,GAC3B,6BAA6B,CAEhC;AAED,KAAK,sBAAsB,GAAG,MAAM,GAAG,GAAG,CAAC;AAE3C,8DAA8D;AAC9D,MAAM,MAAM,qCAAqC,GAAG;IAClD;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,WAAW,CAAC,EAAE,yCAAyC,CAAC;IACxD;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,uCAAuC,EAAE,CAAC;IAChE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;IACnE,GAAG,CAAC,EAAE,kDAAkD,CAAC,KAAK,CAAC,CAAC;IAChE,aAAa,CAAC,EAAE,2CAA2C,CAAC;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,CAAC;CACrC,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,iCAAiC,GAAG,qCAAqC,CAAC;AACtF,yCAAyC;AACzC,MAAM,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAqBxE,qFAAqF;AACrF,MAAM,MAAM,+CAA+C,GAAG,2BAA2B,GAAG;IAC1F,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAChD,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAClD,cAAc,EAAE,gCAAgC,CAAC;CAClD,CAAC;AACF,gEAAgE;AAChE,MAAM,MAAM,6BAA6B,GAAG,+CAA+C,CAAC;AAC5F,4DAA4D;AAC5D,MAAM,MAAM,yBAAyB,GAAG,2CAA2C,CAAC;AAyYpF,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAYhF;AAwcD,yDAAyD;AACzD,wBAAsB,2CAA2C,CAC/D,OAAO,GAAE,qCAA0C,GAClD,OAAO,CAAC,yBAAyB,CAAC,+CAA+C,CAAC,CAAC,CAKrF;AAED,iDAAiD;AACjD,wBAAsB,mCAAmC,CACvD,OAAO,GAAE,qCAA0C,GAClD,OAAO,CAAC,2BAA2B,CAAC,+CAA+C,CAAC,CAAC,CAgBvF;AAED,4BAA4B;AAC5B,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,qCAA0C,GAClD,OAAO,CAAC,IAAI,CAAC,CAiDf"}
|
|
@@ -518,7 +518,9 @@ async function prepareChatExecution(context, req) {
|
|
|
518
518
|
const { userId, authToken, projectId, conversationId, upstreamParentConversationId, upstreamParentRunId, spawnedFromToolCallId, } = req;
|
|
519
519
|
const config = context.infrastructure.getConfig();
|
|
520
520
|
setPrepareChatExecutionStartAttributes(context, { projectId, userId });
|
|
521
|
-
const
|
|
521
|
+
const requestedAgentId = req.agentId ?? getDefaultAgentId(context);
|
|
522
|
+
// veryfront-api is the trusted caller for request-scoped project-agent config.
|
|
523
|
+
const agentConfig = req.agentConfig ?? await resolveAgentConfig(context, requestedAgentId);
|
|
522
524
|
const abortController = new AbortController();
|
|
523
525
|
const { effectiveMessages, rootRunContext, runtime: { agent, runtimeKind, modelId, cleanup }, finalMessages, } = await prepareVeryfrontCloudHostedChatExecution({
|
|
524
526
|
request: req,
|
|
@@ -262,6 +262,24 @@ export declare const getRuntimeAgentRunInvocationSchema: () => import("../../int
|
|
|
262
262
|
type: import("../../internal-agents/schema.js").Schema<"release">;
|
|
263
263
|
releaseId: import("../../internal-agents/schema.js").Schema<string>;
|
|
264
264
|
}> | undefined>;
|
|
265
|
+
agentConfig: import("../../internal-agents/schema.js").Schema<import("../../extensions/schema/schema-validator.js").InferShape<{
|
|
266
|
+
id: import("../../internal-agents/schema.js").Schema<string>;
|
|
267
|
+
name: import("../../internal-agents/schema.js").Schema<string>;
|
|
268
|
+
description: import("../../internal-agents/schema.js").Schema<string>;
|
|
269
|
+
avatarUrl: import("../../internal-agents/schema.js").Schema<string | undefined>;
|
|
270
|
+
instructions: import("../../internal-agents/schema.js").Schema<string>;
|
|
271
|
+
thinking: import("../../internal-agents/schema.js").Schema<import("../../extensions/schema/schema-validator.js").InferShape<{
|
|
272
|
+
enabled: import("../../internal-agents/schema.js").Schema<boolean>;
|
|
273
|
+
budgetTokens: import("../../internal-agents/schema.js").Schema<number | undefined>;
|
|
274
|
+
}> | undefined>;
|
|
275
|
+
model: import("../../internal-agents/schema.js").Schema<string | undefined>;
|
|
276
|
+
temperature: import("../../internal-agents/schema.js").Schema<number | undefined>;
|
|
277
|
+
maxSteps: import("../../internal-agents/schema.js").Schema<number | undefined>;
|
|
278
|
+
providerTools: import("../../internal-agents/schema.js").Schema<string[] | undefined>;
|
|
279
|
+
skills: import("../../internal-agents/schema.js").Schema<true | string[] | undefined>;
|
|
280
|
+
tools: import("../../internal-agents/schema.js").Schema<true | string[] | undefined>;
|
|
281
|
+
delegates: import("../../internal-agents/schema.js").Schema<string[] | undefined>;
|
|
282
|
+
}> | undefined>;
|
|
265
283
|
credentials: import("../../internal-agents/schema.js").Schema<import("../../extensions/schema/schema-validator.js").InferShape<{
|
|
266
284
|
authToken: import("../../internal-agents/schema.js").Schema<string>;
|
|
267
285
|
}> | undefined>;
|
|
@@ -331,6 +349,24 @@ export declare const RuntimeAgentRunInvocationSchema: import("../../internal-age
|
|
|
331
349
|
type: import("../../internal-agents/schema.js").Schema<"release">;
|
|
332
350
|
releaseId: import("../../internal-agents/schema.js").Schema<string>;
|
|
333
351
|
}> | undefined>;
|
|
352
|
+
agentConfig: import("../../internal-agents/schema.js").Schema<import("../../extensions/schema/schema-validator.js").InferShape<{
|
|
353
|
+
id: import("../../internal-agents/schema.js").Schema<string>;
|
|
354
|
+
name: import("../../internal-agents/schema.js").Schema<string>;
|
|
355
|
+
description: import("../../internal-agents/schema.js").Schema<string>;
|
|
356
|
+
avatarUrl: import("../../internal-agents/schema.js").Schema<string | undefined>;
|
|
357
|
+
instructions: import("../../internal-agents/schema.js").Schema<string>;
|
|
358
|
+
thinking: import("../../internal-agents/schema.js").Schema<import("../../extensions/schema/schema-validator.js").InferShape<{
|
|
359
|
+
enabled: import("../../internal-agents/schema.js").Schema<boolean>;
|
|
360
|
+
budgetTokens: import("../../internal-agents/schema.js").Schema<number | undefined>;
|
|
361
|
+
}> | undefined>;
|
|
362
|
+
model: import("../../internal-agents/schema.js").Schema<string | undefined>;
|
|
363
|
+
temperature: import("../../internal-agents/schema.js").Schema<number | undefined>;
|
|
364
|
+
maxSteps: import("../../internal-agents/schema.js").Schema<number | undefined>;
|
|
365
|
+
providerTools: import("../../internal-agents/schema.js").Schema<string[] | undefined>;
|
|
366
|
+
skills: import("../../internal-agents/schema.js").Schema<true | string[] | undefined>;
|
|
367
|
+
tools: import("../../internal-agents/schema.js").Schema<true | string[] | undefined>;
|
|
368
|
+
delegates: import("../../internal-agents/schema.js").Schema<string[] | undefined>;
|
|
369
|
+
}> | undefined>;
|
|
334
370
|
credentials: import("../../internal-agents/schema.js").Schema<import("../../extensions/schema/schema-validator.js").InferShape<{
|
|
335
371
|
authToken: import("../../internal-agents/schema.js").Schema<string>;
|
|
336
372
|
}> | undefined>;
|
|
@@ -363,6 +399,7 @@ export type RuntimeAgentControlPlaneStreamRequest = {
|
|
|
363
399
|
context: RuntimeAgentRunInvocation["context"];
|
|
364
400
|
credentials?: RuntimeAgentRunInvocation["credentials"];
|
|
365
401
|
agentSource?: RuntimeAgentRunInvocation["agentSource"];
|
|
402
|
+
agentConfig?: RuntimeAgentRunInvocation["agentConfig"];
|
|
366
403
|
forwardedProps?: RuntimeAgentRunInvocation["forwardedProps"];
|
|
367
404
|
};
|
|
368
405
|
/** Builds runtime agent control plane stream request from invocation. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-invocation-contract.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/agent-invocation-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-invocation-contract.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/agent-invocation-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { defineSchema, lazySchema } from "../../schemas/index.js";
|
|
2
2
|
import { ensureBuiltinSchemaValidator } from "../../extensions/builtin-extensions.js";
|
|
3
3
|
import { parseAgUiJsonRequestOrError } from "../ag-ui/request-shared.js";
|
|
4
|
+
import { getRuntimeAgentMarkdownDefinitionSchema } from "./agent-definition.js";
|
|
4
5
|
ensureBuiltinSchemaValidator();
|
|
5
6
|
const MAX_TOOL_PARAMETERS_BYTES = 16_384;
|
|
6
7
|
const MAX_CONTEXT_ITEM_BYTES = 16_384;
|
|
7
8
|
const MAX_CONTEXT_TOTAL_BYTES = 65_536;
|
|
9
|
+
const MAX_AGENT_CONFIG_BYTES = 65_536;
|
|
8
10
|
const MAX_FORWARDED_PROPS_BYTES = 196_608;
|
|
9
11
|
const MAX_CREDENTIAL_BYTES = 16_384;
|
|
10
12
|
const encoder = new TextEncoder();
|
|
@@ -218,8 +220,17 @@ export const getRuntimeAgentRunInvocationSchema = defineSchema((v) => v.object({
|
|
|
218
220
|
tools: v.array(getRuntimeAgentToolSchema()).max(50).default([]),
|
|
219
221
|
context: v.array(getRuntimeAgentContextItemSchema()).max(10).default([]).refine((value) => isWithinJsonSizeLimit(value, MAX_CONTEXT_TOTAL_BYTES), { message: "context must be less than 64 KB total" }),
|
|
220
222
|
agentSource: getRuntimeAgentSourceContextSchema().optional(),
|
|
223
|
+
agentConfig: getRuntimeAgentMarkdownDefinitionSchema().optional().refine((value) => value === undefined || isWithinJsonSizeLimit(value, MAX_AGENT_CONFIG_BYTES), { message: "agentConfig must be less than 64 KB" }),
|
|
221
224
|
credentials: getRuntimeAgentCredentialsSchema().optional(),
|
|
222
225
|
forwardedProps: v.record(v.string(), v.unknown()).optional().refine((value) => value === undefined || isWithinJsonSizeLimit(value, MAX_FORWARDED_PROPS_BYTES), { message: "forwardedProps must be less than 192 KB" }),
|
|
226
|
+
}).superRefine((input, ctx) => {
|
|
227
|
+
if (input.agentConfig && input.agentConfig.id !== input.run.agentId) {
|
|
228
|
+
ctx.addIssue({
|
|
229
|
+
code: "custom",
|
|
230
|
+
message: "agentConfig.id must match run.agentId",
|
|
231
|
+
path: ["agentConfig", "id"],
|
|
232
|
+
});
|
|
233
|
+
}
|
|
223
234
|
}));
|
|
224
235
|
/** Schema for runtime agent run invocation.
|
|
225
236
|
* @deprecated Use getRuntimeAgentRunInvocationSchema()
|
|
@@ -237,6 +248,7 @@ export function buildRuntimeAgentControlPlaneStreamRequestFromInvocation(input)
|
|
|
237
248
|
context: input.context,
|
|
238
249
|
...(input.credentials ? { credentials: input.credentials } : {}),
|
|
239
250
|
...(input.agentSource ? { agentSource: input.agentSource } : {}),
|
|
251
|
+
...(input.agentConfig ? { agentConfig: input.agentConfig } : {}),
|
|
240
252
|
...(input.forwardedProps ? { forwardedProps: input.forwardedProps } : {}),
|
|
241
253
|
};
|
|
242
254
|
}
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* @module extensions/compat
|
|
5
5
|
*/
|
|
6
6
|
import "../../../_dnt.polyfills.js";
|
|
7
|
-
export type { DocumentExtractor, KreuzbergExtractor, SqliteDatabase, SqliteStatement, SqliteStore, } from "./native-services.js";
|
|
7
|
+
export type { DocumentExtractionOptions, DocumentExtractionProgress, DocumentExtractionProgressEvent, DocumentExtractor, KreuzbergExtractor, SqliteDatabase, SqliteStatement, SqliteStore, } from "./native-services.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/extensions/compat/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,4BAA4B,CAAC;AAGpC,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/extensions/compat/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,4BAA4B,CAAC;AAGpC,YAAY,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAC"}
|
|
@@ -40,6 +40,18 @@ export interface KreuzbergExtractor {
|
|
|
40
40
|
content: string;
|
|
41
41
|
}>;
|
|
42
42
|
}
|
|
43
|
+
export interface DocumentExtractionProgressEvent {
|
|
44
|
+
unit: "file" | "page" | "slide";
|
|
45
|
+
current: number;
|
|
46
|
+
total?: number;
|
|
47
|
+
characters?: number;
|
|
48
|
+
}
|
|
49
|
+
export type DocumentExtractionProgress = (event: DocumentExtractionProgressEvent) => void | Promise<void>;
|
|
50
|
+
export interface DocumentExtractionOptions {
|
|
51
|
+
onProgress?: DocumentExtractionProgress;
|
|
52
|
+
idleTimeoutMs?: number;
|
|
53
|
+
hardTimeoutMs?: number;
|
|
54
|
+
}
|
|
43
55
|
/**
|
|
44
56
|
* Document extraction contract.
|
|
45
57
|
*/
|
|
@@ -57,7 +69,7 @@ export interface DocumentExtractor {
|
|
|
57
69
|
* Implementations may run extraction inside an isolated worker or call a
|
|
58
70
|
* native implementation directly.
|
|
59
71
|
*/
|
|
60
|
-
extractInWorker?(buffer: ArrayBuffer, mimeType: string): Promise<string>;
|
|
72
|
+
extractInWorker?(buffer: ArrayBuffer, mimeType: string, options?: DocumentExtractionOptions): Promise<string>;
|
|
61
73
|
}
|
|
62
74
|
/**
|
|
63
75
|
* SQLite-backed storage contract.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-services.d.ts","sourceRoot":"","sources":["../../../../src/src/extensions/compat/native-services.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACnC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;IACtC,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,CACV,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,eAAe,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhD;;;;;OAKG;IACH,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"native-services.d.ts","sourceRoot":"","sources":["../../../../src/src/extensions/compat/native-services.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACnC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;IACtC,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,CACV,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,0BAA0B,GAAG,CACvC,KAAK,EAAE,+BAA+B,KACnC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,eAAe,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhD;;;;;OAKG;IACH,eAAe,CAAC,CACd,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;OAQG;IACH,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC7D"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* npm builds should load the separate @veryfront/ext-* packages installed by
|
|
7
7
|
* the consuming service or app.
|
|
8
8
|
*/
|
|
9
|
+
import "../../_dnt.polyfills.js";
|
|
9
10
|
export declare function firstPartyExtensionSourceSpecifiers(sourceDirectory: string): string[];
|
|
10
11
|
export declare function importFirstPartyExtensionModule<TModule>(sourceDirectory: string, packageName: string): Promise<TModule>;
|
|
11
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-party-import.d.ts","sourceRoot":"","sources":["../../../src/src/extensions/first-party-import.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"first-party-import.d.ts","sourceRoot":"","sources":["../../../src/src/extensions/first-party-import.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,yBAAyB,CAAC;AAKjC,wBAAgB,mCAAmC,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAGrF;AAED,wBAAsB,+BAA+B,CAAC,OAAO,EAC3D,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAmBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,EACd,0BAA0B,CAAC,EAAE,MAAM,EAAE,GACpC,OAAO,CAcT"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* npm builds should load the separate @veryfront/ext-* packages installed by
|
|
7
7
|
* the consuming service or app.
|
|
8
8
|
*/
|
|
9
|
+
import "../../_dnt.polyfills.js";
|
|
9
10
|
const SOURCE_EXTENSION_ROOT = "../../extensions";
|
|
10
11
|
export function firstPartyExtensionSourceSpecifiers(sourceDirectory) {
|
|
11
12
|
const sourceRoot = `${SOURCE_EXTENSION_ROOT}/${sourceDirectory}/src/index`;
|
|
@@ -251,6 +251,24 @@ export declare const getInternalAgentControlPlaneStreamRequestSchema: () => Sche
|
|
|
251
251
|
type: Schema<"release">;
|
|
252
252
|
releaseId: Schema<string>;
|
|
253
253
|
}> | undefined>;
|
|
254
|
+
agentConfig: Schema<import("../extensions/schema/schema-validator.js").InferShape<{
|
|
255
|
+
id: Schema<string>;
|
|
256
|
+
name: Schema<string>;
|
|
257
|
+
description: Schema<string>;
|
|
258
|
+
avatarUrl: Schema<string | undefined>;
|
|
259
|
+
instructions: Schema<string>;
|
|
260
|
+
thinking: Schema<import("../extensions/schema/schema-validator.js").InferShape<{
|
|
261
|
+
enabled: Schema<boolean>;
|
|
262
|
+
budgetTokens: Schema<number | undefined>;
|
|
263
|
+
}> | undefined>;
|
|
264
|
+
model: Schema<string | undefined>;
|
|
265
|
+
temperature: Schema<number | undefined>;
|
|
266
|
+
maxSteps: Schema<number | undefined>;
|
|
267
|
+
providerTools: Schema<string[] | undefined>;
|
|
268
|
+
skills: Schema<true | string[] | undefined>;
|
|
269
|
+
tools: Schema<true | string[] | undefined>;
|
|
270
|
+
delegates: Schema<string[] | undefined>;
|
|
271
|
+
}> | undefined>;
|
|
254
272
|
credentials: Schema<import("../extensions/schema/schema-validator.js").InferShape<{
|
|
255
273
|
authToken: Schema<string>;
|
|
256
274
|
}> | undefined>;
|
|
@@ -345,6 +363,24 @@ export declare const getInternalAgentStreamRequestSchema: () => Schema<import(".
|
|
|
345
363
|
type: Schema<"release">;
|
|
346
364
|
releaseId: Schema<string>;
|
|
347
365
|
}> | undefined>;
|
|
366
|
+
agentConfig: Schema<import("../extensions/schema/schema-validator.js").InferShape<{
|
|
367
|
+
id: Schema<string>;
|
|
368
|
+
name: Schema<string>;
|
|
369
|
+
description: Schema<string>;
|
|
370
|
+
avatarUrl: Schema<string | undefined>;
|
|
371
|
+
instructions: Schema<string>;
|
|
372
|
+
thinking: Schema<import("../extensions/schema/schema-validator.js").InferShape<{
|
|
373
|
+
enabled: Schema<boolean>;
|
|
374
|
+
budgetTokens: Schema<number | undefined>;
|
|
375
|
+
}> | undefined>;
|
|
376
|
+
model: Schema<string | undefined>;
|
|
377
|
+
temperature: Schema<number | undefined>;
|
|
378
|
+
maxSteps: Schema<number | undefined>;
|
|
379
|
+
providerTools: Schema<string[] | undefined>;
|
|
380
|
+
skills: Schema<true | string[] | undefined>;
|
|
381
|
+
tools: Schema<true | string[] | undefined>;
|
|
382
|
+
delegates: Schema<string[] | undefined>;
|
|
383
|
+
}> | undefined>;
|
|
348
384
|
credentials: Schema<import("../extensions/schema/schema-validator.js").InferShape<{
|
|
349
385
|
authToken: Schema<string>;
|
|
350
386
|
}> | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,KAAK,sBAAsB,EAE3B,KAAK,kBAAkB,EAQxB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,KAAK,sBAAsB,EAE3B,KAAK,kBAAkB,EAQxB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAIL,kCAAkC,EAClC,KAAK,yBAAyB,EAC/B,MAAM,+CAA+C,CAAC;AAkBvD,eAAO,MAAM,cAAc,sBAA4B,CAAC;AAExD,eAAO,MAAM,gBAAgB,sBAE5B,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;GAAmC,CAAC;AAC7E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;GAAkC,CAAC;AAC3E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA8B,CAAC;AACnE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;GAA8B,CAAC;AACnE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA8B,CAAC;AAEzE,eAAO,MAAM,0CAA0C;;;;;;;;GAQtD,CAAC;AAEF,eAAO,MAAM,+CAA+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkC3D,CAAC;AAEF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAU9C,CAAC;AAqNH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,mCAAmC,CAAC,CAAC,GACzE,kBAAkB,CAWpB;AAED,eAAO,MAAM,qBAAqB;;;;;GAYjC,CAAC;AAEF,OAAO,EAAE,kCAAkC,EAAE,CAAC;AAC9C,YAAY,EAAE,yBAAyB,EAAE,CAAC;AAC1C,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC;AAC/F,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AACxD,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACtD,MAAM,MAAM,0BAA0B,GAAG,WAAW,CAClD,UAAU,CAAC,OAAO,mCAAmC,CAAC,CACvD,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;AAGjF,YAAY,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { defineSchema } from "../schemas/index.js";
|
|
2
2
|
import { getAgUiRuntimeContextItemSchema, getAgUiRuntimeContextSchema, getAgUiRuntimeInjectedToolSchema, getAgUiRuntimeMessageSchema, getAgUiRuntimeRequestSchema, getAgUiRuntimeRunIdSchema, } from "../agent/runtime/ag-ui-contract.js";
|
|
3
3
|
import { stripLeadingEmptyObjectPlaceholder } from "../agent/streaming/data-stream.js";
|
|
4
|
+
import { getRuntimeAgentMarkdownDefinitionSchema } from "../agent/runtime/agent-definition.js";
|
|
4
5
|
import { buildRuntimeAgentControlPlaneStreamRequestFromInvocation, getRuntimeAgentCredentialsSchema, getRuntimeAgentRunInvocationSchema, getRuntimeAgentSourceContextSchema, } from "../agent/runtime/agent-invocation-contract.js";
|
|
5
6
|
const AGENT_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;
|
|
7
|
+
const MAX_AGENT_CONFIG_BYTES = 65_536;
|
|
6
8
|
const MAX_FORWARDED_PROPS_BYTES = 196_608;
|
|
7
9
|
const MAX_TOOL_RESULT_BYTES = 65_536;
|
|
8
10
|
const MAX_RUNTIME_MESSAGES = 100;
|
|
@@ -39,9 +41,18 @@ export const getInternalAgentControlPlaneStreamRequestSchema = defineSchema((v)
|
|
|
39
41
|
tools: v.array(getRuntimeInjectedToolSchema()).max(50).default([]),
|
|
40
42
|
context: v.array(getRuntimeContextSchema()).max(10).default([]).refine((value) => isWithinJsonSizeLimit(value, 65_536), { message: "context must be less than 64 KB total" }),
|
|
41
43
|
agentSource: getRuntimeAgentSourceContextSchema().optional(),
|
|
44
|
+
agentConfig: getRuntimeAgentMarkdownDefinitionSchema().optional().refine((value) => value === undefined || isWithinJsonSizeLimit(value, MAX_AGENT_CONFIG_BYTES), { message: "agentConfig must be less than 64 KB" }),
|
|
42
45
|
credentials: getRuntimeAgentCredentialsSchema().optional(),
|
|
43
46
|
forwardedProps: v.record(v.string(), v.unknown()).optional().refine((value) => value === undefined || isWithinJsonSizeLimit(value, MAX_FORWARDED_PROPS_BYTES), { message: "forwardedProps must be less than 192 KB" }),
|
|
44
|
-
}).strict())
|
|
47
|
+
}).strict().superRefine((input, ctx) => {
|
|
48
|
+
if (input.agentConfig && input.agentConfig.id !== input.agentId) {
|
|
49
|
+
ctx.addIssue({
|
|
50
|
+
code: "custom",
|
|
51
|
+
message: "agentConfig.id must match agentId",
|
|
52
|
+
path: ["agentConfig", "id"],
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}));
|
|
45
56
|
export const getInternalAgentStreamRequestSchema = defineSchema((v) => {
|
|
46
57
|
const controlPlaneStreamRequestSchema = getInternalAgentControlPlaneStreamRequestSchema();
|
|
47
58
|
return v.union([
|
|
@@ -1,15 +1,47 @@
|
|
|
1
1
|
/****
|
|
2
2
|
* OpenTelemetry OTLP tracing for proxy.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The standalone proxy (split mode) does not run the server bootstrap, so it
|
|
5
|
+
* wires the OTLP SDK itself: it loads ext-observability-opentelemetry, starts
|
|
6
|
+
* its `OtlpTracingExporter`, and registers the SDK provider with the core
|
|
7
|
+
* api-shim BEFORE caching a tracer. Without this wiring the shim only ever
|
|
8
|
+
* hands out no-op tracers and nothing is exported (issue #2723).
|
|
6
9
|
*
|
|
7
10
|
* Env: OTEL_TRACES_ENABLED, OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_ENDPOINT,
|
|
8
|
-
* OTEL_EXPORTER_OTLP_HEADERS
|
|
11
|
+
* OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS
|
|
12
|
+
* (endpoint/headers are consumed by the extension itself.)
|
|
9
13
|
*/
|
|
10
14
|
import { type Context, type Span } from "../observability/tracing/api-shim.js";
|
|
11
|
-
|
|
15
|
+
import type { TracingExporter } from "../extensions/observability/tracing-exporter.js";
|
|
16
|
+
export type OtlpGateResult = {
|
|
17
|
+
ok: true;
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
reason: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Decide whether OTLP tracing should be initialized for this process.
|
|
24
|
+
* Pure so the decision (and its logged reason) is unit-testable.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveOtlpGate(config: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
endpoint: string;
|
|
29
|
+
}): OtlpGateResult;
|
|
30
|
+
/**
|
|
31
|
+
* Initialize OTLP tracing for the standalone proxy.
|
|
32
|
+
*
|
|
33
|
+
* Loads ext-observability-opentelemetry, starts its exporter, wires the SDK
|
|
34
|
+
* provider (plus metrics API and active-span accessor) into the core shim,
|
|
35
|
+
* and only then caches a tracer. Logs `[otel] Initialized` only when a real
|
|
36
|
+
* provider is wired; otherwise logs why tracing is disabled. Never throws.
|
|
37
|
+
*
|
|
38
|
+
* @param loadExporter Test seam; production callers use the default loader.
|
|
39
|
+
*/
|
|
40
|
+
export declare function initializeOTLPWithApis(loadExporter?: () => Promise<TracingExporter | null>): Promise<void>;
|
|
41
|
+
/** Flush pending spans and release the exporter. Safe to call when disabled. */
|
|
12
42
|
export declare function shutdownOTLP(): Promise<void>;
|
|
43
|
+
/** Reset module state between tests. Mirrors api-shim's `_resetShimForTests`. */
|
|
44
|
+
export declare function _resetOTLPForTests(): void;
|
|
13
45
|
export declare function extractContext(headers: Headers): Context | undefined;
|
|
14
46
|
export declare function injectContext(headers: Headers): void;
|
|
15
47
|
export declare function startServerSpan(method: string, path: string, parentContext?: Context): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/tracing.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,KAAK,OAAO,EAQZ,KAAK,IAAI,EAKV,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AA+BvF,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7C,cAAc,CAYhB;AA2CD;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,GAAE,MAAM,OAAO,CAAC,eAAe,GAAG,IAAI,CAAuB,GACxE,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED,gFAAgF;AAChF,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAelD;AAED,iFAAiF;AACjF,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAQpE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAOpD;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,OAAO,GACtB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAMzC;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAiBvF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAErF;AAOD,wBAAgB,eAAe,IAAI;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAIvE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,OAAO,CAAC,CAAC,CAAC,CA0BZ"}
|
package/esm/src/proxy/tracing.js
CHANGED
|
@@ -1,56 +1,119 @@
|
|
|
1
1
|
/****
|
|
2
2
|
* OpenTelemetry OTLP tracing for proxy.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The standalone proxy (split mode) does not run the server bootstrap, so it
|
|
5
|
+
* wires the OTLP SDK itself: it loads ext-observability-opentelemetry, starts
|
|
6
|
+
* its `OtlpTracingExporter`, and registers the SDK provider with the core
|
|
7
|
+
* api-shim BEFORE caching a tracer. Without this wiring the shim only ever
|
|
8
|
+
* hands out no-op tracers and nothing is exported (issue #2723).
|
|
6
9
|
*
|
|
7
10
|
* Env: OTEL_TRACES_ENABLED, OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_ENDPOINT,
|
|
8
|
-
* OTEL_EXPORTER_OTLP_HEADERS
|
|
11
|
+
* OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS
|
|
12
|
+
* (endpoint/headers are consumed by the extension itself.)
|
|
9
13
|
*/
|
|
10
|
-
import { context as shimContext, defaultTextMapGetter, defaultTextMapSetter, propagation as shimPropagation, SpanKind, SpanStatusCode, trace as shimTrace, } from "../observability/tracing/api-shim.js";
|
|
14
|
+
import { context as shimContext, defaultTextMapGetter, defaultTextMapSetter, propagation as shimPropagation, setGlobalActiveSpanAccessor, setGlobalMetricsAPI, setGlobalTracerProvider, SpanKind, SpanStatusCode, trace as shimTrace, } from "../observability/tracing/api-shim.js";
|
|
11
15
|
import { getHostTelemetryEnv } from "../observability/tracing/telemetry-env.js";
|
|
16
|
+
import { importFirstPartyExtensionModule, isMissingFirstPartyExtensionModule, } from "../extensions/first-party-import.js";
|
|
12
17
|
import { proxyLogger } from "./logger.js";
|
|
18
|
+
const TRACING_EXTENSION_SOURCE_DIRECTORY = "ext-observability-opentelemetry";
|
|
19
|
+
const TRACING_EXTENSION_PACKAGE = "@veryfront/ext-observability-opentelemetry";
|
|
13
20
|
let initialized = false;
|
|
14
21
|
let tracer = null;
|
|
15
|
-
|
|
16
|
-
if (!headerString)
|
|
17
|
-
return {};
|
|
18
|
-
const headers = {};
|
|
19
|
-
for (const part of headerString.split(",")) {
|
|
20
|
-
const [key, ...valueParts] = part.split("=");
|
|
21
|
-
if (!key || valueParts.length === 0)
|
|
22
|
-
continue;
|
|
23
|
-
headers[key.trim()] = valueParts.join("=").trim();
|
|
24
|
-
}
|
|
25
|
-
return headers;
|
|
26
|
-
}
|
|
22
|
+
let exporter = null;
|
|
27
23
|
function getConfig() {
|
|
28
24
|
return {
|
|
29
25
|
enabled: getHostTelemetryEnv("OTEL_TRACES_ENABLED") === "true",
|
|
30
26
|
serviceName: getHostTelemetryEnv("OTEL_SERVICE_NAME") || "veryfront-proxy",
|
|
31
|
-
endpoint
|
|
32
|
-
|
|
27
|
+
// The extension prefers the traces-specific endpoint; mirror that here so
|
|
28
|
+
// the gate agrees with what the exporter will actually use.
|
|
29
|
+
endpoint: getHostTelemetryEnv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") ||
|
|
30
|
+
getHostTelemetryEnv("OTEL_EXPORTER_OTLP_ENDPOINT") || "",
|
|
33
31
|
};
|
|
34
32
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Decide whether OTLP tracing should be initialized for this process.
|
|
35
|
+
* Pure so the decision (and its logged reason) is unit-testable.
|
|
36
|
+
*/
|
|
37
|
+
export function resolveOtlpGate(config) {
|
|
39
38
|
if (!config.enabled) {
|
|
40
|
-
|
|
41
|
-
return;
|
|
39
|
+
return { ok: false, reason: 'Tracing disabled: OTEL_TRACES_ENABLED is not "true"' };
|
|
42
40
|
}
|
|
43
41
|
if (!config.endpoint) {
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
return {
|
|
43
|
+
ok: false,
|
|
44
|
+
reason: "Tracing disabled: no OTLP endpoint (set OTEL_EXPORTER_OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_TRACES_ENDPOINT)",
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return { ok: true };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Load the OTLP tracing exporter from ext-observability-opentelemetry.
|
|
51
|
+
*
|
|
52
|
+
* Resolves the workspace source in repo/binary runs and the npm package in
|
|
53
|
+
* Node installs. Returns `null` (after logging why) when the extension is not
|
|
54
|
+
* installed or fails to load — telemetry must never crash the proxy.
|
|
55
|
+
*/
|
|
56
|
+
async function loadTracingExporter() {
|
|
57
|
+
try {
|
|
58
|
+
const mod = await importFirstPartyExtensionModule(TRACING_EXTENSION_SOURCE_DIRECTORY, TRACING_EXTENSION_PACKAGE);
|
|
59
|
+
if (typeof mod.OtlpTracingExporter !== "function") {
|
|
60
|
+
proxyLogger.warn(`[otel] Tracing disabled: ${TRACING_EXTENSION_PACKAGE} has no OtlpTracingExporter export`);
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return new mod.OtlpTracingExporter();
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (isMissingFirstPartyExtensionModule(error, [
|
|
67
|
+
`extensions/${TRACING_EXTENSION_SOURCE_DIRECTORY}/src/index`,
|
|
68
|
+
TRACING_EXTENSION_PACKAGE,
|
|
69
|
+
])) {
|
|
70
|
+
proxyLogger.warn(`[otel] Tracing disabled: ${TRACING_EXTENSION_PACKAGE} is not installed; install it alongside veryfront to export traces`);
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
proxyLogger.error("[otel] Failed to load tracing extension", error);
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Initialize OTLP tracing for the standalone proxy.
|
|
79
|
+
*
|
|
80
|
+
* Loads ext-observability-opentelemetry, starts its exporter, wires the SDK
|
|
81
|
+
* provider (plus metrics API and active-span accessor) into the core shim,
|
|
82
|
+
* and only then caches a tracer. Logs `[otel] Initialized` only when a real
|
|
83
|
+
* provider is wired; otherwise logs why tracing is disabled. Never throws.
|
|
84
|
+
*
|
|
85
|
+
* @param loadExporter Test seam; production callers use the default loader.
|
|
86
|
+
*/
|
|
87
|
+
export async function initializeOTLPWithApis(loadExporter = loadTracingExporter) {
|
|
88
|
+
if (initialized)
|
|
89
|
+
return;
|
|
90
|
+
initialized = true;
|
|
91
|
+
const config = getConfig();
|
|
92
|
+
const gate = resolveOtlpGate(config);
|
|
93
|
+
if (!gate.ok) {
|
|
94
|
+
proxyLogger.info(`[otel] ${gate.reason}`);
|
|
46
95
|
return;
|
|
47
96
|
}
|
|
48
97
|
try {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
98
|
+
const exporterImpl = await loadExporter();
|
|
99
|
+
if (!exporterImpl)
|
|
100
|
+
return; // loader already logged the reason
|
|
101
|
+
// The exporter reads OTEL_* env itself (endpoint, headers, signal gates)
|
|
102
|
+
// and creates the SDK tracer provider with a batch OTLP span processor.
|
|
103
|
+
await exporterImpl.start({});
|
|
104
|
+
exporter = exporterImpl;
|
|
105
|
+
// Wire the shim globals before getTracer() — the tracer is cached below,
|
|
106
|
+
// so wiring afterwards would freeze the no-op tracer forever.
|
|
107
|
+
setGlobalTracerProvider(exporterImpl.getProvider());
|
|
108
|
+
const metricsApi = exporterImpl.getMetricsAPI();
|
|
109
|
+
if (metricsApi) {
|
|
110
|
+
setGlobalMetricsAPI(metricsApi);
|
|
111
|
+
}
|
|
112
|
+
const traceApi = exporterImpl.getTraceAPI?.();
|
|
113
|
+
if (traceApi) {
|
|
114
|
+
setGlobalActiveSpanAccessor(traceApi);
|
|
115
|
+
}
|
|
52
116
|
tracer = shimTrace.getTracer(config.serviceName);
|
|
53
|
-
initialized = true;
|
|
54
117
|
proxyLogger.info("[otel] Initialized", {
|
|
55
118
|
serviceName: config.serviceName,
|
|
56
119
|
endpoint: config.endpoint,
|
|
@@ -58,12 +121,31 @@ export async function initializeOTLPWithApis() {
|
|
|
58
121
|
}
|
|
59
122
|
catch (error) {
|
|
60
123
|
proxyLogger.error("[otel] Init failed", error);
|
|
61
|
-
initialized = true;
|
|
62
124
|
}
|
|
63
125
|
}
|
|
126
|
+
/** Flush pending spans and release the exporter. Safe to call when disabled. */
|
|
64
127
|
export async function shutdownOTLP() {
|
|
128
|
+
const active = exporter;
|
|
129
|
+
exporter = null;
|
|
130
|
+
tracer = null;
|
|
131
|
+
if (active) {
|
|
132
|
+
try {
|
|
133
|
+
await active.shutdown();
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
proxyLogger.warn("[otel] Exporter shutdown failed", {
|
|
137
|
+
error: error instanceof Error ? error.message : String(error),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
65
141
|
proxyLogger.info("[otel] Shutdown complete");
|
|
66
142
|
}
|
|
143
|
+
/** Reset module state between tests. Mirrors api-shim's `_resetShimForTests`. */
|
|
144
|
+
export function _resetOTLPForTests() {
|
|
145
|
+
initialized = false;
|
|
146
|
+
tracer = null;
|
|
147
|
+
exporter = null;
|
|
148
|
+
}
|
|
67
149
|
export function extractContext(headers) {
|
|
68
150
|
const carrier = {};
|
|
69
151
|
headers.forEach((v, k) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-stream.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-stream.handler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-stream.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-stream.handler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,wCAAwC,CAAC;AAQhD,OAAO,EACL,4BAA4B,EAE7B,MAAM,2CAA2C,CAAC;AAyBnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAanG,MAAM,WAAW,sBACf,SAAQ,yBAAyB,EAAE,+BAA+B;IAClE,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;CACpE;AAkfD,qBAAa,kBAAmB,SAAQ,WAAW;IASrC,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,IAAI,GAAE,sBAAoC;IAIvE,OAAO,CAAC,sBAAsB;IAwBxB,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CA0LxE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createRemoteMCPToolSource, toolRegistry, } from "../../../tool/index.js";
|
|
2
2
|
import { defaultChannelInvokeDeps } from "../../../channels/invoke.js";
|
|
3
3
|
import { createRuntimeAgentStreamResponse, } from "../../../internal-agents/run-stream.js";
|
|
4
|
+
import { createRuntimeAgentFromMarkdownDefinition } from "../../../agent/runtime/agent-markdown-adapter.js";
|
|
4
5
|
import { buildStudioMcpHeaders } from "../../../agent/project/live-studio-mcp-tools.js";
|
|
5
6
|
import { clientAllowsStudioMcp, resolveRuntimeClientProfile, } from "../../../agent/runtime/client-profile.js";
|
|
6
7
|
import { resolveRuntimeOwnerInvokeUrl, RUNTIME_OWNER_INVOKE_URL_HEADER, } from "../../../internal-agents/runtime-owner.js";
|
|
@@ -429,6 +430,7 @@ export class AgentStreamHandler extends BaseHandler {
|
|
|
429
430
|
messageCount: payload.messages.length,
|
|
430
431
|
toolCount: payload.tools.length,
|
|
431
432
|
hasAgentSource: Boolean(payload.agentSource),
|
|
433
|
+
hasAgentConfig: Boolean(payload.agentConfig),
|
|
432
434
|
});
|
|
433
435
|
return await this.withAgentSourceContext(ctx, payload.agentSource, async () => {
|
|
434
436
|
await this.deps.ensureProjectDiscovery(ctx);
|
|
@@ -442,11 +444,16 @@ export class AgentStreamHandler extends BaseHandler {
|
|
|
442
444
|
});
|
|
443
445
|
return this.respond(builder.json({ error: "Agent not found" }, 404));
|
|
444
446
|
}
|
|
447
|
+
// veryfront-api is the trusted control-plane caller; it resolves
|
|
448
|
+
// authorization before attaching request-scoped project-agent config.
|
|
449
|
+
const runtimeBaseAgent = payload.agentConfig
|
|
450
|
+
? createRuntimeAgentFromMarkdownDefinition(payload.agentConfig)
|
|
451
|
+
: agent;
|
|
445
452
|
const runtimeInput = sanitizeRuntimeRunAgentInput(toRuntimeRunAgentInput(payload));
|
|
446
453
|
const apiAuthToken = payload.credentials?.authToken || ctx.proxyToken ||
|
|
447
454
|
getHostEnv("VERYFRONT_API_TOKEN") || "";
|
|
448
455
|
const platformRuntimeAgent = await withVeryfrontPlatformRemoteTools({
|
|
449
|
-
agent:
|
|
456
|
+
agent: runtimeBaseAgent,
|
|
450
457
|
token: apiAuthToken || null,
|
|
451
458
|
projectId: ctx.projectId ?? null,
|
|
452
459
|
availableToolNames: runtimeInput.tools.map((tool) => tool.name),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.989",
|
|
4
4
|
"description": "The simplest way to build AI-powered apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -245,6 +245,10 @@
|
|
|
245
245
|
"import": "./esm/src/extensions/compat/index.js",
|
|
246
246
|
"types": "./esm/src/extensions/compat/index.d.ts"
|
|
247
247
|
},
|
|
248
|
+
"./extensions/first-party-import": {
|
|
249
|
+
"import": "./esm/src/extensions/first-party-import.js",
|
|
250
|
+
"types": "./esm/src/extensions/first-party-import.d.ts"
|
|
251
|
+
},
|
|
248
252
|
"./extensions/css": {
|
|
249
253
|
"import": "./esm/src/extensions/css/index.js",
|
|
250
254
|
"types": "./esm/src/extensions/css/index.d.ts"
|
|
@@ -349,4 +353,4 @@
|
|
|
349
353
|
"NOTICE",
|
|
350
354
|
"README.md"
|
|
351
355
|
]
|
|
352
|
-
}
|
|
356
|
+
}
|