@kruntime/ag-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -0
- package/dist/index.d.ts +100 -0
- package/dist/index.js +436 -0
- package/dist/index.js.map +1 -0
- package/package.json +24 -0
package/README.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# @kruntime/ag-ui
|
|
2
|
+
|
|
3
|
+
AG-UI protocol adapter for KRuntime AgentSessions.
|
|
4
|
+
|
|
5
|
+
K keeps its own durable event stream small and Unix-like. `@kruntime/ag-ui`
|
|
6
|
+
adapts that stream to the AG-UI protocol used by chat and agent frontends.
|
|
7
|
+
It is not a UI framework and it is not runtime truth.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { AgUiEventType, agUiEvents } from '@kruntime/ag-ui'
|
|
11
|
+
|
|
12
|
+
const abort = new AbortController()
|
|
13
|
+
|
|
14
|
+
for await (const event of agUiEvents(agent, {
|
|
15
|
+
since: lastCursor,
|
|
16
|
+
signal: abort.signal,
|
|
17
|
+
})) {
|
|
18
|
+
socket.send(JSON.stringify(event))
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Mental Model
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
AgentSession.events({ since })
|
|
26
|
+
durable K event cursor stream
|
|
27
|
+
|
|
|
28
|
+
v
|
|
29
|
+
@kruntime/ag-ui projector
|
|
30
|
+
AG-UI run/message/tool/custom events
|
|
31
|
+
|
|
|
32
|
+
v
|
|
33
|
+
web, H5, mini program, Electron, plugin, SaaS UI
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The bridge does not become runtime truth. It only projects runtime truth:
|
|
37
|
+
|
|
38
|
+
- `turn { status: 'running' }` -> `RUN_STARTED`
|
|
39
|
+
- `content { kind: 'text' | 'reasoning' | ... }` -> message content events
|
|
40
|
+
- `tool { status: 'requested' | ... }` -> tool call events
|
|
41
|
+
- `process { status: 'output' | ... }` -> terminal/activity events
|
|
42
|
+
- `approval` and `signal` -> custom state/activity events
|
|
43
|
+
- terminal `turn` statuses -> `RUN_FINISHED` or `RUN_ERROR`
|
|
44
|
+
|
|
45
|
+
Input messages are read from `agent.messages.*`, not from a public
|
|
46
|
+
input-specific event. K's public event stream describes runtime work; message
|
|
47
|
+
history describes conversation state.
|
|
48
|
+
|
|
49
|
+
AG-UI wants explicit run and message boundaries. K events already have turn
|
|
50
|
+
boundaries, and the bridge can synthesize missing message starts and ends when
|
|
51
|
+
a client reconnects in the middle of a turn. K core does not need AG-UI-specific
|
|
52
|
+
start/end events for every UI concern.
|
|
53
|
+
|
|
54
|
+
## UI Pattern
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
const agent = await computer.login('claw', { id: `web:${userId}` })
|
|
58
|
+
|
|
59
|
+
const abort = new AbortController()
|
|
60
|
+
const task = agent.run('请整理今天的记忆', { by: `web:${userId}` })
|
|
61
|
+
|
|
62
|
+
for await (const event of agUiEvents(agent, { since: cursor, signal: abort.signal })) {
|
|
63
|
+
renderAgUiEvent(event)
|
|
64
|
+
cursor = Number(event.k?.cursor ?? cursor)
|
|
65
|
+
if (event.type === AgUiEventType.RUN_FINISHED || event.type === AgUiEventType.RUN_ERROR) {
|
|
66
|
+
abort.abort()
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
await task
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Use `agent.on(...)` for local in-process callbacks. Use
|
|
74
|
+
`agent.events({ since, signal })` or `agUiEvents(...)` for UI, because cursor
|
|
75
|
+
streams survive reconnects and process recovery.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { AgentSession, EventEnvelope, KMessage, RuntimeEvent } from '@kruntime/komputer';
|
|
2
|
+
export declare const AgUiEventType: {
|
|
3
|
+
readonly TEXT_MESSAGE_START: "TEXT_MESSAGE_START";
|
|
4
|
+
readonly TEXT_MESSAGE_CONTENT: "TEXT_MESSAGE_CONTENT";
|
|
5
|
+
readonly TEXT_MESSAGE_END: "TEXT_MESSAGE_END";
|
|
6
|
+
readonly TEXT_MESSAGE_CHUNK: "TEXT_MESSAGE_CHUNK";
|
|
7
|
+
readonly TOOL_CALL_START: "TOOL_CALL_START";
|
|
8
|
+
readonly TOOL_CALL_ARGS: "TOOL_CALL_ARGS";
|
|
9
|
+
readonly TOOL_CALL_END: "TOOL_CALL_END";
|
|
10
|
+
readonly TOOL_CALL_CHUNK: "TOOL_CALL_CHUNK";
|
|
11
|
+
readonly TOOL_CALL_RESULT: "TOOL_CALL_RESULT";
|
|
12
|
+
readonly STATE_SNAPSHOT: "STATE_SNAPSHOT";
|
|
13
|
+
readonly STATE_DELTA: "STATE_DELTA";
|
|
14
|
+
readonly MESSAGES_SNAPSHOT: "MESSAGES_SNAPSHOT";
|
|
15
|
+
readonly ACTIVITY_SNAPSHOT: "ACTIVITY_SNAPSHOT";
|
|
16
|
+
readonly ACTIVITY_DELTA: "ACTIVITY_DELTA";
|
|
17
|
+
readonly RAW: "RAW";
|
|
18
|
+
readonly CUSTOM: "CUSTOM";
|
|
19
|
+
readonly RUN_STARTED: "RUN_STARTED";
|
|
20
|
+
readonly RUN_FINISHED: "RUN_FINISHED";
|
|
21
|
+
readonly RUN_ERROR: "RUN_ERROR";
|
|
22
|
+
readonly STEP_STARTED: "STEP_STARTED";
|
|
23
|
+
readonly STEP_FINISHED: "STEP_FINISHED";
|
|
24
|
+
readonly REASONING_START: "REASONING_START";
|
|
25
|
+
readonly REASONING_MESSAGE_START: "REASONING_MESSAGE_START";
|
|
26
|
+
readonly REASONING_MESSAGE_CONTENT: "REASONING_MESSAGE_CONTENT";
|
|
27
|
+
readonly REASONING_MESSAGE_END: "REASONING_MESSAGE_END";
|
|
28
|
+
readonly REASONING_MESSAGE_CHUNK: "REASONING_MESSAGE_CHUNK";
|
|
29
|
+
readonly REASONING_END: "REASONING_END";
|
|
30
|
+
readonly REASONING_ENCRYPTED_VALUE: "REASONING_ENCRYPTED_VALUE";
|
|
31
|
+
};
|
|
32
|
+
export type AgUiEventType = typeof AgUiEventType[keyof typeof AgUiEventType];
|
|
33
|
+
export interface AgUiKMeta {
|
|
34
|
+
cursor?: number;
|
|
35
|
+
sessionId?: string;
|
|
36
|
+
agent?: string;
|
|
37
|
+
messageId?: string;
|
|
38
|
+
turnId?: string;
|
|
39
|
+
opId?: string;
|
|
40
|
+
receiptId?: string;
|
|
41
|
+
eventType?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface AgUiBaseEvent {
|
|
44
|
+
type: AgUiEventType;
|
|
45
|
+
timestamp?: number;
|
|
46
|
+
rawEvent?: EventEnvelope;
|
|
47
|
+
k?: AgUiKMeta;
|
|
48
|
+
[key: string]: unknown;
|
|
49
|
+
}
|
|
50
|
+
export type AgUiEvent = AgUiBaseEvent;
|
|
51
|
+
export interface AgUiProjectorOptions {
|
|
52
|
+
threadId?: string | ((row: EventEnvelope) => string);
|
|
53
|
+
includeRawEvent?: boolean;
|
|
54
|
+
customPrefix?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface AgUiEventStreamOptions extends AgUiProjectorOptions {
|
|
57
|
+
since?: number;
|
|
58
|
+
types?: RuntimeEvent['type'][];
|
|
59
|
+
signal?: AbortSignal;
|
|
60
|
+
}
|
|
61
|
+
export interface AgUiMessagesSnapshotOptions {
|
|
62
|
+
view?: 'full' | 'current';
|
|
63
|
+
since?: number;
|
|
64
|
+
before?: number;
|
|
65
|
+
limit?: number;
|
|
66
|
+
threadId?: string;
|
|
67
|
+
}
|
|
68
|
+
export declare class AgUiProjector {
|
|
69
|
+
private readonly options;
|
|
70
|
+
private readonly runs;
|
|
71
|
+
constructor(options?: AgUiProjectorOptions);
|
|
72
|
+
project(row: EventEnvelope): AgUiEvent[];
|
|
73
|
+
private projectContentDelta;
|
|
74
|
+
private projectToolCall;
|
|
75
|
+
private projectToolResult;
|
|
76
|
+
private endRun;
|
|
77
|
+
private startRun;
|
|
78
|
+
private runStartedEvent;
|
|
79
|
+
private finishSyntheticRun;
|
|
80
|
+
private ensureRunStarted;
|
|
81
|
+
private getOrCreateRun;
|
|
82
|
+
private ensureTextMessage;
|
|
83
|
+
private ensureReasoningMessage;
|
|
84
|
+
private raw;
|
|
85
|
+
private custom;
|
|
86
|
+
private event;
|
|
87
|
+
private threadId;
|
|
88
|
+
}
|
|
89
|
+
export declare function projectAgUiEvent(row: EventEnvelope, options?: AgUiProjectorOptions): AgUiEvent[];
|
|
90
|
+
export declare function agUiEvents(agent: AgentSession, options?: AgUiEventStreamOptions): AsyncIterable<AgUiEvent>;
|
|
91
|
+
export declare function createAgUiBridge(agent: AgentSession, options?: AgUiProjectorOptions): {
|
|
92
|
+
events: (streamOptions?: Omit<AgUiEventStreamOptions, keyof AgUiProjectorOptions>) => AsyncIterable<AgUiBaseEvent>;
|
|
93
|
+
messages: (snapshotOptions?: Omit<AgUiMessagesSnapshotOptions, "threadId">) => Promise<AgUiBaseEvent>;
|
|
94
|
+
send: (input: Parameters<typeof import("@kruntime/komputer").normalizeInput>[0], options?: import("@kruntime/komputer").SendOptions) => Promise<Record<string, unknown>>;
|
|
95
|
+
decide: (approvalId: string, decision: unknown, options?: {
|
|
96
|
+
by?: string;
|
|
97
|
+
}) => Promise<Record<string, unknown>>;
|
|
98
|
+
};
|
|
99
|
+
export declare function agUiMessagesSnapshot(agent: AgentSession, options?: AgUiMessagesSnapshotOptions): Promise<AgUiEvent>;
|
|
100
|
+
export declare function toAgUiMessage(message: KMessage): Record<string, unknown>;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
export const AgUiEventType = {
|
|
2
|
+
TEXT_MESSAGE_START: 'TEXT_MESSAGE_START',
|
|
3
|
+
TEXT_MESSAGE_CONTENT: 'TEXT_MESSAGE_CONTENT',
|
|
4
|
+
TEXT_MESSAGE_END: 'TEXT_MESSAGE_END',
|
|
5
|
+
TEXT_MESSAGE_CHUNK: 'TEXT_MESSAGE_CHUNK',
|
|
6
|
+
TOOL_CALL_START: 'TOOL_CALL_START',
|
|
7
|
+
TOOL_CALL_ARGS: 'TOOL_CALL_ARGS',
|
|
8
|
+
TOOL_CALL_END: 'TOOL_CALL_END',
|
|
9
|
+
TOOL_CALL_CHUNK: 'TOOL_CALL_CHUNK',
|
|
10
|
+
TOOL_CALL_RESULT: 'TOOL_CALL_RESULT',
|
|
11
|
+
STATE_SNAPSHOT: 'STATE_SNAPSHOT',
|
|
12
|
+
STATE_DELTA: 'STATE_DELTA',
|
|
13
|
+
MESSAGES_SNAPSHOT: 'MESSAGES_SNAPSHOT',
|
|
14
|
+
ACTIVITY_SNAPSHOT: 'ACTIVITY_SNAPSHOT',
|
|
15
|
+
ACTIVITY_DELTA: 'ACTIVITY_DELTA',
|
|
16
|
+
RAW: 'RAW',
|
|
17
|
+
CUSTOM: 'CUSTOM',
|
|
18
|
+
RUN_STARTED: 'RUN_STARTED',
|
|
19
|
+
RUN_FINISHED: 'RUN_FINISHED',
|
|
20
|
+
RUN_ERROR: 'RUN_ERROR',
|
|
21
|
+
STEP_STARTED: 'STEP_STARTED',
|
|
22
|
+
STEP_FINISHED: 'STEP_FINISHED',
|
|
23
|
+
REASONING_START: 'REASONING_START',
|
|
24
|
+
REASONING_MESSAGE_START: 'REASONING_MESSAGE_START',
|
|
25
|
+
REASONING_MESSAGE_CONTENT: 'REASONING_MESSAGE_CONTENT',
|
|
26
|
+
REASONING_MESSAGE_END: 'REASONING_MESSAGE_END',
|
|
27
|
+
REASONING_MESSAGE_CHUNK: 'REASONING_MESSAGE_CHUNK',
|
|
28
|
+
REASONING_END: 'REASONING_END',
|
|
29
|
+
REASONING_ENCRYPTED_VALUE: 'REASONING_ENCRYPTED_VALUE',
|
|
30
|
+
};
|
|
31
|
+
export class AgUiProjector {
|
|
32
|
+
options;
|
|
33
|
+
runs = new Map();
|
|
34
|
+
constructor(options = {}) {
|
|
35
|
+
this.options = options;
|
|
36
|
+
}
|
|
37
|
+
project(row) {
|
|
38
|
+
const event = row.event;
|
|
39
|
+
switch (event.type) {
|
|
40
|
+
case 'turn':
|
|
41
|
+
return event.status === 'running' ? [this.startRun(row)] : this.endRun(row, event);
|
|
42
|
+
case 'content':
|
|
43
|
+
return this.projectContentDelta(row, event);
|
|
44
|
+
case 'tool':
|
|
45
|
+
return event.status === 'requested' || event.status === 'running' || event.status === 'waiting_approval'
|
|
46
|
+
? this.projectToolCall(row, event)
|
|
47
|
+
: this.projectToolResult(row, event);
|
|
48
|
+
case 'process':
|
|
49
|
+
return [this.custom(row, 'process', event)];
|
|
50
|
+
case 'approval':
|
|
51
|
+
return [this.custom(row, 'approval', event)];
|
|
52
|
+
case 'message':
|
|
53
|
+
return [this.custom(row, 'message', event)];
|
|
54
|
+
case 'signal':
|
|
55
|
+
return [this.custom(row, 'signal', event)];
|
|
56
|
+
default:
|
|
57
|
+
return [this.raw(row)];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
projectContentDelta(row, event) {
|
|
61
|
+
const content = recordField(event, 'content');
|
|
62
|
+
const text = stringField(event, 'text') ?? (content?.type === 'text' ? content.text : undefined);
|
|
63
|
+
const out = [];
|
|
64
|
+
const run = this.ensureRunStarted(row, out);
|
|
65
|
+
if (event.type === 'content' && event.kind === 'reasoning') {
|
|
66
|
+
const messageId = this.ensureReasoningMessage(row, run, out);
|
|
67
|
+
if (text)
|
|
68
|
+
out.push(this.event(row, { type: AgUiEventType.REASONING_MESSAGE_CONTENT, messageId, delta: text }));
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
if (typeof text !== 'string')
|
|
72
|
+
return [...out, this.custom(row, 'content', event)];
|
|
73
|
+
const messageId = this.ensureTextMessage(row, run, out);
|
|
74
|
+
if (text)
|
|
75
|
+
out.push(this.event(row, { type: AgUiEventType.TEXT_MESSAGE_CONTENT, messageId, delta: text }));
|
|
76
|
+
return out;
|
|
77
|
+
}
|
|
78
|
+
projectToolCall(row, event) {
|
|
79
|
+
const out = [];
|
|
80
|
+
const run = this.ensureRunStarted(row, out);
|
|
81
|
+
const toolCallId = toolCallIdFor(row);
|
|
82
|
+
const toolCallName = stringField(event, 'tool') || 'tool';
|
|
83
|
+
run.openToolCalls.add(toolCallId);
|
|
84
|
+
out.push(this.event(row, {
|
|
85
|
+
type: AgUiEventType.TOOL_CALL_START,
|
|
86
|
+
toolCallId,
|
|
87
|
+
toolCallName,
|
|
88
|
+
parentMessageId: run.textMessageId,
|
|
89
|
+
}));
|
|
90
|
+
if (Object.prototype.hasOwnProperty.call(event, 'input')) {
|
|
91
|
+
out.push(this.event(row, {
|
|
92
|
+
type: AgUiEventType.TOOL_CALL_ARGS,
|
|
93
|
+
toolCallId,
|
|
94
|
+
delta: stableStringify(event.input),
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
projectToolResult(row, event) {
|
|
100
|
+
const out = [];
|
|
101
|
+
const run = this.ensureRunStarted(row, out);
|
|
102
|
+
const toolCallId = toolCallIdFor(row);
|
|
103
|
+
const resultText = toolResultText(event);
|
|
104
|
+
out.push(this.event(row, {
|
|
105
|
+
type: AgUiEventType.TOOL_CALL_RESULT,
|
|
106
|
+
messageId: `tool:${toolCallId}`,
|
|
107
|
+
toolCallId,
|
|
108
|
+
content: resultText,
|
|
109
|
+
role: 'tool',
|
|
110
|
+
}), this.event(row, {
|
|
111
|
+
type: AgUiEventType.TOOL_CALL_END,
|
|
112
|
+
toolCallId,
|
|
113
|
+
}));
|
|
114
|
+
run.openToolCalls.delete(toolCallId);
|
|
115
|
+
if (!turnIdFor(row))
|
|
116
|
+
out.push(this.finishSyntheticRun(row, run, { status: 'completed' }));
|
|
117
|
+
return out;
|
|
118
|
+
}
|
|
119
|
+
endRun(row, event) {
|
|
120
|
+
const out = [];
|
|
121
|
+
const run = this.ensureRunStarted(row, out);
|
|
122
|
+
if (run.textMessageId) {
|
|
123
|
+
out.push(this.event(row, { type: AgUiEventType.TEXT_MESSAGE_END, messageId: run.textMessageId }));
|
|
124
|
+
run.textMessageId = undefined;
|
|
125
|
+
}
|
|
126
|
+
if (run.reasoningMessageId) {
|
|
127
|
+
out.push(this.event(row, { type: AgUiEventType.REASONING_MESSAGE_END, messageId: run.reasoningMessageId }));
|
|
128
|
+
out.push(this.event(row, { type: AgUiEventType.REASONING_END, messageId: run.reasoningMessageId }));
|
|
129
|
+
run.reasoningMessageId = undefined;
|
|
130
|
+
}
|
|
131
|
+
const status = stringField(event, 'status') || 'completed';
|
|
132
|
+
if (status === 'failed' || status === 'blocked' || status === 'cancelled') {
|
|
133
|
+
out.push(this.event(row, {
|
|
134
|
+
type: AgUiEventType.RUN_ERROR,
|
|
135
|
+
message: stringField(event, 'reason') || `Agent turn ${status}`,
|
|
136
|
+
code: `turn_${status}`,
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
else if (status === 'waiting_approval') {
|
|
140
|
+
out.push(this.event(row, {
|
|
141
|
+
type: AgUiEventType.RUN_FINISHED,
|
|
142
|
+
threadId: run.threadId,
|
|
143
|
+
runId: run.runId,
|
|
144
|
+
result: turnResult(event),
|
|
145
|
+
outcome: {
|
|
146
|
+
type: 'interrupt',
|
|
147
|
+
interrupts: [{
|
|
148
|
+
id: stringField(event, 'approvalId') || `${run.runId}:approval`,
|
|
149
|
+
reason: 'approval',
|
|
150
|
+
message: stringField(event, 'reason') || 'Approval required',
|
|
151
|
+
metadata: { k: metaFromEnvelope(row) },
|
|
152
|
+
}],
|
|
153
|
+
},
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
out.push(this.event(row, {
|
|
158
|
+
type: AgUiEventType.RUN_FINISHED,
|
|
159
|
+
threadId: run.threadId,
|
|
160
|
+
runId: run.runId,
|
|
161
|
+
result: turnResult(event),
|
|
162
|
+
outcome: { type: 'success' },
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
this.runs.delete(run.runId);
|
|
166
|
+
return out;
|
|
167
|
+
}
|
|
168
|
+
startRun(row) {
|
|
169
|
+
const { run } = this.getOrCreateRun(row);
|
|
170
|
+
return this.runStartedEvent(row, run);
|
|
171
|
+
}
|
|
172
|
+
runStartedEvent(row, run) {
|
|
173
|
+
return this.event(row, {
|
|
174
|
+
type: AgUiEventType.RUN_STARTED,
|
|
175
|
+
threadId: run.threadId,
|
|
176
|
+
runId: run.runId,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
finishSyntheticRun(row, run, result) {
|
|
180
|
+
this.runs.delete(run.runId);
|
|
181
|
+
return this.event(row, {
|
|
182
|
+
type: AgUiEventType.RUN_FINISHED,
|
|
183
|
+
threadId: run.threadId,
|
|
184
|
+
runId: run.runId,
|
|
185
|
+
result,
|
|
186
|
+
outcome: { type: 'success' },
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
ensureRunStarted(row, out) {
|
|
190
|
+
const { run, created } = this.getOrCreateRun(row);
|
|
191
|
+
if (created)
|
|
192
|
+
out.push(this.runStartedEvent(row, run));
|
|
193
|
+
return run;
|
|
194
|
+
}
|
|
195
|
+
getOrCreateRun(row) {
|
|
196
|
+
const runId = runIdFor(row);
|
|
197
|
+
const existing = this.runs.get(runId);
|
|
198
|
+
if (existing)
|
|
199
|
+
return { run: existing, created: false };
|
|
200
|
+
const run = {
|
|
201
|
+
runId,
|
|
202
|
+
threadId: this.threadId(row),
|
|
203
|
+
started: true,
|
|
204
|
+
openToolCalls: new Set(),
|
|
205
|
+
};
|
|
206
|
+
this.runs.set(runId, run);
|
|
207
|
+
return { run, created: true };
|
|
208
|
+
}
|
|
209
|
+
ensureTextMessage(row, run, out) {
|
|
210
|
+
if (run.textMessageId)
|
|
211
|
+
return run.textMessageId;
|
|
212
|
+
run.textMessageId = `message:${run.runId}`;
|
|
213
|
+
out.push(this.event(row, {
|
|
214
|
+
type: AgUiEventType.TEXT_MESSAGE_START,
|
|
215
|
+
messageId: run.textMessageId,
|
|
216
|
+
role: 'assistant',
|
|
217
|
+
}));
|
|
218
|
+
return run.textMessageId;
|
|
219
|
+
}
|
|
220
|
+
ensureReasoningMessage(row, run, out) {
|
|
221
|
+
if (run.reasoningMessageId)
|
|
222
|
+
return run.reasoningMessageId;
|
|
223
|
+
run.reasoningMessageId = `reasoning:${run.runId}`;
|
|
224
|
+
out.push(this.event(row, {
|
|
225
|
+
type: AgUiEventType.REASONING_START,
|
|
226
|
+
messageId: run.reasoningMessageId,
|
|
227
|
+
}));
|
|
228
|
+
out.push(this.event(row, {
|
|
229
|
+
type: AgUiEventType.REASONING_MESSAGE_START,
|
|
230
|
+
messageId: run.reasoningMessageId,
|
|
231
|
+
role: 'reasoning',
|
|
232
|
+
}));
|
|
233
|
+
return run.reasoningMessageId;
|
|
234
|
+
}
|
|
235
|
+
raw(row) {
|
|
236
|
+
return this.event(row, {
|
|
237
|
+
type: AgUiEventType.RAW,
|
|
238
|
+
event: row.event,
|
|
239
|
+
source: 'kruntime',
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
custom(row, name, value) {
|
|
243
|
+
return this.event(row, {
|
|
244
|
+
type: AgUiEventType.CUSTOM,
|
|
245
|
+
name: `${this.options.customPrefix ?? 'k'}.${name}`,
|
|
246
|
+
value,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
event(row, event) {
|
|
250
|
+
const timestamp = Date.parse(row.at);
|
|
251
|
+
const base = {
|
|
252
|
+
timestamp: Number.isFinite(timestamp) ? timestamp : undefined,
|
|
253
|
+
k: metaFromEnvelope(row),
|
|
254
|
+
...(this.options.includeRawEvent ? { rawEvent: row } : {}),
|
|
255
|
+
};
|
|
256
|
+
return { ...base, ...event };
|
|
257
|
+
}
|
|
258
|
+
threadId(row) {
|
|
259
|
+
if (typeof this.options.threadId === 'function')
|
|
260
|
+
return this.options.threadId(row);
|
|
261
|
+
return this.options.threadId || row.sessionId || 'default';
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
export function projectAgUiEvent(row, options = {}) {
|
|
265
|
+
return new AgUiProjector(options).project(row);
|
|
266
|
+
}
|
|
267
|
+
export async function* agUiEvents(agent, options = {}) {
|
|
268
|
+
const projector = new AgUiProjector(options);
|
|
269
|
+
for await (const row of agent.events({ since: options.since, types: options.types, signal: options.signal })) {
|
|
270
|
+
for (const event of projector.project(row))
|
|
271
|
+
yield event;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
export function createAgUiBridge(agent, options = {}) {
|
|
275
|
+
return {
|
|
276
|
+
events: (streamOptions = {}) => agUiEvents(agent, { ...options, ...streamOptions }),
|
|
277
|
+
messages: (snapshotOptions = {}) => agUiMessagesSnapshot(agent, { threadId: typeof options.threadId === 'string' ? options.threadId : undefined, ...snapshotOptions }),
|
|
278
|
+
send: agent.send.bind(agent),
|
|
279
|
+
decide: agent.decide.bind(agent),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
export async function agUiMessagesSnapshot(agent, options = {}) {
|
|
283
|
+
const page = await agent.messages.get({
|
|
284
|
+
view: options.view ?? 'full',
|
|
285
|
+
since: options.since,
|
|
286
|
+
before: options.before,
|
|
287
|
+
limit: options.limit,
|
|
288
|
+
});
|
|
289
|
+
return {
|
|
290
|
+
type: AgUiEventType.MESSAGES_SNAPSHOT,
|
|
291
|
+
messages: page.messages.map(toAgUiMessage),
|
|
292
|
+
timestamp: Date.now(),
|
|
293
|
+
k: {
|
|
294
|
+
sessionId: agent.sessionId,
|
|
295
|
+
agent: agent.agentName,
|
|
296
|
+
eventType: 'messages.snapshot',
|
|
297
|
+
},
|
|
298
|
+
threadId: options.threadId || agent.sessionId,
|
|
299
|
+
cursor: page.cursor,
|
|
300
|
+
hasMore: page.hasMore,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
export function toAgUiMessage(message) {
|
|
304
|
+
const id = message.id || (message.seq === undefined ? `message:${message.at ?? 'unknown'}` : `message:${message.seq}`);
|
|
305
|
+
const role = normalizeRole(message.role);
|
|
306
|
+
if (role === 'assistant') {
|
|
307
|
+
const toolCalls = message.content
|
|
308
|
+
.filter((block) => block.type === 'tool_use')
|
|
309
|
+
.map((block) => ({
|
|
310
|
+
id: String(block.id || block.toolUseId || `tool:${id}`),
|
|
311
|
+
type: 'function',
|
|
312
|
+
function: {
|
|
313
|
+
name: String(block.name || 'tool'),
|
|
314
|
+
arguments: stableStringify(block.input ?? {}),
|
|
315
|
+
},
|
|
316
|
+
}));
|
|
317
|
+
return {
|
|
318
|
+
id,
|
|
319
|
+
role,
|
|
320
|
+
content: textFromBlocks(message.content) || undefined,
|
|
321
|
+
toolCalls: toolCalls.length ? toolCalls : undefined,
|
|
322
|
+
name: message.by,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
if (role === 'tool') {
|
|
326
|
+
const block = message.content.find((item) => item.type === 'tool_result') || message.content[0];
|
|
327
|
+
return {
|
|
328
|
+
id,
|
|
329
|
+
role,
|
|
330
|
+
content: textFromBlocks(message.content),
|
|
331
|
+
toolCallId: String(block?.toolUseId || block?.id || ''),
|
|
332
|
+
error: block?.ok === false ? String(block.status || 'tool failed') : undefined,
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
return {
|
|
336
|
+
id,
|
|
337
|
+
role,
|
|
338
|
+
content: textFromBlocks(message.content),
|
|
339
|
+
name: message.by,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
function normalizeRole(role) {
|
|
343
|
+
if (role === 'developer' || role === 'system' || role === 'assistant' || role === 'user' || role === 'tool' || role === 'activity' || role === 'reasoning')
|
|
344
|
+
return role;
|
|
345
|
+
return 'developer';
|
|
346
|
+
}
|
|
347
|
+
function runIdFor(row) {
|
|
348
|
+
const turnId = turnIdFor(row);
|
|
349
|
+
if (turnId)
|
|
350
|
+
return turnId;
|
|
351
|
+
if (row.opId)
|
|
352
|
+
return `op:${row.opId}`;
|
|
353
|
+
if (row.messageId)
|
|
354
|
+
return `message:${row.messageId}`;
|
|
355
|
+
if (row.receiptId)
|
|
356
|
+
return `receipt:${row.receiptId}`;
|
|
357
|
+
return `event:${row.cursor}`;
|
|
358
|
+
}
|
|
359
|
+
function turnIdFor(row) {
|
|
360
|
+
return row.turnId || stringField(row.event, 'turnId');
|
|
361
|
+
}
|
|
362
|
+
function toolCallIdFor(row) {
|
|
363
|
+
return row.opId || stringField(row.event, 'opId') || `tool:${row.cursor}`;
|
|
364
|
+
}
|
|
365
|
+
function metaFromEnvelope(row) {
|
|
366
|
+
return {
|
|
367
|
+
cursor: row.cursor,
|
|
368
|
+
sessionId: row.sessionId,
|
|
369
|
+
agent: row.agent,
|
|
370
|
+
messageId: row.messageId,
|
|
371
|
+
turnId: row.turnId,
|
|
372
|
+
opId: row.opId,
|
|
373
|
+
receiptId: row.receiptId,
|
|
374
|
+
eventType: row.event?.type,
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
function textFromBlocks(blocks = []) {
|
|
378
|
+
return blocks.map((block) => {
|
|
379
|
+
if (typeof block.text === 'string')
|
|
380
|
+
return block.text;
|
|
381
|
+
if (typeof block.stdout === 'string')
|
|
382
|
+
return block.stdout;
|
|
383
|
+
if (typeof block.stderr === 'string')
|
|
384
|
+
return block.stderr;
|
|
385
|
+
if (block.type === 'tool_result')
|
|
386
|
+
return stableStringify(block);
|
|
387
|
+
return '';
|
|
388
|
+
}).filter(Boolean).join('');
|
|
389
|
+
}
|
|
390
|
+
function toolResultText(event) {
|
|
391
|
+
const result = event.result;
|
|
392
|
+
if (typeof result === 'string')
|
|
393
|
+
return result;
|
|
394
|
+
if (result instanceof Uint8Array)
|
|
395
|
+
return new TextDecoder().decode(result);
|
|
396
|
+
if (result && typeof result === 'object') {
|
|
397
|
+
const record = result;
|
|
398
|
+
if (typeof record.stdout === 'string' || typeof record.stderr === 'string') {
|
|
399
|
+
return `${record.stdout ?? ''}${record.stderr ?? ''}`;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
return stableStringify(result);
|
|
403
|
+
}
|
|
404
|
+
function turnResult(event) {
|
|
405
|
+
return {
|
|
406
|
+
status: stringField(event, 'status'),
|
|
407
|
+
text: stringField(event, 'text'),
|
|
408
|
+
reason: stringField(event, 'reason'),
|
|
409
|
+
provider: event.provider,
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
function stableStringify(value) {
|
|
413
|
+
if (typeof value === 'string')
|
|
414
|
+
return value;
|
|
415
|
+
if (value === undefined)
|
|
416
|
+
return '';
|
|
417
|
+
try {
|
|
418
|
+
return JSON.stringify(value);
|
|
419
|
+
}
|
|
420
|
+
catch {
|
|
421
|
+
return String(value);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
function stringField(record, key) {
|
|
425
|
+
if (!record || typeof record !== 'object')
|
|
426
|
+
return undefined;
|
|
427
|
+
const value = record[key];
|
|
428
|
+
return typeof value === 'string' ? value : undefined;
|
|
429
|
+
}
|
|
430
|
+
function recordField(record, key) {
|
|
431
|
+
if (!record || typeof record !== 'object')
|
|
432
|
+
return undefined;
|
|
433
|
+
const value = record[key];
|
|
434
|
+
return value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
|
|
435
|
+
}
|
|
436
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ag-ui/src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kruntime/ag-ui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "AG-UI protocol projection for KRuntime AgentSessions.",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"import": "./dist/index.js"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"README.md"
|
|
16
|
+
],
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@kruntime/komputer": "0.1.0"
|
|
19
|
+
},
|
|
20
|
+
"license": "UNLICENSED",
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
}
|
|
24
|
+
}
|