veryfront 0.1.666 → 0.1.668
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/deno.js +1 -1
- package/esm/src/agent/hosted/context-summary-generator.d.ts +21 -0
- package/esm/src/agent/hosted/context-summary-generator.d.ts.map +1 -0
- package/esm/src/agent/hosted/context-summary-generator.js +144 -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 +30 -1
- package/esm/src/agent/service/config.d.ts +8 -0
- package/esm/src/agent/service/config.d.ts.map +1 -1
- package/esm/src/agent/service/config.js +16 -0
- package/esm/src/integrations/_data.d.ts.map +1 -1
- package/esm/src/integrations/_data.js +10624 -70
- package/esm/src/integrations/schema.d.ts +8 -0
- package/esm/src/integrations/schema.d.ts.map +1 -1
- package/esm/src/integrations/schema.js +4 -0
- package/esm/src/integrations/types.d.ts +3 -0
- package/esm/src/integrations/types.d.ts.map +1 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
package/esm/deno.js
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { resolveModel } from "../../provider/index.js";
|
|
2
|
+
import { generateText } from "../../runtime/runtime-bridge.js";
|
|
3
|
+
import type { ContextSummaryGenerator } from "./context-budget-manager.js";
|
|
4
|
+
type GenerateTextFunction = typeof generateText;
|
|
5
|
+
type ResolveModelFunction = typeof resolveModel;
|
|
6
|
+
/** Options accepted by Veryfront Cloud context summary generator. */
|
|
7
|
+
export type VeryfrontCloudContextSummaryGeneratorOptions = {
|
|
8
|
+
apiUrl: string | URL;
|
|
9
|
+
authToken: string;
|
|
10
|
+
projectId?: string | null;
|
|
11
|
+
model?: string;
|
|
12
|
+
maxOutputTokens: number;
|
|
13
|
+
maxInputTokens: number;
|
|
14
|
+
abortSignal?: AbortSignal;
|
|
15
|
+
generateText?: GenerateTextFunction;
|
|
16
|
+
resolveModel?: ResolveModelFunction;
|
|
17
|
+
};
|
|
18
|
+
/** Create a Veryfront Cloud backed summary generator for context compaction. */
|
|
19
|
+
export declare function createVeryfrontCloudContextSummaryGenerator(options: VeryfrontCloudContextSummaryGeneratorOptions): ContextSummaryGenerator;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=context-summary-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-summary-generator.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/context-summary-generator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAIb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAK3E,KAAK,oBAAoB,GAAG,OAAO,YAAY,CAAC;AAChD,KAAK,oBAAoB,GAAG,OAAO,YAAY,CAAC;AAEhD,qEAAqE;AACrE,MAAM,MAAM,4CAA4C,GAAG;IACzD,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC,CAAC;AAiKF,gFAAgF;AAChF,wBAAgB,2CAA2C,CACzD,OAAO,EAAE,4CAA4C,GACpD,uBAAuB,CAmBzB"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { estimateTokens } from "../../chat/message-prep.js";
|
|
2
|
+
import { resolveModel, resolveVeryfrontCloudGatewayModelId, resolveVeryfrontCloudModelId, runWithVeryfrontCloudContextAsync, } from "../../provider/index.js";
|
|
3
|
+
import { generateText } from "../../runtime/runtime-bridge.js";
|
|
4
|
+
const DEFAULT_MAX_SERIALIZED_PART_CHARACTERS = 20_000;
|
|
5
|
+
const DEFAULT_MAX_SERIALIZED_MESSAGE_CHARACTERS = 60_000;
|
|
6
|
+
function truncateText(text, maxCharacters) {
|
|
7
|
+
if (text.length <= maxCharacters) {
|
|
8
|
+
return text;
|
|
9
|
+
}
|
|
10
|
+
return `${text.slice(0, maxCharacters)}\n[truncated ${text.length - maxCharacters} characters]`;
|
|
11
|
+
}
|
|
12
|
+
function stringifyUnknown(value) {
|
|
13
|
+
try {
|
|
14
|
+
return JSON.stringify(value);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return "[unserializable]";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function serializeMessagePart(part) {
|
|
21
|
+
if (part.type === "text" && "text" in part) {
|
|
22
|
+
return truncateText(part.text, DEFAULT_MAX_SERIALIZED_PART_CHARACTERS);
|
|
23
|
+
}
|
|
24
|
+
if (part.type === "tool-result" && "result" in part) {
|
|
25
|
+
return [
|
|
26
|
+
`tool result: ${part.toolName}`,
|
|
27
|
+
`tool call id: ${part.toolCallId}`,
|
|
28
|
+
truncateText(stringifyUnknown(part.result), DEFAULT_MAX_SERIALIZED_PART_CHARACTERS),
|
|
29
|
+
].join("\n");
|
|
30
|
+
}
|
|
31
|
+
if ((part.type === "image" || part.type === "file") && "mediaType" in part) {
|
|
32
|
+
return `${part.type}: ${part.mediaType}`;
|
|
33
|
+
}
|
|
34
|
+
if ("toolCallId" in part && "toolName" in part && "args" in part) {
|
|
35
|
+
return [
|
|
36
|
+
`tool call: ${part.toolName}`,
|
|
37
|
+
`tool call id: ${part.toolCallId}`,
|
|
38
|
+
truncateText(stringifyUnknown(part.args), DEFAULT_MAX_SERIALIZED_PART_CHARACTERS),
|
|
39
|
+
].join("\n");
|
|
40
|
+
}
|
|
41
|
+
return truncateText(stringifyUnknown(part), DEFAULT_MAX_SERIALIZED_PART_CHARACTERS);
|
|
42
|
+
}
|
|
43
|
+
function serializeMessage(message) {
|
|
44
|
+
const body = message.parts.map(serializeMessagePart).join("\n\n");
|
|
45
|
+
const serialized = [
|
|
46
|
+
`<message id="${message.id}" role="${message.role}">`,
|
|
47
|
+
body,
|
|
48
|
+
"</message>",
|
|
49
|
+
].join("\n");
|
|
50
|
+
return truncateText(serialized, DEFAULT_MAX_SERIALIZED_MESSAGE_CHARACTERS);
|
|
51
|
+
}
|
|
52
|
+
function chunkSerializedMessages(messages, maxInputTokens) {
|
|
53
|
+
const chunks = [];
|
|
54
|
+
let current = "";
|
|
55
|
+
for (const message of messages) {
|
|
56
|
+
const serialized = serializeMessage(message);
|
|
57
|
+
const candidate = current ? `${current}\n\n${serialized}` : serialized;
|
|
58
|
+
if (current && estimateTokens(candidate) > maxInputTokens) {
|
|
59
|
+
chunks.push(current);
|
|
60
|
+
current = serialized;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
current = candidate;
|
|
64
|
+
}
|
|
65
|
+
if (current) {
|
|
66
|
+
chunks.push(current);
|
|
67
|
+
}
|
|
68
|
+
return chunks;
|
|
69
|
+
}
|
|
70
|
+
function createCompactionMessages(input) {
|
|
71
|
+
const customInstructions = input.customInstructions
|
|
72
|
+
? `\nAdditional compaction instructions:\n${input.customInstructions}`
|
|
73
|
+
: "";
|
|
74
|
+
const priorSummary = input.priorSummary
|
|
75
|
+
? `\nExisting summary to update:\n${input.priorSummary}\n`
|
|
76
|
+
: "";
|
|
77
|
+
return [
|
|
78
|
+
{
|
|
79
|
+
role: "system",
|
|
80
|
+
content: [
|
|
81
|
+
"Summarize previous context for a continued Veryfront agent run.",
|
|
82
|
+
"Output only the summary.",
|
|
83
|
+
"Preserve user goals, constraints, completed work, in-progress work, decisions, file or project state, tool evidence, and next actions.",
|
|
84
|
+
"Do not continue the conversation.",
|
|
85
|
+
"Do not include private credentials or raw internal metadata.",
|
|
86
|
+
].join("\n"),
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
role: "user",
|
|
90
|
+
content: [
|
|
91
|
+
priorSummary,
|
|
92
|
+
`Recent messages retained separately: ${input.retainedMessageCount}`,
|
|
93
|
+
customInstructions,
|
|
94
|
+
"\nConversation segment to summarize:",
|
|
95
|
+
input.segment,
|
|
96
|
+
].join("\n"),
|
|
97
|
+
},
|
|
98
|
+
];
|
|
99
|
+
}
|
|
100
|
+
async function summarizeSegment(input) {
|
|
101
|
+
const generate = input.options.generateText ?? generateText;
|
|
102
|
+
const resolve = input.options.resolveModel ?? resolveModel;
|
|
103
|
+
const result = await runWithVeryfrontCloudContextAsync({
|
|
104
|
+
apiBaseUrl: input.options.apiUrl.toString(),
|
|
105
|
+
apiToken: input.options.authToken,
|
|
106
|
+
projectSlug: input.options.projectId ?? undefined,
|
|
107
|
+
serviceLayer: "cloud",
|
|
108
|
+
}, () => Promise.resolve(generate({
|
|
109
|
+
model: resolve(input.modelId),
|
|
110
|
+
messages: createCompactionMessages({
|
|
111
|
+
segment: input.segment,
|
|
112
|
+
priorSummary: input.priorSummary,
|
|
113
|
+
retainedMessageCount: input.retainedMessageCount,
|
|
114
|
+
customInstructions: input.customInstructions,
|
|
115
|
+
}),
|
|
116
|
+
maxOutputTokens: input.options.maxOutputTokens,
|
|
117
|
+
temperature: 0,
|
|
118
|
+
abortSignal: input.options.abortSignal,
|
|
119
|
+
})));
|
|
120
|
+
return result.text.trim();
|
|
121
|
+
}
|
|
122
|
+
function resolveSummaryModelId(model) {
|
|
123
|
+
const cloudModelId = resolveVeryfrontCloudModelId(model);
|
|
124
|
+
return resolveVeryfrontCloudGatewayModelId(cloudModelId) ?? cloudModelId;
|
|
125
|
+
}
|
|
126
|
+
/** Create a Veryfront Cloud backed summary generator for context compaction. */
|
|
127
|
+
export function createVeryfrontCloudContextSummaryGenerator(options) {
|
|
128
|
+
return async ({ messagesToSummarize, retainedMessages, customInstructions }) => {
|
|
129
|
+
const modelId = resolveSummaryModelId(options.model);
|
|
130
|
+
const chunks = chunkSerializedMessages(messagesToSummarize, options.maxInputTokens);
|
|
131
|
+
let summary = "";
|
|
132
|
+
for (const chunk of chunks) {
|
|
133
|
+
summary = await summarizeSegment({
|
|
134
|
+
options,
|
|
135
|
+
modelId,
|
|
136
|
+
segment: chunk,
|
|
137
|
+
priorSummary: summary || undefined,
|
|
138
|
+
retainedMessageCount: retainedMessages.length,
|
|
139
|
+
customInstructions,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return { text: summary };
|
|
143
|
+
};
|
|
144
|
+
}
|
|
@@ -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;AAuC9E,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAOjC,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;
|
|
1
|
+
{"version":3,"file":"veryfront-cloud-agent-service.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/veryfront-cloud-agent-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ import { createHostedFormInputTool } from "./form-input-tool.js";
|
|
|
22
22
|
import { createHostedAgentProjectSteering, } from "./agent-project-steering.js";
|
|
23
23
|
import { createLiveStudioMcpTools } from "../project/live-studio-mcp-tools.js";
|
|
24
24
|
import { createDefaultHostedChatRuntime, } from "./default-chat-runtime.js";
|
|
25
|
+
import { createVeryfrontCloudContextSummaryGenerator } from "./context-summary-generator.js";
|
|
25
26
|
import { createDefaultHostedInvokeAgentTool } from "./default-invoke-agent-tool.js";
|
|
26
27
|
import { createDefaultHostedProjectSteeringRefresh, fetchDefaultHostedProjectSteering, } from "./default-project-steering-refresh.js";
|
|
27
28
|
import { createRuntimeAgentDefinitionFromAgent, describeProjectAgentRuntimeAgentIdCandidates, discoverProjectAgentRuntime, doesProjectAgentRuntimeAgentMatchSource, getProjectAgentRuntimeAgentIdCandidates, resolveSingleProjectAgentRuntimeAgentId, } from "../project/agent-runtime.js";
|
|
@@ -478,16 +479,43 @@ function fetchProjectSteering(context, input) {
|
|
|
478
479
|
traceOperationName: "chat.fetchSteering",
|
|
479
480
|
});
|
|
480
481
|
}
|
|
482
|
+
function createHostedChatContextBudgetOptions(context, req, agentConfig, abortSignal) {
|
|
483
|
+
const config = context.infrastructure.getConfig();
|
|
484
|
+
if (!config.VERYFRONT_CONTEXT_COMPACTION_ENABLED || !req.durableRootRun) {
|
|
485
|
+
return undefined;
|
|
486
|
+
}
|
|
487
|
+
return {
|
|
488
|
+
tokenBudget: config.VERYFRONT_CONTEXT_COMPACTION_TOKEN_BUDGET,
|
|
489
|
+
reserveTokens: config.VERYFRONT_CONTEXT_COMPACTION_RESERVE_TOKENS,
|
|
490
|
+
recentTailTokens: config.VERYFRONT_CONTEXT_COMPACTION_RECENT_TAIL_TOKENS,
|
|
491
|
+
minimumRecentTurns: config.VERYFRONT_CONTEXT_COMPACTION_MINIMUM_RECENT_TURNS,
|
|
492
|
+
maxSummaryTokens: config.VERYFRONT_CONTEXT_COMPACTION_MAX_SUMMARY_TOKENS,
|
|
493
|
+
summaryGenerator: createVeryfrontCloudContextSummaryGenerator({
|
|
494
|
+
apiUrl: config.VERYFRONT_API_URL,
|
|
495
|
+
authToken: req.authToken,
|
|
496
|
+
projectId: req.projectId,
|
|
497
|
+
model: config.VERYFRONT_CONTEXT_COMPACTION_SUMMARY_MODEL ?? agentConfig.model,
|
|
498
|
+
maxOutputTokens: config.VERYFRONT_CONTEXT_COMPACTION_MAX_SUMMARY_TOKENS,
|
|
499
|
+
maxInputTokens: config.VERYFRONT_CONTEXT_COMPACTION_SUMMARY_INPUT_TOKENS,
|
|
500
|
+
abortSignal,
|
|
501
|
+
}),
|
|
502
|
+
logger: {
|
|
503
|
+
debug: (message, metadata) => context.infrastructure.logger.debug(message, metadata),
|
|
504
|
+
error: (message, metadata) => context.infrastructure.logger.error(message, metadata),
|
|
505
|
+
},
|
|
506
|
+
};
|
|
507
|
+
}
|
|
481
508
|
async function prepareChatExecution(context, req) {
|
|
482
509
|
const { userId, authToken, projectId, conversationId, upstreamParentConversationId, upstreamParentRunId, spawnedFromToolCallId, } = req;
|
|
483
510
|
const config = context.infrastructure.getConfig();
|
|
484
511
|
setPrepareChatExecutionStartAttributes(context, { projectId, userId });
|
|
485
512
|
const agentConfig = await resolveAgentConfig(context, req.agentId ?? getDefaultAgentId(context));
|
|
513
|
+
const abortController = new AbortController();
|
|
486
514
|
const { effectiveMessages, rootRunContext, runtime: { agent, runtimeKind, modelId, cleanup }, finalMessages, } = await prepareVeryfrontCloudHostedChatExecution({
|
|
487
515
|
request: req,
|
|
488
516
|
agentConfig,
|
|
489
517
|
apiUrl: config.VERYFRONT_API_URL,
|
|
490
|
-
abortSignal:
|
|
518
|
+
abortSignal: abortController.signal,
|
|
491
519
|
logger: context.infrastructure.logger,
|
|
492
520
|
rootRun: {
|
|
493
521
|
instrumentation: {
|
|
@@ -500,6 +528,7 @@ async function prepareChatExecution(context, req) {
|
|
|
500
528
|
},
|
|
501
529
|
fetchSteering: (steeringInput) => fetchProjectSteering(context, steeringInput),
|
|
502
530
|
buildInstructions: buildVeryfrontCloudRuntimeInstructions,
|
|
531
|
+
contextBudget: createHostedChatContextBudgetOptions(context, req, agentConfig, abortController.signal),
|
|
503
532
|
createRuntime: (creationOptions) => context.trace("chat.createRuntime", () => createAgentRuntime(context, {
|
|
504
533
|
...creationOptions,
|
|
505
534
|
userId: req.userId,
|
|
@@ -16,6 +16,14 @@ export type AgentServiceConfig = {
|
|
|
16
16
|
VERYFRONT_STUDIO_MCP_URL: string;
|
|
17
17
|
VERYFRONT_ENABLE_DURABLE_INVOKE_AGENT: boolean;
|
|
18
18
|
VERYFRONT_ENABLE_DURABLE_TASK: boolean;
|
|
19
|
+
VERYFRONT_CONTEXT_COMPACTION_ENABLED: boolean;
|
|
20
|
+
VERYFRONT_CONTEXT_COMPACTION_TOKEN_BUDGET: number;
|
|
21
|
+
VERYFRONT_CONTEXT_COMPACTION_RESERVE_TOKENS: number;
|
|
22
|
+
VERYFRONT_CONTEXT_COMPACTION_RECENT_TAIL_TOKENS: number;
|
|
23
|
+
VERYFRONT_CONTEXT_COMPACTION_MINIMUM_RECENT_TURNS: number;
|
|
24
|
+
VERYFRONT_CONTEXT_COMPACTION_MAX_SUMMARY_TOKENS: number;
|
|
25
|
+
VERYFRONT_CONTEXT_COMPACTION_SUMMARY_INPUT_TOKENS: number;
|
|
26
|
+
VERYFRONT_CONTEXT_COMPACTION_SUMMARY_MODEL?: string;
|
|
19
27
|
NODE_ENV: "development" | "test" | "production";
|
|
20
28
|
PORT: number;
|
|
21
29
|
OAUTH_PUBLIC_KEY?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/service/config.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3E,2CAA2C;AAC3C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,oCAAoC,EAAE,4BAA4B,CAAC;IACnE,6CAA6C,EAAE,MAAM,CAAC;IACtD,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB,EAAE,MAAM,CAAC;IACjC,qCAAqC,EAAE,OAAO,CAAC;IAC/C,6BAA6B,EAAE,OAAO,CAAC;IACvC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/service/config.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3E,2CAA2C;AAC3C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,oCAAoC,EAAE,4BAA4B,CAAC;IACnE,6CAA6C,EAAE,MAAM,CAAC;IACtD,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB,EAAE,MAAM,CAAC;IACjC,qCAAqC,EAAE,OAAO,CAAC;IAC/C,6BAA6B,EAAE,OAAO,CAAC;IACvC,oCAAoC,EAAE,OAAO,CAAC;IAC9C,yCAAyC,EAAE,MAAM,CAAC;IAClD,2CAA2C,EAAE,MAAM,CAAC;IACpD,+CAA+C,EAAE,MAAM,CAAC;IACxD,iDAAiD,EAAE,MAAM,CAAC;IAC1D,+CAA+C,EAAE,MAAM,CAAC;IACxD,iDAAiD,EAAE,MAAM,CAAC;IAC1D,0CAA0C,CAAC,EAAE,MAAM,CAAC;IACpD,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;AA0FlF,2CAA2C;AAC3C,eAAO,MAAM,wBAAwB,sEAA0C,CAAC;AAEhF,kDAAkD;AAClD,eAAO,MAAM,8BAA8B,sEAA2B,CAAC;AACvE,kDAAkD;AAClD,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AAC1D,qDAAqD;AACrD,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,CAAC;AAEpE,iDAAiD;AACjD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,uBAAuB,GAC7B,kBAAkB,CAGpB;AAED,wDAAwD;AACxD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,6BAA6B,GACnC,wBAAwB,CAE1B"}
|
|
@@ -37,6 +37,14 @@ const getAgentServiceConfigSchema = defineSchema((v) => {
|
|
|
37
37
|
VERYFRONT_STUDIO_MCP_URL: v.string().default(""),
|
|
38
38
|
VERYFRONT_ENABLE_DURABLE_INVOKE_AGENT: booleanFlagSchema,
|
|
39
39
|
VERYFRONT_ENABLE_DURABLE_TASK: booleanFlagSchema,
|
|
40
|
+
VERYFRONT_CONTEXT_COMPACTION_ENABLED: v.string().default("true").transform(parseBooleanFlag),
|
|
41
|
+
VERYFRONT_CONTEXT_COMPACTION_TOKEN_BUDGET: v.coerce.number().int().positive().default(180_000),
|
|
42
|
+
VERYFRONT_CONTEXT_COMPACTION_RESERVE_TOKENS: v.coerce.number().int().nonnegative().default(32_000),
|
|
43
|
+
VERYFRONT_CONTEXT_COMPACTION_RECENT_TAIL_TOKENS: v.coerce.number().int().positive().default(40_000),
|
|
44
|
+
VERYFRONT_CONTEXT_COMPACTION_MINIMUM_RECENT_TURNS: v.coerce.number().int().positive().default(2),
|
|
45
|
+
VERYFRONT_CONTEXT_COMPACTION_MAX_SUMMARY_TOKENS: v.coerce.number().int().positive().default(8_000),
|
|
46
|
+
VERYFRONT_CONTEXT_COMPACTION_SUMMARY_INPUT_TOKENS: v.coerce.number().int().positive().default(64_000),
|
|
47
|
+
VERYFRONT_CONTEXT_COMPACTION_SUMMARY_MODEL: v.string().min(1).optional(),
|
|
40
48
|
ALLOWED_ORIGINS: v.string().default("http://localhost:3000,http://veryfront.me:3000"),
|
|
41
49
|
OTEL_ENABLED: booleanFlagSchema,
|
|
42
50
|
OTEL_EXPORTER_OTLP_ENDPOINT: v.string().optional(),
|
|
@@ -56,6 +64,14 @@ const getAgentServiceConfigSchema = defineSchema((v) => {
|
|
|
56
64
|
VERYFRONT_STUDIO_MCP_URL: env.VERYFRONT_STUDIO_MCP_URL,
|
|
57
65
|
VERYFRONT_ENABLE_DURABLE_INVOKE_AGENT: env.VERYFRONT_ENABLE_DURABLE_INVOKE_AGENT,
|
|
58
66
|
VERYFRONT_ENABLE_DURABLE_TASK: env.VERYFRONT_ENABLE_DURABLE_TASK,
|
|
67
|
+
VERYFRONT_CONTEXT_COMPACTION_ENABLED: env.VERYFRONT_CONTEXT_COMPACTION_ENABLED,
|
|
68
|
+
VERYFRONT_CONTEXT_COMPACTION_TOKEN_BUDGET: env.VERYFRONT_CONTEXT_COMPACTION_TOKEN_BUDGET,
|
|
69
|
+
VERYFRONT_CONTEXT_COMPACTION_RESERVE_TOKENS: env.VERYFRONT_CONTEXT_COMPACTION_RESERVE_TOKENS,
|
|
70
|
+
VERYFRONT_CONTEXT_COMPACTION_RECENT_TAIL_TOKENS: env.VERYFRONT_CONTEXT_COMPACTION_RECENT_TAIL_TOKENS,
|
|
71
|
+
VERYFRONT_CONTEXT_COMPACTION_MINIMUM_RECENT_TURNS: env.VERYFRONT_CONTEXT_COMPACTION_MINIMUM_RECENT_TURNS,
|
|
72
|
+
VERYFRONT_CONTEXT_COMPACTION_MAX_SUMMARY_TOKENS: env.VERYFRONT_CONTEXT_COMPACTION_MAX_SUMMARY_TOKENS,
|
|
73
|
+
VERYFRONT_CONTEXT_COMPACTION_SUMMARY_INPUT_TOKENS: env.VERYFRONT_CONTEXT_COMPACTION_SUMMARY_INPUT_TOKENS,
|
|
74
|
+
VERYFRONT_CONTEXT_COMPACTION_SUMMARY_MODEL: env.VERYFRONT_CONTEXT_COMPACTION_SUMMARY_MODEL,
|
|
59
75
|
NODE_ENV: env.NODE_ENV,
|
|
60
76
|
PORT: env.PORT,
|
|
61
77
|
OAUTH_PUBLIC_KEY: env.OAUTH_PUBLIC_KEY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_data.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/_data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,eAAO,MAAM,UAAU,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"_data.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/_data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,eAAO,MAAM,UAAU,EAAE,iBAAiB,EAg/UzC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuExC,CAAC"}
|