@nexface/agent 0.1.1-alpha.5 → 0.1.1-alpha.6

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.
@@ -0,0 +1,162 @@
1
+ import { RunAgentInputSchema, MessageSchema } from "@ag-ui/core";
2
+ import { getToolResultError } from "./internal.js";
3
+ export function toProtocolMessages(messages) {
4
+ return messages.flatMap((message) => {
5
+ message.id ??= globalThis.crypto.randomUUID();
6
+ if (message.role === "system" || message.role === "application_context")
7
+ return [];
8
+ if (message.role === "assistant")
9
+ return [{ id: message.id, role: "assistant", ...(message.content === null ? {} : { content: message.content }), toolCalls: message.toolCalls.map(({ id, name, arguments: args }) => ({ id, type: "function", function: { name, arguments: args } })) }];
10
+ if (message.role === "tool") {
11
+ const error = getToolResultError(message.content);
12
+ return [{ id: message.id, role: "tool", toolCallId: message.toolCallId, content: message.content, ...(error === undefined ? {} : { error }) }];
13
+ }
14
+ return [{ id: message.id, role: "user", content: message.content }];
15
+ });
16
+ }
17
+ export function decodeRequest(value) {
18
+ RunAgentInputSchema.parse(value);
19
+ const extension = value.forwardedProps?.nexface;
20
+ if (extension && extension.version !== 1)
21
+ throw new Error("Unsupported Nexface request version.");
22
+ if (extension?.confirmedToolCallId !== undefined)
23
+ throw new Error("Use resume payload for confirmation results.");
24
+ const continuation = extension?.checkpoint?.continuation;
25
+ const restored = continuation ? JSON.parse(continuation) : undefined;
26
+ const source = new Map();
27
+ for (const message of value.messages) {
28
+ MessageSchema.parse(message);
29
+ if (source.has(message.id))
30
+ throw new Error("Duplicate message ID.");
31
+ source.set(message.id, message);
32
+ }
33
+ const convert = (message) => {
34
+ // Display-only messages stay in protocol history; native reasoning replay comes from the checkpoint.
35
+ if (message.role === "activity" || message.role === "reasoning")
36
+ return [];
37
+ if (message.role === "assistant")
38
+ return [{ id: message.id, role: "assistant", content: message.content ?? null, toolCalls: (message.toolCalls ?? []).map((call) => ({ id: call.id, ...call.function })) }];
39
+ if (message.role === "tool") {
40
+ const owner = value.messages.slice(0, value.messages.indexOf(message)).reverse().find((item) => item.role === "assistant" && item.toolCalls?.some((call) => call.id === message.toolCallId));
41
+ const call = owner?.role === "assistant" ? owner.toolCalls?.find((call) => call.id === message.toolCallId) : undefined;
42
+ const content = message.error !== undefined && getToolResultError(message.content) === undefined
43
+ ? JSON.stringify({ error: { code: "TOOL_ERROR", message: message.error }, content: message.content }) : message.content;
44
+ return [{ id: message.id, role: "tool", name: call?.function.name ?? "unknown", toolCallId: message.toolCallId, content }];
45
+ }
46
+ if (message.role === "user") {
47
+ if (Array.isArray(message.content) && message.content.some((part) => part.type !== "text" && part.type !== "image"))
48
+ throw new Error("This Agent supports text and image input only.");
49
+ return [{ id: message.id, role: "user", content: message.content }];
50
+ }
51
+ throw new Error(`Unsupported model history role: ${message.role}.`);
52
+ };
53
+ const used = new Set();
54
+ const messages = (restored?.timeline ?? []).flatMap((entry) => {
55
+ if ("internal" in entry) {
56
+ if (entry.internal.role !== "system" && entry.internal.role !== "application_context")
57
+ throw new Error("Invalid checkpoint history.");
58
+ return [entry.internal];
59
+ }
60
+ const message = source.get(entry.messageId);
61
+ if (!message || used.has(message.id))
62
+ throw new Error("Checkpoint message is missing or repeated.");
63
+ used.add(message.id);
64
+ return convert(message);
65
+ });
66
+ let toolResult;
67
+ const pending = restored?.pending;
68
+ let resultMessageId;
69
+ if (pending) {
70
+ const resume = value.resume;
71
+ if (typeof pending.interruptId !== "string" || !pending.interruptId || !resume || resume.length !== 1)
72
+ throw new Error("A pending client tool requires exactly one resume entry.");
73
+ const entry = resume[0];
74
+ if (entry.interruptId !== pending.interruptId || entry.status !== "resolved")
75
+ throw new Error("Resume does not match the pending interrupt.");
76
+ const payload = entry.payload;
77
+ if (!payload || typeof payload.toolResultMessageId !== "string" || (payload.confirmed !== undefined && typeof payload.confirmed !== "boolean"))
78
+ throw new Error("Invalid client tool resume payload.");
79
+ const message = source.get(payload.toolResultMessageId);
80
+ const pendingId = pending.calls?.[0]?.id;
81
+ if (!message || used.has(message.id) || message.role !== "tool" || message.toolCallId !== pendingId)
82
+ throw new Error("Resume result does not match the pending tool call.");
83
+ let result;
84
+ try {
85
+ result = JSON.parse(message.content);
86
+ }
87
+ catch (error) {
88
+ if (message.error === undefined)
89
+ throw error;
90
+ }
91
+ if (message.error !== undefined)
92
+ result = { error: { code: result?.error?.code ?? "TOOL_ERROR", message: message.error } };
93
+ if (!result || typeof result !== "object" || (!("result" in result) && !("error" in result)))
94
+ throw new Error("Invalid browser tool result.");
95
+ resultMessageId = message.id;
96
+ toolResult = { toolCallId: pendingId, ...(result.error ? { error: result.error } : { result: result.result }), ...(payload.confirmed === true ? { confirmed: true } : {}) };
97
+ }
98
+ else if (value.resume?.length)
99
+ throw new Error("Cannot resume without a pending interrupt.");
100
+ for (const message of value.messages) {
101
+ if (used.has(message.id) || message.id === resultMessageId)
102
+ continue;
103
+ if (pending && message.role === "tool" && message.toolCallId === pending.calls[0]?.id)
104
+ throw new Error("Repeated browser result.");
105
+ messages.push(...convert(message));
106
+ }
107
+ return {
108
+ messages, ...(continuation ? { continuation } : {}), ...(toolResult ? { toolResult, toolResultMessageId: resultMessageId } : {}),
109
+ tools: value.tools.map((tool) => ({ name: tool.name, description: tool.description, inputSchema: tool.parameters, effect: extension?.toolMetadata?.[tool.name]?.effect ?? "action" })),
110
+ contexts: value.context.map((context, index) => {
111
+ let data = context.value;
112
+ try {
113
+ data = JSON.parse(context.value);
114
+ }
115
+ catch { /* AG-UI context values may be plain text. */ }
116
+ if (data && typeof data === "object" && "name" in data && "value" in data)
117
+ return data;
118
+ return { name: `context${index}`, description: context.description, value: data };
119
+ }),
120
+ };
121
+ }
122
+ export function runResponse(run) {
123
+ const encoder = new TextEncoder();
124
+ const iterator = run[Symbol.asyncIterator]();
125
+ void run.result.catch(() => undefined);
126
+ return new Response(new ReadableStream({
127
+ async pull(controller) {
128
+ try {
129
+ const next = await iterator.next();
130
+ if (next.done)
131
+ controller.close();
132
+ else
133
+ controller.enqueue(encoder.encode(`data: ${JSON.stringify(next.value)}\n\n`));
134
+ }
135
+ catch (error) {
136
+ controller.error(error);
137
+ }
138
+ },
139
+ async cancel() { run.cancel(); await iterator.return?.(); },
140
+ }), { headers: {
141
+ "Content-Type": "text/event-stream",
142
+ "Cache-Control": "no-cache, no-transform",
143
+ "X-Accel-Buffering": "no",
144
+ } });
145
+ }
146
+ export function mergeProtocolMessages(messages, previous) {
147
+ const remaining = new Map(messages.map((message) => [message.id, message]));
148
+ const mergedHistory = previous.flatMap((old) => {
149
+ const message = remaining.get(old.id);
150
+ if (!message)
151
+ return old.role === "activity" || old.role === "reasoning" ? [old] : [];
152
+ remaining.delete(old.id);
153
+ const merged = { ...old, ...message };
154
+ if (message.role === "tool" && old.role === "tool" && old.error !== undefined)
155
+ merged.content = old.content;
156
+ if (message.role === "assistant" && old.role === "assistant")
157
+ merged.toolCalls = message.toolCalls?.map((call) => ({ ...old.toolCalls?.find((item) => item.id === call.id), ...call }));
158
+ return [MessageSchema.parse(merged)];
159
+ });
160
+ return [...mergedHistory, ...remaining.values()];
161
+ }
162
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAoC,MAAM,aAAa,CAAC;AAInG,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAkDnD,MAAM,UAAU,kBAAkB,CAAC,QAAwB;IACzD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAa,EAAE;QAC7C,OAAO,CAAC,EAAE,KAAK,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAqB;YAAE,OAAO,EAAE,CAAC;QACnF,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1R,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACjJ,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAoB;IAChD,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC;IAChD,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAClG,IAAI,SAAS,EAAE,mBAAmB,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClH,MAAM,YAAY,GAAG,SAAS,EAAE,UAAU,EAAE,YAAkC,CAAC;IAC/E,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAwB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACrE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAkB,EAAE;QACnD,qGAAqG;QACrG,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,EAAE,CAAC;QAC3E,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5M,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7L,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvH,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,SAAS;gBAC9F,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YAC1H,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7H,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACvL,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAA4D,EAAE,CAAC,CAAC;QAC3H,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACtE,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,QAAQ,GAAmB,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5E,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,qBAAqB;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACtI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACpG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,IAAI,UAAyC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;IAClC,IAAI,eAAmC,CAAC;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QACnL,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACzB,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC9I,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,mBAAmB,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACvM,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC5K,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAC7C,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;gBAAE,MAAM,KAAK,CAAC;QAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3H,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9I,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC;QAC7B,UAAU,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9K,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC/F,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,eAAe;YAAE,SAAS;QACrE,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACnI,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjI,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC;QACtL,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAI,IAAI,GAAY,OAAO,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;YACjG,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI;gBAAE,OAAO,IAAyB,CAAC;YAC5G,OAAO,EAAE,IAAI,EAAE,UAAU,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,IAAkC,EAAE,CAAC;QAClH,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAa;IACvC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAC7C,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,IAAI,QAAQ,CAAC,IAAI,cAAc,CAAa;QACjD,KAAK,CAAC,IAAI,CAAC,UAAU;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,IAAI;oBAAE,UAAU,CAAC,KAAK,EAAE,CAAC;;oBAC7B,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACrF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;QAC9C,CAAC;QACD,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;KAC5D,CAAC,EAAE,EAAE,OAAO,EAAE;YACb,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,wBAAwB;YACzC,mBAAmB,EAAE,IAAI;SAC1B,EAAE,CAAC,CAAC;AACP,CAAC;AAGD,MAAM,UAAU,qBAAqB,CAAC,QAAmB,EAAE,QAAmB;IAC5E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAa,EAAE;QACxD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,MAAM,GAA4B,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC/D,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5G,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QACxL,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,aAAa,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACnD,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,10 +1,13 @@
1
+ import type { RegisteredAgentTool } from "@nexface/tools";
2
+ import type { RunAgentInput, AgentCheckpoint } from "./request.js";
1
3
  import type { ToolRuntime, AgentToolInputSchema } from "@nexface/tools";
2
4
  import type { AgentModelConfig, AgentModelInfo } from "./model/types.js";
3
- import type { ToolBridge } from "./tool-bridge.js";
4
- import type { TextInputContent, ImageInputContent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent } from "@ag-ui/core";
5
+ import type { TextInputContent, ImageInputContent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, CustomEvent, MessagesSnapshotEvent } from "@ag-ui/core";
5
6
  export type AgentInputContent = TextInputContent | ImageInputContent;
6
7
  export declare const agentBrand: unique symbol;
7
8
  export type AgentMessage = {
9
+ id?: string;
10
+ } & ({
8
11
  role: "system";
9
12
  content: string;
10
13
  } | {
@@ -27,7 +30,7 @@ export type AgentMessage = {
27
30
  toolCallId: string;
28
31
  name: string;
29
32
  content: string;
30
- };
33
+ });
31
34
  export interface AgentModelToolCall {
32
35
  id: string;
33
36
  name: string;
@@ -54,7 +57,7 @@ export interface AgentRunOptions {
54
57
  signal?: AbortSignal;
55
58
  }
56
59
  /**
57
- * @experimental Human-in-the-loop approval descriptor.
60
+ * @experimental Human-in-the-loop approval descriptor; ordinary completed Runs are not experimental.
58
61
  * @beta
59
62
  */
60
63
  export type ToolApprovalInterruptDescriptor = {
@@ -74,28 +77,28 @@ export type ToolApprovalInterruptDescriptor = {
74
77
  readonly mode: "page";
75
78
  });
76
79
  export type AgentRunResult = {
77
- readonly status: "completed";
80
+ readonly outcome: Extract<NonNullable<RunFinishedEvent["outcome"]>, {
81
+ type: "success";
82
+ }>;
78
83
  readonly output: string;
84
+ readonly checkpoint?: AgentCheckpoint;
79
85
  } | {
80
- /**
81
- * @experimental Human-in-the-loop interruption; ordinary completed Runs are not experimental.
82
- * @beta
83
- */
84
- readonly status: "interrupted";
85
- /**
86
- * @experimental Human-in-the-loop approval descriptor.
87
- * @beta
88
- */
89
- readonly interrupt: ToolApprovalInterruptDescriptor;
86
+ readonly outcome: Extract<NonNullable<RunFinishedEvent["outcome"]>, {
87
+ type: "interrupt";
88
+ }>;
89
+ readonly output?: never;
90
+ readonly checkpoint?: AgentCheckpoint;
90
91
  };
91
- export type AgentRunEvent = RunStartedEvent | RunFinishedEvent | RunErrorEvent | TextMessageStartEvent | TextMessageContentEvent | TextMessageEndEvent | ToolCallStartEvent | ToolCallArgsEvent | ToolCallEndEvent | ToolCallResultEvent;
92
+ export type AgentRunEvent = RunStartedEvent | RunFinishedEvent | RunErrorEvent | TextMessageStartEvent | TextMessageContentEvent | TextMessageEndEvent | ToolCallStartEvent | ToolCallArgsEvent | ToolCallEndEvent | ToolCallResultEvent | CustomEvent | MessagesSnapshotEvent;
92
93
  export interface AgentRun extends AsyncIterable<AgentRunEvent> {
93
94
  readonly id: string;
94
95
  readonly result: Promise<AgentRunResult>;
95
96
  cancel(): void;
97
+ toResponse(): Response;
96
98
  }
97
99
  export type AgentRunInput = {
98
100
  readonly message: {
101
+ readonly id?: string;
99
102
  readonly content: string | readonly AgentInputContent[];
100
103
  };
101
104
  readonly resume?: never;
@@ -123,23 +126,19 @@ export interface AgentSkill {
123
126
  }
124
127
  export type CreateAgentOptions = {
125
128
  model: AgentModelConfig;
129
+ toolRuntime?: ToolRuntime;
130
+ tools?: readonly RegisteredAgentTool[];
126
131
  skills?: readonly AgentSkill[];
127
132
  maxSteps?: number;
128
133
  maxRetries?: number;
129
134
  applicationContext?: {
130
135
  maxSizeBytes?: number;
131
136
  };
132
- } & ({
133
- toolRuntime: ToolRuntime;
134
- toolBridge?: never;
135
- } | {
136
- toolBridge: ToolBridge;
137
- toolRuntime?: never;
138
- });
137
+ };
139
138
  export interface Agent {
140
139
  readonly [agentBrand]: true;
141
140
  readonly id: string;
142
141
  readonly model: AgentModelInfo;
143
142
  switchModel(model: AgentModelConfig): Promise<void>;
144
- run(input: AgentRunInput, options?: AgentRunOptions): AgentRun;
143
+ run(input: AgentRunInput | RunAgentInput, options?: AgentRunOptions): AgentRun;
145
144
  }
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,UAAU,GAAkB,MAAM,CAAC,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,UAAU,GAAkB,MAAM,CAAC,gBAAgB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,15 @@
1
1
  {
2
2
  "name": "@nexface/agent",
3
- "version": "0.1.1-alpha.5",
3
+ "version": "0.1.1-alpha.6",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=22.19.0"
7
7
  },
8
8
  "exports": {
9
+ "./internal": {
10
+ "types": "./dist/internal.d.ts",
11
+ "default": "./dist/internal.js"
12
+ },
9
13
  ".": {
10
14
  "types": "./dist/index.d.ts",
11
15
  "default": "./dist/index.js"
@@ -35,6 +39,6 @@
35
39
  "@ag-ui/core": "0.0.59"
36
40
  },
37
41
  "peerDependencies": {
38
- "@nexface/tools": "0.1.1-alpha.5"
42
+ "@nexface/tools": "0.1.1-alpha.6"
39
43
  }
40
44
  }