veryfront 0.1.227 → 0.1.229
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/deno.js +1 -1
- package/esm/src/agent/ag-ui-browser-encoder.d.ts +1 -0
- package/esm/src/agent/ag-ui-browser-encoder.d.ts.map +1 -1
- package/esm/src/agent/ag-ui-browser-encoder.js +27 -0
- package/esm/src/agent/hosted-lifecycle.d.ts +41 -0
- package/esm/src/agent/hosted-lifecycle.d.ts.map +1 -0
- package/esm/src/agent/hosted-lifecycle.js +77 -0
- package/esm/src/agent/index.d.ts +2 -1
- package/esm/src/agent/index.d.ts.map +1 -1
- package/esm/src/agent/index.js +2 -1
- package/esm/src/agent/runtime/sse-utils.d.ts.map +1 -1
- package/esm/src/agent/runtime/sse-utils.js +9 -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/src/deno.js +1 -1
- package/src/src/agent/ag-ui-browser-encoder.ts +33 -0
- package/src/src/agent/hosted-lifecycle.ts +159 -0
- package/src/src/agent/index.ts +9 -0
- package/src/src/agent/runtime/sse-utils.ts +9 -1
- package/src/src/utils/version-constant.ts +1 -1
package/esm/deno.js
CHANGED
|
@@ -26,6 +26,7 @@ export interface AgUiBrowserEncodedEvent {
|
|
|
26
26
|
payload: Record<string, unknown>;
|
|
27
27
|
}
|
|
28
28
|
export declare function createAgUiBrowserEncoderState(): AgUiBrowserEncoderState;
|
|
29
|
+
export declare function buildAgUiBrowserFinalizeResponse(metadata: AgUiBrowserRunFinishedMetadata): AgentResponse | null;
|
|
29
30
|
export declare function mapRuntimeStreamEventToAgUiBrowserEvents(state: AgUiBrowserEncoderState, event: AgUiRuntimeStreamEvent): AgUiBrowserEncodedEvent[];
|
|
30
31
|
export declare function finalizeAgUiBrowserEvents(state: AgUiBrowserEncoderState, response: AgentResponse | null): AgUiBrowserEncodedEvent[];
|
|
31
32
|
//# sourceMappingURL=ag-ui-browser-encoder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ag-ui-browser-encoder.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-browser-encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,wBAAgB,6BAA6B,IAAI,uBAAuB,CAYvE;
|
|
1
|
+
{"version":3,"file":"ag-ui-browser-encoder.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-browser-encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,wBAAgB,6BAA6B,IAAI,uBAAuB,CAYvE;AA6FD,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,8BAA8B,GACvC,aAAa,GAAG,IAAI,CA6BtB;AA4HD,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,EAAE,CAgN3B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,uBAAuB,EAAE,CA8B3B"}
|
|
@@ -84,6 +84,33 @@ function applyResponseMetadata(state, response) {
|
|
|
84
84
|
state.metadata.finishReason = finishReason;
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
+
export function buildAgUiBrowserFinalizeResponse(metadata) {
|
|
88
|
+
const responseMetadata = {};
|
|
89
|
+
if (typeof metadata.finishReason === "string" && metadata.finishReason.length > 0) {
|
|
90
|
+
responseMetadata.finishReason = metadata.finishReason;
|
|
91
|
+
}
|
|
92
|
+
const usage = typeof metadata.inputTokens === "number" ||
|
|
93
|
+
typeof metadata.outputTokens === "number" ||
|
|
94
|
+
typeof metadata.totalTokens === "number"
|
|
95
|
+
? {
|
|
96
|
+
promptTokens: metadata.inputTokens ?? 0,
|
|
97
|
+
completionTokens: metadata.outputTokens ?? 0,
|
|
98
|
+
totalTokens: metadata.totalTokens ??
|
|
99
|
+
((metadata.inputTokens ?? 0) + (metadata.outputTokens ?? 0)),
|
|
100
|
+
}
|
|
101
|
+
: undefined;
|
|
102
|
+
if (!usage && Object.keys(responseMetadata).length === 0) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
text: "",
|
|
107
|
+
messages: [],
|
|
108
|
+
toolCalls: [],
|
|
109
|
+
status: "completed",
|
|
110
|
+
...(usage ? { usage } : {}),
|
|
111
|
+
...(Object.keys(responseMetadata).length > 0 ? { metadata: responseMetadata } : {}),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
87
114
|
function completeToolInput(state, event) {
|
|
88
115
|
const toolCallId = typeof event.toolCallId === "string" ? event.toolCallId : "";
|
|
89
116
|
const events = [];
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface HostedLifecycleTerminalState {
|
|
2
|
+
status: "completed" | "failed" | "cancelled";
|
|
3
|
+
metadata?: {
|
|
4
|
+
modelId?: string;
|
|
5
|
+
usage?: {
|
|
6
|
+
inputTokens?: number;
|
|
7
|
+
outputTokens?: number;
|
|
8
|
+
cachedInputTokens?: number;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
terminalErrorCode?: string | null;
|
|
12
|
+
terminalErrorMessage?: string | null;
|
|
13
|
+
}
|
|
14
|
+
export interface HostedLifecycleExecution<TChunk> {
|
|
15
|
+
stream: AsyncIterable<TChunk>;
|
|
16
|
+
waitForFinish: () => Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export interface HostedLifecycleAdapter<TRun, TChunk> {
|
|
19
|
+
startRun: (input: {
|
|
20
|
+
abortSignal: AbortSignal;
|
|
21
|
+
}) => Promise<TRun> | TRun;
|
|
22
|
+
appendEvents?: (run: TRun, chunk: TChunk) => Promise<void> | void;
|
|
23
|
+
persistTranscriptChunk?: (run: TRun, chunk: TChunk) => Promise<void> | void;
|
|
24
|
+
persistTranscriptTerminalState?: (run: TRun, terminalState: HostedLifecycleTerminalState) => Promise<void> | void;
|
|
25
|
+
onTerminalState?: (run: TRun, terminalState: HostedLifecycleTerminalState) => Promise<void> | void;
|
|
26
|
+
finalizeRun?: (run: TRun, terminalState: HostedLifecycleTerminalState) => Promise<void> | void;
|
|
27
|
+
cancelRun?: (run: TRun, terminalState: HostedLifecycleTerminalState) => Promise<void> | void;
|
|
28
|
+
}
|
|
29
|
+
export interface HostedLifecycleRunnerOptions<TRun, TChunk> {
|
|
30
|
+
abortSignal: AbortSignal;
|
|
31
|
+
execution: HostedLifecycleExecution<TChunk>;
|
|
32
|
+
adapter: HostedLifecycleAdapter<TRun, TChunk>;
|
|
33
|
+
resolveTerminalState: () => Promise<HostedLifecycleTerminalState> | HostedLifecycleTerminalState;
|
|
34
|
+
resolveErrorTerminalState?: (error: unknown) => Promise<HostedLifecycleTerminalState> | HostedLifecycleTerminalState;
|
|
35
|
+
}
|
|
36
|
+
export interface HostedLifecycleRunResult<TRun> {
|
|
37
|
+
run: TRun;
|
|
38
|
+
terminalState: HostedLifecycleTerminalState;
|
|
39
|
+
}
|
|
40
|
+
export declare function runHostedLifecycle<TRun, TChunk>(options: HostedLifecycleRunnerOptions<TRun, TChunk>): Promise<HostedLifecycleRunResult<TRun>>;
|
|
41
|
+
//# sourceMappingURL=hosted-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/src/agent/hosted-lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE;YACN,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,CAAC;IACF,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB,CAAC,MAAM;IAC9C,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB,CAAC,IAAI,EAAE,MAAM;IAClD,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxE,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClE,sBAAsB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5E,8BAA8B,CAAC,EAAE,CAC/B,GAAG,EAAE,IAAI,EACT,aAAa,EAAE,4BAA4B,KACxC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,CAChB,GAAG,EAAE,IAAI,EACT,aAAa,EAAE,4BAA4B,KACxC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,4BAA4B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/F,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,4BAA4B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9F;AAED,MAAM,WAAW,4BAA4B,CAAC,IAAI,EAAE,MAAM;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,oBAAoB,EAAE,MAAM,OAAO,CAAC,4BAA4B,CAAC,GAAG,4BAA4B,CAAC;IACjG,yBAAyB,CAAC,EAAE,CAC1B,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,4BAA4B,CAAC,GAAG,4BAA4B,CAAC;CAC3E;AAED,MAAM,WAAW,wBAAwB,CAAC,IAAI;IAC5C,GAAG,EAAE,IAAI,CAAC;IACV,aAAa,EAAE,4BAA4B,CAAC;CAC7C;AA4ED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EACnD,OAAO,EAAE,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,GAClD,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAgCzC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
function getTerminalErrorMessage(error) {
|
|
2
|
+
return error instanceof Error ? error.message : String(error);
|
|
3
|
+
}
|
|
4
|
+
function defaultErrorTerminalState(abortSignal, error) {
|
|
5
|
+
if (abortSignal.aborted) {
|
|
6
|
+
return {
|
|
7
|
+
status: "cancelled",
|
|
8
|
+
terminalErrorCode: "ABORTED",
|
|
9
|
+
terminalErrorMessage: getTerminalErrorMessage(error),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
status: "failed",
|
|
14
|
+
terminalErrorCode: "STREAM_ERROR",
|
|
15
|
+
terminalErrorMessage: getTerminalErrorMessage(error),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
async function captureHookError(callback) {
|
|
19
|
+
if (!callback) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
await callback();
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
return error;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async function runTerminalHooks(input) {
|
|
31
|
+
let firstHookError = null;
|
|
32
|
+
const persistError = await captureHookError(() => input.adapter.persistTranscriptTerminalState?.(input.run, input.terminalState));
|
|
33
|
+
if (persistError) {
|
|
34
|
+
firstHookError = persistError;
|
|
35
|
+
}
|
|
36
|
+
const terminalObserverError = await captureHookError(() => input.adapter.onTerminalState?.(input.run, input.terminalState));
|
|
37
|
+
if (!firstHookError && terminalObserverError) {
|
|
38
|
+
firstHookError = terminalObserverError;
|
|
39
|
+
}
|
|
40
|
+
const terminalControlError = await captureHookError(() => input.terminalState.status === "cancelled"
|
|
41
|
+
? input.adapter.cancelRun?.(input.run, input.terminalState)
|
|
42
|
+
: input.adapter.finalizeRun?.(input.run, input.terminalState));
|
|
43
|
+
if (firstHookError) {
|
|
44
|
+
throw firstHookError;
|
|
45
|
+
}
|
|
46
|
+
if (terminalControlError) {
|
|
47
|
+
throw terminalControlError;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export async function runHostedLifecycle(options) {
|
|
51
|
+
const run = await options.adapter.startRun({ abortSignal: options.abortSignal });
|
|
52
|
+
try {
|
|
53
|
+
for await (const chunk of options.execution.stream) {
|
|
54
|
+
await options.adapter.appendEvents?.(run, chunk);
|
|
55
|
+
await options.adapter.persistTranscriptChunk?.(run, chunk);
|
|
56
|
+
}
|
|
57
|
+
await options.execution.waitForFinish();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const terminalState = options.resolveErrorTerminalState
|
|
61
|
+
? await options.resolveErrorTerminalState(error)
|
|
62
|
+
: defaultErrorTerminalState(options.abortSignal, error);
|
|
63
|
+
await runTerminalHooks({
|
|
64
|
+
run,
|
|
65
|
+
terminalState,
|
|
66
|
+
adapter: options.adapter,
|
|
67
|
+
}).catch(() => undefined);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
const terminalState = await options.resolveTerminalState();
|
|
71
|
+
await runTerminalHooks({
|
|
72
|
+
run,
|
|
73
|
+
terminalState,
|
|
74
|
+
adapter: options.adapter,
|
|
75
|
+
});
|
|
76
|
+
return { run, terminalState };
|
|
77
|
+
}
|
package/esm/src/agent/index.d.ts
CHANGED
|
@@ -87,8 +87,9 @@ export { agent } from "./factory.js";
|
|
|
87
87
|
export { type AgUiRuntimeHandlerConfig, type AgUiRuntimeHandlerConfigWithAgent, type AgUiRuntimeHandlerExecute, type AgUiRuntimeHandlerExecuteInput, type AgUiRuntimeHandlerOptions, type AgUiRuntimeLifecycleContext, createAgUiRuntimeHandler, } from "./ag-ui-runtime-handler.js";
|
|
88
88
|
export { type AgUiRuntimeContextItem, AgUiRuntimeContextItemSchema, type AgUiRuntimeInjectedTool, AgUiRuntimeInjectedToolSchema, type AgUiRuntimeMessage, AgUiRuntimeMessageSchema, type AgUiRuntimeRequest, AgUiRuntimeRequestSchema, parseAgUiRuntimeRequest, parseAgUiRuntimeRequestOrError, } from "./runtime-ag-ui-contract.js";
|
|
89
89
|
export { normalizeAgUiRuntimeMessages } from "./ag-ui-runtime-support.js";
|
|
90
|
-
export { type AgUiBrowserEncodedEvent, type AgUiBrowserEncoderState, type AgUiBrowserRunFinishedMetadata, type AgUiRuntimeStreamEvent, createAgUiBrowserEncoderState, finalizeAgUiBrowserEvents, mapRuntimeStreamEventToAgUiBrowserEvents, } from "./ag-ui-browser-encoder.js";
|
|
90
|
+
export { type AgUiBrowserEncodedEvent, type AgUiBrowserEncoderState, type AgUiBrowserRunFinishedMetadata, type AgUiRuntimeStreamEvent, buildAgUiBrowserFinalizeResponse, createAgUiBrowserEncoderState, finalizeAgUiBrowserEvents, mapRuntimeStreamEventToAgUiBrowserEvents, } from "./ag-ui-browser-encoder.js";
|
|
91
91
|
export { type AgUiBrowserResponseEncoder, type AgUiBrowserResponseExecution, type AgUiBrowserResponseRequestState, createAgUiBrowserResponseStream, type CreateAgUiBrowserResponseStreamInput, } from "./ag-ui-browser-response-stream.js";
|
|
92
|
+
export { type HostedLifecycleAdapter, type HostedLifecycleExecution, type HostedLifecycleRunnerOptions, type HostedLifecycleRunResult, type HostedLifecycleTerminalState, runHostedLifecycle, } from "./hosted-lifecycle.js";
|
|
92
93
|
export { mergeToolCallInput, mergeToolInputDelta, parseDataStreamSseEvents, parseToolInputObject, streamDataStreamEvents, stripLeadingEmptyObjectPlaceholder, } from "./data-stream.js";
|
|
93
94
|
export { expandAllowedRemoteToolNames, getProviderNativeToolNames, type ProviderNativeToolInventoryOptions, } from "./provider-native-tool-inventory.js";
|
|
94
95
|
export { type AgUiDetachedStartAccepted, AgUiDetachedStartAcceptedSchema, type AgUiDetachedStartHandlerOptions, type AgUiDetachedStartRequest, AgUiDetachedStartRequestSchema, createAgUiDetachedStartHandler, executeAgUiDetachedStart, type ExecuteAgUiDetachedStartInput, } from "./ag-ui-detached-start.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/agent/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/agent/index.ts"],"names":[],"mappings":"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"}
|
package/esm/src/agent/index.js
CHANGED
|
@@ -86,8 +86,9 @@ export { agent } from "./factory.js";
|
|
|
86
86
|
export { createAgUiRuntimeHandler, } from "./ag-ui-runtime-handler.js";
|
|
87
87
|
export { AgUiRuntimeContextItemSchema, AgUiRuntimeInjectedToolSchema, AgUiRuntimeMessageSchema, AgUiRuntimeRequestSchema, parseAgUiRuntimeRequest, parseAgUiRuntimeRequestOrError, } from "./runtime-ag-ui-contract.js";
|
|
88
88
|
export { normalizeAgUiRuntimeMessages } from "./ag-ui-runtime-support.js";
|
|
89
|
-
export { createAgUiBrowserEncoderState, finalizeAgUiBrowserEvents, mapRuntimeStreamEventToAgUiBrowserEvents, } from "./ag-ui-browser-encoder.js";
|
|
89
|
+
export { buildAgUiBrowserFinalizeResponse, createAgUiBrowserEncoderState, finalizeAgUiBrowserEvents, mapRuntimeStreamEventToAgUiBrowserEvents, } from "./ag-ui-browser-encoder.js";
|
|
90
90
|
export { createAgUiBrowserResponseStream, } from "./ag-ui-browser-response-stream.js";
|
|
91
|
+
export { runHostedLifecycle, } from "./hosted-lifecycle.js";
|
|
91
92
|
export { mergeToolCallInput, mergeToolInputDelta, parseDataStreamSseEvents, parseToolInputObject, streamDataStreamEvents, stripLeadingEmptyObjectPlaceholder, } from "./data-stream.js";
|
|
92
93
|
export { expandAllowedRemoteToolNames, getProviderNativeToolNames, } from "./provider-native-tool-inventory.js";
|
|
93
94
|
export { AgUiDetachedStartAcceptedSchema, AgUiDetachedStartRequestSchema, createAgUiDetachedStartHandler, executeAgUiDetachedStart, } from "./ag-ui-detached-start.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-utils.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/sse-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH;;;GAGG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,
|
|
1
|
+
{"version":3,"file":"sse-utils.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/sse-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH;;;GAGG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CAUN;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,+BAA+B,GAAG,IAAI,CAUhF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -14,7 +14,15 @@ function isClosedStreamControllerError(error) {
|
|
|
14
14
|
* Formats event as: data: {json}\n\n
|
|
15
15
|
*/
|
|
16
16
|
export function sendSSE(controller, encoder, event) {
|
|
17
|
-
|
|
17
|
+
try {
|
|
18
|
+
controller.enqueue(encoder.encode(`data: ${JSON.stringify(event)}\n\n`));
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
if (isClosedStreamControllerError(error)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
18
26
|
}
|
|
19
27
|
export function closeSSEStream(controller) {
|
|
20
28
|
try {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.1.
|
|
1
|
+
export declare const VERSION = "0.1.229";
|
|
2
2
|
//# sourceMappingURL=version-constant.d.ts.map
|
package/package.json
CHANGED
package/src/deno.js
CHANGED
|
@@ -134,6 +134,39 @@ function applyResponseMetadata(
|
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
export function buildAgUiBrowserFinalizeResponse(
|
|
138
|
+
metadata: AgUiBrowserRunFinishedMetadata,
|
|
139
|
+
): AgentResponse | null {
|
|
140
|
+
const responseMetadata: Record<string, unknown> = {};
|
|
141
|
+
if (typeof metadata.finishReason === "string" && metadata.finishReason.length > 0) {
|
|
142
|
+
responseMetadata.finishReason = metadata.finishReason;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const usage = typeof metadata.inputTokens === "number" ||
|
|
146
|
+
typeof metadata.outputTokens === "number" ||
|
|
147
|
+
typeof metadata.totalTokens === "number"
|
|
148
|
+
? {
|
|
149
|
+
promptTokens: metadata.inputTokens ?? 0,
|
|
150
|
+
completionTokens: metadata.outputTokens ?? 0,
|
|
151
|
+
totalTokens: metadata.totalTokens ??
|
|
152
|
+
((metadata.inputTokens ?? 0) + (metadata.outputTokens ?? 0)),
|
|
153
|
+
}
|
|
154
|
+
: undefined;
|
|
155
|
+
|
|
156
|
+
if (!usage && Object.keys(responseMetadata).length === 0) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return {
|
|
161
|
+
text: "",
|
|
162
|
+
messages: [],
|
|
163
|
+
toolCalls: [],
|
|
164
|
+
status: "completed",
|
|
165
|
+
...(usage ? { usage } : {}),
|
|
166
|
+
...(Object.keys(responseMetadata).length > 0 ? { metadata: responseMetadata } : {}),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
|
|
137
170
|
function completeToolInput(
|
|
138
171
|
state: AgUiBrowserEncoderState,
|
|
139
172
|
event: AgUiRuntimeStreamEvent,
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
export interface HostedLifecycleTerminalState {
|
|
2
|
+
status: "completed" | "failed" | "cancelled";
|
|
3
|
+
metadata?: {
|
|
4
|
+
modelId?: string;
|
|
5
|
+
usage?: {
|
|
6
|
+
inputTokens?: number;
|
|
7
|
+
outputTokens?: number;
|
|
8
|
+
cachedInputTokens?: number;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
terminalErrorCode?: string | null;
|
|
12
|
+
terminalErrorMessage?: string | null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface HostedLifecycleExecution<TChunk> {
|
|
16
|
+
stream: AsyncIterable<TChunk>;
|
|
17
|
+
waitForFinish: () => Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface HostedLifecycleAdapter<TRun, TChunk> {
|
|
21
|
+
startRun: (input: { abortSignal: AbortSignal }) => Promise<TRun> | TRun;
|
|
22
|
+
appendEvents?: (run: TRun, chunk: TChunk) => Promise<void> | void;
|
|
23
|
+
persistTranscriptChunk?: (run: TRun, chunk: TChunk) => Promise<void> | void;
|
|
24
|
+
persistTranscriptTerminalState?: (
|
|
25
|
+
run: TRun,
|
|
26
|
+
terminalState: HostedLifecycleTerminalState,
|
|
27
|
+
) => Promise<void> | void;
|
|
28
|
+
onTerminalState?: (
|
|
29
|
+
run: TRun,
|
|
30
|
+
terminalState: HostedLifecycleTerminalState,
|
|
31
|
+
) => Promise<void> | void;
|
|
32
|
+
finalizeRun?: (run: TRun, terminalState: HostedLifecycleTerminalState) => Promise<void> | void;
|
|
33
|
+
cancelRun?: (run: TRun, terminalState: HostedLifecycleTerminalState) => Promise<void> | void;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface HostedLifecycleRunnerOptions<TRun, TChunk> {
|
|
37
|
+
abortSignal: AbortSignal;
|
|
38
|
+
execution: HostedLifecycleExecution<TChunk>;
|
|
39
|
+
adapter: HostedLifecycleAdapter<TRun, TChunk>;
|
|
40
|
+
resolveTerminalState: () => Promise<HostedLifecycleTerminalState> | HostedLifecycleTerminalState;
|
|
41
|
+
resolveErrorTerminalState?: (
|
|
42
|
+
error: unknown,
|
|
43
|
+
) => Promise<HostedLifecycleTerminalState> | HostedLifecycleTerminalState;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface HostedLifecycleRunResult<TRun> {
|
|
47
|
+
run: TRun;
|
|
48
|
+
terminalState: HostedLifecycleTerminalState;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function getTerminalErrorMessage(error: unknown): string {
|
|
52
|
+
return error instanceof Error ? error.message : String(error);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function defaultErrorTerminalState(
|
|
56
|
+
abortSignal: AbortSignal,
|
|
57
|
+
error: unknown,
|
|
58
|
+
): HostedLifecycleTerminalState {
|
|
59
|
+
if (abortSignal.aborted) {
|
|
60
|
+
return {
|
|
61
|
+
status: "cancelled",
|
|
62
|
+
terminalErrorCode: "ABORTED",
|
|
63
|
+
terminalErrorMessage: getTerminalErrorMessage(error),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return {
|
|
68
|
+
status: "failed",
|
|
69
|
+
terminalErrorCode: "STREAM_ERROR",
|
|
70
|
+
terminalErrorMessage: getTerminalErrorMessage(error),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async function captureHookError(
|
|
75
|
+
callback: (() => Promise<void> | void) | undefined,
|
|
76
|
+
): Promise<unknown | null> {
|
|
77
|
+
if (!callback) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
try {
|
|
82
|
+
await callback();
|
|
83
|
+
return null;
|
|
84
|
+
} catch (error) {
|
|
85
|
+
return error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
async function runTerminalHooks<TRun, TChunk>(input: {
|
|
90
|
+
run: TRun;
|
|
91
|
+
terminalState: HostedLifecycleTerminalState;
|
|
92
|
+
adapter: HostedLifecycleAdapter<TRun, TChunk>;
|
|
93
|
+
}): Promise<void> {
|
|
94
|
+
let firstHookError: unknown | null = null;
|
|
95
|
+
|
|
96
|
+
const persistError = await captureHookError(() =>
|
|
97
|
+
input.adapter.persistTranscriptTerminalState?.(input.run, input.terminalState)
|
|
98
|
+
);
|
|
99
|
+
if (persistError) {
|
|
100
|
+
firstHookError = persistError;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const terminalObserverError = await captureHookError(() =>
|
|
104
|
+
input.adapter.onTerminalState?.(input.run, input.terminalState)
|
|
105
|
+
);
|
|
106
|
+
if (!firstHookError && terminalObserverError) {
|
|
107
|
+
firstHookError = terminalObserverError;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const terminalControlError = await captureHookError(() =>
|
|
111
|
+
input.terminalState.status === "cancelled"
|
|
112
|
+
? input.adapter.cancelRun?.(input.run, input.terminalState)
|
|
113
|
+
: input.adapter.finalizeRun?.(input.run, input.terminalState)
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
if (firstHookError) {
|
|
117
|
+
throw firstHookError;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (terminalControlError) {
|
|
121
|
+
throw terminalControlError;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export async function runHostedLifecycle<TRun, TChunk>(
|
|
126
|
+
options: HostedLifecycleRunnerOptions<TRun, TChunk>,
|
|
127
|
+
): Promise<HostedLifecycleRunResult<TRun>> {
|
|
128
|
+
const run = await options.adapter.startRun({ abortSignal: options.abortSignal });
|
|
129
|
+
|
|
130
|
+
try {
|
|
131
|
+
for await (const chunk of options.execution.stream) {
|
|
132
|
+
await options.adapter.appendEvents?.(run, chunk);
|
|
133
|
+
await options.adapter.persistTranscriptChunk?.(run, chunk);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
await options.execution.waitForFinish();
|
|
137
|
+
} catch (error) {
|
|
138
|
+
const terminalState = options.resolveErrorTerminalState
|
|
139
|
+
? await options.resolveErrorTerminalState(error)
|
|
140
|
+
: defaultErrorTerminalState(options.abortSignal, error);
|
|
141
|
+
|
|
142
|
+
await runTerminalHooks({
|
|
143
|
+
run,
|
|
144
|
+
terminalState,
|
|
145
|
+
adapter: options.adapter,
|
|
146
|
+
}).catch(() => undefined);
|
|
147
|
+
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const terminalState = await options.resolveTerminalState();
|
|
152
|
+
await runTerminalHooks({
|
|
153
|
+
run,
|
|
154
|
+
terminalState,
|
|
155
|
+
adapter: options.adapter,
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
return { run, terminalState };
|
|
159
|
+
}
|
package/src/src/agent/index.ts
CHANGED
|
@@ -168,6 +168,7 @@ export {
|
|
|
168
168
|
type AgUiBrowserEncoderState,
|
|
169
169
|
type AgUiBrowserRunFinishedMetadata,
|
|
170
170
|
type AgUiRuntimeStreamEvent,
|
|
171
|
+
buildAgUiBrowserFinalizeResponse,
|
|
171
172
|
createAgUiBrowserEncoderState,
|
|
172
173
|
finalizeAgUiBrowserEvents,
|
|
173
174
|
mapRuntimeStreamEventToAgUiBrowserEvents,
|
|
@@ -179,6 +180,14 @@ export {
|
|
|
179
180
|
createAgUiBrowserResponseStream,
|
|
180
181
|
type CreateAgUiBrowserResponseStreamInput,
|
|
181
182
|
} from "./ag-ui-browser-response-stream.js";
|
|
183
|
+
export {
|
|
184
|
+
type HostedLifecycleAdapter,
|
|
185
|
+
type HostedLifecycleExecution,
|
|
186
|
+
type HostedLifecycleRunnerOptions,
|
|
187
|
+
type HostedLifecycleRunResult,
|
|
188
|
+
type HostedLifecycleTerminalState,
|
|
189
|
+
runHostedLifecycle,
|
|
190
|
+
} from "./hosted-lifecycle.js";
|
|
182
191
|
export {
|
|
183
192
|
mergeToolCallInput,
|
|
184
193
|
mergeToolInputDelta,
|
|
@@ -20,7 +20,15 @@ export function sendSSE(
|
|
|
20
20
|
encoder: TextEncoder,
|
|
21
21
|
event: Record<string, unknown>,
|
|
22
22
|
): void {
|
|
23
|
-
|
|
23
|
+
try {
|
|
24
|
+
controller.enqueue(encoder.encode(`data: ${JSON.stringify(event)}\n\n`));
|
|
25
|
+
} catch (error) {
|
|
26
|
+
if (isClosedStreamControllerError(error)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
24
32
|
}
|
|
25
33
|
|
|
26
34
|
export function closeSSEStream(controller: ReadableStreamDefaultController): void {
|